Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 10 GOSUB 140: OPEN "I",1,"data14.txt": WHILE NOT EOF(1): LINE INPUT#1, S$
- 20 IF INSTR(S$,"mem") THEN GOSUB 40 ELSE M$=MID$(S$,8)
- 30 WEND: GOSUB 230: PRINT "PART 1: ";V#: END
- 40 E=INSTR(S$,"]"): X#=VAL(MID$(S$,5,E-5)): Y#=VAL(MID$(S$,E+4))
- 50 Z$="": FOR I=36 TO 1 STEP -1: R=Y#-INT(Y#/2)*2: Y#=INT(Y#/2)
- 60 MC$=MID$(M$,I,1): IF MC$="X" THEN IF R=0 THEN MC$="0" ELSE MC$="1"
- 70 Z$=MC$+Z$: NEXT I
- 80 Y#=0: FOR I=1 TO LEN(Z$): Y#=Y#*2: IF MID$(Z$,I,1)="1" THEN Y#=Y#+1
- 90 NEXT I: K#=X#: V#=Y#: GOSUB 170: RETURN
- 100 ' ************************************************************************
- 110 ' Simple Dictionary. Stores up to 1000 values. key K# -> value V#
- 120 ' 140: Setup. 170: SET. 180: GET. 200: DEL. 220: IN. 230: SUM.
- 130 ' ************************************************************************
- 140 DIM HK#(999), HV#(999): FOR I=0 TO 999: HK#(I)=-1: NEXT: RETURN
- 150 H%=K#-INT(K#/1000)*1000
- 160 WHILE HK#(H%)<>-1 AND HK#(H%)<>K#: H%=(H%+1) MOD 1000: WEND: RETURN
- 170 GOSUB 150: HK#(H%)=K#: HV#(H%)=V#: RETURN
- 180 GOSUB 150: IF HK#(H%)<>-1 THEN V#=HV#(H%): RETURN
- 190 V#=-1: PRINT "Invalid key: ";K#: RETURN
- 200 GOSUB 150: IF HK#(H%)=K# THEN HK#(H%)=-1: RETURN
- 210 PRINT "Key not present to delete: ";K#: RETURN
- 220 GOSUB 150: V# = (HK#(H%) = K#): RETURN
- 230 V#=0: FOR I=0 TO 999: IF HK#(I)<>-1 THEN V#=V#+HV#(I)
- 240 NEXT I: RETURN
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement