homepage

Sos ladrones furuncos


Tres ladrones ch'hian furau una orta unu zertu tantu de marengos de oro. A de notte, s'unu senza nd'ischire de s'atteru, fun'andaos a su cuadorzu de s'oro e onzunu si che nd'ha' leau unu terzu, notande chi nd'avanzaid'unu, de marengu, de una divisione giusta po trese. E tanto onzunu si c'ha leau su marengu c'avanzaia' puru. A puddileddu, tuttu paris funi torraos a su cuadorzu e s'hana dividiu sos marengos chi funi abarraos, notande sempere chi nd'essiad'unu de corru a pustis fattas sas divisiones in trese. Tando fun'andaos a su tzilleri, e cun cussu s'ana comporau inu in cantidade, si funi imbriagaos, si fun'accusaos s'unu cun s'atteru de si c'hae' furau sos marengos, si funi inzuliaos e iscuttos e isfidaos a duellu a corpos de pistola.
Si sos marengos fruttu de sa grassazione fuana circa milli, appena appena prus pagos, cantos che nd'iana furau in tottu?

De custu indovinzu hamus preparau tres modos differentes po arribare a una soluzione, notande in modu preliminare chi sos marengos depiana esser po forza unu numeru interu. Sa prima soluzione tene' contu de unu programma, sa segunda este semper'unu programma meda sofisticu, sa terza sighidi sa teoria tradizionale de sas equaziones e costruidi una funzione matematica chi calculada tottus sas possibiles soluziones validas a arresponder'a s'indovinzu.
.

(*tottu su chi iscridimus aintro de parentisis e de
isteddittos non beni considerau da e su programma*)


Module[(*Marengos de oro*)
               {Marengos,Grassazione},
                    Do[
                          If[
                           Mod[Marengos,3]==1,
                               Grassazione=2 Quotient[Marengos,3];
                              If[
                               Mod[Grassazione,3]==1,
                                          Grassazione=2 Quotient[Grassazione,3];
                                   If[
                                    Mod[Grassazione,3]==1,
                                               Grassazione=2 Quotient[Grassazione,3];
                                      If[
                                       Mod[Grassazione,3]==1,
                                                 Print[Marengos,
                                                               " Poded'esser'una soluzione."]]]]],
{Marengos,1,1000}]]


79 Poded'esser'una soluzione.
160 Poded'esser'una soluzione.
241 Poded'esser'una soluzione.
322 Poded'esser'una soluzione.
403 Poded'esser'una soluzione.
484 Poded'esser'una soluzione.
565 Poded'esser'una soluzione.
646 Poded'esser'una soluzione.
727 Poded'esser'una soluzione.
808 Poded'esser'una soluzione.
889 Poded'esser'una soluzione.
970 Poded'esser'una soluzione.



970 fuana sos marengos de oro furaos de sos ladrones in sa grassazione. Cust'atteru programma risolvidi issu puru s'enigma de sos marengos.



Select[Range[1000],
    Apply[And,Map[(#==1)&,
         Mod[NestList[2 Quotient[#,3]&,#,3],3]]]&]


{79, 160, 241, 322, 403, 484, 565, 646, 727, 808, 889, 970}



Cun sa teoria de sas equaziones si impostana cun significau immediatu sas seguentes tres equaziones: x=3 k+1; y=3 x+1; z=3 y+1. Si risolvene partinde da e sa prima po determinare x,y,e z chi risultada una cantidade dipendente de sa variabile k. Si costrui' tando una funzione in k, chi po particulares valores de k, sos valores interos, mi determinada z, sos marengos grassaos.



Solve[x-((x-1)/3+1)==3 k+1,x]


           5 + 9 k
{{x -> -------}}
              2


Solve[y-((y-1)/3+1)==(5+9 k)/2,y]


          19 + 27 k
{{y -> ---------}}
               4


Solve[z-((z-1)/3+1)==(19+27 k)/4,z]


         65 + 81 k
{{z -> ---------}}
               8


Clear[f,k]


f[k_]:=(65+81 k)/8
Table[{k,N[f[k]]},{k,0,31}]//ColumnForm


{0, 8.125}
{1, 18.25}
{2, 28.375}
{3, 38.5}
{4, 48.625}
{5, 58.75}
{6, 68.875}
{7, 79.}
{8, 89.125}
{9, 99.25}
{10, 109.375}
{11, 119.5}
{12, 129.625}
{13, 139.75}
{14, 149.875}
{15, 160.}
{16, 170.125}
{17, 180.25}
{18, 190.375}
{19, 200.5}
{20, 210.625}
{21, 220.75}
{22, 230.875}
{23, 241.}
{24, 251.125}
{25, 261.25}
{26, 271.375}
{27, 281.5}
{28, 291.625}
{29, 301.75}
{30, 311.875}
{31, 322.}



Sos valores de f[k] chi siana soluziones azzettabiles fun'ispaziaos de otto postos, est'a narrer chi occupana sos postos de indighe 8 j-1, e tando ponende k=8 j-1 ricavamus solu sas soluziones interas,chi funi s'arresposta a s'indovinzu.



Clear[g,j]
g[j_]:=(65+81 (8 j-1))/8;
  Table[{j,g[j]},{j,1,13}]//ColumnForm


{1, 79}
{2, 160}
{3, 241}
{4, 322}
{5, 403}
{6, 484}
{7, 565}
{8, 646}
{9, 727}
{10, 808}
{11, 889}
{12, 970}
{13, 1051}



A pustis connotta tottu cust'analisi es' cosa facile a iscriere un'atterunu programma discanzosu po jare arresposta a s'indovinzu.



Clear[g,j,f,k,z,y,x]
       g[j_]:=
        f[k_]=Solve[z-((z-1)/3+1)==
                     Solve[y-((y-1)/3+1)==
                           Solve[x-((x-1)/3+1)==3 k+1,x]
                                                                          [[1,1,2]],y]
                                                                           [[1,1,2]],z][[1,1,2]]/.k->(8 j-1)


Table[{j,g[j]},{j,1,20}]//ColumnForm


{1, 79}
{2, 160}
{3, 241}
{4, 322}
{5, 403}
{6, 484}
{7, 565}
{8, 646}
{9, 727}
{10, 808}
{11, 889}
{12, 970}
{13, 1051}
{14, 1132}
{15, 1213}
{16, 1294}
{17, 1375}
{18, 1456}
{19, 1537}
{20, 1618}



Este naturale chi siada inutile faer notare chi sa soluzione chi amus agattau rivestidi carattere generale. Amus risolviu su problema po qualsiasi numeru de marengos furaos, qualunque esserad'istau su numeru de sos ladrones e qualunque esserad'istau su numeru de sos marengos chi esseran potziu torrare de corru. Limitamus s'analisi a tres ladrones: bi nd'ada e avanzan puru. Tantu si non si occhini in sa briga ddos torramus a incontrare.

 

Variante discanzosa.


In s'indovinzu de sos ladrones furuncos sas dif-ficoltades non s'agattana tantu in s'arresonamentu necessariu po determinare una soluzione accettabile, unu numeru chi dia soddisfazione a sas richiestas postas, cantu in su penzare una soluzione chi in cracchi manera tenzada carattere generale. Es propriu su chi hamus fattu in sas paginas chi antecedin custas consideraziones.
Una orta chi semus arrennessios a carculare una funzione chi ette' lughe in s'indovinzu, podimus provare cracchi soluzione prus discanzosa. Po faer'un'esempiu, a pustis nd'ammustramus atteros puru, cando ischidimus chi f[k_]:=(65+81 k)/8 este sa funzione chi agattada sas soluziones, mancari ammesturadas cun atteras chi no nos importana, (ca non funi numeros interos e sos marengos de oro non si podian divider'in minutazza), tando podimus selezionare, segundu unu criteriu, su ranu da 'e sa pazza. In duas rigas ammustramus commente si faede, dispensandenoso lanosos accraramentos. Si bie luego chi noeghentosettanta es'sempere s'arresposta chi semus criccande. Su programma es bellu, semplice, craru che su sole, e sa funzione lineare non tene' pretesas de meda cumprendoniu.


Clear[k]
        Select[
               Table[(65+81 k)/8,{k,1,150}],
                                                           IntegerQ]


{79, 160, 241, 322, 403, 484, 565, 646, 727, 808, 889, 970, 1051,

1132, 1213, 1294, 1375, 1456}

 

Sas Funziones


Cun custu programma semus presentande una generalizzazione de s'indovinzu de sos ladrones. tresLadrones es su numene de sa funzione, munedas este su numeru presumiu de sos marengos furaos, decorru este su numeru de sas munedas chi esseni in prusu po una divisione in trese. In sa prima crammada de su programma tenimus sa soluzione a su problema nostru. In sa segunda semus ipotizzande chi esserana avanzadas duas munedas. Poi carculamus una funzione insu casu chi sos ladrones esseren battoro, e chi sas munedas de corru esseren trese. Cun sa funzione Select agattamos solu sas soluziones bonas. E duncas nosi costruimus nois e tottu una funzione chi selezionede solu risultaos bonos e siguros po risolve' s'indovinzu. Si invertimus sa funzione accraramus unu fattu curiosu. In calesisiada situazione su numeru de sos marengos chi sos ladrones si dividini a sa fine, a urtimu pustis chi si funi furaos pari pari, este sempere un'argumentu po sa funzione chi nos risolve' sa richiesta. E tando, si sos ladrones funi battoro, essinde de corru tres munedas, si issos nd'hana furau milliebindighi, a s'urtimu si dividini treghentasebindighi munedas, tiad'a esser settantotto peromine e tres de avanzu. f[78] risultada uguale a s'interu bottinu, e g[1015] este uguale a cantu est'ispettau a donzi ladrone legalmente, faende finta chi sos ladrones no si esseran furau tra issos puru.


tresLadrones[munedas_,decorru_]:=
                                        Select[Range[munedas],
                                               Apply[And,Map[(#==decorru)&,
                                                    Mod[NestList[2 Quotient[#,3]&,#,3],3]]]&]



tresLadrones[500,1]


{79, 160, 241, 322, 403, 484}


tresLadrones[500,2]


{77, 158, 239, 320, 401, 482}


Clear[a,b,c,d,k]
          Solve[a-((a-3)/4+3)==
                Solve[b-((b-3)/4+3)==
                      Solve[c-((c-3)/4+3)==
                           Solve[d-((d-3)/4+3)==4 k+3,d]
[[1,1,2]],c]
[[1,1,2]],b]
[[1,1,2]],a]


         2343 + 1024 k
{{a -> -------------}}
                 81



Clear[f,k]
    f[k_]:=(1024 k+2343)/81
          Select[Table[f[k],{k,1,1000}],IntegerQ]


{1015, 2039, 3063, 4087, 5111, 6135, 7159, 8183, 9207, 10231, 11255, 12279}


seleziona[l_List]:=
                 Module[{j=1},
                   For[j=1,j<=Length[l],++j,
                       If[IntegerQ[l[[j,2]]],
                                        Print[l[[j]]]]]]

l1=Table[{k,f[k]},{k,1,1000}];



seleziona[l1]


{78, 1015}
{159, 2039}
{240, 3063}
{321, 4087}
{402, 5111}
{483, 6135}
{564, 7159}
{645, 8183}
{726, 9207}
{807, 10231}
{888, 11255}
{969, 12279}



Clear[g,k]
     g[k_]:=(81 k-2343)/1024
          l2=Table[{k,g[k]},{k,1,12500}];


seleziona[l2]


{1015, 78}
{2039, 159}
{3063, 240}
{4087, 321}
{5111, 402}
{6135, 483}
{7159, 564}
{8183, 645}
{9207, 726}
{10231, 807}
{11255, 888}
{12279, 969}



{f[78],g[1015]}


{1015, 78}


E como generalizzamus sa funzione a unu numeru indefiniu de ladrones, mancu chi esseremus ancora a sa prima Repubbrica, a unu numeru arbitrariu de munedas de corru, sempere minore de su numeru de sos ladrones. S'arresposta chi nos dada sa funzione saFura este una funzione de primu gradu in k. Issa chere' cumpilada, tabellada e selezionada in sos valores interos chi risolvene s'indovinzu.


saFura[ladrones_,decorru_]:=
    Module[{j=1,
            pm=x-((x-decorru)/ladrones+decorru),
            sm={{x->(k ladrones+decorru)}}},
                       For[j=1,j<=ladrones,++j,
                               sm=Solve[pm==sm[[1,1,2]],x]];
                               sm[[1,1,2]]];



Po esempiu su casu de sos tres ladrones eniu tando trattau in custa manera: ladrones tres, decorru unu.


saFura[3,1]


65 + 81 k
---------
       8


Clear[g,j]
g[j_]=saFura[3,1]/.{k->j}


65 + 81 j
---------
8


Select[Table[g[j],{j,1,30}],IntegerQ]


{79, 160, 241}


In modu prus cumpactu, su casu de chimbe ladrones e duas munedas de corru.Bindighimilaseschentosetreghi este su numeru prus pitticcu chi risolvidi custu problema diofanteu de aritmetica modulare. Notae chi su programma, in cantu a tempus de carculu no este de sos menzus chi si pozzana penzare.


Clear[g,j];
           Select[
                         Table[
                                 g[m_]=saFura[5,3]/.{k->m},{m,500,2000}],
                                                                                                      IntegerQ]


{15613}


w[s_]=saFura[5,3]/.{k->s}


34587 + 15625 s
---------------
        1024


s[w_]=(1024 w-34587)/15625


-34587 + 1024 w
---------------
15625


s[15613]


1021


w[1021]


15613


{w[1021],s[15613]}


{15613, 1021}

 

continua