Τετάρτη, 24 Μαρτίου 2010

Γρίφος Kasparov

Σε ένα ιστολόγιο για γρίφους έγινε μια ανάρτηση που ζητούσε να αποδείξουμε ότι

 YUSUPOV +
 SOKOLOV +
 2KARPOV =
KASPAROV

παίζοντας με τα ονόματα διάσημων παικτών σκακιού.

Σε γρίφους αυτού του είδους κάθε γράμμα αντιστοιχεί σε έναν αριθμό.
Συνήθως δεν είναι 0 το πρώτο γράμμα της λέξης, άρα υποθέτουμε ότι τα Y S K δεν είναι μηδενικά.
Στο ψηφίο των μονάδων V + V + V δίνει αριθμό που λήγει σε V, άρα μπορεί να είναι 0 ή 5. Άν είναι V=0, τότε στο ψηφίο των δεκάδων O + O + O δίνει O, άρα O=5.
Το K στο άθροισμα μπορεί να είναι 1 ή 2.

Μπορείτε να γράψετε ένα πρόγραμμα που να λύνει τον γρίφο;

Η δική μου προσπάθεια ακολουθεί παρακάτω :

ΠΡΟΓΡΑΜΜΑ KASPAROV
! YUSUPOV + SOKOLOV + 2KARPOV = KASPAROV
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Y, U, S, P, O, V, K, L, A, R, X1, X2, X3, X4, MANY
ΑΡΧΗ
MANY <- 0
ΓΙΑ Y ΑΠΟ 1 ΜΕΧΡΙ 9
_ΓΙΑ U ΑΠΟ 0 ΜΕΧΡΙ 9
__ΑΝ U<>Y ΤΟΤΕ
___ΓΙΑ S ΑΠΟ 1 ΜΕΧΡΙ 9
____ΑΝ S<>Y ΚΑΙ S<>U ΤΟΤΕ
_____ΓΙΑ P ΑΠΟ 0 ΜΕΧΡΙ 9
______ΑΝ P<>Y ΚΑΙ P<>U ΚΑΙ P<>S ΤΟΤΕ
_______ΓΙΑ O ΑΠΟ 0 ΜΕΧΡΙ 9
________ΑΝ O<>Y ΚΑΙ O<>U ΚΑΙ O<>S ΚΑΙ O<>P ΤΟΤΕ
_________ΓΙΑ V ΑΠΟ 0 ΜΕΧΡΙ 5 ΜΕ ΒΗΜΑ 5
__________ΑΝ V<>Y ΚΑΙ V<>U ΚΑΙ V<>S ΚΑΙ V<>P ΚΑΙ V<>O ΤΟΤΕ
___________ΓΙΑ K ΑΠΟ 1 ΜΕΧΡΙ 2
____________ΑΝ K<>Y ΚΑΙ K<>U ΚΑΙ K<>S ΚΑΙ K<>P ΚΑΙ K<>O ΤΟΤΕ
____________ΑΝ K<>V ΤΟΤΕ
_____________ΓΙΑ L ΑΠΟ 0 ΜΕΧΡΙ 9
______________ΑΝ L<>Y ΚΑΙ L<>U ΚΑΙ L<>S ΚΑΙ L<>P ΚΑΙ L<>O ΤΟΤΕ
______________ΑΝ L<>V ΚΑΙ L<>K ΤΟΤΕ
_______________ΓΙΑ A ΑΠΟ 0 ΜΕΧΡΙ 9
________________ΑΝ A<>Y ΚΑΙ A<>U ΚΑΙ A<>S ΚΑΙ A<>P ΚΑΙ A<>O ΤΟΤΕ
________________ΑΝ A<>V ΚΑΙ A<>K ΚΑΙ A<>L ΤΟΤΕ
_________________ΓΙΑ R ΑΠΟ 0 ΜΕΧΡΙ 9
__________________ΑΝ R<>Y ΚΑΙ R<>U ΚΑΙ R<>S ΚΑΙ R<>P ΚΑΙ R<>O ΤΟΤΕ
__________________ΑΝ R<>V ΚΑΙ R<>K ΚΑΙ R<>L ΚΑΙ R<>A ΤΟΤΕ
_________X1 <- (((((Y*10 + U)*10 + S)*10 + U)*10 + P)*10 + O)*10 + V
_________X2 <- (((((S*10 + O)*10 + K)*10 + O)*10 + L)*10 + O)*10 + V
_________X3 <- (((((20 + K)*10 + A)*10 + R)*10 + P)*10 + O)*10 + V
_________X4 <- ((((((K*10 + A)*10 + S)*10 + P)*10 + A)*10 + R)*10 + O)*10 + V
___________________MANY <- MANY + 1
___________________ΑΝ X1 + X2 + X3 = X4 ΤΟΤΕ
____________________ΓΡΑΨΕ MANY, ' RESULT ', Y, U, S, P, O, V, K, L, A, R
___________________ΤΕΛΟΣ_ΑΝ
__________________ΤΕΛΟΣ_ΑΝ
__________________ΤΕΛΟΣ_ΑΝ
_________________ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
________________ΤΕΛΟΣ_ΑΝ
________________ΤΕΛΟΣ_ΑΝ
_______________ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
______________ΤΕΛΟΣ_ΑΝ
______________ΤΕΛΟΣ_ΑΝ
_____________ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
____________ΤΕΛΟΣ_ΑΝ
____________ΤΕΛΟΣ_ΑΝ
___________ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
__________ΤΕΛΟΣ_ΑΝ
_________ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
________ΤΕΛΟΣ_ΑΝ
_______ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
______ΤΕΛΟΣ_ΑΝ
_____ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
____ΤΕΛΟΣ_ΑΝ
___ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
__ΤΕΛΟΣ_ΑΝ
_ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Η εντολή
ΓΡΑΨΕ MANY, ' RESULT ', Y, U, S, P, O, V, K, L, A, R
δίνει αποτέλεσμα
136920 RESULT 9 7 4 2 5 0 1 8 6 3

άρα η πρόσθεση είναι
 9747250+
 4515850+
 2163250=
16426350

Δεν υπάρχουν σχόλια: