CLS
FOR a = 0 TO 8
ra = a \ 4 + 1: ca = a MOD 4 + 1
grid(ra, ca) = 1
FOR b = a + 1 TO 9
rb = b \ 4 + 1: cb = b MOD 4 + 1
grid(rb, cb) = 1
FOR c = b + 1 TO 10
rc = c \ 4 + 1: cc = c MOD 4 + 1
grid(rc, cc) = 1
FOR d = c + 1 TO 11
IF a = 3 OR b = 3 OR c = 3 OR d = 3 THEN
rd = d \ 4 + 1: cd = d MOD 4 + 1
grid(rd, cd) = 1
FOR e = d + 1 TO 12
re = e \ 4 + 1: ce = e MOD 4 + 1
grid(re, ce) = 1
FOR f = e + 1 TO 13
rf = f \ 4 + 1: cf = f MOD 4 + 1
grid(rf, cf) = 1
FOR g = f + 1 TO 14
rg = g \ 4 + 1: cg = g MOD 4 + 1
grid(rg, cg) = 1
FOR h = g + 1 TO 15
rh = h \ 4 + 1: ch = h MOD 4 + 1
grid(rh, ch) = 1
REDIM ct(5, 5)
FOR r = 1 TO 4
FOR cl = 1 TO 4
IF grid(r, cl) THEN
FOR diff = -1 TO 1 STEP 2
ct(r + diff, cl) = ct(r + diff, cl) + 1
ct(r, cl + diff) = ct(r, cl + diff) + 1
NEXT
END IF
NEXT
NEXT
IF ct(1, 4) = 1 THEN
REDIM cdct(1, 4)
FOR r = 1 TO 4
FOR cl = 1 TO 4
cdct(grid(r, cl), ct(r, cl)) = cdct(grid(r, cl), ct(r, cl)) + 1
NEXT
NEXT
IF cdct(0, 1) = 4 THEN
IF cdct(0, 2) = 2 THEN
IF cdct(0, 3) = 1 THEN
IF cdct(0, 4) = 1 THEN
IF cdct(1, 1) = 6 THEN
IF cdct(1, 2) = 2 THEN
FOR r = 1 TO 4
FOR cl = 1 TO 4
IF grid(r, cl) THEN COLOR 15, 0: ELSE COLOR 0, 15
PRINT STR$(ct(r, cl));
NEXT
PRINT
NEXT
PRINT
solCt = solCt + 1
END IF
END IF
END IF
END IF
END IF
END IF
END IF
grid(rh, ch) = 0
NEXT
grid(rg, cg) = 0
NEXT
grid(rf, cf) = 0
NEXT
grid(re, ce) = 0
NEXT
grid(rd, cd) = 0
END IF
NEXT
grid(rc, cc) = 0
NEXT
grid(rb, cb) = 0
NEXT
grid(ra, ca) = 0
NEXT
PRINT solCt
finds
1 2 1 1
2 1 3 1
1 4 1 1
2 1 2 1
1 1 1 1
2 1 3 1
1 4 1 2
2 1 2 1
where bold face indicates a black card. These are mirrors of one another along a diagonal.
From "So logical", by Bob Walker, Enigma No. 1612, New Scientist, 11 September 2010, page 30. |