Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 10 OPEN "I",1,"data17.txt": GOSUB 2000: GOSUB 2500: O=7
- 20 WHILE NOT EOF(1): LINE INPUT#1, S$: FOR X=0 TO LEN(S$)-1
- 30 IF MID$(S$,X+1,1)="#" THEN GOSUB 400: GOSUB 2020
- 40 NEXT X: Y=Y+1: WEND: GOSUB 2050: FOR S=1 TO 6: PRINT S-1;":";V
- 50 FOR OW=-S TO S:FOR OZ=-S TO S: FOR OY=-S TO LEN(S$)+S: FOR OX=-S TO LEN(S$)+S
- 60 N=0: FOR NW=OW-1 TO OW+1: FOR NZ=OZ-1 TO OZ+1: FOR NY=OY-1 TO OY+1: FOR NX=OX-1 TO OX+1
- 70 W=NW: X=NX: Y=NY: Z=NZ: GOSUB 400: GOSUB 2040: IF V THEN N=N+1
- 80 NEXT: NEXT: NEXT: NEXT: X=OX: Y=OY: Z=OZ: W=OW: GOSUB 400: GOSUB 2040
- 90 IF N=3 OR (N=4 AND V) THEN GOSUB 2520
- 100 NEXT:NEXT: NEXT: NEXT: GOSUB 2550: GOSUB 2600: NEXT: PRINT "Part 1:";V: END
- 400 K=(W+O)*(2^15)+(Z+O)*(2^10)+(Y+O)*(2^5)+(X+O): RETURN
- 900 END
- 1995 ' ************************************************************************
- 1996 ' Simple Set. Stores up to 4000 values. key K
- 1998 ' ************************************************************************
- 2000 DIM S1(3999): FOR I=0 TO 3999: S1(I)=-1: NEXT: RETURN
- 2010 H%=K-INT(K/4000)*4000: WHILE S1(H%)<>-1 AND S1(H%)<>K: H%=(H%+1) MOD 4000: WEND: RETURN
- 2020 GOSUB 2010: S1(H%)=K: RETURN
- 2030 GOSUB 2010: IF S1(H%)=K THEN S1(H%)=-1: RETURN ELSE RETURN
- 2040 GOSUB 2010: V = (S1(H%) = K): RETURN
- 2050 V=0: FOR I=0 TO 3999: IF S1(I)<>-1 THEN V=V+1
- 2051 NEXT I: RETURN
- 2498 ' ************************************************************************
- 2499 ' We need two sets!
- 2500 DIM S2(3999): FOR I=0 TO 3999: S2(I)=-1: NEXT: RETURN
- 2510 H%=K-INT(K/4000)*4000: WHILE S2(H%)<>-1 AND S2(H%)<>K: H%=(H%+1) MOD 4000: WEND: RETURN
- 2520 GOSUB 2510: S2(H%)=K: RETURN
- 2530 GOSUB 2510: IF S2(H%)=K THEN S2(H%)=-1: RETURN ELSE RETURN
- 2540 GOSUB 2510: V = (S2(H%) = K): RETURN
- 2550 V=0: FOR I=0 TO 3999: IF S2(I)<>-1 THEN V=V+1
- 2551 NEXT I: RETURN
- 2599 REM ' Copy S2 to S1 and wipe S2
- 2600 FOR I=0 TO 3999: S1(I)=S2(I): S2(I)=-1: NEXT: RETURN
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement