100 REM Equilibrium index 110 DECLARE EXTERNAL SUB PrintArray 120 DECLARE EXTERNAL SUB PrintIndicesOfTrue 130 DECLARE EXTERNAL SUB GetIndices 140 DIM X1(0 TO 6), X1Result(0 TO 6) 150 FOR I = 0 TO 6 160 READ X1(I) 170 NEXT I 180 DATA -7, 1, 5, 2, -4, 3, 0 190 CALL GetIndices(X1, X1Result) 200 DIM X2(0 TO 2), X2Result(0 TO 2) 210 FOR I = 0 TO 2 220 READ X2(I) 230 NEXT I 240 DATA 2, 4, 6 250 CALL GetIndices(X2, X2Result) 260 DIM X3(0 TO 2), X3Result(0 TO 2) 270 FOR I = 0 TO 2 280 READ X3(I) 290 NEXT I 300 DATA 2, 9, 2 310 CALL GetIndices(X3, X3Result) 320 DIM X4(0 TO 6), X4Result(0 TO 6) 330 FOR I = 0 TO 6 340 READ X4(I) 350 NEXT I 360 DATA 1, -1, 1, -1, 1 ,-1, 1 370 CALL GetIndices(X4, X4Result) 380 PRINT "Results:" 390 PRINT 400 PRINT "X1:"; 410 CALL PrintArray(X1, 1) 420 PRINT "Eqs:"; 430 CALL PrintIndicesOfTrue(X1Result, 1) 440 PRINT 450 PRINT "X2:"; 460 CALL PrintArray(X2, 1) 470 PRINT "Eqs:"; 480 CALL PrintIndicesOfTrue(X2Result, 1) 490 PRINT 500 PRINT "X3:"; 510 CALL PrintArray(X3, 1) 520 PRINT "Eqs:"; 530 CALL PrintIndicesOfTrue(X3Result, 1) 540 PRINT 550 PRINT "X4:"; 560 CALL PrintArray(X4, 1) 570 PRINT "Eqs:"; 580 CALL PrintIndicesOfTrue(X4Result, 1) 590 END 600 ! 610 EXTERNAL SUB PrintArray(Nums(), NL) 620 FOR I = LBOUND(Nums) TO UBOUND(Nums) 630 PRINT Nums(I); 640 NEXT I 650 IF NL <> 0 THEN PRINT 660 END SUB 670 ! 680 EXTERNAL SUB PrintIndicesOfTrue(Bools(), NL) 690 FOR I = LBOUND(Bools) TO UBOUND(Bools) 700 IF Bools(I) <> 0 THEN PRINT I; 710 NEXT I 720 IF NL <> 0 THEN PRINT 730 END SUB 740 ! 750 EXTERNAL SUB GetIndices(Nums(), Result()) 760 IF (LBOUND(Nums) <> LBOUND(Result)) OR (UBOUND(Nums) <> UBOUND(Result)) THEN 770 PRINT "Range of indices in both arrays should be the same" 780 STOP 790 END IF 800 LET LeftSum = 0 810 LET RightSum = 0 820 FOR I = LBOUND(Nums) TO UBOUND(Nums) 830 LET RightSum = RightSum + Nums (I) 840 NEXT I 850 FOR I = LBOUND(Nums) TO UBOUND(Nums) 860 LET RightSum = RightSum - Nums (I) 870 IF LeftSum = RightSum THEN 880 LET Result(I) = 1 890 ELSE 900 LET Result(I) = 0 910 END IF 920 LET LeftSum = LeftSum + Nums(I) 930 NEXT I 940 END SUB