A knight enters the grid at number 1 and then moves, as if he were on a chessboard, to number 2. He visits every square in numerical order, before exiting at number 64.
KEY:
Blue = cube numbers (1, 8, 27 and 64)
Green = squares which are not cubes (4, 9, 16, 25, 36 and 49)
Red = prime numbers (2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59 and 61)
Yellow = multiples of ten (10, 20, 30, 40, 50 and 60)
Purple = multiples of 11 which are not prime (22, 33, 44 and 55)
One number has been added to get you started.
The program did not require the 35 in that position, but there was still only one solution, so that was indeed just a hint:
DECLARE SUB place (row!, col!)
DATA bgryrwwb
DATA ywrrwwgr
DATA wwrwryrp
DATA wrwrwwwr
DATA pwrwrwry
DATA wgwwppwg
DATA rgwwrbrw
DATA ybwwwgyr
CLEAR , , 25000
DIM SHARED bd$(8, 8), b(8, 8), moveNo, solCt
FOR row = 1 TO 8
READ r$
FOR col = 1 TO 8
c$ = MID$(r$, col, 1)
bd$(row, col) = c$
SELECT CASE c$
CASE "r": rCt = rCt + 1
CASE "w": wCt = wCt + 1
CASE "g": gCt = gCt + 1
CASE "b": bCt = bCt + 1
CASE "y": yCt = yCt + 1
CASE "p": pCt = pCt + 1
END SELECT
NEXT
NEXT
PRINT bCt; gCt; rCt; yCt; pCt; wCt, bCt + gCt + rCt + yCt + pCt + wCt
CLS
moveNo = 1
place 1, 1
place 1, 8
PRINT solCt
END
SUB place (row, col)
b(row, col) = moveNo
moveNo = moveNo + 1
FOR dRow = -2 TO 2
IF dRow <> 0 THEN
dCol0 = 3 - ABS(dRow)
FOR dCol = -dCol0 TO dCol0 STEP 2 * dCol0
r = row + dRow: c = col + dCol
good = 1
IF r > 0 AND r < 9 AND c > 0 AND c < 9 THEN
IF b(r, c) = 0 OR b(r, c) > moveNo THEN
SELECT CASE moveNo
CASE 1, 8, 27, 64
IF bd$(r, c) <> "b" THEN good = 0
CASE 4, 9, 16, 25, 36, 49
IF bd$(r, c) <> "g" THEN good = 0
CASE 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61
IF bd$(r, c) <> "r" THEN good = 0
CASE 10, 20, 30, 40, 50, 60
IF bd$(r, c) <> "y" THEN good = 0
CASE 22, 33, 44, 55
IF bd$(r, c) <> "p" THEN good = 0
CASE ELSE
IF bd$(r, c) <> "w" THEN good = 0
' IF moveNo = 35 AND (r <> 8 OR c <> 4) THEN good = 0
END SELECT
IF good THEN
b(r, c) = moveNo
IF moveNo = 64 THEN
solCt = solCt + 1
OPEN "colrnite.txt" FOR APPEND AS #2
FOR pRow = 1 TO 8
FOR pCol = 1 TO 8
PRINT #2, "<font color="; CHR$(34); "#";
SELECT CASE bd$(pRow, pCol)
CASE "r": COLOR 12: PRINT #2, "ff0000";
CASE "g": COLOR 10: PRINT #2, "00dd00";
CASE "b": COLOR 9: PRINT #2, "0000ff";
CASE "y": COLOR 14: PRINT #2, "ffffa0";
CASE "p": COLOR 13: PRINT #2, "ff20c0";
CASE "w": COLOR 15: PRINT #2, "ffffff";
END SELECT
PRINT #2, CHR$(34); ">";
PRINT USING "###"; b(pRow, pCol);
PRINT #2, USING "###"; b(pRow, pCol);
PRINT #2, "</font>";
COLOR 7
NEXT
PRINT
PRINT #2, "<br>"
NEXT
CLOSE 2
DO: LOOP UNTIL INKEY$ > ""
ELSE
place r, c
END IF
END IF
END IF
END IF
NEXT
END IF
NEXT
moveNo = moveNo - 1
b(row, col) = 0
END SUB
1 16 31 40 3 18 21 64
30 39 2 17 42 63 4 19
15 32 41 46 53 20 61 22
38 29 48 43 62 45 54 5
33 14 37 52 47 58 23 60
28 49 34 57 44 55 6 9
13 36 51 26 11 8 59 24
50 27 12 35 56 25 10 7
The white is hard to read on the light gray background, so:
1 16 31 40 3 18 21 64
30 39 2 17 42 63 4 19
15 32 41 46 53 20 61 22
38 29 48 43 62 45 54 5
33 14 37 52 47 58 23 60
28 49 34 57 44 55 6 9
13 36 51 26 11 8 59 24
50 27 12 35 56 25 10 7
Edited on January 24, 2008, 3:29 pm
Edited on January 24, 2008, 3:32 pm
|
Posted by Charlie
on 2008-01-24 15:28:28 |