Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DEFLNG A-Z
- DIM g(999, 999) AS INTEGER
- DIM c(2000, 5) AS INTEGER
- DIM w$(fake)
- OPEN "input03.txt" FOR BINARY AS #1
- WHILE NOT EOF(1)
- b$ = INPUT$(1, # 1)
- IF b$ >= " " THEN a$ = a$ + b$
- IF b$ < " " OR EOF(1) THEN GOSUB procline: a$ = ""
- WEND
- CLOSE #1
- FOR i = 1 TO t
- FOR x = c(i, 1) TO c(i, 1) + c(i, 3) - 1
- FOR y = c(i, 2) TO c(i, 2) + c(i, 4) - 1
- j = g(x, y)
- IF j <> 0 THEN c(i, 5) = 1
- IF j > 0 THEN c(j, 5) = 1: g(x, y) = -1: sum = sum + 1
- IF j = 0 THEN g(x, y) = c(i, 0)
- NEXT
- NEXT
- NEXT
- PRINT "part 1:"; sum
- FOR i = 1 TO t
- IF c(i, 5) = 0 THEN EXIT FOR
- NEXT
- PRINT "part 2:"; i
- END
- '-------------------------------------------
- procline:
- IF a$ = "" THEN RETURN
- GOSUB strsplit
- t = t + 1: '0=id / 1=x / 2=y / 3=w / 4=h / 5=spoiled
- c(t, 0) = VAL(w$(1)): c(t, 1) = VAL(w$(3)): c(t, 2) = VAL(w$(4))
- c(t, 3) = VAL(w$(5)): c(t, 4) = VAL(w$(6))
- RETURN
- strsplit:
- REDIM w$(16)
- DL$ = "#,: x": ii = 1: ok = 0
- FOR jj = 1 TO LEN(a$)
- b$ = MID$(a$, jj, 1)
- splitme = 0
- FOR kk = 1 TO LEN(DL$)
- IF b$ = MID$(DL$, kk, 1) THEN splitme = 1
- NEXT
- IF splitme = 1 THEN
- IF ok = 1 THEN ii = ii + 1: ok = 0
- ELSE
- IF b$ > " " THEN w$(ii) = w$(ii) + b$: ok = 1
- END IF
- NEXT
- 'FOR i = 1 TO ii: PRINT i; ") "; w$(i): NEXT: SLEEP 'test
- RETURN
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement