Newsgroup: it.hobby.enigmi
Titolo: non più di 30

Questo l'ho appena letto, non ho la soluzione.
Quindi lo porpongo e posso anche partecipare.
24 carte, 4 semi X 6 carte, dall'1 al 6.
A e B scelgono a turno una carta e la mettono nel piatto. Perde chi aggiunge 
al piatto la carta che fa superare la somma 30.
Tanto per rompere il ghiaccio, propongo la prima analisi.
Pensavo vincesse facilmente A, scegliendo un 2 e poi sempre il complento a 
7.
Esempio di vittoria per A:
A  B
2  3
4  5
2  4
3  1
6
Perň se B usa tutti i 2 e come ultimo un 5, A non vince piů:
A  B
2  2
5  2
5  2
5  5
?
i 2 sono finiti e siamo a 28! A per non sballare puň solo scegliere 1, e B 
vince con 1.
-- 
Ciao, Silv:o) 


A gioca 1 e vince.
Infatti, se B gioca  2-3-5-6, A risponde con il complemento a 8 (prende il 
9),
e poi arriva a 16, a 23 e a 30 e vince.
Es. 1  5            1  2
    3  2            6  2
    5  2            5  2
    5  2            5  2
    5               5
se B gioca 4, A risponde con 4. A questo punto B puň giocare il 4; se A 
prende
il 16, giocando 3, perde:
1  4
4  4
3  4
3  3
non ci sono piů 4, A puň giocare 1-2-3 e B vince con il complemento a 4
Ma A gioca 2; B prende il 16 giocando 1. A gioca 4, B 3; A gioca 3 e B
non puň giocare 4 (non ce ne sono piů) e perde:
1  4
4  4
2  1
4  3
3  ..... 1-2-3   e A vince con 3-2-1
se B gioca anche lui 1, A risponde con 6; B prende il 9 giocando 1;
A gioca 6; B risponde 1; A gioca 6 e B non ha piů 1 da rispondere e perde
1  1
6  1
6  1
6  1
6   B č costretto a uscire >30
nel caso B non prenda il 9, A la mano seguente prende il 16 e vince:
1  1
6  2
6  1
6  1
6
(Salvo errori)
Ciao, Nino


1  1
6  1
6  1
6  2-3-4-5-6  (non puň prendere il 23, perchč non ci sono piů 1)
6-5-4-3-2   e vince A


 3  ..... 1-2-3   e A vince con 3-2-1
Qui mi pare ci sia un problema.
 1  4
 4  4
 2  1
 4
siamo arrivato a 20 e tocca a B.
A vince se riesce a portarsi a 26 (per mancanza di 4), oppure direttamente a 
30. Ma se B sceglie 6 si porta lui a 26 e quindi rende impossibili entrambe 
le cose. Come la mettiamo?
 1  4
 4  4
 2  1
 4  6
-- 
Silv:o) 

 3  ..... 1-2-3   e A vince con 3-2-1
L'idea è buona, ma giocata troppo presto.
Come ho detto nell'altro post, se A *cede* subito il 16 a B sperando che B 
continui a credere che 23 è vincente, si sbaglia: B sceglie 6 come quarta 
carta e si porta a 26!
Invece A dovrebbe tenersi il 16 e rinunciare al 23 per un più modesto 22, 
dal quale impedisce a B di arrivare a 26.
1  4
4  4
3  4
2
A questo punto è chiaro che a 26 ci arriverà A.
Resta da vedere cosa succede se B non gioca 4 al terzo turno. Per esempio 
potrebbe portarsi a 22 con un 6, però con un 4 ancora in giro non valgono le 
considerazione fatte sopra.
Per ora mi fermo qui, continuo l'analisi ma lascio anche ad altri il 
divertimento.
-- 
Ciao, Silv:o)


OK
A non gioca 4, ma 3
1   4
4   4
2   1
3
Se B prosegue con 1-2-3, A prende il 23 e vince
Se B prosegue con 4, A risponde con 3 e vince
Se B prosegue con 5-6, A risponde con 6-5  e vince
Nino

 le considerazione fatte sopra.
Infatti!
1  4
4  4
3  3
Se A gioca 1-2-3, B risponde 3-2-1 prende il 23 e vince
Se A gioca 4, B risponde 3 e vince perchè non ci sono più 4
Se A gioca 5-6, B risponde 6-5 e arriva a 30
Mentre A vince come ho detto nell'altro post
Ciao, Nino

 Se B prosegue con 5-6, A risponde con 6-5  e vince
Sě, ma č tutto forzato?
B al secondo turno gioca 4 per cercare di eliminarli tutti ed evitare la 
sconfitta, altrimenti certa, della regola 2-9-16-23-30. Perň potrebbe 
ottenere lo stesso scopo giocando 3, obbligando A a replicare col 
complementare 4, se vuol tentare di vincere seguendo la regola base. Abbiamo 
visto che in quel caso invece perderebbe.
A   B
1   4
4   3
4   3  e vince B, anche se A aveva raggiunto 16.
Quindi, se non si trova una replica alternativa, crolla anche il caposaldo 
16!
-- 
Silv:o) 

 16!
dopo
A   B
1   4
4   3
B vince
se A gioca 1-2-3 B gioca 3-2-1 e raggiunge 16 impiegando - cosa 
fondamentale - ciascun numero al più due volte. In questo modo può sempre 
rispondere due volte con il complemento a 7, vincendo.
se A gioca 4, raggiunge 16, ma il 4 è utilizzato tre vote. Quindi B può 
giocare due volte 3 e A non ha due complementari da ribattergli.
se A gioca 5-6 B gioca 6-5 e raggiunge direttamnte il caposaldo successivo, 
23.
Quindi 1-4-4 è perdente per A.
Sto provando 1-4-3
-- 
Ciao Silv:o)

 Sto provando 1-4-3
Tentativo sciocco. B gioca 4 riportandosi al caso precedente.
-- 
Silv:o)

 Sto provando 1-4-3
mi pare che:
1-4-1 vince B con 1
1-4-2 vince B con 1
1-4-3 visto, vince B con 4
1-4-4 visto, vince B con 3
1-4-5 facile, vince B con 6 conquistando il caposaldo 16
1-4-6 facile, vince B con 5 conquistando il caposaldo 16
Se qualcuno conferma l'analisi per 1-41- e 1-4-2 possiamo concludere che 1-4 
vince B e dunque 1 non è una buona scelta per A.
Sto analizzando il 2 iniziale e sono speranzoso, forse vince A.
-- 
Ciao, Silv:o) 

Silvio Sergio ha scritto:

Ho fatto un brute force.
A perde.

 A perde.
I risultati sono esprimibili con poco piu' di 500 valori.
Se la cosa puo' interessare, domani li posto.
Tenete conto che mettendo 4 valori per riga, saltano fuori quasi 150
righe.
Saluti,

"Il bragozzi" ha scritto nel messaggio

Grazie, postali pure, a me interessa.
Ciao, Nino 

 > A perde.
Quasi quasi ti sfido, a soldi.
Gioco con A, fai tu la posta.
-- 
Silv:o)

 ha scritto nel messaggio 
news:1168882429.4...@l53g2000cwa.googlegroups.com...

Purtroppo starò fuori per lavoro tutta la settimana, per cui non potrò 
onorare la sfida.
Lascio in mia vece un programma VB. Fa lo stesso?
Mi è venuto proprio bene, potenza della ricorsione :)
-------8<---------------------------------
Function Vince(giocatore, avversario, limite, sequenza, carte()) As Boolean
  For j = 1 To 6
    If j = limite And carte(j) < 4 Then
      'se raggiungo il limite vinco al volo
      Vince = True
      Exit Function
    End If
    If j < limite And carte(j) < 4 Then
      'se non supero il limite e non ho usato tutte e 4 le carte
      carte(j) = carte(j) + 1
      If (Vince(avversario, limite - j, sequenza & j, carte)) Then
        'l'avversario vince: rimetto a posto la carta fallimentare e ne 
provo un'altra
        carte(j) = carte(j) - 1
      Else
        'stampo solo i primi livelli
        If Len(sequenza) < 5 Then Debug.Print sequenza & j, giocatore
        Vince = True
        carte(j) = carte(j) - 1
        'se trovare una carta vincente non ne provo altre!
        Exit Function
      End If
      End If
    Next j
    Vince = False
End Function
Public Sub Main()
    Dim c(1 To 6)
    Debug.Print Vince("A", 30, "", c)
End Sub
-------8<---------------------------------
Ecco l'output semplificato (solo i primi 3 livelli) che dimostrano come A 
vinca giocando 2 (e il programma non si danna l'anima a cercare altre 
soluzioni).
115           A
125           A
135           A
14            B
215           A
222           A
234           A
243           A
251           A
261           A
2             A
Vero
Che 14 fosse vincente per il B lo avevo *quasi* dimostrato a mano, mi 
mancava qualche sottocaso un po' noiosetto con i numeri piccoli all'inizio. 
Poi il post del Bragozzi ha leggittimato l'uso della forza brutta :)
-- 
Ciao, Silv:o)

"Silvio Sergio" ha scritto nel messaggio

Sembra incredibile, ma penso anch'io che sia
favorito il secondo, avendo sempre la
contromossa vincente.
Nino 

 Mi è venuto proprio bene, potenza della ricorsione :)
Però ho toppato il copincolla, dopo gli ultimi colpi di cipria. Lo riporto 
senza commenti (uno di quei colpi di cipria di cui sopra, aggiunti 
direttamente scrivendo il post)
Function Vince(giocatore, avversario, limite, sequenza, carte()) As Boolean
  For j = 1 To 6
    If j = limite And carte(j) < 4 Then
      Vince = True
      Exit Function
    End If
    If j < limite And carte(j) < 4 Then
      carte(j) = carte(j) + 1
      If (Vince(avversario, giocatore, limite - j, sequenza & j, carte)) 
Then
        carte(j) = carte(j) - 1
      Else
        If Len(sequenza) < 3 Then Debug.Print sequenza & j, giocatore
        Vince = True
        carte(j) = carte(j) - 1
        Exit Function
      End If
    End If
  Next j
  Vince = False
End Function
Public Sub Main()
  Dim c(1 To 6)
  Debug.Print Vince("A", "B", 30, "", c)
End Sub
-- 
Silv:o)

"Nino"  ha scritto nel messaggio

Ops...:-(
Era meglio se me ne stavo zitto... :-)
Quindi, partendo con il 2, vince sempre A...
Nino 

 Quindi, partendo con il 2, vince sempre A...
Ecco i dettagli:
21111         A
21121         A
2113          B
21211         A
21225         A
2123          B
2131          B
2141          B
21516         A
21522         A
21535         A
21544         A
21553         A
21561         A
215           A
22111         A
22125         A
2213          B
22215         A
22224         A
22235         A
22242         A
22251         A
22261         A
222           A
2311          B
2321          B
23313         A
23323         A
23331         A
23341         A
2335          B
23413         A
23423         A
23431         A
23443         A
23452         A
23461         A
234           A
2411          B
2421          B
24313         A
24323         A
24331         A
24343         A
24352         A
24361         A
243           A
25116         A
25122         A
25135         A
25144         A
25153         A
25161         A
251           A
26115         A
26122         A
26134         A
26143         A
26151         A
26161         A
261           A
-- 
Ciao, Silv:o) 

 Ciao, Silv:o)
Ciao Silvio,
forse ti sei dimenticato di questo thread di parecchio tempo fa:
http://tinyurl.com/y3hghu
Dario Uri proponeva una prima versione giocata con un dado (risalente a
Martin Gardner), una seconda variante di Dario proprio con le carte da 1 a 6
dove però il totale da realizzare in entrambi è 31.
Parecchio tempo dopo, sempre su questo NG, io chiedevo informazioni
relativamente a una versione di Sam Loyd:
http://tinyurl.com/y5s33c
Circa un mese dopo, affascinato dal tuo meccanismo "ad arrampicata", scrissi
un programmino per giocare a "Blind Luck", e postai la cosa qui:
http://tinyurl.com/tujy5
.
Eri sempre tu quel Silvio del 2001, vero? ;-))
Un saluto,
Francesco

 Ciao, Silv:o)
Hai ragione. Ho trovato un errore nel calcolo del valore del mucchio.
Corretto quello, l'unica possibilita' di vittoria per  A e' iniziare
con 2.
Salvo altri errori, ci sono 3220 possibili stati (1611 in cui gioca A,
1609 in cui gioca B) per i quali il valore del mucchio e' inferiore o
uguale a 30.
2384 sono vincenti, ossia portano alla vittoria del giocatore di turno.
Di questi, 1184 sono di A e 1200 di B.

 Eri sempre tu quel Silvio del 2001, vero? ;-))
minchia. e chi si ricordava!
6 anni fa lo prendevo per la coda, ora per le corna.
Meglio così. Mi piaceva molto come l'avevo affrontato, ma il programma
ricordivo che ho scritto stavolta mi ha dato molte soddisfazioni. Primo
perché ha girato più o meno al primo tentativo, poi prché traduce in
maniera molto semplice la constatazione, Catalanesca, che uno vince
solo se l'altro, comunque giochi, perde.
-- 
Ciao, SIlv:o)

 ricordivo che ho scritto stavolta mi ha dato molte soddisfazioni.
E già. visto che non ricordo i problemi che ho già trattato, scrivo
un bel programma *ricordivo* e risolvo tutto!
-- 
Silv:o)