Skip to content

Instantly share code, notes, and snippets.

@devNoiseConsulting
Created January 3, 2018 03:19
Show Gist options
  • Select an option

  • Save devNoiseConsulting/81300d21a87c19073dfcc0db4948cdcf to your computer and use it in GitHub Desktop.

Select an option

Save devNoiseConsulting/81300d21a87c19073dfcc0db4948cdcf to your computer and use it in GitHub Desktop.
A Maze of Twisty Trampolines, All Alike - Advent of Code - 20171205
let twistyTrampolines = function(jumps) {
let steps = 0;
let inside = true;
let index = 0;
while (inside) {
if ( isNaN(index)) {
inside = false;
}
let oldJump = jumps[index];
let oldIndex = index;
index += jumps[index]++;
if (index >= jumps.length) {
inside = false;
}
steps++;
if (steps > Number.MAX_SAFE_INTEGER) {
inside = false;
}
}
return steps;
};
let twistyTrampolines_2 = function(jumps) {
let steps = 0;
let inside = true;
let index = 0;
while (inside) {
if (isNaN(index)) {
inside = false;
}
let oldJump = jumps[index];
let oldIndex = index;
index += jumps[index];
jumps[oldIndex] = oldJump > 2 ? jumps[oldIndex] - 1 : jumps[oldIndex] + 1;
if (index >= jumps.length) {
inside = false;
}
steps++;
if (steps > Number.MAX_SAFE_INTEGER) {
inside = false;
}
}
return steps;
};
let test = `0
2
2
-2
-2
-2
1
2
2
-1
-4
-8
-7
-11
0
-13
-8
-7
-13
-11
-15
-4
-10
-10
-22
-22
-1
-9
1
2
-23
-4
-31
-3
2
-34
-28
-28
-16
-1
-34
-13
-25
1
-14
-40
-11
-32
-25
-17
-43
-23
-3
-52
-31
-8
-15
-48
-13
-56
-37
-24
-25
-47
-38
0
-35
-65
-63
-40
-18
-55
-11
-8
-18
-53
-39
-20
0
-6
-75
-22
-36
-71
-61
-74
-11
-14
-35
-54
-41
-59
-51
-45
-62
-53
-8
-26
-22
-16
-66
-87
-11
-59
-9
-44
-73
-76
-3
-78
-4
-45
-10
-38
-20
-102
-114
-44
-21
-111
-118
0
-80
-65
-28
-51
-95
-42
-31
-41
-98
-39
-89
-116
-115
-30
-68
-52
-21
-17
-92
-136
-24
-16
-13
-110
-10
-44
1
-89
-110
-99
-4
-106
-35
-7
-152
-147
-38
-17
-44
-148
-144
-48
-78
-154
-141
-23
-145
-55
-87
-97
-20
-66
-172
-82
-23
-23
-145
-37
-103
-138
-111
-105
-148
-67
-163
-59
-127
-130
-24
-102
-153
-149
-58
-33
-37
-28
-75
-103
-10
1
-36
-130
-59
-70
-76
-181
-196
-165
-131
-71
-142
-183
-65
-55
-50
-112
-153
-59
-35
-198
-175
-197
-89
-197
-99
-52
-187
-55
-158
-117
-164
-205
-91
-68
-126
-158
-172
-217
-111
-106
-42
-135
-82
-213
-22
-1
-238
-204
-77
-123
-174
-29
-30
-90
-98
-5
-30
-52
-150
-155
-23
-14
-102
-47
-215
-112
-51
-2
0
-62
-138
-255
-227
-17
-114
-34
-28
-139
-226
-258
-18
0
-24
-161
-170
-12
-25
-12
-122
-238
-249
-81
-267
-236
-145
-242
-124
-78
-122
-141
-135
-9
-195
-98
-269
-221
-154
-106
-247
-88
-221
-9
-97
-207
-61
-102
-130
-54
-112
-61
-65
-82
-35
-150
-114
-180
-314
-317
-305
-28
-305
-294
-90
-133
-11
-1
-108
-1
-268
-257
-117
-245
-94
-313
-293
-174
-312
-61
-205
-3
-199
-95
-323
-34
-176
-241
-89
-346
-208
-270
-77
-253
-86
-167
-318
-70
-258
-76
-203
-91
-62
-329
-156
-235
-239
-191
-119
-285
-128
-155
-82
-36
-351
-373
-8
-36
-132
-183
-311
-274
-111
-175
-193
-72
-340
-64
-26
-378
-202
-194
-188
-169
-71
-197
-344
-193
-6
-63
-368
-313
-376
-42
-241
-50
-64
-354
-338
-177
-154
-420
-418
-349
-383
-340
-177
-227
-332
-145
-402
-66
-290
-274
-287
-68
-91
-49
-312
-106
-264
-173
-362
-252
-138
-218
-211
-39
-271
-261
-306
-372
-391
-408
-108
-308
-418
-395
-413
-208
-13
-41
-249
-297
-21
-274
-440
-205
-272
-371
-155
-357
-34
-97
-121
-221
-173
-364
-168
-83
-317
-414
-427
-90
-216
-91
-306
-467
-366
-486
-461
-34
-327
-474
-164
-160
-410
-366
-467
-206
-435
-167
-326
-423
-241
-45
-18
-59
-498
-483
-380
-431
-256
-254
-415
-18
-461
-223
-152
-179
-8
-169
-41
-452
-302
-172
-249
-5
-40
-97
-39
-492
-40
-460
-276
-442
-413
-220
-376
-389
-446
-133
-228
-364
-215
-133
-304
-234
-275
-463
-267
-147
-162
-227
-532
-216
-479
-61
-409
-376
-389
-283
-332
-97
-66
-486
-223
-522
-359
-340
-211
-401
-98
-249
-511
-238
-72
-473
-132
-450
-321
-455
-451
-140
-495
-212
-235
-213
-22
-111
-236
-390
-104
-230
-569
-45
-43
-264
-561
-552
-32
-403
-17
-288
-255
-436
-363
-495
-19
-358
-250
-59
-172
-77
-558
-211
-555
-65
-419
-282
-472
-72
-462
-276
-508
-489
-184
-486
-500
-143
-627
-506
-84
-368
-355
-467
-515
-415
-314
-386
-114
-319
-237
-113
-611
-17
-532
-181
-568
-132
-178
-276
-258
-384
-295
-208
-471
-622
-173
-531
-192
-231
-338
-427
-416
-591
-112
-511
-538
-357
-189
-186
-100
-458
-331
-85
-294
-375
-206
-377
-92
-504
-558
-26
-73
-103
-455
-397
-164
-683
-615
-321
-310
-76
-576
-291
-523
-163
-452
-236
-488
-588
-24
-52
-673
-176
-282
-642
-668
-517
-575
-173
-517
-565
-385
-202
-587
-519
-694
-493
-181
-241
-630
-597
-377
-560
-646
-100
-544
-135
-695
-460
-621
-97
-376
-511
-413
-613
-238
-160
-141
-329
-682
-664
-439
-730
-646
-266
-477
-233
-722
-687
-605
-483
-648
-685
-735
-739
-630
-644
-498
-652
-493
-508
-108
-32
-620
-185
-422
-187
-112
-263
-568
-599
-751
-768
-640
-440
-451
-760
-156
-425
-662
-764
-503
-521
-140
-425
-72
-242
-403
-778
-689
-693
-541
-674
-93
-545
-601
-730
-305
-743
-563
-315
-637
-126
-260
-463
-309
-538
-59
-368
-382
-355
-414
-97
-93
-475
-445
-319
-783
-411
-338
-480
-755
-149
-821
-813
-229
-116
-488
-741
-669
-442
-627
-403
-129
-829
-664
-357
-686
-835
-172
-80
-367
-789
-573
-199
-795
-221
-177
-543
-117
-651
-382
-731
-842
-125
-397
-328
-69
-388
-381
1
-737
-199
-181
-264
-577
-63
-616
-333
-413
-616
-189
-315
-237
-608
-497
-348
-285
-863
-97
-745
-716
-666
-165
-522
-631
-438
-639
-443
-122
-521
-48
-501
-895
-205
-57
-576
-644
-442
-143
-215
-661
-749
-247
-298
-387
-601
-525
-383
-9
-64
-416
-423
-522
-631
-890
-867
-649
-525
-228
-544
-54
-878
-277
-924
-838
-885
-477
-256
-330
-301
-815
-722
-646
-677
-70
-917
-126
-832
-479
-849
-591
-66
-260
-524
-603
-86
-397
-63
-299
-417
-375
-909
-489
-872
-930
-638
-280
-440
-788
-818
-398
-765
-229
-346
-864
-155
-57
-686
-850
-84
-783
-191
-923
-740
-454
-118
-807
-662
-859
-99
-139
-272
-640
-166
-935
-805
-351
-413
-467
-535
-377
-97
-204
-262
-4
-704
-516
-459
-702
-718
-241
-534
-318
-955
-519
-675
-766
-671
-843
-861
-214
-4
-828
-638
-833
-953
-521
-17
-87
-393
-951
-17
-529
-49
-299
-673
-119
-185
-601
-187
-399
-646
-812
-627
-121
-535
-155
-601
-196
-365
-366
-409
-596
-803
-508
-988
-529
-925`.split('\n').map(v => parseInt(v));
let result = twistyTrampolines_2(test);
console.log(result);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment