10 CLS : REM ******************** lugrs **********************
15 DIM X(400): DIM Y(400): DIM KIV(400): DIM M(400): DIM K$(400): DIM L(400)
20 REM ****** kirs ***********
30 LOCATE 2, 11: PRINT ""
40   FOR X1 = 12 TO 51
50        LOCATE 2, X1: PRINT ""
60        NEXT X1
70    LOCATE 2, 52: PRINT ""
80   FOR X2 = 3 TO 22
90        LOCATE X2, 52: PRINT ""
100        NEXT X2
110    LOCATE 23, 52: PRINT ""
120   FOR X3 = 51 TO 12 STEP -1
130        LOCATE 23, X3: PRINT ""
140        NEXT X3
150    LOCATE 23, 11: PRINT ""
160   FOR X4 = 22 TO 3 STEP -1
170        LOCATE X4, 11: PRINT ""
180   NEXT X4
190 LOCATE 2, 60: PRINT "2233"
200 LOCATE 3, 60: PRINT "1144"
210 LOCATE 4, 60: PRINT "۰"
220 LOCATE 5, 60: PRINT "5588"
230 LOCATE 6, 60: PRINT "6677"
240 DIM C(20, 20)
250 LOCATE 1, 1: PRINT "szorztbla? (i)"
260 V$ = INKEY$
270 IF V$ = "" THEN GOTO 260
280 IF V$ <> "I" AND V$ <> "i" THEN GOTO 390
290 REM ************* szorztbla *******************
300 LOCATE 1, 1: INPUT "Hnyszor hnyas (x,y)"; A, B
310 IF A < 1 OR B < 1 OR A > 20 OR B > 20 THEN BEEP: GOTO 300
320 LOCATE 1, 1: PRINT "                              "
330 S = A * B
335 IF (-1) ^ S < 0 THEN SOT = 1
340 FOR K = 1 TO A: FOR L = 1 TO B
350 C(K, L) = 1: REM **** ezekre lphet ****
360 LOCATE 23 - L, 2 * K + 10: PRINT ""
370 NEXT: NEXT
380 GOTO 500
390 REM ********************* sajt tbla ***********************
395 LOCATE 12, 54: PRINT "   kv. oszlop: enter"
396 LOCATE 13, 54: PRINT "     res mez: szkz"
397 LOCATE 14, 54: PRINT "bejrand mez: egyb"
400 FOR X1 = 1 TO 20: FOR Y1 = 1 TO 20
410 LOCATE 8, 60: PRINT X1; ","; Y1
420 LOCATE 23 - Y1, 2 * X1 + 10: PRINT "??"
430 T$ = INKEY$: IF T$ = "" THEN GOTO 430
440 LOCATE 23 - Y1, 2 * X1 + 10: PRINT "  "
450 IF T$ = CHR$(13) THEN GOTO 480
460 IF T$ <> " " THEN C(X1, Y1) = 1: LOCATE 23 - Y1, 2 * X1 + 10: PRINT "": S = S + 1
464 SZIN = (X1 + Y1) / 2
465 IF INT(SZIN) = SZIN AND T$ <> " " THEN SOT = SOT + 1
466 IF INT(SZIN) <> SZIN AND T$ <> " " THEN VIL = VIL + 1
470 NEXT Y1
480 NEXT X1
490 LOCATE 8, 60: PRINT "               "
495 LOCATE 12, 54: PRINT "                      "
496 LOCATE 13, 54: PRINT "                      "
497 LOCATE 14, 54: PRINT "                      "
500 U(1) = -2: U(2) = -1: U(3) = 1: U(4) = 2
510 U(5) = -2: U(6) = -1: U(7) = 1: U(8) = 2
520 V(1) = 1: V(2) = 2: V(3) = 2: V(4) = 1
530 V(5) = -1: V(6) = -2: V(7) = -2: V(8) = -1
540 LOCATE 10, 64: PRINT ". lls"
550 LOCATE 11, 64: PRINT ". elgazs"
560 LOCATE 15, 60: PRINT "  mezk szma:"; S
570 LOCATE 17, 60: PRINT "       betelt:"
572 LOCATE 19, 55: PRINT "visszavtel: htratrls"
573 LOCATE 20, 55: PRINT "       vge: enter"
590 LOCATE 1, 1: INPUT "honnan indulsz (x,y)"; X(1), Y(1)
600 IF X(1) < 1 OR X(1) > 20 OR Y(1) < 1 OR Y(1) > 20 THEN BEEP: GOTO 590
605 IF INT(X(1)) <> X(1) OR INT(Y(1)) <> Y(1) THEN BEEP: GOTO 590
610 IF C(X(1), Y(1)) = 0 THEN BEEP: GOTO 590
620 C(X(1), Y(1)) = 2: LOCATE 23 - Y(1), 2 * X(1) + 10: PRINT ""
621 Q = (X(1) + Y(1)) / 2
622 IF SOT > VIL AND Q <> INT(Q) THEN TOBB = SOT - VIL
623 IF SOT > VIL AND Q = INT(Q) THEN TOBB = SOT - VIL - 1
624 IF SOT < VIL AND Q <> INT(Q) THEN TOBB = VIL - SOT - 1
625 IF SOT < VIL AND Q = INT(Q) THEN TOBB = VIL - SOT
626 IF SOT = VIL THEN TOBB = 0
627 LOCATE 16, 60: PRINT "bejrhatatlan:"; TOBB
630 N = 1
640 REM ************************ lps ***************************
650 KIV(N) = 1
660 FOR I = 1 TO 8: B(I) = 0: NEXT I
670 K$(N) = ""
680 FOR I = 1 TO 8
690 F = X(N) + U(I): G = Y(N) + V(I)
700 IF F < 1 OR G < 1 OR F > 20 OR G > 20 THEN GOTO 790
710 IF C(F, G) = 0 OR C(F, G) = 2 THEN GOTO 790
720 FOR L = 1 TO 8
730 O = F + U(L): P = G + V(L)
740 IF O < 1 OR P < 1 OR O > 20 OR P > 20 THEN GOTO 770
750 IF C(O, P) = 0 OR C(O, P) = 2 THEN GOTO 770
760 B(I) = B(I) + 1: W = W + 1
770 NEXT L
780 IF W = 0 AND N = S - 2 OR W = 0 AND N = S - 1 THEN K$(N) = RIGHT$(STR$(I), 1): KIV(N) = 1: GOTO 950
790 NEXT I
800 REM ****************** rendezs *********************
810 R = 1
820 FOR A = 1 TO 8
830 IF B(A) = R THEN B(A) = 0: K$(N) = K$(N) + RIGHT$(STR$(A), 1): LOCATE 13, 61: PRINT K$(N); "           "
840 NEXT A
850 IF R < 8 THEN R = R + 1: GOTO 820
860 IF W = 0 THEN GOTO 880
861 G$ = INKEY$
862 IF T = 1 AND G$ = "" THEN GOTO 861
863 IF G$ = CHR$(8) THEN T = 1 ELSE GOTO 869
864 H = VAL(MID$(K$(N - 1), KIV(N - 1), 1))
865 LOCATE 10, 60: PRINT N: LOCATE 11, 60: PRINT H
866 GOTO 890
869 LOCATE 23 - Y(N), 2 * X(N) + 10: PRINT "": T = 0
870 W = 0: GOTO 950
880 REM ************** visszalps *********************
890 IF N = 1 THEN GOTO 1080
900 LOCATE 23 - Y(N), 2 * X(N) + 10: PRINT ""
910 C(X(N), Y(N)) = 1: N = N - 1: KIV(N) = KIV(N) + 1
920 IF KIV(N) = LEN(K$(N)) + 1 THEN GOTO 890
925 LOCATE 23 - Y(N), 2 * X(N) + 10: PRINT "!!"
930 GOTO 660
940 REM ******************** beiktats ********************************
950 H = VAL(MID$(K$(N), KIV(N), 1)): L(N) = H
960 F = X(N) + U(H): G = Y(N) + V(H)
970 C(F, G) = 2
980 IF N > MAX THEN MAX = N: FOR J = 1 TO N: M(J) = L(J): NEXT: LOCATE 17, 74: PRINT MAX + 1
1000 LOCATE 10, 60: PRINT N: LOCATE 11, 60: PRINT L(N)
1010 LOCATE 23 - G, F * 2 + 10: PRINT ""
1030 IF G$ = CHR$(13) OR MAX = S - 1 THEN GOTO 1080
1040 N = N + 1
1050 X(N) = F: Y(N) = G
1060 GOTO 650
1070 REM ****************** eredmny **********************
1080 BEEP: LOCATE 23, 1: FOR K = 1 TO MAX: PRINT M(K); : NEXT K

