— Day 8: Handheld Halting —
You have to try to fix the game console of the kid sitting next to you on the flight.
Run your copy of the boot code. Immediately before any instruction is executed a second time, what value is in the accumulator?
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr 1.1.4 ✔ readr 2.1.6
✔ forcats 1.0.1 ✔ stringr 1.6.0
✔ ggplot2 4.0.1 ✔ tibble 3.3.0
✔ lubridate 1.9.4 ✔ tidyr 1.3.1
✔ purrr 1.2.0
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag() masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
game <- read.delim ("data-2020-08.txt" , header = FALSE ) %>%
separate (V1, into = c ("inst" , "num" ), sep = " " ) %>%
mutate (has_run = FALSE ,
num = parse_number (num))
Create a function for processing and see how it goes
run_game <- function (game) {
x = 1
acc = 0
while (game$ has_run[[x]] == FALSE ) {
if (game$ inst[[x]] == "acc" ) {
acc = acc + game$ num[[x]]
game$ has_run[[x]] = TRUE
x = x + 1
} else if (game$ inst[[x]] == "nop" ) {
game$ has_run[[x]] = TRUE
x = x + 1
} else {
game$ has_run[[x]] = TRUE
x = x + game$ num[[x]]
}
}
return (acc)
}
Use the function, runs until we find has_run is True i.e. we’ve already been here.
— Part Two —
Exactly one instruction is corrupt, either a jmp or nop, acc are all ok.
Fix the program so that it terminates normally by changing exactly one jmp (to nop) or nop (to jmp). What is the value of the accumulator after the program terminates?
Different function for part two
run_game2 <- function (game) {
game$ has_run = FALSE
x = 1
acc = 0
max_x = length (game$ inst)
while (game$ has_run[[x]] == FALSE ) {
if (game$ inst[[x]] == "acc" ) {
acc = acc + game$ num[[x]]
game$ has_run[[x]] = TRUE
x = x + 1
} else if (game$ inst[[x]] == "nop" ) {
game$ has_run[[x]] = TRUE
x = x + 1
} else {
game$ has_run[[x]] = TRUE
x = x + game$ num[[x]]
}
if (x > max_x) {
game_final <<- game
return (acc)
}
}
return (NULL )
}
Figure things out. Length of instructions is 654, and there are lots of instructions that get that high (max_pos in the df below), so it’s difficult to calculate.
max_x = length (game$ inst)
# maybe it is the last jmp to nop, but we never get that high
# it was great to record where we've been
# what are the possibilities for finishing?
game <- game %>%
mutate (max_pos = num + row_number ())
# check out that data
arrange (game, desc (max_pos))
inst num has_run max_pos
1 acc 33 FALSE 685
2 acc 45 FALSE 674
3 acc 38 FALSE 672
4 acc 29 FALSE 669
5 acc 24 FALSE 669
6 acc 29 FALSE 667
7 acc 19 FALSE 667
8 acc 36 FALSE 664
9 acc 35 FALSE 662
10 jmp 1 FALSE 655
11 acc 1 FALSE 654
12 acc 1 FALSE 652
13 jmp 432 FALSE 650
14 acc 42 FALSE 650
15 jmp 1 FALSE 648
16 acc 12 FALSE 647
17 acc 27 FALSE 646
18 acc -2 FALSE 644
19 acc 45 FALSE 643
20 jmp 266 FALSE 642
21 jmp 166 FALSE 642
22 jmp 45 FALSE 642
23 acc 19 FALSE 642
24 acc -2 FALSE 640
25 acc -3 FALSE 640
26 acc 47 FALSE 634
27 jmp 589 FALSE 633
28 acc 14 FALSE 632
29 acc -7 FALSE 632
30 acc 29 FALSE 631
31 nop 121 FALSE 627
32 jmp 79 FALSE 627
33 acc 38 FALSE 627
34 acc -8 FALSE 623
35 acc 12 FALSE 621
36 acc 35 FALSE 620
37 jmp 602 FALSE 618
38 acc 41 FALSE 618
39 jmp 430 FALSE 614
40 jmp 412 FALSE 614
41 jmp 392 FALSE 614
42 nop 201 FALSE 614
43 acc 0 FALSE 614
44 nop 482 FALSE 612
45 jmp 385 FALSE 612
46 nop 338 FALSE 612
47 jmp 221 FALSE 612
48 nop 75 FALSE 612
49 acc 46 FALSE 612
50 acc 39 FALSE 612
51 acc 28 FALSE 612
52 jmp 1 FALSE 611
53 jmp 303 FALSE 606
54 jmp 162 FALSE 606
55 acc 45 FALSE 606
56 acc 39 FALSE 606
57 acc 23 FALSE 606
58 acc 33 FALSE 604
59 acc 37 FALSE 600
60 acc 41 FALSE 599
61 acc 20 FALSE 599
62 jmp 318 FALSE 598
63 nop 226 FALSE 598
64 nop 223 FALSE 598
65 acc 38 FALSE 595
66 acc 33 FALSE 595
67 acc -11 FALSE 593
68 acc 37 FALSE 592
69 jmp 551 FALSE 591
70 jmp 341 FALSE 591
71 jmp 71 FALSE 591
72 jmp -58 FALSE 591
73 acc 9 FALSE 589
74 acc -14 FALSE 589
75 acc -18 FALSE 589
76 acc 40 FALSE 586
77 acc 26 FALSE 586
78 acc -15 FALSE 585
79 jmp 544 FALSE 583
80 nop 441 FALSE 583
81 jmp 411 FALSE 583
82 acc 43 FALSE 583
83 acc -16 FALSE 583
84 acc 32 FALSE 581
85 jmp 363 FALSE 575
86 jmp 186 FALSE 575
87 acc -18 FALSE 575
88 jmp 1 FALSE 573
89 acc 50 FALSE 572
90 jmp 1 FALSE 571
91 acc 20 FALSE 570
92 jmp -75 FALSE 569
93 acc 31 FALSE 566
94 acc -9 FALSE 566
95 jmp 448 FALSE 560
96 jmp 436 FALSE 560
97 nop 260 FALSE 560
98 acc 19 FALSE 560
99 acc 16 FALSE 560
100 nop -31 FALSE 560
101 acc 32 FALSE 558
102 acc 50 FALSE 555
103 jmp 548 FALSE 554
104 nop 516 FALSE 554
105 jmp 244 FALSE 554
106 nop -66 FALSE 554
107 acc 6 FALSE 551
108 nop 233 FALSE 548
109 jmp 184 FALSE 548
110 jmp 57 FALSE 548
111 acc 10 FALSE 544
112 acc -7 FALSE 544
113 acc 26 FALSE 543
114 acc 29 FALSE 541
115 acc 2 FALSE 541
116 acc -2 FALSE 540
117 jmp 445 FALSE 539
118 nop 62 FALSE 539
119 jmp 28 FALSE 539
120 acc 18 FALSE 539
121 jmp -43 FALSE 539
122 acc 48 FALSE 538
123 acc 8 FALSE 537
124 jmp 501 FALSE 533
125 nop 260 FALSE 533
126 jmp 164 FALSE 533
127 nop 327 FALSE 531
128 jmp 324 FALSE 531
129 jmp 119 FALSE 531
130 jmp 115 FALSE 531
131 jmp -86 FALSE 531
132 acc -7 FALSE 526
133 nop 407 FALSE 524
134 jmp -44 FALSE 524
135 jmp -88 FALSE 524
136 jmp 466 FALSE 520
137 nop 179 FALSE 520
138 jmp 93 FALSE 520
139 acc 25 FALSE 520
140 acc 0 FALSE 518
141 acc -7 FALSE 518
142 acc 32 FALSE 515
143 acc 11 FALSE 514
144 acc 0 FALSE 513
145 nop 319 FALSE 512
146 jmp 271 FALSE 512
147 jmp 73 FALSE 512
148 jmp -7 FALSE 512
149 acc 33 FALSE 506
150 acc 40 FALSE 505
151 acc -4 FALSE 505
152 jmp 457 FALSE 503
153 nop 111 FALSE 503
154 jmp 23 FALSE 503
155 jmp -11 FALSE 503
156 acc 9 FALSE 501
157 jmp 163 FALSE 498
158 acc 42 FALSE 498
159 acc -19 FALSE 497
160 acc 3 FALSE 496
161 acc -6 FALSE 495
162 acc 34 FALSE 492
163 nop 13 FALSE 492
164 acc 7 FALSE 492
165 jmp -94 FALSE 492
166 acc 40 FALSE 491
167 acc -9 FALSE 490
168 acc 48 FALSE 488
169 acc 44 FALSE 487
170 acc -2 FALSE 487
171 acc 30 FALSE 484
172 jmp 481 FALSE 483
173 jmp 449 FALSE 483
174 jmp 273 FALSE 483
175 jmp 251 FALSE 483
176 acc 8 FALSE 483
177 acc -3 FALSE 483
178 acc 34 FALSE 482
179 acc 11 FALSE 481
180 nop -71 FALSE 481
181 acc 10 FALSE 479
182 jmp 1 FALSE 479
183 acc -9 FALSE 479
184 acc 43 FALSE 477
185 jmp 346 FALSE 472
186 acc 0 FALSE 472
187 jmp 305 FALSE 467
188 jmp -4 FALSE 467
189 acc -8 FALSE 466
190 jmp 404 FALSE 462
191 jmp 180 FALSE 462
192 jmp 149 FALSE 462
193 jmp 134 FALSE 462
194 nop -32 FALSE 462
195 acc 20 FALSE 461
196 acc 40 FALSE 460
197 acc 18 FALSE 460
198 acc -4 FALSE 460
199 acc -7 FALSE 460
200 acc 35 FALSE 458
201 nop 342 FALSE 456
202 jmp 73 FALSE 456
203 acc 38 FALSE 456
204 acc -5 FALSE 454
205 jmp 297 FALSE 453
206 acc 49 FALSE 453
207 acc 45 FALSE 451
208 jmp 344 FALSE 447
209 jmp 304 FALSE 447
210 acc 11 FALSE 447
211 acc -16 FALSE 446
212 acc -2 FALSE 445
213 acc 40 FALSE 442
214 acc 14 FALSE 442
215 jmp 355 FALSE 440
216 jmp 299 FALSE 440
217 jmp 93 FALSE 440
218 jmp 83 FALSE 440
219 acc 46 FALSE 440
220 acc 2 FALSE 440
221 jmp -201 FALSE 440
222 acc 16 FALSE 438
223 acc -7 FALSE 438
224 nop 416 FALSE 433
225 jmp 363 FALSE 433
226 acc 23 FALSE 433
227 nop -162 FALSE 433
228 acc 27 FALSE 432
229 acc -17 FALSE 432
230 acc -6 FALSE 429
231 jmp 81 FALSE 425
232 nop -83 FALSE 425
233 acc 23 FALSE 421
234 acc -1 FALSE 420
235 acc -12 FALSE 418
236 jmp -113 FALSE 417
237 acc -10 FALSE 416
238 acc 5 FALSE 414
239 acc -19 FALSE 414
240 acc 47 FALSE 410
241 acc 45 FALSE 410
242 acc 1 FALSE 409
243 jmp 232 FALSE 408
244 nop 208 FALSE 408
245 jmp 55 FALSE 408
246 acc -9 FALSE 408
247 acc -18 FALSE 407
248 acc 3 FALSE 404
249 acc -7 FALSE 404
250 acc 30 FALSE 401
251 nop 209 FALSE 400
252 acc 45 FALSE 400
253 jmp -169 FALSE 400
254 acc 2 FALSE 398
255 acc 20 FALSE 393
256 jmp 244 FALSE 392
257 jmp -76 FALSE 392
258 jmp -202 FALSE 392
259 acc 46 FALSE 391
260 acc 4 FALSE 390
261 jmp 194 FALSE 389
262 nop -187 FALSE 389
263 acc 28 FALSE 388
264 acc 2 FALSE 386
265 acc -1 FALSE 386
266 acc -7 FALSE 386
267 nop 283 FALSE 381
268 jmp 274 FALSE 381
269 jmp 119 FALSE 381
270 acc 15 FALSE 381
271 acc -7 FALSE 378
272 jmp 282 FALSE 377
273 jmp 250 FALSE 377
274 jmp 244 FALSE 377
275 nop 241 FALSE 377
276 jmp 53 FALSE 377
277 jmp 47 FALSE 377
278 acc 0 FALSE 377
279 acc 37 FALSE 376
280 acc 17 FALSE 376
281 acc -14 FALSE 376
282 acc 15 FALSE 373
283 acc 6 FALSE 373
284 acc 1 FALSE 371
285 acc -8 FALSE 371
286 jmp 210 FALSE 370
287 jmp 116 FALSE 370
288 acc 27 FALSE 370
289 nop 16 FALSE 370
290 acc 21 FALSE 367
291 acc 10 FALSE 366
292 acc -3 FALSE 365
293 nop 270 FALSE 362
294 jmp 266 FALSE 362
295 jmp 123 FALSE 362
296 nop 67 FALSE 362
297 acc 47 FALSE 359
298 jmp 140 FALSE 354
299 jmp -26 FALSE 354
300 jmp -70 FALSE 354
301 acc 43 FALSE 352
302 jmp -183 FALSE 348
303 acc 20 FALSE 347
304 acc 42 FALSE 346
305 acc 47 FALSE 344
306 nop 20 FALSE 343
307 nop -19 FALSE 343
308 nop -278 FALSE 343
309 acc 38 FALSE 339
310 acc -9 FALSE 339
311 acc 8 FALSE 337
312 nop 272 FALSE 336
313 jmp 259 FALSE 336
314 acc -3 FALSE 334
315 acc 43 FALSE 333
316 acc -19 FALSE 333
317 jmp -106 FALSE 331
318 nop -167 FALSE 331
319 acc 14 FALSE 330
320 acc -11 FALSE 329
321 jmp 110 FALSE 327
322 acc 28 FALSE 327
323 jmp -61 FALSE 327
324 jmp -279 FALSE 327
325 acc 47 FALSE 326
326 jmp -129 FALSE 323
327 jmp -231 FALSE 323
328 acc 37 FALSE 320
329 acc 13 FALSE 320
330 acc -14 FALSE 319
331 acc -15 FALSE 319
332 jmp -177 FALSE 319
333 jmp -219 FALSE 319
334 nop -305 FALSE 319
335 jmp -313 FALSE 319
336 acc -15 FALSE 316
337 jmp 1 FALSE 315
338 acc 36 FALSE 314
339 nop -22 FALSE 314
340 jmp -167 FALSE 314
341 acc 43 FALSE 311
342 acc -1 FALSE 307
343 acc -12 FALSE 307
344 jmp 168 FALSE 306
345 jmp 114 FALSE 306
346 acc 45 FALSE 306
347 jmp 31 FALSE 306
348 acc 35 FALSE 305
349 acc 9 FALSE 305
350 acc 49 FALSE 304
351 acc -2 FALSE 304
352 jmp 240 FALSE 303
353 acc 41 FALSE 299
354 acc 23 FALSE 299
355 acc 45 FALSE 297
356 acc -15 FALSE 296
357 jmp -37 FALSE 295
358 acc 35 FALSE 294
359 acc 46 FALSE 292
360 acc 10 FALSE 291
361 jmp 1 FALSE 290
362 nop 247 FALSE 289
363 jmp 170 FALSE 289
364 nop 128 FALSE 289
365 nop 118 FALSE 289
366 jmp -5 FALSE 289
367 jmp -234 FALSE 289
368 acc 25 FALSE 288
369 acc 17 FALSE 286
370 jmp 226 FALSE 283
371 jmp 57 FALSE 283
372 jmp 40 FALSE 283
373 jmp -5 FALSE 283
374 acc -10 FALSE 283
375 jmp -354 FALSE 283
376 acc 33 FALSE 281
377 acc 14 FALSE 281
378 acc -6 FALSE 279
379 acc 40 FALSE 278
380 jmp 20 FALSE 276
381 jmp 12 FALSE 276
382 nop -106 FALSE 276
383 jmp -231 FALSE 276
384 nop -289 FALSE 276
385 acc 8 FALSE 273
386 jmp 243 FALSE 272
387 jmp 38 FALSE 272
388 jmp -181 FALSE 272
389 nop -185 FALSE 272
390 acc 35 FALSE 271
391 acc -13 FALSE 271
392 jmp 97 FALSE 265
393 nop -64 FALSE 261
394 jmp -142 FALSE 261
395 acc 19 FALSE 259
396 jmp 250 FALSE 257
397 acc 28 FALSE 257
398 nop -29 FALSE 257
399 jmp -34 FALSE 257
400 nop -253 FALSE 257
401 acc 25 FALSE 255
402 jmp -15 FALSE 251
403 acc 1 FALSE 250
404 acc 23 FALSE 247
405 acc 0 FALSE 245
406 jmp 195 FALSE 244
407 acc 28 FALSE 244
408 jmp -202 FALSE 244
409 nop -348 FALSE 244
410 nop 122 FALSE 240
411 jmp 51 FALSE 240
412 acc 34 FALSE 240
413 jmp -121 FALSE 240
414 jmp -159 FALSE 240
415 acc 42 FALSE 239
416 acc -12 FALSE 239
417 acc -7 FALSE 237
418 acc 10 FALSE 235
419 acc -7 FALSE 235
420 acc -3 FALSE 234
421 jmp 134 FALSE 233
422 acc 46 FALSE 233
423 acc 5 FALSE 233
424 nop -2 FALSE 233
425 jmp -294 FALSE 233
426 acc 50 FALSE 232
427 acc 0 FALSE 231
428 acc 35 FALSE 229
429 acc 21 FALSE 229
430 jmp 159 FALSE 227
431 nop 149 FALSE 227
432 jmp 138 FALSE 227
433 nop -94 FALSE 227
434 acc 16 FALSE 225
435 acc 4 FALSE 224
436 jmp -34 FALSE 223
437 nop -373 FALSE 223
438 acc 1 FALSE 222
439 acc 35 FALSE 221
440 acc 6 FALSE 221
441 nop -131 FALSE 218
442 nop -197 FALSE 218
443 jmp -397 FALSE 218
444 nop -432 FALSE 218
445 acc 4 FALSE 217
446 acc -17 FALSE 216
447 acc 42 FALSE 215
448 jmp 131 FALSE 213
449 nop -64 FALSE 213
450 nop -216 FALSE 213
451 acc 47 FALSE 212
452 jmp -110 FALSE 208
453 jmp -211 FALSE 208
454 nop -223 FALSE 208
455 acc 13 FALSE 203
456 acc 47 FALSE 202
457 acc 6 FALSE 202
458 jmp 1 FALSE 200
459 jmp 20 FALSE 199
460 nop -20 FALSE 199
461 nop -215 FALSE 199
462 jmp -333 FALSE 199
463 acc -14 FALSE 197
464 acc 49 FALSE 194
465 acc 45 FALSE 194
466 jmp -214 FALSE 193
467 jmp -270 FALSE 193
468 acc 29 FALSE 192
469 acc 34 FALSE 191
470 acc 33 FALSE 191
471 acc -12 FALSE 191
472 acc 35 FALSE 189
473 acc 1 FALSE 189
474 acc -13 FALSE 188
475 nop 41 FALSE 185
476 nop -212 FALSE 185
477 jmp -275 FALSE 185
478 nop -440 FALSE 185
479 jmp -441 FALSE 185
480 acc 14 FALSE 184
481 acc 3 FALSE 184
482 jmp 1 FALSE 184
483 acc 17 FALSE 181
484 jmp 1 FALSE 178
485 nop -27 FALSE 178
486 jmp -173 FALSE 178
487 nop -438 FALSE 178
488 acc 45 FALSE 177
489 jmp -98 FALSE 173
490 nop -177 FALSE 173
491 acc -6 FALSE 172
492 acc 34 FALSE 171
493 jmp 143 FALSE 167
494 acc 28 FALSE 167
495 jmp 14 FALSE 167
496 acc -18 FALSE 167
497 jmp -299 FALSE 167
498 acc -8 FALSE 166
499 acc -15 FALSE 165
500 acc 29 FALSE 163
501 acc -7 FALSE 162
502 jmp -159 FALSE 161
503 jmp -450 FALSE 161
504 jmp 1 FALSE 160
505 acc -15 FALSE 160
506 acc 43 FALSE 159
507 acc 23 FALSE 158
508 jmp 133 FALSE 154
509 acc 34 FALSE 154
510 acc 7 FALSE 154
511 jmp -44 FALSE 154
512 jmp -410 FALSE 154
513 acc 50 FALSE 151
514 acc 21 FALSE 150
515 jmp 102 FALSE 149
516 jmp 76 FALSE 149
517 jmp -193 FALSE 149
518 acc 42 FALSE 147
519 acc 17 FALSE 145
520 acc 33 FALSE 142
521 acc -9 FALSE 142
522 jmp -24 FALSE 142
523 nop -258 FALSE 142
524 jmp -345 FALSE 142
525 jmp -360 FALSE 142
526 nop -373 FALSE 142
527 acc 27 FALSE 135
528 acc 11 FALSE 134
529 acc -6 FALSE 134
530 acc -18 FALSE 134
531 jmp -188 FALSE 134
532 jmp -444 FALSE 134
533 acc 30 FALSE 132
534 acc 21 FALSE 132
535 acc 47 FALSE 130
536 acc 42 FALSE 129
537 acc 25 FALSE 129
538 acc -18 FALSE 128
539 jmp -132 FALSE 128
540 jmp -210 FALSE 128
541 jmp -369 FALSE 128
542 jmp -446 FALSE 128
543 acc 30 FALSE 127
544 jmp -253 FALSE 125
545 nop -399 FALSE 125
546 jmp -505 FALSE 125
547 nop -511 FALSE 125
548 acc -1 FALSE 124
549 acc 1 FALSE 123
550 jmp 1 FALSE 122
551 acc 29 FALSE 119
552 jmp 28 FALSE 116
553 nop -517 FALSE 116
554 acc 31 FALSE 112
555 acc 41 FALSE 108
556 nop -145 FALSE 108
557 jmp -179 FALSE 108
558 jmp -505 FALSE 108
559 acc 41 FALSE 106
560 acc -7 FALSE 106
561 acc 33 FALSE 104
562 acc 47 FALSE 102
563 acc 18 FALSE 102
564 nop 59 FALSE 100
565 jmp 20 FALSE 100
566 jmp -443 FALSE 100
567 acc 6 FALSE 99
568 acc 37 FALSE 98
569 acc 7 FALSE 98
570 acc -8 FALSE 98
571 nop 85 FALSE 96
572 jmp 84 FALSE 96
573 jmp -209 FALSE 96
574 jmp -509 FALSE 96
575 acc 26 FALSE 95
576 acc 9 FALSE 95
577 acc -18 FALSE 92
578 nop 87 FALSE 90
579 jmp -182 FALSE 90
580 jmp -342 FALSE 90
581 acc 41 FALSE 86
582 jmp -161 FALSE 86
583 jmp -461 FALSE 86
584 acc -16 FALSE 84
585 nop -86 FALSE 81
586 nop -403 FALSE 81
587 nop -500 FALSE 81
588 acc 30 FALSE 80
589 jmp 1 FALSE 80
590 acc 45 FALSE 78
591 jmp 1 FALSE 77
592 acc 50 FALSE 76
593 nop -218 FALSE 74
594 nop -514 FALSE 74
595 jmp -548 FALSE 74
596 acc 21 FALSE 73
597 acc 13 FALSE 73
598 jmp 1 FALSE 73
599 acc 22 FALSE 70
600 acc -6 FALSE 69
601 jmp -532 FALSE 69
602 acc 46 FALSE 65
603 acc 4 FALSE 60
604 acc -15 FALSE 59
605 jmp -164 FALSE 59
606 acc 20 FALSE 57
607 acc 43 FALSE 56
608 acc -6 FALSE 56
609 jmp -95 FALSE 55
610 nop -326 FALSE 55
611 jmp -400 FALSE 55
612 jmp -406 FALSE 55
613 jmp -498 FALSE 55
614 acc -12 FALSE 54
615 acc 33 FALSE 53
616 nop -3 FALSE 50
617 jmp -65 FALSE 50
618 jmp -345 FALSE 50
619 jmp -509 FALSE 50
620 acc 34 FALSE 48
621 jmp -453 FALSE 47
622 nop -457 FALSE 47
623 nop -481 FALSE 47
624 acc -1 FALSE 42
625 acc 11 FALSE 41
626 jmp -90 FALSE 41
627 acc -19 FALSE 40
628 acc 19 FALSE 37
629 acc 0 FALSE 35
630 jmp -339 FALSE 35
631 jmp -501 FALSE 35
632 jmp -287 FALSE 30
633 jmp -296 FALSE 30
634 nop -526 FALSE 30
635 acc 28 FALSE 29
636 acc 19 FALSE 28
637 acc 5 FALSE 28
638 acc 0 FALSE 27
639 acc 21 FALSE 26
640 acc -10 FALSE 26
641 acc -6 FALSE 22
642 jmp -276 FALSE 22
643 jmp -280 FALSE 22
644 acc -3 FALSE 19
645 acc -18 FALSE 13
646 jmp -38 FALSE 13
647 jmp -469 FALSE 13
648 jmp -577 FALSE 13
649 acc -5 FALSE 10
650 acc -3 FALSE 7
651 nop -18 FALSE 7
652 jmp -443 FALSE 7
653 acc -9 FALSE -1
654 acc -10 FALSE -6
# there's a jmp at 638-170=468
# how do we get there?
# there are two jumps that equal 467
# so now we've got divergence and we could keep going but nah
# it seems like we could go backwards but that takes much design
# val <- run_game(game)
Go through the possible changes and find something that works for us
for (z in seq_along (game$ inst)) {
if (game$ inst[[z]] == "jmp" ) {
game$ inst[[z]] = "nop"
revert = "jmp"
} else if (game$ inst[[z]] == "nop" ) {
game$ inst[[z]] = "jmp"
revert = "nop"
} else {
next
}
val = run_game2 (game)
if (is.null (val)) {
game$ inst[[z]] = revert
} else {
print (z)
break
}
}