Browse Source

Day 8 (R was not designed for this)

Petra Lamborn 3 years ago
parent
commit
9aa9de65e4
2 changed files with 682 additions and 0 deletions
  1. 46
    0
      8.R
  2. 636
    0
      input8.txt

+ 46
- 0
8.R View File

@@ -0,0 +1,46 @@
1
+library(stringr)
2
+input <- readLines("input8.txt")
3
+code.parsed <- str_match(input, "^([\\w]{3}) ([\\+-]\\d+)$")
4
+cmds <- code.parsed[,2]
5
+params <- as.numeric(code.parsed[,3])
6
+
7
+
8
+runints <- function(cmds, params) {
9
+    pos.hist <- c()
10
+    cpos <- 1
11
+    acc <- 0
12
+    target <- length(cmds) + 1
13
+    while ((!(cpos %in% pos.hist)) && cpos < target && cpos > 0) {
14
+        pos.hist <- c(pos.hist, cpos)
15
+        cin <- cmds[cpos]
16
+        cpa <- params[cpos]
17
+        if (cin == "jmp") {
18
+            cpos <- cpos + cpa
19
+        } else if (cin == "acc") {
20
+            acc <- acc + cpa
21
+            cpos <- cpos + 1
22
+        } else {
23
+            cpos <- cpos + 1
24
+        }
25
+    }
26
+    # print(acc)
27
+    ifelse(cpos == target, acc, NA)
28
+}
29
+
30
+runints(cmds, params)
31
+
32
+# crude rude brute force
33
+outputs <- sapply(1:length(cmds), function(x) {
34
+                      cmds1 <- cmds
35
+                      if (cmds[x] == "jmp") {
36
+                          cmds1[x] <- "nop"
37
+                          return(runints(cmds1, params))
38
+                      } else if (cmds[x] == "nop") {
39
+                          cmds1[x] <- "jmp"
40
+                          return(runints(cmds1, params))
41
+                      } else {
42
+                          return(NA)
43
+                      }
44
+})
45
+
46
+max(outputs, na.rm = TRUE)

+ 636
- 0
input8.txt View File

@@ -0,0 +1,636 @@
1
+jmp +1
2
+acc -15
3
+acc +14
4
+acc +18
5
+jmp +443
6
+jmp +286
7
+acc +27
8
+jmp +522
9
+jmp +1
10
+acc -19
11
+acc +22
12
+acc +37
13
+jmp +111
14
+acc +28
15
+acc +43
16
+acc +18
17
+nop +597
18
+jmp +479
19
+jmp +604
20
+jmp +499
21
+acc +0
22
+acc +22
23
+acc +13
24
+jmp +566
25
+acc -12
26
+acc +0
27
+nop +153
28
+jmp +173
29
+jmp +192
30
+jmp +292
31
+acc +36
32
+acc +7
33
+jmp +440
34
+acc -17
35
+acc +40
36
+acc +24
37
+acc -7
38
+jmp +519
39
+nop +16
40
+acc +15
41
+acc +42
42
+jmp +445
43
+jmp +350
44
+acc +42
45
+acc +12
46
+acc +2
47
+jmp +133
48
+acc +12
49
+acc +3
50
+acc +27
51
+jmp +186
52
+acc +25
53
+acc +46
54
+jmp +285
55
+acc +32
56
+acc -11
57
+acc -6
58
+jmp +565
59
+nop +215
60
+acc +1
61
+acc +35
62
+jmp +1
63
+jmp +502
64
+acc +27
65
+acc +19
66
+acc -8
67
+acc -8
68
+jmp +531
69
+jmp -21
70
+nop +292
71
+acc +8
72
+acc -13
73
+jmp +26
74
+acc +1
75
+acc +45
76
+nop -42
77
+jmp +323
78
+jmp +39
79
+jmp +336
80
+acc +19
81
+jmp -51
82
+acc +45
83
+acc +26
84
+jmp +278
85
+jmp +6
86
+acc +40
87
+nop +271
88
+acc -10
89
+nop -4
90
+jmp +272
91
+nop -61
92
+acc +4
93
+acc -14
94
+acc +27
95
+jmp -70
96
+acc -9
97
+acc +29
98
+jmp +416
99
+acc +25
100
+acc +45
101
+jmp +19
102
+jmp +39
103
+acc -19
104
+acc +7
105
+jmp +248
106
+acc +11
107
+acc +36
108
+jmp +515
109
+acc +45
110
+acc +49
111
+jmp +329
112
+acc +30
113
+acc +31
114
+acc +28
115
+acc +26
116
+jmp +8
117
+jmp +283
118
+acc +32
119
+jmp +127
120
+acc +4
121
+acc +20
122
+jmp +92
123
+jmp +50
124
+jmp +133
125
+acc +5
126
+acc +8
127
+jmp +313
128
+acc +38
129
+acc +34
130
+jmp +395
131
+acc +14
132
+acc +29
133
+jmp +392
134
+nop +246
135
+jmp +374
136
+nop +429
137
+nop +388
138
+acc +3
139
+acc +0
140
+jmp +432
141
+acc -1
142
+acc +35
143
+acc +35
144
+jmp +148
145
+acc +8
146
+acc +11
147
+acc +12
148
+acc -10
149
+jmp +434
150
+acc -19
151
+jmp +330
152
+nop +329
153
+acc +30
154
+jmp +239
155
+acc -6
156
+jmp -136
157
+jmp +418
158
+nop +385
159
+jmp +1
160
+acc +34
161
+acc +9
162
+jmp +410
163
+nop -13
164
+acc +31
165
+acc +15
166
+acc +37
167
+jmp -142
168
+jmp +109
169
+acc -16
170
+nop +405
171
+nop +343
172
+jmp +8
173
+acc +44
174
+acc -15
175
+acc +7
176
+acc +9
177
+jmp +185
178
+acc +6
179
+jmp +35
180
+nop -25
181
+jmp +93
182
+acc +22
183
+acc -17
184
+acc +15
185
+acc +39
186
+jmp +41
187
+nop -123
188
+acc +15
189
+acc +6
190
+jmp -35
191
+acc +48
192
+jmp +422
193
+acc -7
194
+nop +67
195
+nop +66
196
+acc +48
197
+jmp -29
198
+acc -11
199
+acc +16
200
+jmp +92
201
+acc +45
202
+jmp +92
203
+jmp +212
204
+acc -3
205
+acc -18
206
+nop -186
207
+nop +7
208
+jmp -28
209
+nop +292
210
+acc +7
211
+nop -120
212
+acc +46
213
+jmp +48
214
+acc -3
215
+acc -16
216
+acc +50
217
+jmp -44
218
+acc -2
219
+acc -11
220
+jmp +236
221
+jmp +344
222
+acc +33
223
+acc +44
224
+acc +39
225
+nop -45
226
+jmp -53
227
+acc -11
228
+nop +380
229
+acc +35
230
+jmp +113
231
+nop +203
232
+acc +40
233
+jmp +167
234
+acc +44
235
+jmp +394
236
+jmp +229
237
+jmp -167
238
+jmp -204
239
+acc +21
240
+acc +49
241
+jmp +25
242
+acc -19
243
+acc -17
244
+acc +44
245
+jmp -11
246
+acc +40
247
+acc +12
248
+jmp +253
249
+acc +21
250
+jmp +349
251
+jmp +285
252
+acc +0
253
+nop +261
254
+acc +15
255
+acc +38
256
+jmp +10
257
+acc +27
258
+jmp +1
259
+jmp +373
260
+jmp -151
261
+acc +6
262
+jmp -48
263
+acc +14
264
+acc -8
265
+jmp -61
266
+acc +8
267
+acc +20
268
+jmp +1
269
+jmp +1
270
+jmp +208
271
+acc -18
272
+acc +32
273
+jmp +94
274
+jmp +262
275
+acc +0
276
+jmp -156
277
+nop +188
278
+nop +312
279
+acc +21
280
+acc +6
281
+jmp -123
282
+acc +47
283
+jmp +316
284
+acc +25
285
+nop +290
286
+jmp +62
287
+acc -7
288
+acc +36
289
+nop +212
290
+acc +14
291
+jmp +332
292
+jmp +291
293
+jmp +226
294
+acc +30
295
+jmp -161
296
+acc +39
297
+acc +38
298
+jmp +203
299
+nop +63
300
+nop -6
301
+acc -15
302
+nop -56
303
+jmp +72
304
+acc +1
305
+acc +34
306
+acc +22
307
+acc +19
308
+jmp -135
309
+acc +27
310
+jmp -303
311
+acc +1
312
+acc +48
313
+acc -19
314
+jmp +142
315
+acc +50
316
+jmp +298
317
+acc +43
318
+acc +0
319
+acc +50
320
+acc +12
321
+jmp +137
322
+acc +41
323
+nop +252
324
+jmp -310
325
+acc +13
326
+acc +34
327
+acc -15
328
+acc +43
329
+jmp +236
330
+acc +5
331
+acc -8
332
+acc +25
333
+acc +45
334
+jmp +153
335
+acc -12
336
+acc +31
337
+acc -1
338
+jmp +120
339
+jmp +236
340
+acc +38
341
+nop -238
342
+jmp -328
343
+jmp +81
344
+acc +48
345
+acc +15
346
+acc -9
347
+jmp -73
348
+nop -49
349
+jmp -271
350
+acc -17
351
+acc -17
352
+jmp +106
353
+nop +212
354
+jmp -290
355
+acc +36
356
+nop +109
357
+jmp +186
358
+jmp -310
359
+acc +4
360
+acc +16
361
+jmp +117
362
+jmp +1
363
+acc +10
364
+jmp +20
365
+acc +12
366
+jmp -311
367
+acc +12
368
+acc +30
369
+nop +182
370
+jmp -315
371
+acc +25
372
+acc +12
373
+acc +30
374
+jmp +50
375
+acc -19
376
+jmp -333
377
+acc +30
378
+nop +87
379
+jmp -199
380
+acc +8
381
+jmp +112
382
+acc -8
383
+jmp -313
384
+acc +7
385
+acc +32
386
+jmp +1
387
+jmp +230
388
+acc +25
389
+acc +45
390
+acc +20
391
+acc +0
392
+jmp -307
393
+acc +30
394
+nop -253
395
+acc +7
396
+acc +39
397
+jmp -113
398
+acc -12
399
+jmp +209
400
+acc +42
401
+acc +17
402
+acc -19
403
+acc +24
404
+jmp -170
405
+acc +30
406
+acc +9
407
+acc -1
408
+jmp -328
409
+acc +19
410
+acc +45
411
+jmp +132
412
+nop -244
413
+nop +35
414
+jmp +34
415
+acc -10
416
+acc +26
417
+acc +35
418
+nop -238
419
+jmp +54
420
+acc +15
421
+nop -378
422
+acc +42
423
+jmp -43
424
+acc -9
425
+acc -5
426
+acc -11
427
+nop -307
428
+jmp -129
429
+nop -202
430
+acc -9
431
+nop -376
432
+acc +11
433
+jmp -75
434
+jmp +14
435
+acc -1
436
+acc +32
437
+acc -14
438
+acc +16
439
+jmp +39
440
+acc +42
441
+acc +32
442
+jmp -133
443
+acc +1
444
+acc +17
445
+nop +85
446
+acc +35
447
+jmp +83
448
+acc +27
449
+acc +0
450
+acc -12
451
+jmp -93
452
+acc +48
453
+acc +35
454
+nop +154
455
+jmp -287
456
+jmp -347
457
+jmp -348
458
+acc +18
459
+jmp -374
460
+acc -15
461
+jmp +36
462
+jmp -123
463
+acc -11
464
+jmp +55
465
+acc +19
466
+acc +23
467
+jmp -339
468
+nop +5
469
+acc +44
470
+acc +2
471
+jmp +1
472
+jmp -417
473
+acc +23
474
+jmp -253
475
+acc -9
476
+acc -3
477
+jmp -138
478
+jmp -227
479
+acc +12
480
+jmp -437
481
+acc +47
482
+acc +19
483
+acc -6
484
+jmp -245
485
+acc +2
486
+jmp -328
487
+acc -14
488
+acc +25
489
+acc +4
490
+acc -2
491
+jmp -411
492
+jmp -351
493
+jmp -459
494
+acc +3
495
+acc +48
496
+jmp -134
497
+nop +54
498
+acc -14
499
+jmp -298
500
+jmp -401
501
+acc -14
502
+acc +25
503
+nop -55
504
+acc -10
505
+jmp -312
506
+acc -7
507
+acc +45
508
+jmp -74
509
+acc +30
510
+jmp -462
511
+acc +5
512
+acc -8
513
+jmp -355
514
+acc +9
515
+acc +44
516
+acc +44
517
+jmp -150
518
+jmp -484
519
+acc +14
520
+acc +19
521
+acc -6
522
+jmp -474
523
+acc -18
524
+jmp -166
525
+jmp -264
526
+acc -15
527
+acc +17
528
+acc +29
529
+jmp -149
530
+nop -273
531
+acc +31
532
+acc +0
533
+acc -2
534
+jmp -410
535
+jmp -411
536
+acc +47
537
+acc -6
538
+nop -287
539
+jmp -436
540
+acc +4
541
+nop +88
542
+jmp -158
543
+acc +32
544
+jmp +1
545
+acc -15
546
+jmp -319
547
+acc -6
548
+acc -18
549
+acc +49
550
+jmp -256
551
+acc -18
552
+acc +31
553
+acc +27
554
+acc +27
555
+jmp -351
556
+jmp +58
557
+acc +12
558
+jmp +1
559
+acc +32
560
+nop -151
561
+jmp -411
562
+acc +19
563
+acc +7
564
+jmp -287
565
+acc +30
566
+jmp -496
567
+acc -11
568
+acc +5
569
+acc +42
570
+acc +25
571
+jmp -249
572
+acc -1
573
+jmp -243
574
+jmp -190
575
+acc +32
576
+acc +32
577
+acc +14
578
+jmp +12
579
+acc +5
580
+acc +30
581
+acc +34
582
+jmp -46
583
+acc -13
584
+acc +5
585
+acc +45
586
+jmp -271
587
+acc +29
588
+acc +37
589
+jmp -323
590
+nop -18
591
+acc -2
592
+acc +21
593
+acc -12
594
+jmp -453
595
+acc -14
596
+acc +19
597
+nop -173
598
+jmp -411
599
+acc +24
600
+acc -7
601
+nop -136
602
+acc +6
603
+jmp -357
604
+acc -1
605
+acc -1
606
+acc +32
607
+jmp -264
608
+acc +26
609
+jmp -175
610
+acc +10
611
+acc +35
612
+nop -361
613
+jmp -493
614
+acc +14
615
+jmp -206
616
+jmp -138
617
+acc -1
618
+jmp -156
619
+acc +3
620
+acc +11
621
+acc -2
622
+jmp -213
623
+acc +35
624
+acc -13
625
+acc +47
626
+acc +45
627
+jmp -376
628
+jmp -543
629
+jmp -479
630
+acc +29
631
+jmp -532
632
+acc +28
633
+acc +47
634
+acc -11
635
+acc -14
636
+jmp +1