Algomatica del doctor Brom
Transcript
Algomatica del doctor Brom
Algomatica del doctor Brom di Maurizio Codogno > [email protected] Rilancio sul trentatré L a televisione stava trasmettendo la fase finale del campionato mondiale di poker. Io ci davo una stanca occhiata di quando in quando: per quanto mi riguarda, il curling è molto più avvincente. Il doctor Brom, invece, sembrava sinceramente interessato, e lo vedevo ogni tanto scribacchiare furiosamente sul suo taccuino. All’ultima mano, mentre l’annunciatore aveva iniziato a tessere le lodi del vincitore, Brom si è alzato e ha spento la tivù. Stranamente, il suo viso era quasi sorridente. «Non ci crederai, ma molti di quei giocatori sono degli algomatici naturali. Ho provato a verificare le loro scelte, e coincidevano quasi sempre con le mie.» «Sì, proprio così», ho fatto io sarcastico. «E allora perché non si presenta direttamente al campionato? Il montepremi è davvero allettante!». «Dovresti sapere che la teoria è ben diversa dalla pratica... il poker è anche e soprattutto un gioco di nervi e sangue freddo, e queste cose l’algomatica non riesce ancora a modellarle. Però si possono fare delle operazioni interessanti, ad ogni modo.» Brom ha continuato il suo discorso facendomi notare come le combinazioni del poker abbiano un ordine ben definito di valore: coppia, doppia coppia, tris, scala, full, colore, poker, scala reale. Possiamo immaginare che l’ordinamento sia stato fatto calcolando il numero totale di combinazioni possibili e valutando quindi la possibilità relativa di ottenere l’una o l’altra. Il tutto ha indubbiamente un senso, ma ci sono alcuni fattori che non rendono le cose così semplici. Trascuriamo pure il fatto che se io ho in mano alcune carte, gli altri non potranno averle; e per comodità limitiamoci al classico poker, evitando le varianti come il Texas hold’em che oltre che essere il titolo di tonnellate di messaggi di spam complica la vita con le carte “in comune”. C’è un punto molto più importante, dato dal numero di >> 60 carte nel mazzo. Mentre nel poker americano il mazzo è sempre composto di 52 carte, in Italia si usava un tempo toglierne alcune. La regola era “la carta dal valore più basso è pari a undici meno il numero di giocatori”: quindi se si è in quattro il mazzo era composto dalle trentadue carte dal sette all’asso, in cinque si aggiungevano anche i sei e così via. «Bene: le frequenze relative delle varie combinazioni sono sempre le stesse al variare del numero di carte nel mazzo, oppure no?» Un sorriso sardonico è apparso per un attimo sul volto di Brom, che ha subito proseguito il suo discorso. «Poi già che ci siamo potremmo anche inventarci qualche nuova combinazione. Ad esempio, su un mazzo di 52 carte, supponendo che l’asso abbia valore 1 e le figure 10, il valore medio di una mano di cinque carte dovrebbe essere 33. Se supponiamo di introdurre questa nuova combinazione, come dovremmo inserirla tra quelle usuali?» Lancio la sfida a voi lettori: buona programmazione! Dev 146: le risposte Il problema apparso su Dev 146 è noto nella letteratura anglofona con il nome di “Euler brick”: chi volesse leggere un po’ di notizie ulteriori può ad esempio digitare http:// www.durangobill.com/IntegerBrick.html (interessante trattazione algomatica, tra l’altro), http://f2.org/maths/peb.html (con vari risultati teorici), e naturalmente MathWorld, a http: //mathworld.wolfram.com/EulerBrick.html che però si limita a dare una rapida carrellata dei risultati. I bagordi natalizi hanno fatto sì che solamente due morigerati lettori, Sebastien Costa e Claudio Galassi, mi inviassero delle soluzioni in tempo per la pubblicazione in questo numero: complimenti a entrambi! Ricordo che Le regole del Doctor Brom: 1. Non si chiede di trovare la soluzione ai problemi, ma di scrivere un programma per trovarle. L’algomatica ritiene che il cervello umano sia troppo importante per costringerlo a cercare le soluzioni a tentoni. 2. Il programma può essere scritto in un qualunque linguaggio di programmazione: l’algomatica è agnostica e non fa preferenze. 3. Dovete inviare il programma (sorgenti e se possibile i binari) all’indirizzo [email protected]. Sono gradite delle considerazioni sugli algoritmi scelti, come scorciatoie teoriche utilizzate, tipo di rappresentazione dei dati, o altro ancora. L’algomatica non è sinonimo di forza bruta. Se possibile, inviate anche l’eseguibile in formato compresso. 4. Il doctor Brom selezionerà le soluzioni migliori, che saranno pubblicate e commentate nella rivista. DEV > n.148 febbraio 2007 Algomatica del doctor Brom se volete che la vostra soluzione appaia “subito” (due mesi dopo la pubblicazione, a dire il vero...) dovete inviarmela entro il 10 del mese successivo all’uscita in edicola di Dev, visti i tempi di impaginazione; ma non ho nessun problema a inserire una risposta valida anche nel numero successivo! Più in là però no, perché avreste già potuto leggere la soluzione nella rivista. L’approccio di entrambi i solutori è stato quello di bruta forza, anche se poi Sebastien è andato a farsi una bella ricerca su Internet e ha scoperto che esistono delle formule per generare le terne pitagoriche, il che gli ha evitato di dovere provare lui tutti i triangoli rettangoli possibili per scoprire se la loro ipotenusa è intera. Da qui le loro strade si dividono. Sebastien fa una ricerca di coppie di triangoli rettangoli che abbiano un cateto della stessa lunghezza, e verifica se anche i due cateti rimanenti possono formare una terna pitagorica, il tutto in Borland C++; Claudio preferisce invece prendere i cateti delle terne pitagoriche e vedere se li si può rimpolpare nella terza dimensione con un terzo cateto, formando TABELLA 1 I primi mattoni perfetti, con lato maggiore inferiore a 10000 44 117 240 240 252 275 140 480 693 85 132 720 160 231 792 1008 1100 1155 187 1020 1584 429 880 2340 832 855 2640 780 2475 2992 828 2035 3120 1560 2295 5984 528 5796 6325 195 748 6336 1155 6300 6688 1755 4576 6732 495 4888 8160 1575 1672 9120 2964 9152 9405 DEV > n.148 febbraio 2007 RIQUADRO 1 Risposta ai problemi ausiliari del doctor Brom Il doctor Brom mi ha comunicato di essere stato piuttosto deluso per le scarse - per non dire nulle - risposte ai due problemini aggiuntivi che aveva proposto. Come ha sempre detto, l’algomatica non è solamente forza bruta, ma anche cervello: in questo caso la soluzione si poteva trovare senza nemmeno accendere il proprio calcolatore. Il primo problema chiedeva di dimostrare che in ogni terna pitagorica almeno un lato è multiplo di tre. In realtà si può dare un risultato leggermente più forte, e cioè che in ogni terna pitagorica almeno un cateto è multiplo di tre. Supponiamo infatti che nessuno dei due cateti lo sia: le loro lunghezze saranno quindi esprimibili come 3n+1 oppure 3n+2. Il loro quadrato sarà rispettivamente 9n2+6n+1 oppure 9n2+12n+4; in ciascuno dei casi abbiamo un numero che diviso per 3 dà resto 1. Se sommiamo i quadrati sui due cateti avremo quindi un numero che diviso per 3 dà resto 2, e questo numero dovrebbe essere il quadrato dell’ipotenusa: ma se l’ipotenusa fosse multipla di 3 anche il suo quadrato lo sarebbe, e abbiamo appena visto che se non è cpsò il quadrato dà resto 1 in ogni caso, e non 2. Per il secondo problema, la strada è simile. Perché il triangolo abbia l’area non intera, occorre che entrambi i cateti siano di lunghezza dispari, quindi esprimibili come 2n+1 e 2m+1. Sommando i loro quadrati otteniamo l’espressione 4n2+4n+1 oppure 4m2+4m+1 che si può riscrivere come 4(n2+n+m2+m)+2. Ma se l’ipotenusa ha lunghezza dispari, anche il suo quadrato ha lunghezza dispari; se invece è pari, e quindi esprimibile come 2k, il suo quadrato è multiplo di 4, mentre la somma dei quadrati sui cateti non lo è. Insomma, non esistono terne pitagoriche che formino un triangolo con area non intera. pertanto un bel mattone perfetto. Il linguaggio scelto da lui è il Visual Basic interno a Excel. I curiosi possono vedere nella Tabella 1 i più piccoli mattoni perfetti primitivi, quelli cioè che hanno i tre cateti primi tra loro. È sempre naturalmente possibile costruire un nuovo mattone perfetto semplicemente moltiplicando i tre lati per lo stesso numero, ma converrete con me che non c’è gusto. Ah sì, c’era anche il mattone piuccheperfetto, quello che ha anche la diagonale principale di lunghezza intera. Come forse avrete intuito notando l’espressione del doctor Brom, quello è un problema aperto: nessuno ha dimostrato che è impossibile costruirne uno, ma sono stati testati i numeri fino a ventun miliardi, e non si è trovato nessun esempio. Insomma, se qualche lettore trovasse mai un mattone perfetto si rivolga a me, che gli passo immediatamente l’indirizzo di una rivista matematica dove potrà pubblicare il risultato! Maurizio Codogno Matematico ormai perduto, si occupa di back-end per servizi multimediali presso Telecom Italia. Il suo sogno è diventare un Vero Tuttologo: i risultati possono essere visti nel suo sito: http://xmau.com 61 <<