Newsgroup: it.hobby.enigmi
Titolo: Indovinello sul tram

Forse lo conoscete già, però non è affatto male e io non l'avevo mai
sentito, quindi ve lo propongo.
 
Due abitanti del pianeta Papalla (A e B) parlano fra di loro sul tram:
 
A: «Ho un numero intero positivo di figli, le cui età sono interi
positivi, la somma dei quali è il numero di questo tram, mentre il
prodotto è la mia età.»
 
B: «Interessante! Forse se tu mi dicessi la tua età e il numero dei tuoi
figli, potrei ricavare le loro età?»
 
A: «No.»
 
B: «Aha! ADESSO so quanti anni hai!»
 
Domanda: qual è il numero del tram?
 
M.
 
-- 
Per rispondermi via e-mail togli l'ovvio.

 
Domanda: qual è il numero del tram?
 
 
 
s
 
 
 
p
 
 
 
o
 
 
 
i
 
 
 
l
 
 
 
e
 
 
 
r
 
 
 
13. Età 36, 3 figli, di età 6, 6, 1 o 9, 2, 2. Sono ammessi gemelli o 
comunque figli con la stessa età, vero?
(Onestamente devo ammettere che l'ho risolto per prove e errori).
 
-- 
Paolo Lucchesi
 
email: plucchesiNOSPAM(at)NOSPAMtin(dot)NOSPAMit
homepage: 
http://www.paololucchesi.it
 

 comunque figli con la stessa età, vero?
 
Certo.


 Certo.
 
Ma scusa se ad esempio si sa che:
numero =  2
eta'_A = 42
 
risultamo rispettate tutte le condizioni, infatti ci sono tre soluzioni:
1)
eta'_1 =  7
eta'_2 =  6
tram   = 13
 
2)
eta'_1 = 14
eta'_2 =  3
tram   = 17
 
3)
eta'_1 = 21
eta'_2 =  2
tram   = 23
 
Quindi se questa e' la realta', come fa a indovinare? Voglio dire: sei
sicuro di non aver tralasciato qualcosa? Magari che non esistono linee
tramviarie di numero primo in questo caso?
 
[crosspost tolto perche' aioe ha bandito ism]
 
-- 
Tanti saluti
 

 risultamo rispettate tutte le condizioni
 
Devi leggere meglio il testo: TUTTE le informazioni date sono
importanti. La soluzione esiste ed è unica.


Secondo me il quesito è incompleto.
 
La prima soluzione che si trova è 16.
E il padre a 144 anni.
Ma anche 17 e 18 e tante altre.
 

 La prima soluzione che si trova è 16.
 
Non è la risposta corretta.


 Quindi se questa e' la realta', come fa a indovinare?
 
Rileggendo il tuo messaggio mi rendo conto che forse non ti è chiara una
cosa che è implicita nel testo (ma ovvia): B conosce il numero del tram
su cui lui e A si trovano.


 No.
 
Vero. Tram 13, 5 figli, 48 anni, 2 soluzioni. Colpa mia...
 
Rimuginiamo un altro po'.
 
bye
-- 
Paolo Lucchesi - p...@NOSPAMpaololucchesi.it

 No.
 


 ed è unica.
 
Questo non saprei dimostrarlo...
 
 
 
 
-- 
TRu-TS
buon vento e cieli sereni


S
.
 
p
 
.
 
o
 
.
 
i
 
.
 
l
 
.
 
e
 
.
 
r
 
.
 
 
Il numero del tram e` il 12.
 
Infatti, immaginiamo che B conosca il numero del tram (visto che ci e` 
salito), quindi e` un'informazione a lui nota.
 
Noto questo, B deve provare (in linea di principio, poi magari e` piu` 
furbo) tutte le eta` possibili di A e tutti i possibili numeri di figli, 
risolvere il problema delle eta` dei figli, e limitarsi alle coppie 
(Nfigli,EtaA) in cui il problema ha piu` di una soluzione.
 
A questo punto, B dichiara che l'eta` di A (noto il numero di tram) e` 
unica.
 
Se noi valutiamo, dato il numero di tram, quante possibilita` abbiamo 
per l'eta` di A, otteniamo che
 
Tram	Eta
numTram(2)	[]
numTram(3)	[]
numTram(4)	[]
numTram(5)	[]
numTram(6)	[]
numTram(7)	[]
numTram(8)	[]
numTram(9)	[]
numTram(10)	[]
numTram(11)	[]
numTram(12)	[48]
numTram(13)	[36, 48]
numTram(14)	[36, 40, 48, 72, 96]
numTram(15)	[36, 40, 48, 72, 96]
numTram(16)	[36, 40, 48, 72, 80, 90, 96]
numTram(17)	[36, 40, 48, 72, 80, 90, 96]
numTram(18)	[36, 40, 48, 72, 80, 90, 96]
numTram(19)	[36, 40, 48, 72, 80, 90, 96]
numTram(20)	[36, 40, 48, 72, 80, 90, 96]
numTram(21)	[36, 40, 48, 72, 80, 90, 96]
numTram(22)	[36, 40, 48, 72, 80, 90, 96]
numTram(23)	[36, 40, 48, 72, 80, 90, 96]
numTram(24)	[36, 40, 48, 72, 80, 90, 96]
numTram(25)	[36, 40, 48, 72, 80, 90, 96]
numTram(26)	[36, 40, 48, 72, 80, 90, 96]
numTram(27)	[36, 40, 48, 72, 80, 90, 96]
numTram(28)	[36, 40, 48, 72, 80, 90, 96]
numTram(29)	[36, 40, 72, 80, 90, 96]
numTram(30)	[36, 40, 72, 80, 90, 96]
numTram(31)	[40, 72, 80, 90, 96]
numTram(32)	[80, 90, 96]
numTram(33)	[90, 96]
numTram(34)	[90, 96]
numTram(35)	[90, 96]
numTram(36)	[90, 96]
numTram(37)	[90, 96]
numTram(38)	[96]
 
pero` col 96 viene un numero di figli un po' altino, per cui lo escluderei.
 
Ciao,
Marco
 
--
http://docente.unife.it/marco.gavanelli
 

 
http://docente.unife.it/marco.gavanelli
 
 
 
 
--- news://
freenews.netfront.net/
 - complaints: 
ne...@netfront.net
 ---

 Il numero del tram e` il 12.
 
Giusto! La stessa risposta è stata data anche da Tommaso Russo, 6 minuti
prima di te. Riporto qui sotto la tua soluzione

Che 96 sia un valore alto per l'età non è detto: che ne sappiamo noi
della vita sul pianeta Papalla? In realtà però nei tuoi calcoli ti sei
limitato (ipotizzo) alle età minori di 100, altrimenti avresti trovato
anche diverse altre possibilità, per i tram dal numero 15 in su.
 
Comunque il problema dell'unicità si risolve senza ulteriori calcoli:
una volta constatato che per il tram numero 13 ci sono due possibili età
e due possibili insiemi di figli, basta osservare che aggiungendo a
questi insiemi un ulteriore figlio di età 1 si ottengono le stesse due
possibili età anche per il tram n. 14, e così via per i numeri
successivi.
 
Per la cronaca: il problema è stato inventato da John Conway negli anni
'60 ed è stato proposto da Tanya Khovanova sul numero 35 del 2013 del
Mathematical Intelligencer.


 Mathematical Intelligencer.
 
 
Credo di non aver capito l'interpretazione del testo.
Quando B dice 'No' per me vuol dire che se anche A sapesse il numero di 
figli e la età di B non potrebbe comunque calcolare l'età dei figli.
 
 

 su cui lui e A si trovano.
 
Gia', proprio cosi', per me t = numero del tram, non era un dato.
In effetti ieri volevo risponderti nuovamente, ma avrei dovuto
semplicemente ripeterti cio' che t'avevo gia' detto, il che era senza
senso, cosi' ho aspettato.
Ora ho visto la soluzione t=12, provero' a impostare un procedimento mio
per divertimento, sembra proprio un bel problema, ma bisogna incrociare
le partizioni di t coi suoi fattori e il numero delle partizioni sale
molto in fretta, per 12 son gia' 77. Oppure c'e' un'altra strada.
 
-- 
Tanti saluti
 

 le partizioni di t coi suoi fattori e il numero delle partizioni sale
 
le partizioni di t coi fattori di eta'_A e il numero delle partizioni sale
 
-- 
Tanti saluti
 

 figli e la età di B non potrebbe comunque calcolare l'età dei figli.
 
Esattamente. Però B conosce ovviamente il numero del tram. Che cosa non
ti torna?


 ti torna?
 
Innanzi tutto mi chiedevo se avevo interpretato bene il testo.
Ma vedo di si ...
 
Detto questo mi chiedo cosa privilegia la soluzione 12.
 
La mia soluzione 16 con età del padre di 144 anni soddisfa anche questa 
tutte le condizioni del quesito.
 
Scomponendo in fattori primi 144 ottengo 2,2,2,2,3,3.
Se i figli sono 4 non è possibile stabilre se la combinazione di età è 
6,6,2,2 oppure 3,3,8,2 sapendo che il tram è il numero 16.
 
Inoltre da questa soluzione posso trane infinite valide sommando 1 ed 
aumentando il numero dei figli.
 
Insomma in breve oltre 12 canonico ci sono infinite soluzioni.
 
Nessuna soluzione scelta, secondo me, è in contrasto con la frase:
 
«Interessante! Forse se tu mi dicessi la tua età e il numero dei tuoi
figli, potrei ricavare le loro età?»
 
Perchè nella frase c'è la parola 'forse'.
In effetti, ad esempio, il problema è sempre risolvibile analiticamente 
se i figli sono solo 2 e quindi ... questa frase non mi da nessuna 
informazione particolare.
 
Dove sbaglio?
 
 

 successivi.
 
Geniale. Col senno di poi... mi sarebbe bastato andare avanti a 
curiosare per intuirlo:
 
14 = 6+6+1+1   prod = 36
14 = 9+2+2+1   prod = 36
 
14 = 4+4+3+1+1+1   prod = 48
14 = 6+2+2+2+1+1   prod = 48
 
 
18 = 6+6+1+1+1+1+1+1   prod = 36
18 = 9+2+2+1+1+1+1+1   prod = 36
 
18 = 4+4+3+1+1+1+1+1+1+1   prod = 48
18 = 6+2+2+2+1+1+1+1+1+1   prod = 48



[cut]
 
In effetti anche a me il problema mi pare ambiguo.
 
In particolare, quando A risponde laconicamente "No" alla domanda "Forse se 
tu mi dicessi la tua età e il numero dei tuoi figli, potrei ricavare le loro 
età?" non si capisce se questo "No" di A sia un no che include il numero del 
tram tra i dati del problema (e che ci dice che, pur avendo tutti e tre i 
dati salienti del problema, non possiamo giungere a stabilire con certezza 
le tre età dei figli) oppure se non intende includerlo, come dire "se mi 
chiedi se tu possa giungere a stabilire con certezza l'età dei miei figli 
con soli questi due dati di cui mi chiedi (mia età e numero dei figli) 
allora ti dico "No".
 
Propongo un'alternativa al dialogo nel testo del problema:
 
A: «Ho un numero intero positivo di figli, le cui età sono interi
positivi, il prodotto dei quali è la mia età.»
 
B: «Interessante! Forse se tu mi dicessi la tua età e il numero dei tuoi
figli, potrei ricavare le loro età?»
 
A: «No, non con certezza. Dovrei aggiungere che la somma delle loro età è il 
numero di questo tram. »
 
B: «Aha! ADESSO so quanti anni hai!»
 
 
 


 stabilire con certezza le tre età dei figli)
 
codesto "tre" non vuol dir nulla... ;)
ovviamente intendevo "... non possiamo giungere a stabilire con certezza le 
età dei figli..." 


 Insomma in breve oltre 12 canonico ci sono infinite soluzioni.
 
Sì, ma da 13 in poi ci sono almeno due età che danno più soluzioni.
 
(La doppia soluzione non è ovviamente farina del mio sacco... l'ho 
trovata col geniale principio spiegato da Maurizio).


 Paolo Lucchesi - p...@NOSPAMpaololucchesi.it 
 
 
 


 E probabilmente anche il numero dei figli è diverso...
 
Appunto. B non sa l'età di A e il numero di figli, ma sa che queste 
informazioni non sarebbero sufficienti a determinare l'età dei figli.
Sa solo questo, e il numero del tram.
 
Sul tram 12 saprebbe per certo che l'età di A è 48 anni papalliani.
Perché se A avesse una qualsiasi età differente, sapendola (e sapendo il 
numero dei figli) lui sarebbe in grado di determinare univocamente l'età 
dei figli.
 
Sul tram 16 l'età di A potrebbe essere 48, 144, 36, 40, 72, 80, 90, 
96... (risultati copiati da Marco Gavanelli)
Per ciascuna di queste età di A, esiste un numero di figli per cui la 
loro età non è univoca.
Quindi B non potrebbe sapere con sicurezza l'età di A.


 1, 1, 1) e B non potrebbe essere sicuro dell'età di A.
 
Ah ecco ...
Ho capito quale informazione ho trascurato.
Il fatto che B alla fine riesce ad indovinare l'età di A :-)
 
Negli altri casi non sarebbe stato possibile.
Chiedo venia ...
 

 Sa solo questo, e il numero del tram.
 
 
Perdonami, facciamo il caso concreto:
 
Io sono B e tu sei A, e siamo sul tram 12, e lo sappiamo entrambi che è il 
12.
Tu mi proponi il problema e io ti chiedo: "forse, se mi comunichi la tua età 
e il numero dei tuoi figli, sarei in grado di arrivare alle loro età?"
 
Perchè mai dovresti rispondermi "No"?
 
Infatti, se mi dicessi che hai 48 anni e hai 3 figli (che sono i dati 
reali), l'unico modo per ottenere x+y+z= 12 e x*y*z= 48 è con la terna 2, 4, 
6.
 
Perciò la risposta alla domanda doveva essere "Sì" (in quanto tu hai 48 
anni, siamo sul 12, ed è possibile ricavare le età dei figli)
 
Se invece il tram fosse stato il 16, e mi dici che hai 144 anni e 4 figli, 
allora abbiamo l'ambiguità delle due quaterne 6, 6, 2, 2 e 2, 3, 3, 8
 
Perciò in questo caso sarebbe giustificata la risposta negativa (in quanto 
non è possibile ricavare univocamente le età dei figli)


 6.
 
C'è anche 8,3,1.
 

 6.
 
I dati reali sono 48 anni e 4 figli. E ci sono due possibilità.


 allora abbiamo l'ambiguità delle due quaterne 6, 6, 2, 2 e 2, 3, 3, 8
 
Oppure ho 48 anni e 8 figli, e abbiamo l'ambiguità tra le ottuple {4, 4, 
3, 1, 1, 1, 1, 1} e {6, 2, 2, 2, 1, 1, 1, 1}.
Oppure ho 36 anni e 6 figli: ambiguità tra {6, 6, 1, 1, 1, 1} e {9, 2, 
2, 1, 1, 1}.
Oppure ho 40 anni a 5 figli. O 80 anni e 4 figli.
In qualunque caso, non puoi determinare l'età dei figli.
Io ti rispondo "No" e tu non puoi dire se ho 36, 40, 48 o 144 anni... 
(evidentemente su Papalla a 144 si è ancora giovani e pimpanti).
 
Però la prossima volta vado a piedi...


 Paolo Lucchesi - p...@NOSPAMpaololucchesi.it 
 
 
 



 
 
Warning: la pagina contiene anche la soluzione, per cui, se volete 
cimentarvi, non leggete oltre il problema n.6.
 
 
A chi alla fine la soluzione se la andra' a vedere, chiedo: ma vi pare 
credibile che quel ragionamento venga fatto dai due prof. nel tempo del 
colloquio riportato nella narrazione? ;-)
 
 
 
 
(*)
------------------------------------------------------------
 
/*
**  partitions.c
*/
/*
**  October 1, 1997
**  This program implemented Algorithm 3.1 - 3.9
**  from "Combinatorial Algorithms"
**  Donald L. Kreher - Douglas Stinson
**  CRC press, 1999
**
**  Modified by TRu-TS on april 7, 2014
**  for another purpose
**
*/
 
#include<stdio.h>
#include<stdlib.h>
#define false 0;
#define true 1;
#define Min(x,y) ((x<y)?x:y)
   typedef struct partitionnode
   {
     int m;
     int numparts;
     int parts[101];
   } partition;
   int Pn[40][40];
   int P[50];
 
void output(partition a)
/*
**  print out the partition a
*/
{
  int i,j, prod;
  printf("%d = ",a.m);
  prod = 1;
  for(i=1;i<=a.numparts;i=i+1)
  {
 
     j = a.parts[i];
     prod = j*prod;
     printf("%d",j);
     if (i != a.numparts)
       printf("+"); else printf("   prod = %d",prod);
  }
}
 
void RecPartition(partition a, int m, int B, int N)
/*
**  See Algorithm 3.1
**  generate all partitions with largest part of size at most B
**  recursive procedure used in other procedures
*/
{
  int i;
  if(m==0)
  {
    a.numparts = N;
    output(a); printf("\n");
  }
  else
  {
    for (i=1;i<=Min(B,m);i=i+1)
    {
      a.parts[N+1] = i;
      RecPartition(a,m-i,i,N+1);
    }
  }
}
 
 
void EnumPartitions(int m, int n )
/*
**  Algorithm 3.5
**  compute the partition numbers P[i] and P[i,j] for i <= m, j <= n
*/
{
  int i,j;
  Pn[0][0] =  1;
  P[0] = 1;
  for(i=1;i<=m;i=i+1) Pn[n][0]=0;
  for(i=1;i<=m;i=i+1)
  {
    for (j=1;j<=Min(i,m);j=j+1)
    {
        if (i < (2*j))
          Pn[i][j] =  Pn[i-1][j-1];
        else
          Pn[i][j] =  Pn[i-1][j-1] + Pn[i-j][j];
      P[i] = P[i] + Pn[i][j];
    }
    P[i] = 0;
    for(j=1;j<=m;j++) P[i] = P[i] + Pn[i][j];
  }
}
 
int PartitionLexRank(int m,int n,partition a)
/*
**  Algorithm 3.8
**  find the rank of partition a,
**  where a is given in standard form
*/
{
   int i,r;
   partition b;
   EnumPartitions(m,n);
   b =  a;
   m =  b.m;
   n =  b.numparts;
   r = 0;
   while (m > 0)
   {
      if (b.parts[n] == 1)
      {
          m =  m-1;
          n =  n-1;
      }
      else
      {
         for(i=1;i<=n;i=i+1)
           b.parts[i]  =  b.parts[i] - 1;
         r =  r + Pn[m-1][n-1];
         m =  m-n;
      }
    }
    return(r);
}
 
void PartitionLexSuccessor(int m,int n,partition *a,int *flag)
/*
**  Algorithm 3.7
**  replaces the partition a by its successor,
**  where a is given in standard form
*/
{
   int i,j,d;
 
   i =  2;
   while( (i<=n) && ((*a).parts[1]<=((*a).parts[i]+1)) )
     i=i+1;
   if(i == (n+1))
   {
     *flag = false;
   }
   else
   {
      (*a).parts[i] = (*a).parts[i] + 1;
      d = -1;
      for(j=(i-1);j>=2;j=j-1)
      {
          d = d + (*a).parts[j] - (*a).parts[i];
          (*a).parts[j]  =  (*a).parts[i];
      }
      (*a).parts[1] =  (*a).parts[1] + d;
   }
}
 
int main()
{
   int m,n,i,j,r,s,num;
   int flag;
   partition a;
   char junk;
 
   for (m=1;m<=40;m=m+1) {
    for (n=1;n<=m;n=n+1) {
   printf("\nTest of Algorithm 3.7 with m=%d n=%d \n",m,n);
   a.m = m;
   a.numparts = n;
   a.parts[1] =  m-n+1;
   for(i=2;i<=n;i=i+1)
     a.parts[i] = 1;
   flag =  true;
   while(flag)
   {
      output(a);
      printf("\n");
      r=PartitionLexRank(m,n,a);
 
      PartitionLexSuccessor(m,n,&a,&flag);
   }
 
    }
 
    printf("\nEnd\n");
   }
 
   return(0);
}
 
------------------------------------------------------------


 
 
Beh, il problema comincia con:
 
Il professor Somma ed il professor Prodotto sono due logici perfetti, capaci
di dedurre quasi istantaneamente tutte le verità da qualunque sistema di
assiomi.
 
Quindi se si accettano i presupposti del problema direi che e' credibile......
 
 
Ciao,
      Gorgo
 

 sembrati un po' una presa in giro
 
In effetti nella versione originale di Conway i due interlocutori
vengono presentati come due "wizards". Però tutto sommato questo quiz
non è troppo esoso nelle richieste di calcolo: si potrebbe fare anche a
mano, con un po' di pazienza.
 
A prima vista ricorda molto il famoso indovinello "degli occhi azzurri"
di Martin Gardner, però è ancora più sorprendente perché non viene
fornito alcun dato.


colloquio riportato nella narrazione? ;-)
 
abbastanza credibile, dato che sono logici perfetti. AFAIR, questo
accenno di soluzione non mi richiese alcun calcolo elettronico. Da
DEWDNEY.ITA (o MATE.ITA), una ventina d'anni fa.
==================================================
MC>There are two different integers from 2-99 inclusive. Pam gets the
MC> product
MC> and Sam gets the sum.  Pam knows that Sam has the sum and Sam
knows
MC> that Pam
MC> has the product.  The following conversation takes place:
MC>
MC> Pam:  I don't know what the two numbers are.
MC> Sam:  I knew you'd say that.
 
Se Sam dice cio' significa che sicuramente la somma non puo' essere
ripartita in due numeri primi: deve essere 11 o 17 o 23 o 27 ecc.
chiamo ciascuno di queste somme "somma possibile".
 
MC> Pam:  In that case, I do know what the numbers are.
 
Il prodotto noto a Pam si scompone in due fattori in piu' modi,
ma solo una di queste scomposizioni deve corrispondere ad una
somma possibile, se Pam e' in grado di decidere ora! Chiamo
"prodotto possibile" ogni prodotto che soddisfa a cio'.
Esempio: 52 e' un prodotto possibile. Questo perche' 52=4*13
che corrisponde alla somma possibile 4+13=17; 52=2*26
corrisponderebbe a 2+26=28 che non e' una somma possibile.
Allora Pam saprebbe che la somma e' 17 e troverebbe 4 e 13
con una semplice equazione di II grado.
30 invece non e'un prodotto possibile perche' 30=5*6 che corrisponde
a 5+6=11 e 30=15*2 corrispondente a 15+2=17, e sia 11 che 17 sono
somme possibili, e Pam non sarebbe in grado di decidere.
I prodotti possibili sono tanti, ma l'ultima frase di Sam
dovrebbe svelare quale e' quello giusto.
 
MC> Sam:  In that case, I know what the numbers are too.
 
Se Sam ha ragionato come sopra, possiede una lista di prodotti
possibili; se e'in grado di trovare i due numeri, significa che la
sua somma puo' corrispondere ad un solo prodotto possibile.
Ad esempio, se avesse 11 come somma, non saprebbe decidere.
Infatti 11=2+9 che corrisponde a 2*9=18; 11=3+8 che corrisponde
a 3*8=24 e sia 18 che 24 sono prodotti possibili. Provando invece con
la somma 17 si trova che fra 2*15, 3*14, 4*13, 5*12, 6*11, 7*10,
8*9 l'unico prodotto possibile e' 4*13=52.
 
Ora io non ho provato a controllare le altre somme possibili, ma mi
sembra molto probabile che ognuna di esse corrisponda a vari prodotti
possibili e quindi non vada bene.
 
MC> What are the numbers?
 
Se la soluzione e' unica, 4 e 13.
===================================================
Ciao