mirror of
https://github.com/PDP-10/stacken.git
synced 2026-03-01 17:26:38 +00:00
306 lines
6.8 KiB
QBasic
306 lines
6.8 KiB
QBasic
|
||
100 REM ELECT3 - ELECTION SIMULATION
|
||
105 REM COPYRIGHT 1972 - STATE UNIVERSITY OF NEW YORK
|
||
110 REM DEVELOPED BY D. KLASSEN, JUNE 1972
|
||
115 REM PROGRAMMED BY L. KAUFMAN, JUNE 1972
|
||
120 REM LATEST REVISION 2-21-73
|
||
125 DIMP(10),C(4),E(9),W(6),Y(3,2),I(3),S(3),T(3)
|
||
130 PRINT"PER";
|
||
135 INPUTR1
|
||
140 IF(R1-1)*(R1-2)*(R1-3)*(R1-4)<>0THEN130
|
||
145 PRINT"RES UNITS R,D";
|
||
150 INPUTP(5),P(6)
|
||
155 PRINT"INPUT FACTORS (1=YES, 0=NO)";
|
||
160 INPUTI
|
||
165 IFI=0THEN200
|
||
170 IFI<>1THEN155
|
||
175 PRINT"FAC";
|
||
180 INPUTP(1),P(2),C(1),C(2),C(3),C(4),P(9),P(10),P(7),P(3),P(4)
|
||
185 PRINT"CTRS";
|
||
190 INPUTN1,N2,N3,N4
|
||
195 GOTO265
|
||
200 RANDOMIZE
|
||
205 LETP(1)=4*RND(0)+1
|
||
210 LETP(2)=4*RND(0)+1
|
||
215 LETC(1)=INT(3*RND(0)+1)
|
||
220 LETC(2)=INT(3*RND(0)+1)
|
||
225 LETC(3)=INT(3*RND(0)+1)
|
||
230 LETC(4)=C(3)
|
||
235 LETP(9)=4*RND(0)+1
|
||
240 LETP(10)=4*RND(0)+1
|
||
245 LETP(3)=.06*RND(0)+.02
|
||
250 LETP(4)=.06*RND(0)+.02
|
||
255 READP(7),N1,N2,N3,N4
|
||
265 PRINT"INPUT MATRIX (1=YES, 0=NO)";
|
||
270 INPUTI
|
||
275 IFI=0THEN330
|
||
280 IFI<>1THEN270
|
||
290 FORI=1TO9
|
||
295 PRINT"CELL";I;" --- ";
|
||
300 INPUTX
|
||
305 IFABS(X-3)>2THEN295
|
||
310 IFX<>INT(X)THEN295
|
||
315 LETE(I)=X
|
||
320 NEXTI
|
||
325 GOTO375
|
||
330 PRINT"ADVANTAGE?(-1=REPUBLICAN,+1=DEMOCRAT,0=NO ADVANTAGE)";
|
||
335 INPUTI
|
||
340 IFI*(I-1)*(I+1)<>0THEN330
|
||
345 FORX=1TO9
|
||
350 LETE(X)=3
|
||
355 IFX=2*INT(X/2)THEN365
|
||
360 LETE(X)=3+I
|
||
365 NEXTX
|
||
375 PRINT
|
||
380 PRINT"MEDIA DISTORTION: R - ";INT(100*P(3));" PC D - ";
|
||
385 PRINTINT(100*P(4));" PC"
|
||
390 PRINT
|
||
395 PRINT"ALLOC RESOURCES - MIN. 20 PC FOR EACH AREA - TO"
|
||
400 PRINT"IMAGE, PARTY, AND ISSUES"
|
||
405 PRINT
|
||
410 PRINT"ALLOC. R (MAX";
|
||
415 PRINT" =";P(5);" )";
|
||
420 INPUTW(1),W(2),W(3)
|
||
425 IF(W(1)+W(2)+W(3))>P(5)THEN410
|
||
430 FORI=1TO3
|
||
435 IFW(I)<.2*P(5)THEN410
|
||
440 NEXTI
|
||
445 PRINT"ALLOC. D (MAX";
|
||
450 PRINT" =";P(6);" )";
|
||
455 INPUTW(4),W(5),W(6)
|
||
460 PRINT
|
||
465 IF(W(4)+W(5)+W(6))>P(6)THEN445
|
||
470 FORI=4TO6
|
||
475 IFW(I)<.2*P(6)THEN445
|
||
480 NEXTI
|
||
485 LETF5=1
|
||
490 LETF3=1
|
||
495 PRINT"TO HELP IMAGE -"
|
||
500 PRINT"STRESS EXP, ABIL, OR PERS"
|
||
505 GOTO520
|
||
510 PRINT"TO PUBLICIZE ISSUES -"
|
||
515 PRINT"STRESS ECO, DOMEST, OR FOR POL"
|
||
520 PRINT" R - HAS";W(F5);
|
||
525 GOTO535
|
||
530 PRINT" D - HAS";W(F5+3);
|
||
535 PRINT" UNITS -";
|
||
540 PRINT" ALLOC.";
|
||
545 INPUTI(1),I(2),I(3)
|
||
550 IF(I(1)-I(2))*(I(1)-I(3))*(I(2)-I(3))<>0THEN565
|
||
555 PRINT"NO EQUAL ALLOCATIONS!";
|
||
560 GOTO540
|
||
565 IFF3=2THEN580
|
||
570 LETX=W(F5)
|
||
575 GOTO585
|
||
580 LETX=W(F5+3)
|
||
585 IF(I(1)+I(2)+I(3))<=XTHEN600
|
||
590 PRINT"MAX =";X;
|
||
595 GOTO540
|
||
600 FORI=1TO3
|
||
605 IFI(I)<.2*XTHEN620
|
||
610 NEXTI
|
||
615 GOTO630
|
||
620 PRINT"NO ALLOC < 20 PC!";
|
||
625 GOTO540
|
||
630 LETX=1
|
||
635 IFI(2)>I(1)THEN650
|
||
640 LETI(2)=0
|
||
645 GOTO660
|
||
650 LETX=2
|
||
655 LETI(1)=0
|
||
660 IF(I(3)-I(1))*(I(3)-I(2))<0THEN670
|
||
665 LETX=3
|
||
670 LETY(F5,F3)=X
|
||
675 IFF3=2THEN695
|
||
680 LETS(F5)=I(X)
|
||
685 LETF3=2
|
||
690 GOTO530
|
||
695 LETT(F5)=I(X)
|
||
700 IFF5=3THEN720
|
||
705 LETF3=1
|
||
710 LETF5=3
|
||
715 GOTO510
|
||
720 PRINT
|
||
725 PRINT"UPDATE - "
|
||
730 IFP(7)>.65THEN755
|
||
735 IF(W(2)-.3*P(5))<0THEN745
|
||
740 LETP(7)=P(7)+.025
|
||
745 IF(W(5)-.3*P(6))<0THEN755
|
||
750 LETP(7)=P(7)+.025
|
||
755 PRINT"TURNOUT: ";INT(100*P(7));" PC"
|
||
760 LETF5=1
|
||
765 PRINT"IMPROVING IMAGE:"
|
||
770 GOTO780
|
||
775 PRINT"STRESSING RIGHT ISSUE:"
|
||
780 PRINT" R IS ";
|
||
785 IFY(F5,1)<>C(F5)THEN825
|
||
790 LETI=(.5+S(F5)/(2*W(F5)))*(1-P(3))
|
||
795 IFF5=3THEN815
|
||
805 LETN1=N1+1
|
||
810 GOTO860
|
||
815 LETN3=N3+1
|
||
820 GOTO860
|
||
825 PRINT"NOT ";
|
||
830 LETI=-.25*(1-P(3))
|
||
835 IFF5=3THEN855
|
||
845 LETN1=0
|
||
850 GOTO860
|
||
855 LETN3=0
|
||
860 PRINT"AND D IS ";
|
||
865 IFY(F5,2)<>C(F5+1)THEN905
|
||
870 LETX=(.5+T(F5)/(2*W(F5+3)))*(1-P(4))
|
||
875 IFF5<>3THEN895
|
||
880 LETN4=N4+1
|
||
885 GOTO965
|
||
895 LETN2=N2+1
|
||
900 GOTO940
|
||
905 PRINT"NOT ";
|
||
910 LETX=-.25*(1-P(4))
|
||
915 IFF5<>3THEN930
|
||
920 LETN4=0
|
||
925 GOTO965
|
||
930 LETN2=0
|
||
940 LETP(1)=P(1)+I
|
||
945 LETP(2)=P(2)+X
|
||
950 PRINT
|
||
955 LETF5=3
|
||
960 GOTO775
|
||
965 LETP(9)=P(9)+I
|
||
970 LETP(10)=P(10)+X
|
||
975 PRINT
|
||
980 PRINT
|
||
985 LETF5=1
|
||
990 IFABS(P(F5)-P(F5+1))>.5THEN1010
|
||
995 PRINT"NO ONE HAS";
|
||
1000 LETE(F5)=3
|
||
1005 GOTO1085
|
||
1010 IFP(F5+1)>P(F5)THEN1045
|
||
1015 PRINT"R ";
|
||
1020 IF(P(F5)-P(F5+1))>1.5THEN1035
|
||
1025 LETE(F5)=4
|
||
1030 GOTO1080
|
||
1035 LETE(F5)=5
|
||
1040 GOTO1070
|
||
1045 PRINT"D ";
|
||
1050 IF(P(F5+1)-P(F5))>1.5THEN1065
|
||
1055 LETE(F5)=2
|
||
1060 GOTO1080
|
||
1065 LETE(F5)=1
|
||
1070 PRINT"HAS A DECIDED";
|
||
1075 GOTO1085
|
||
1080 PRINT"HAS A SLIGHT";
|
||
1085 PRINT" ADVANTAGE ";
|
||
1090 IFF5=9THEN1110
|
||
1095 PRINT"IN IMAGE"
|
||
1100 LETF5=9
|
||
1105 GOTO990
|
||
1110 PRINT"WITH ISSUES"
|
||
1115 PRINT
|
||
1120 IFE(2)>4THEN1145
|
||
1125 IFN1<2THEN1145
|
||
1130 LETE(2)=E(2)+1
|
||
1135 PRINT" R";
|
||
1140 GOSUB1560
|
||
1145 IFE(4)<2THEN1170
|
||
1150 IFN2<2THEN1170
|
||
1155 LETE(4)=E(4)-1
|
||
1160 PRINT" D";
|
||
1165 GOSUB1560
|
||
1170 IFE(7)>4THEN1200
|
||
1175 IFN1<1THEN1200
|
||
1180 IFY(3,1)<>C(3)THEN1200
|
||
1185 LETE(7)=E(7)+1
|
||
1190 PRINT" R";
|
||
1195 GOSUB 1570
|
||
1200 IFE(3)<2THEN1230
|
||
1205 IFN2<1THEN1230
|
||
1210 IFY(3,2)<>C(4)THEN1230
|
||
1215 LETE(3)=E(3)-1
|
||
1220 PRINT" D";
|
||
1225 GOSUB1570
|
||
1230 IFN3<3THEN1255
|
||
1235 IFE(8)>4THEN1255
|
||
1240 LETE(8)=E(8)+1
|
||
1245 PRINT" R";
|
||
1250 GOSUB1580
|
||
1255 IFE(6)<2THEN1280
|
||
1260 IFN4<3THEN1280
|
||
1265 LETE(6)=E(6)-1
|
||
1270 PRINT" D";
|
||
1275 GOSUB1580
|
||
1280 PRINT"TURNOUT ";
|
||
1285 IFE(5)<>3THEN1300
|
||
1290 PRINT"HAS NO EFFECT"
|
||
1295 GOTO1390
|
||
1300 IFP(7)<.55THEN1355
|
||
1305 PRINT"FAVORS ";
|
||
1310 IFSGN(E(5)-3)=-1THEN1335
|
||
1315 PRINT"R"
|
||
1320 IFE(5)>4THEN1390
|
||
1325 LETE(5)=E(5)+1
|
||
1330 GOTO1390
|
||
1335 PRINT"D"
|
||
1340 IFE(5)<2THEN1390
|
||
1345 LETE(5)=E(5)-1
|
||
1350 GOTO1390
|
||
1355 PRINT"HINDERS ";
|
||
1360 IFSGN(E(5)-3)=-1THEN1380
|
||
1365 PRINT"R"
|
||
1370 LETE(5)=E(5)-1
|
||
1375 GOTO1390
|
||
1380 PRINT"D"
|
||
1385 LETE(5)=E(5)+1
|
||
1390 FORX=1TO3
|
||
1395 LETI(X)=(W(1)/P(5))*E(X)
|
||
1400 NEXTX
|
||
1405 FORX=4TO6
|
||
1410 LETY(X-3,1)=(W(2)/P(5))*E(X)
|
||
1415 NEXTX
|
||
1420 FORX=7TO9
|
||
1425 LETW(X-6)=(W(3)/P(5))*E(X)
|
||
1430 NEXTX
|
||
1435 LETI(1)=I(1)+Y(1,1)+W(1)
|
||
1440 LETI(2)=I(2)+Y(2,1)+W(2)
|
||
1445 LETI(3)=I(3)+Y(3,1)+W(3)
|
||
1450 LETI=I(1)*(W(4)/P(6))+I(2)*(W(5)/P(6))+I(3)*(W(6)/P(6))
|
||
1455 LETX=ABS(10*(I-3))+50
|
||
1460 PRINT
|
||
1465 IFR1=4THEN1480
|
||
1470 PRINT"THE LATEST POLL SHOWS ";
|
||
1475 GOTO1485
|
||
1480 PRINT"THE RESULT IS ";
|
||
1485 IFSGN(I-3)=0THEN1545
|
||
1490 IFSGN(I-3)=-1THEN1505
|
||
1495 PRINT"R ";
|
||
1500 GOTO1510
|
||
1505 PRINT"D ";
|
||
1510 IFR1=4THEN1525
|
||
1515 PRINT"LEADING ";
|
||
1520 GOTO1530
|
||
1525 PRINT"HAS WON ";
|
||
1530 PRINT"WITH";.1*INT(10*X);" PC OF THE VOTE"
|
||
1535 PRINT"AND HIS OPPONENT WITH";.1*INT(10*(100-X));" PC"
|
||
1540 GOTO1550
|
||
1545 PRINT"A TIE"
|
||
1550 IFR1=4THEN1650
|
||
1555 GOTO1600
|
||
1560 PRINT" HAS CHOSEN RIGHT IMAGE TWICE IN A ROW"
|
||
1565 GOTO1585
|
||
1570 PRINT" HAS CHOSEN CORRECT ISSUE AND IMAGE"
|
||
1575 GOTO1585
|
||
1580 PRINT" HAS CHOSEN RIGHT ISSUE 3 TIMES IN A ROW"
|
||
1585 PRINT" AND THIS SHOULD HELP HIM"
|
||
1590 PRINT
|
||
1595 RETURN
|
||
1600 PRINT
|
||
1605 PRINT"FAC";INT(100*P(1))/100;INT(100*P(2))/100;C(1);C(2);C(3);
|
||
1610 PRINTC(4);INT(100*P(9))/100;INT(100*P(10))/100;P(7);
|
||
1615 PRINTINT(100*P(3))/100;INT(100*P(4))/100
|
||
1620 PRINT"CTRS";N1;N2;N3;N4
|
||
1625 PRINT"MAT:"
|
||
1630 FORI=1TO9
|
||
1635 PRINT"CELL";I;" -- ";E(I)
|
||
1640 NEXTI
|
||
1645 DATA.45,0,0,0,0
|
||
1650 END
|
||
*U*, |