Io l'ho risolto così:
- Codice: Seleziona tutto
STEAM+HEAT=NIGHTS
Non so se esiste una vera e propria regola, ma intuitivamente e anche provando con valori "al limite" verifico facilmente che: se ho un numero di cinque cifre, sommato con uno a quattro cifre e il risultato ne ha sei... la prima cifra del numero con cinque cifre è 9 e la prima cifra della somma è 1.
S=9
N=1- Codice: Seleziona tutto
9TEAM+HEAT=1IGHT9
Se la T è il triplo di G e T deve avere una sola cifra, le combinazioni possibili di G,T sono
1,3 - 2,6 - 3,9
la prima e l'ultima sono scartate perché ho già usato 1 e 9. quindi resta solo la combinazione 2,6:
G=2
T=6- Codice: Seleziona tutto
96EAM+HEA6=1I2H69
la M si trova per differenza e vale: 9-6
M=3- Codice: Seleziona tutto
96EA3+HEA6=1I2H69
vedo che la A, sommata due volte, dà 6 e quindi si potrebbe pensare A=3, ma così non può essere perché il 3 è già stato usato, quindi... o ho sbagliato qualcosa prima oppure il 6 deve derivare dalla cifra delle unità di un 1
6, anche se non era chiaro nel testo che si potesse fare questo giochetto. Ad ogni modo, 16/2:
A=8- Codice: Seleziona tutto
96E83+HE86=1I2H69
la E sommata due volte dà un numero pari, ma H non può essere pari, perché ho il riporto di 1 del 16 di cui sopra. Quindi so che H è sicuramente dispari e non può che essere 5 oppure 7 (1,3 e 9 già usati).
Inoltre, anche qui, H è sicuramente parte di un numero a 2 cifre (1
5 o 1
7), perché se fosse ad una cifra sola (5 o 7) vorrebbe dire che E dovrebbe essere 2 o 3 (2+2+riporto o 3+3+riporto), ma entrambi già usati.
Quindi, per ottenere la E, tolgo il riporto da 15 o 17 e divido per 2: ottenendo i possibili valori: 7 oppure 8. Scartiamo 8 perché già usato, quindi
E=7di conseguenza ricaviamo subito H, che vale 5 (in realtà 1
5, 7+7+1 di riporto)
H=5- Codice: Seleziona tutto
96783+5786=1I2569
Eseguendo la somma degli addendi, ormai "in chiaro", si vede facilmente che:
I=0ma ci sarei anche arrivato per esclusione, avendo usato tutte le cifre tranne 0 e 4.
- Codice: Seleziona tutto
96783+5786=102569
Bravo
EcoTan!
Grazie
GuidoB, mi sono divertito!
Ah, chatgpt non lo fa (almeno nella versione senza registrazione), ma ti scrive un programma in python che va per tentativi, pesando ogni lettera in base alla posizione...
- Codice: Seleziona tutto
from itertools import permutations
# Definiamo le lettere e la condizione che la cifra 4 non è utilizzata
letters = "STEAMHEATNIGHTS"
digits = [0, 1, 2, 3, 5, 6, 7, 8, 9] # escludiamo il 4
solutions = []
# Proviamo tutte le permutazioni delle cifre disponibili
for perm in permutations(digits, len(set(letters))): # lunghezza unica di lettere
letter_to_digit = dict(zip(set(letters), perm))
# Assegniamo i valori alle lettere
S = letter_to_digit['S']
T = letter_to_digit['T']
E = letter_to_digit['E']
A = letter_to_digit['A']
M = letter_to_digit['M']
H = letter_to_digit['H']
N = letter_to_digit['N']
I = letter_to_digit['I']
G = letter_to_digit['G']
N2 = letter_to_digit['N'] # Ripetizione di N
G2 = letter_to_digit['G'] # Ripetizione di G
# Verifica che T sia il triplo di G
if T != 3 * G:
continue
# Calcoliamo i numeri
STEAM = S * 10000 + T * 1000 + E * 100 + A * 10 + M
HEAT = H * 1000 + E * 100 + A * 10 + T
NIGHTS = N * 10000 + I * 1000 + G * 100 + H * 10 + T * 1
# Verifica l'equazione
if STEAM + HEAT == NIGHTS:
solutions.append((letter_to_digit, STEAM, HEAT, NIGHTS))
solutions
che curiosamente trova questa soluzione:
- Codice: Seleziona tutto
[({'S': 6, 'N': 7, 'A': 9, 'E': 5, 'G': 1, 'T': 3, 'M': 0, 'I': 2, 'H': 8}, 63590, 8593, 72183)]
...ma non ho tempo ora di capire perché sbaglia
