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 <<