59 lines
1.7 KiB
Text
59 lines
1.7 KiB
Text
PROGRAM TWELVE_STMS
|
|
|
|
!$DYNAMIC
|
|
DIM PASS%[0],T%[0]
|
|
|
|
FUNCTION EOR(X,Y)
|
|
EOR=(X AND NOT(Y)) OR (NOT(X) AND Y)
|
|
END FUNCTION
|
|
|
|
BEGIN
|
|
NSTATEMENTS%=12
|
|
!$DIM PASS%[NSTATEMENTS%],T%[NSTATEMENTS%]
|
|
|
|
FOR TRY%=0 TO 2^NSTATEMENTS%-1 DO
|
|
|
|
! Postulate answer:
|
|
FOR STMT%=1 TO 12 DO
|
|
T%[STMT%]=(TRY% AND 2^(STMT%-1))<>0
|
|
END FOR
|
|
|
|
! Test consistency:
|
|
PASS%[1]=T%[1]=(NSTATEMENTS%=12)
|
|
PASS%[2]=T%[2]=((T%[7]+T%[8]+T%[9]+T%[10]+T%[11]+T%[12])=-3)
|
|
PASS%[3]=T%[3]=((T%[2]+T%[4]+T%[6]+T%[8]+T%[10]+T%[12])=-2)
|
|
PASS%[4]=T%[4]=((NOT T%[5] OR (T%[6] AND T%[7])))
|
|
PASS%[5]=T%[5]=(NOT T%[2] AND NOT T%[3] AND NOT T%[4])
|
|
PASS%[6]=T%[6]=((T%[1]+T%[3]+T%[5]+T%[7]+T%[9]+T%[11])=-4)
|
|
PASS%[7]=T%[7]=(EOR(T%[2],T%[3]))
|
|
PASS%[8]=T%[8]=((NOT T%[7] OR (T%[5] AND T%[6])))
|
|
PASS%[9]=T%[9]=((T%[1]+T%[2]+T%[3]+T%[4]+T%[5]+T%[6])=-3)
|
|
PASS%[10]=T%[10]=(T%[11] AND T%[12])
|
|
PASS%[11]=T%[11]=((T%[7]+T%[8]+T%[9])=-1)
|
|
PASS%[12]=T%[12]=((T%[1]+T%[2]+T%[3]+T%[4]+T%[5]+T%[6]+T%[7]+T%[8]+T%[9]+T%[10]+T%[11])=-4)
|
|
|
|
SUM=0
|
|
FOR I%=1 TO 12 DO
|
|
SUM=SUM+PASS%[I%]
|
|
END FOR
|
|
|
|
CASE SUM OF
|
|
-11->
|
|
PRINT("Near miss with statements ";)
|
|
FOR STMT%=1 TO 12 DO
|
|
IF T%[STMT%] THEN PRINT(STMT%;) END IF
|
|
IF NOT PASS%[STMT%] THEN MISS%=STMT% END IF
|
|
END FOR
|
|
PRINT("true (failed ";MISS%;").")
|
|
END ->
|
|
-12->
|
|
PRINT("Solution! with statements ";)
|
|
FOR STMT%=1 TO 12 DO
|
|
IF T%[STMT%] THEN PRINT(STMT%;) END IF
|
|
END FOR
|
|
PRINT("true.")
|
|
END ->
|
|
END CASE
|
|
|
|
END FOR ! TRY%
|
|
END PROGRAM
|