Creato da tanksgodisfriday il 26/03/2006
Cose varie al PC, sul Web e nella mente. Puoi scrivermi a: tanksgodisfriday@libero.it
|
|
![](http://digilander.libero.it/tanksgodisfriday/bottoni/bottoniera.gif)
« Sesso benedetto | Dov'è l'Azerbaijan? » |
Al tirassegno - bisAlla soluzione del problema del tirassegno ci sono arrivato solo seguendo l'indicazione subliminale di donnesudestbarese: occorreva «un terno secco sulle ali... centrare, a volte, fa cadere tutto il castello!!!». Vale a dire colpire i pupazzi 25, 6 e 19. Solo così il puntaggio di quelli colpiti sommava esattamente 50, come richiesto dal problema. Rimaneva da capire se esistevano altre soluzioni o se quella era l'unica possibile. Un problema costruito bene, come ci si aspetta che siano quelli di Sam Loyd, dovrebbe avere un'unica soluzione, d'altra parte le combinazioni possibili di un certo numero di pupazzi abbattuti sui 10 disponibili sono tante, per l'esattezza 2^10 - 1 = 1023, molte più del massimo totale possibile, 167, cioè la somma dei valori di tutti e 10 i pupazzi. Quindi il dubbio era legittimo. Il modo più semplice per risolvere la questione è quello di elencare tutti e 1023 i risultati possibili con un semplice programma basic, e poi analizzare i risultati con excel; o meglio, visto che sto usando il netbook, con il foglio elettronico di open office. Il risultato è che effettivamente quella soluzione (25, 6 e 19) è unica, mentre esistono diversi altri valori che è possibile ottenere in moltissimi modi. I punteggi più gettonati sono 76 e 91 (23 modi per realizzarli), seguiti da 82 e 85 (22 modi). Poi giù giù fino ai valori che si possono ottenere in un unico modo. Quelli ottenibili con almeno tre pupazzi (con uno o due sarebbe troppo banale) sono 47 (25, 3 e 19) e, appunto, 50. Per chi fosse interessato, il programma scritto in ubasic è riportato sotto. La logica è abbastanza semplice: ogni giocata può essere vista come la rappresentazione binaria di un numero, con il valore "1" in corrispondenza dei pupazzi abbattuti, e "0" per quelli rimasti al loro posto. Basta quindi scorrere i numeri da 1 a 1023, calcolarne la rappresentazione binaria e sommare i valori dei pupazzi corrispondenti agli "1". Buona domenica. ps delle 18e30: apportata una piccola modifica (in meglio!) al programma. 100 print = print + "pupazzi.csv" 110 print "colpi,n.ro di colpi,somma" 120 np=10: dim p(np): f="----------" 130 nmax=2^np-1 140 p(1)=25: p(2)=27: p(3)=3: p(4)=12: p(5)=6 150 p(6)=15: p(7)=9: p(8)=30: p(9)=21: p(10)=19 200 for n0=1 to nmax 210 n=n0: s=0: j=1: a="": xp=0 220 r=n-2*int(n/2) 230 if r>0 then s=s+p(j): a=a+"x": xp=xp+1 else a=a+"-" 240 j=j+1: n=int(n/2) 250 if n>0 then 220 260 print left(a+f,np);",";xp;",";s 270 next n0 990 print=print 999 end |
Area personale
- Login
Inviato da: tanksgodisfriday
il 17/01/2023 alle 18:30
Inviato da: Fajr
il 17/01/2023 alle 17:14
Inviato da: Mr.Loto
il 07/01/2023 alle 18:09
Inviato da: Marco Rossi
il 18/08/2019 alle 21:27
Inviato da: amandaclark82
il 30/12/2016 alle 15:48