public void Given_example_instructions_should_count_5_offsets()
        {
            var          runner   = new OffsetRunner();
            const string INPUT    = @"
0
3
0
1
-3";
            const int    EXPECTED = 5;

            var instruction = runner.ParseInstructions(INPUT);

            var result = runner.CountSteps(instruction);

            Assert.Equal(EXPECTED, result);
        }
        public void Run_advent_offsets()
        {
            var          runner = new OffsetRunner();
            const string INPUT  = @"1
1
0
-1
-3
0
-5
-1
2
0
-1
-3
-9
-5
-1
-9
2
2
-13
-7
-13
-18
0
0
-21
-10
-2
-12
-18
-4
-27
-24
-16
-10
-24
-12
-5
-31
-17
-10
-22
-16
-3
-10
-5
-37
-16
-4
-8
-1
-44
-12
-38
-42
-27
-9
-52
-13
-12
-36
-26
2
-48
-2
-3
-17
1
-51
-47
-68
-42
0
-53
-47
-34
-17
-15
-10
-76
-53
-58
-24
-62
-78
-11
-5
-71
-52
-41
-84
-57
-63
-88
-11
-61
-55
-85
-61
-87
-57
-46
-94
-19
-31
-84
-60
-7
-31
-25
-90
-108
-79
-25
-41
-96
-88
-3
-67
-91
-28
-19
-103
-88
-70
-18
-64
-59
-49
-88
-110
-83
-68
-17
-61
-33
-88
-29
-56
-78
-20
-108
-45
-46
-51
-59
-1
-92
-40
-101
-131
-141
-59
-35
-26
-14
-22
-52
-108
-47
-70
0
-125
-88
-15
-80
-71
-23
-125
-54
-100
-155
-105
-114
-151
-97
-9
-69
-88
-31
-165
-45
-146
-101
-155
-75
-60
-98
-90
-125
-19
-97
-166
-12
-55
-99
-86
-42
-111
-189
-134
-36
-3
-103
-10
-32
-135
-66
1
-37
-170
-194
-60
-99
-211
-68
-73
-107
-102
0
-11
-110
-202
-136
-222
-82
-137
-11
-121
-47
-49
-115
-7
-208
-102
-86
-176
-84
-107
-133
-17
-71
-103
-112
-184
-104
-22
-129
-223
-63
-11
-199
-142
-245
-157
-125
-160
-111
-209
-229
-88
-233
-137
-149
-204
-223
-93
-198
-123
-167
-250
-166
-234
-114
-1
-265
-144
-86
-65
-32
-131
2
-156
-217
-199
-27
-134
-112
-12
-39
-17
-223
-117
-44
-102
-201
-21
-156
-8
-5
-266
-133
-63
-279
-296
-92
-154
-100
-10
-123
-293
-66
-142
-128
-28
-175
-166
-70
-203
-38
-61
-50
-10
-25
-89
-98
-233
-39
-295
-105
-29
-36
-98
-67
-92
-229
-173
-216
-78
-331
-319
-296
-112
-151
-212
-65
-124
-33
-310
-11
-22
-32
-227
-23
-2
-208
-165
-217
-22
-207
-203
-277
-49
-342
-23
-148
-191
-42
-348
-90
-161
-190
-93
-337
-329
-276
-285
-327
-134
-366
-132
-310
-93
-244
-306
-197
-77
-353
-80
-337
-369
-353
-2
-330
0
-212
-167
-318
-61
-272
-369
-51
-294
-363
-92
-260
-146
0
-351
-154
-194
-30
-74
-155
-226
-21
-316
-20
-326
-105
-311
-232
-223
-250
-35
-308
-14
-93
-17
-422
-354
-377
-283
-413
-19
-245
-152
-179
-173
-97
0
-406
-176
-97
-402
-76
-236
-444
-233
-38
-33
-362
-190
-15
-267
-163
-240
-272
-449
-163
-415
-416
-1
-12
-103
-150
-238
-464
-461
-351
-64
-198
-318
-246
-157
-449
-401
-39
-382
-269
-389
-209
-241
-177
-156
-157
-141
-190
-470
-422
-447
-111
-463
-400
-334
-323
-188
-249
-380
-141
-120
-391
-311
-26
-460
-438
-18
-127
-133
-201
-429
-391
-99
0
-335
-373
-367
-463
-224
-390
-299
-233
-411
-244
-5
-73
-377
-413
-172
-497
-120
-87
-262
-198
-112
-162
-446
-469
-111
-364
-284
-252
-212
-358
-507
-48
-74
-96
-518
-34
-290
-234
-472
-294
-5
-334
-355
-462
-334
-494
-549
-121
-482
-548
-14
-340
-410
-441
-559
-282
-384
-88
-453
-323
-465
-483
-2
-481
-333
-483
-176
-250
-167
-312
-550
-185
-365
-108
-17
-326
-488
-440
-122
-505
-465
-54
-241
-20
-397
-48
-44
-187
-548
-174
-461
-238
-581
-409
-582
-140
-191
-60
-147
-538
-5
-116
-62
-165
-334
0
-578
-264
-396
-589
-354
-276
-283
-238
-616
-202
-59
-529
-346
-196
-247
-247
-622
-523
-65
-525
-563
-210
-211
-569
-340
-391
-211
-324
-515
-234
-241
-576
-478
-392
-307
-202
-648
-485
-460
-22
-42
-383
-440
-378
-340
-303
-167
-608
-92
-167
-217
-355
-126
-669
-576
-7
-568
-526
-577
-163
-566
-561
-217
-413
-275
-225
-472
-626
-667
-21
-179
-299
-204
-73
-172
-8
-373
-344
-551
-487
0
-154
-658
-145
-428
-589
-116
-266
-174
-109
-148
-471
-120
-623
-455
-257
-486
-677
-51
-63
-531
-326
-180
-321
-460
-652
-542
-225
-574
-362
-195
-422
-200
-479
-302
-573
-652
-543
-77
-202
-96
-265
-717
-715
-587
-710
-135
-263
-61
-197
-426
-10
-675
-465
-58
-525
-432
-348
-378
-474
-22
-497
-438
-612
-67
-235
-255
-236
-566
-386
-604
-366
-16
-105
-713
-697
-138
-743
-405
-744
-168
-754
-627
-201
-38
-121
-252
-240
-756
-350
-678
-507
-780
-647
-136
-644
-404
-722
-680
-326
-421
-105
-792
-407
-672
-179
-250
-59
-761
-775
-103
-779
-682
-278
-689
-735
-738
-498
-28
-484
-36
-482
-310
-397
-437
-229
-744
-699
-470
-371
-115
-766
-147
-182
-646
-540
-40
-202
-322
-289
-828
-784
-121
-366
-220
-36
-646
-567
-301
-168
-26
-190
-138
-390
-130
-448
-242
-274
-65
-784
-319
-179
-332
-327
-698
-837
-691
-113
-251
-143
-755
-791
-725
-849
-194
-570
-449
-186
-354
-524
-54
-846
-516
-325
-515
-453
-703
-530
-1
-869
-401
-503
-641
-822
-694
-667
-537
-285
-711
-73
-746
-764
-737
-475
-476
-456
-845
-556
-737
-524
-869
-646
-898
-692
-97
-248
-32
-884
-486
-113
-348
-517
-417
-39
-726
-580
0
-858
-370
-672
-726
-599
-475
-87
-336
-384
-619
2
-235
-629
-774
-905
-727
-232
-389
-626
-240
-780
-392
-900
-911
-592
-625
-424
-274
-231
-327
-714
-729
-537
-526
-8
-468
-809
-566
-786
-798
-245
-958
-652
-610
-703
-207
-727
-930
-883
-959
-204
-976
-568
-121
-503
-910
-134
-619
-558
-340
-24
-16
-780
-797
-594
-441
-886
-420
-639
-979
-711
-745
-916
-152
-700
-116
-523
0
-756
-194
-609
-151
-14
-133
-768
-630
-917
-46
-60
-485
-201
-440
-386
-101
-283
-980
-144
-337
-599
-202
-776
-470
-49
-278
-270
-21
-409
-84
-562
-191
-53
-390
-300
-706
-284
-778
-714
-632
-702
-375
-903
-1019
-475
-353
-950
-410";

            const int EXPECTED = 354121;

            var instruction = runner.ParseInstructions(INPUT);

            var result = runner.CountSteps(instruction);

            Assert.Equal(EXPECTED, result);
        }