All about flooble | fun stuff | Get a free chatterbox | Free JavaScript | Avatars
 perplexus dot info

 Colourful Knight's Tour (Posted on 2008-01-24)
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.
 35

 No Solution Yet Submitted by Josie Faulkner Rating: 4.9091 (11 votes)

Comments: ( Back to comment list | You must be logged in to post comments.)
 computer solution | Comment 3 of 19 |

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
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

 Search: Search body:
Forums (0)