-
Notifications
You must be signed in to change notification settings - Fork 0
/
AOC.PUZZLE.6
109 lines (109 loc) · 1.85 KB
/
AOC.PUZZLE.6
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
*
GIT.FILENAME = 'AOC.PUZZLE.6'
GIT.REPO = 'https://github.com/Krowemoh/AOC-2023.git'
*
EQU TRUE TO 1
EQU FALSE TO 0
*
YEAR = 2023
DAY = 6
*
AOC.ID = YEAR : '*' : DAY
*
OPEN '','AOC-PUZZLE-FILE' TO AOC.PUZZLE.FILE ELSE
PRINT 'Unable to open file: AOC-PUZZLE-FILE - Press RETURN':
INPUT ANYTHING
STOP
END
*
READ RAW.DATA FROM AOC.PUZZLE.FILE,AOC.ID ELSE
PRINT 'No Puzzle Input.'
STOP
END
*
*TEMP GOSUB TEST.DATA
*
GOSUB 100
*
GOSUB 200
*
STOP
*
********************* S U B R O U T I N E *********************
*
TEST.DATA:NULL
*
RAW.DATA = ''
*
RAW.DATA<-1> = 'Time: 7 15 30'
RAW.DATA<-1> = 'Distance: 9 40 200'
*
RETURN
*
********************* S U B R O U T I N E *********************
*
100:NULL
*
ANS = ''
*
TIMES = TRIM(FIELD(RAW.DATA<1>,':',2))
CONVERT ' ' TO @AM IN TIMES
*
DISTANCES = TRIM(FIELD(RAW.DATA<2>,':',2))
CONVERT ' ' TO @AM IN DISTANCES
*
NUMBER.OF.RACES = DCOUNT(TIMES,@AM)
*
MARGIN = 1
*
FOR I = 1 TO NUMBER.OF.RACES
TIME = TIMES<I>
DIST = DISTANCES<I>
*
LOST = 1
FOR T = 1 TO TIME
RACE.DIST = T*(TIME-T)
IF RACE.DIST > DIST THEN
EXIT
END ELSE
LOST += 1
END
NEXT T
*
MARGIN = MARGIN * (TIME - (LOST + LOST-1))
NEXT I
*
ANS = MARGIN
PRINT 'Part 1 ANS: ' : ANS
*
RETURN
*
********************* S U B R O U T I N E *********************
*
200:NULL
*
ANS = ''
*
TIME = TRIM(FIELD(RAW.DATA<1>,':',2))
CONVERT ' ' TO '' IN TIME
*
DISTANCE = TRIM(FIELD(RAW.DATA<2>,':',2))
CONVERT ' ' TO '' IN DISTANCE
*
FOR T = 1 TO TIME
RACE.DIST = T * (TIME - T)
IF RACE.DIST > DISTANCE THEN
EXIT
END
NEXT T
*
ANS = (TIME - (T + T -1))
*
PRINT 'Part 2 ANS: ' : ANS
*
RETURN
*
* END OF PROGRAM
*
END
*