DECLARE SUB RecCavalo (l%, c%, n%, Tb%()) DECLARE SUB ExibeTab (Tb%(), n%) DECLARE FUNCTION NovaLin% (i%) DECLARE FUNCTION NovaCol% (i%) CLEAR , , 16384 '$DYNAMIC DEFINT A-Z CONST Max = 4 DIM Tb(1 TO Max, 1 TO Max) FOR i = 1 TO Max: FOR j = 1 TO Max: Tb(i, j) = 0: NEXT j, i RecCavalo 1, 1, 1, Tb() SYSTEM REM $STATIC SUB ExibeTab (Tb(), n) STATIC Tot CLS IF n THEN Tot = Tot + 1: PRINT Tot FOR i = 1 TO Max FOR j = 1 TO Max PRINT USING "###"; Tb(i, j); NEXT PRINT NEXT PRINT IF n THEN a$ = INPUT$(1) END SUB FUNCTION NovaCol (i) ret = 0 IF i = 1 OR i = 2 THEN ret = 2 IF i = 0 OR i = 3 THEN ret = 1 IF i = 4 OR i = 7 THEN ret = -1 IF i = 5 OR i = 6 THEN ret = -2 NovaCol = ret END FUNCTION FUNCTION NovaLin (i) ret = 0 IF i = 0 OR i = 7 THEN ret = -2 IF i = 1 OR i = 6 THEN ret = -1 IF i = 2 OR i = 5 THEN ret = 1 IF i = 3 OR i = 4 THEN ret = 2 NovaLin = ret END FUNCTION SUB RecCavalo (l, c, n, Tb()) Tb(l, c) = n ExibeTab Tb(), 0 ct = 0 FOR i = 1 TO 8 l2 = l + NovaLin(i) c2 = c + NovaCol(i) IF l2 >= 1 AND l2 <= Max AND c2 >= 1 AND c2 <= Max THEN IF Tb(l2, c2) = 0 THEN RecCavalo l2, c2, n + 1, Tb() ELSE ct = ct + 1 ELSE ct = ct + 1 END IF NEXT IF ct = 8 AND n = 64 THEN ExibeTab Tb(), -1 Tb(l, c) = 0 END SUB