Substitute each of the capital letters in bold by a different digit from 0 to 9, such that each of the columns, each of the rows and each of the two main diagonals of this 5x5 grid have the same sum, where none of the numbers in the 25 cells contains a leading zero.
TI KT NS OB UL
CN IO CC UK TB
IU OL UI SC CS
OK UB TL KO IT
NC TK KU NN OI
76 37 58 19 40
25 61 22 43 79
64 10 46 82 28
13 49 70 31 67
52 73 34 55 16
230 (sum of each row, col, diag)
DATA "TI KT NS OB UL"
DATA "CN IO CC UK TB"
DATA "IU OL UI SC CS"
DATA "OK UB TL KO IT"
DATA "NC TK KU NN OI"
FOR i = 1 TO 5
READ puzRow$(i)
FOR j = 1 TO LEN(puzRow$(i))
c$ = MID$(puzRow$(i), j, 1)
IF c$ >= "A" AND c$ <= "Z" THEN
ix = INSTR(ltrs$, c$)
IF ix = 0 THEN ltrs$ = ltrs$ + c$
END IF
NEXT
NEXT
PRINT LEN(ltrs$)
l = 0
FOR t = 1 TO 9
IF used(t) = 0 THEN
used(t) = 1
FOR k = 1 TO 9
IF used(k) = 0 THEN
used(k) = 1
PRINT t; k; " ";
FOR n = 1 TO 9
IF used(n) = 0 THEN
used(n) = 1
FOR s = 1 TO 9
IF used(s) = 0 THEN
used(s) = 1
FOR o = 1 TO 9
IF used(o) = 0 THEN
used(o) = 1
FOR u = 1 TO 9
IF used(u) = 0 THEN
used(u) = 1
FOR c = 1 TO 9
IF used(c) = 0 THEN
used(c) = 1
FOR i = 1 TO 9
IF used(i) = 0 THEN
used(i) = 1
FOR b = 1 TO 9
IF used(b) = 0 THEN
used(b) = 1
FOR row = 1 TO 5
FOR col = 1 TO 5
c10$ = LCASE$(MID$(puzRow$(row), (col - 1) * 5 + 1, 1))
SELECT CASE c10$
CASE "t"
v = 10 * t
CASE "k"
v = 10 * k
CASE "n"
v = 10 * n
CASE "b"
v = 10 * b
CASE "o"
v = 10 * o
CASE "u"
v = 10 * u
CASE "c"
v = 10 * c
CASE "i"
v = 10 * i
CASE "s"
v = 10 * s
END SELECT
c1$ = LCASE$(MID$(puzRow$(row), (col - 1) * 5 + 2, 1))
SELECT CASE c1$
CASE "t"
v = v + t
CASE "k"
v = v + k
CASE "n"
v = v + n
CASE "b"
v = v + b
CASE "o"
v = v + o
CASE "u"
v = v + u
CASE "c"
v = v + c
CASE "i"
v = v + i
CASE "s"
v = v + s
END SELECT
gr(row, col) = v
NEXT
NEXT
totl = 0
FOR col = 1 TO 5
totl = totl + gr(1, col)
NEXT
totGoal = totl
good = 1
FOR row = 1 TO 5
totl = 0
FOR col = 1 TO 5
totl = totl + gr(row, col)
NEXT
IF totl <> totGoal THEN good = 0: EXIT FOR
NEXT
IF good THEN
FOR col = 1 TO 5
totl = 0
FOR row = 1 TO 5
totl = totl + gr(row, col)
NEXT
IF totl <> totGoal THEN good = 0: EXIT FOR
NEXT
END IF
IF good THEN
totl = 0
FOR col = 1 TO 5
row = col
totl = totl + gr(row, col)
NEXT
IF totl <> totGoal THEN good = 0: EXIT FOR
END IF
IF good THEN
totl = 0
FOR col = 1 TO 5
row = 6 - col
totl = totl + gr(row, col)
NEXT
IF totl <> totGoal THEN good = 0: EXIT FOR
END IF
IF good THEN
PRINT
FOR row = 1 TO 5
FOR col = 1 TO 5
PRINT gr(row, col);
NEXT
PRINT
NEXT
PRINT totGoal
PRINT
PRINT
END IF
used(b) = 0
END IF
NEXT
used(i) = 0
END IF
NEXT
used(c) = 0
END IF
NEXT
used(u) = 0
END IF
NEXT
used(o) = 0
END IF
NEXT
used(s) = 0
END IF
NEXT
used(n) = 0
END IF
NEXT
used(k) = 0
END IF
NEXT
used(t) = 0
END IF
NEXT
END
|
Posted by Charlie
on 2009-09-27 22:07:02 |