-
Notifications
You must be signed in to change notification settings - Fork 0
/
KOL.TXT
193 lines (193 loc) · 5.75 KB
/
KOL.TXT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
10 RANDOMIZE
20 DIM R%(20%) : DIM P%(16%) : DIM W%(16%)
30 DIM P1%(16%) : DIM W1%(16%)
40 ; CHR$(12);
50 TAB(9);' KOLVÄTEN '
60 ; CUR(2,8);'STOCKHOLM 82.04.14'
70 ; CUR(3,2);CHR$(151);STRING$(31%,115%);
80 ; CUR(6,0);'ABC80 ÄR NU PROGRAMMERAD FÖR ATT KUNNA'
90 ; 'KONSTRUERA OLIKA KOLVÄTEN OCH ÄVEN'
100 ; 'KUNNA NAMNGE DESSA.'
110 ; 'KONSTUKTIONEN SKER HELT SLUMPMÄSSIGT'
120 ; 'VARFÖR OLIKA SVÅRA KOLVÄTEN KOMMER'
130 ; 'ATT DYKA UPP I BLANDAD ORDNING.'
140 ; : ; 'DATORN HÅLLER INNE MED NAMNUPPGIFTEN'
150 ; 'TILLS DU TRYCKER PÅ RETURN-tangenten'
160 ; 'SÅ ATT DU SKALL FÅ EN CHANS ATT TESTA'
170 ; 'DIG SJÄLV PÅ NAMNSÄTTNINGEN!!!'
180 ; CUR(20,8);'TRYCK "RETURN" '; : GET S$
190 ; CHR$(12);
200 ; : ; 'DATORN KAN HJÄLPA DIG OM DU TRYCKER:'
210 ; : ; ' LÄN-DATORN TALAR OM FÖR DIG HUR'
220 ; ' MÅNGA KOL DET FINNS I LÄNGSTA'
230 ; ' OBRUTNA KEDJAN!'
240 ; : ; ' RAD-DATORN TALAR OM HUR MÅNGA'
250 ; ' AV DE OLIKA RADIKALERNA'
260 ; ' SOM FINNS!'
270 ; : ; ' REG-DATORN VISAR UPP NOMENKLATUR-'
280 ; ' REGLERNA!'
290 ; CUR(14,0);'DATORN KOMMER ATT HA TVÅ RADER ÖPPNA'
300 ; 'FÖR SKRIVNING SÅ DU BEHÖVER INTE'
310 ; 'ANVÄNDA PAPPER OCH PENNA!'
320 ; : ; 'DÅ DU ÄR FÄRDIG TRYCKER DU PÅ "RETURN"'
330 ; 'SÅ DYKER DATORNS SVAR UPP BREDVID ETT'
340 ; 'BLINKANDE !!!'
350 POKE 32346,196
360 ; CUR(23,8);'TRYCK "RETURN"!!! ';
370 GET S$ : ; CHR$(12);
380 ; ' NOMENKLATURREGLER '
390 ; : ; '1. Utgå från den längsta ogrenade kol-'
400 ; ' kedjan, stamkolvätet, i föreningens'
410 ; ' strukturformel.Namnge kolvätet.'
420 ; : ; '2. Numrera kolatomerna i stamkolvätet'
430 ; ' med början i den ände som har det'
440 ; ' kortaste avståndet till en sidokedja'
450 ; ' Läget av sidokedjorna anges med'
460 ; ' numren på de kolatomer, till vilka'
470 ; ' de är bundna.'
480 ; : ; '3. Ange med förstavelserna di,tri,tetra'
490 ; ' osv. hur många likadana grupper som'
500 ; ' binds till stamkolvätet.'
510 ; : ; '4. De grupper som binds till stam-'
520 ; ' kolvätet anges i bokstavsordning.'
530 ; CUR(23,8);'TRYCK "RETURN"! ';
540 GET S$ : ; CHR$(12);
550 ; ' NAMN GREKISKA RÄKNEORD '
560 ; : ; : ;
570 RESTORE 1870
580 FOR U%=1% TO 15%
590 READ N$ : ; ' 'U%' 'N$
600 NEXT U%
610 RESTORE 620
620 DATA DI,TRI,TETRA,PENTA,HEXA,OKTA,NONA
630 FOR U%=1% TO 7% : READ N$
640 ; CUR(U%+4%,21%);U%+1%' 'N$ : NEXT U%
650 ; CUR(23,8);'TRYCK "RETURN"! ' : GET S$
660 REM
670 ; CHR(12);
680 FOR G%=0% TO 23% : ; CUR(G%,0%)CHR$(151); : NEXT G%
690 IF S9%=1 THEN 950
700 REM KOLVÄTESTRUKTUR
710 S9%=0%
720 L%=1%+RND*8%
730 L3%=L%*2%+1%
740 FOR N%=2% TO L3%
750 T%=RND*10%-6%
760 IF T%<0% THEN T%=0%
770 R%(N%)=T% : NEXT N%
780 REM LÄNGSTA KOLKEDJA
790 L1%=0% : M1%=0% : M2%=0%
800 FOR N%=2% TO L3%-1%
810 FOR N1%=N%+1% TO L3%
820 C%=N1%/2%-N%/2%+1%
830 C1%=R%(N%)+R%(N1%)+C%
840 IF L1%<=C1% THEN L1%=C1% : M1%=N% : M2%=N1%
850 NEXT N1% : NEXT N%
860 REM SKALA RAD.
870 M8%=M1%-1%-(M1% AND 1%)
880 M9%=M2%+2%-(M2% AND 1%)
890 FOR N%=2% TO M8%
900 R%(N%)=0% : NEXT N%
910 FOR N%=M9% TO L3%
920 R%(N%)=0% : NEXT N%
930 REM >> UPPRITNING <<
940 REM STAMKOLVÄTE
950 FOR U%=1% TO L%
960 Y%=3% : X%=U%
970 GOSUB 1150
980 NEXT U%
990 FOR U%=1% TO L%-1%
1000 Y%=3% : X%=U%
1010 GOSUB 1230
1020 NEXT U%
1030 REM RADIKALER
1040 FOR N%=2% TO L3%
1050 X%=N%/2%
1060 IF N% AND 1% THEN B1%=4% : S1%=3%+R%(N%) ELSE B1%=3%-R%(N%) : S1%=2%
1070 FOR U%=B1% TO S1%
1080 Y%=U% : GOSUB 1150
1090 IF N% AND 1% THEN Y%=Y%-1%
1100 GOSUB 1270
1110 NEXT U% : NEXT N%
1120 REM NU ÄR RITNINGEN KLAR
1130 GOTO 1320
1140 REM ATOM C
1150 R1%=Y%*9% : K1%=X%*7%+5%
1160 FOR R%=R1% TO R1%+4%
1170 SETDOT R%,K1% : NEXT R%
1180 FOR K%=K1% TO K1%+2%
1190 SETDOT R1%,K% : SETDOT R1%+4%,K%
1200 NEXT K%
1210 RETURN
1220 REM BINDNING -
1230 R1%=2%+Y%*9% : K1%=9%+X%*7%
1240 SETDOT R1%,K1% : SETDOT R1%,K1%+1%
1250 RETURN
1260 REM BINDNING !
1270 R1%=6%+Y%*9% : K1%=6%+X%*7%
1280 SETDOT R1%,K1% : SETDOT R1%+1%,K1%
1290 RETURN
1300 REM >> NAMNGIVNING <<
1310 REM NU SPEGELVÄNDER VI
1320 IF NOT M1% AND 1% THEN 1360
1330 M1%=M1%-1%
1340 R3%=R%(M1%): R%(M1%)=R%(M1%+1%)
1350 R%(M1%+1%)=R3%
1360 IF M2% AND 1% THEN 1410
1370 M2%=M2%+1%
1380 R3%=R%(M2%) : R%(M2%)=R%(M2%-1%)
1390 R%(M2%-1%)=R3%
1400 REM VILKET HÅLL BÖRJA ???
1410 Q%=0% : N%=0%
1420 IF NOT M1%=2% THEN Q%=R%(M1%)+1% : P%(N%)=Q% : W%(N%)=M1%/2%-1% : N%=1%
1430 FOR U%=M1%+1% TO M2%-1%
1440 IF R%(U%)=0% THEN 1480
1450 P%(N%)=U%/2%-M1%/2%+1%+R%(M1%)
1460 W%(N%)=R%(U%)
1470 Q%=Q%+P%(N%) : N%=N%+1%
1480 NEXT U%
1490 IF NOT M2%=L3% THEN P%(N%)=M2%/2%-M1%/2%+1%+R%(M1%) : W%(N%)=L%-M2%/2% : Q%=Q%+P%(N%)
1500 REM -----
1510 Q1%=0% : N%=0%
1520 IF NOT M2%=L3% THEN Q1%=R%(M2%)+1% : P1%(N%)=Q1% : W1%(N%)=L%-M2%/2% : N%=1%
1530 FOR U%=M2%-1% TO M1%+1% STEP -1%
1540 IF R%(U%)=0% THEN 1580
1560 W1%(N%)=R%(U%)
1570 Q1%=Q1%+P1%(N%) : N%=N%+1%
1580 NEXT U%
1590 IF NOT M1%=2% THEN P1%(N%)=M2%/2%-M1%/2%+1%+R%(M2%) : W1%(N%)=M1%/2%-1% : Q1%=Q1%+P1%(N%)
1600 IF Q1%>Q% THEN 1640
1610 FOR U%=0% TO 15%
1620 P%(U%)=P1%(U%) : W%(U%)=W1%(U%)
1630 NEXT U%
1640 REM NU I P%(N) , W%(N)
1650 REM
1660 REM metan etan osv.
1670 K$=''
1680 V$(2)='DI' : V$(3)='TRI'
1690 V$(4)='TETRA' : V$(5)='PENTA'
1700 V$(6)='HEXA' : V$(7)='HEPTA'
1710 V$(8)='OKTA' : V$(9)='NONA'
1720 RESTORE 1750
1730 FOR U1%=1% TO 4%
1740 F%=0%
1750 DATA 4,'BUTYL',2,'ETYL'
1760 DATA 1,'METYL',3,'PROPYL'
1770 READ T% : READ T$
1780 FOR U%=0% TO 15%
1790 IF NOT W%(U%)=T% THEN 1820
1800 K$=K$+RIGHT$(NUM$(P%(U%)),2%)+','
1810 F%=F%+1%
1820 NEXT U%
1830 IF F%=0% THEN 1860
1840 K$=LEFT$(K$,LEN(K$)-1%)
1850 K$=K$+'-'+V$(F%)+T$+'-'
1860 NEXT U1%
1870 DATA METAN,ETAN,PROPAN,BUTAN
1880 DATA PENTAN,HEXAN,HEPTAN,OKTAN
1890 DATA NONAN,DEKAN,UNDEKAN,DODEKAN
1900 DATA TRIDEKAN,TETRADEKAN
1910 DATA PENTADEKAN
1920 RESTORE 1870
1930 FOR U%=1% TO L1% : READ T$
.. rest of program missing