zanarico
Ominide
2 min. di lettura
Vota

Concetti Chiave

  • Il testo fornisce una serie di regole logiche per risolvere un problema matematico utilizzando variabili e condizioni.
  • Le soluzioni sono calcolate valutando diverse combinazioni di cifre con condizioni specifiche per ogni colonna di numeri.
  • Ogni soluzione verifica la non ripetizione delle cifre tra le variabili D, U, E, S, I, O, T per garantire l'unicità dei numeri.
  • Il programma utilizza condizioni con e senza riporti per diverse colonne, adattando le regole di calcolo di conseguenza.
  • I risultati delle diverse configurazioni vengono stampati attraverso l'uso della funzione write.

Per una descrizione del problema si veda l'articolo Intelligenza artificiale: un assaggio.

 cifra(0). cifra(1). cifra(2). cifra(3). cifra(4). cifra(5). cifra(6). cifra(7). cifra(8). cifra(9).  risolvi(A,B,C):- 	soluzione(A,B,C).   soluzione(A,B,C) :-                /* nessun riporto - solo D+S */ 	cifra(D), 	cifra(U), 	cifra(E), 	cifra(S), 	cifra(I), 	cifra(O), 	cifra(T),         O is E + I, 	T is U + E, 	T is D + S - 10 + 1, 	O is 1,         diversi(D,U,E,S,I,O,T), 	A is D*100+U*10+E, 	B is S*100+E*10+I, 	C is O*1000 + T*100 + T*10 +O, 	write(A), 	write(B), 	write(C).   soluzione(A,B,C) :-                /* riporto colonna unit e D+S*/ 	cifra(D), 	cifra(U), 	cifra(E), 	cifra(S), 	cifra(I), 	cifra(O), 	cifra(T),         O is E + I - 10, 	T is U + E + 1, 	T is D + S - 10, 	O is 1, 	diversi(D,U,E,S,I,O,T), 	A is D*100+U*10+E, 	B is S*100+E*10+I, 	C is O*1000 + T*100 + T*10 + O, 	write(A), 	write(B), 	write(C).    soluzione(A,B,C) :-                /* riporto colonna decine e D+S */ 	cifra(D), 	cifra(U), 	cifra(E), 	cifra(S), 	cifra(I), 	cifra(O), 	cifra(T),         O is E + I, 	T is U + E, 	T is D + S - 10, 	O is 1, 	diversi(D,U,E,S,I,O,T), 	A is D*100+U*10+E, 	B is S*100+E*10+I, 	C is O*1000 + T*100 + T*10 +O, 	write(A), 	write(B), 	write(C).  soluzione(A,B,C) :-                /* riporto colonne decine e unit e D+S */ 	cifra(D), 	cifra(U), 	cifra(E), 	cifra(S), 	cifra(I), 	cifra(O), 	cifra(T),         O is E + I - 10, 	T is U + E + 1 - 10, 	T is D + S - 10 + 1, 	O is 1, 	diversi(D,U,E,S,I,O,T), 	A is D*100+U*10+E, 	B is S*100+E*10+I, 	C is O*1000 + T*100 + T*10 +O, 	write(A), 	write(B), 	write(C).  diversi(D,U,E,S,I,O,T):- 	D == U,         D == E, 	D == S, 	D == I, 	D == O, 	D == T,         U == E, 	U == S, 	U == I, 	U == O, 	U == T, 	E == S, 	E == I, 	E == O, 	E == T, 	S == I, 	S == O, 	S == T, 	I == O, 	I == T, 	O == T. 

Domande da interrogazione

  1. Qual è l'obiettivo principale del codice presentato nel testo?
  2. L'obiettivo principale del codice è risolvere un problema di crittoaritmetica, determinando i valori delle variabili A, B e C attraverso diverse condizioni e calcoli matematici.

  3. Quali sono le condizioni utilizzate per trovare la soluzione nel codice?
  4. Il codice utilizza diverse condizioni, come l'assenza di riporto, il riporto nella colonna delle unità, delle decine, e in entrambe, per calcolare i valori di A, B e C. Inoltre, verifica che le cifre siano diverse tra loro.

  5. Come viene garantita l'unicità delle cifre nel codice?
  6. L'unicità delle cifre è garantita dalla funzione "diversi", che assicura che tutte le variabili D, U, E, S, I, O, e T siano diverse tra loro.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community