Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@dobrokot
Created August 4, 2014 13:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dobrokot/a79f70543ff7e8d45c21 to your computer and use it in GitHub Desktop.
Save dobrokot/a79f70543ff7e8d45c21 to your computer and use it in GitHub Desktop.
icfp 2014 lambda-man asm and code
LD 0 0 ; 00
LD 0 1 ; 01
LDF 5 ; 02
LDC 0 ; 03
TSEL 1824 1824 ; 04
LDC 1 ; 05
LDC 2 ; 06
LDC 3 ; 07
LDC 0 ; 08
CONS ; 09
CONS ; 10
CONS ; 11
LDF 15 ; 12
LDC 0 ; 13
TSEL 1822 1822 ; 14
LDF 18 ; 15
LDC 0 ; 16
TSEL 23 23 ; 17
LD 0 0 ; f ; 18
LD 0 1 ; n ; 19
LD 0 0 ; f ; 20
TAP 2 ; 21
RTN ; 22
LDF 26 ; 23
LDC 0 ; 24
TSEL 1820 1820 ; 25
LDF 29 ; 26
LDC 0 ; 27
TSEL 35 35 ; 28
LD 0 0 ; f ; 29
LD 0 1 ; a ; 30
LD 0 2 ; b ; 31
LD 0 0 ; f ; 32
TAP 3 ; 33
RTN ; 34
LDF 38 ; 35
LDC 0 ; 36
TSEL 1818 1818 ; 37
LDF 41 ; 38
LDC 0 ; 39
TSEL 48 48 ; 40
LD 0 0 ; f ; 41
LD 0 1 ; a ; 42
LD 0 2 ; b ; 43
LD 0 3 ; c ; 44
LD 0 0 ; f ; 45
TAP 4 ; 46
RTN ; 47
LDF 51 ; 48
LDC 0 ; 49
TSEL 1816 1816 ; 50
LDF 54 ; 51
LDC 0 ; 52
TSEL 72 72 ; 53
LD 0 2 ; ls ; 54
ATOM ; 55
TSEL 57 60 ; 56
LD 0 3 ; acc ; 57
LDC 0 ; 58
TSEL 71 71 ; 59
LD 0 0 ; me ; 60
LD 0 1 ; f ; 61
LD 0 2 ; ls ; 62
CDR ; 63
LD 0 3 ; acc ; 64
LD 0 2 ; ls ; 65
CAR ; 66
LD 0 1 ; f ; 67
AP 2 ; 68
LD 0 0 ; me ; 69
TAP 4 ; 70
RTN ; 71
LDF 75 ; 72
LDC 0 ; 73
TSEL 1814 1814 ; 74
LDF 78 ; 75
LDC 0 ; 76
TSEL 85 85 ; 77
LD 1 0 ; fold_rec ; 78
LD 0 0 ; f ; 79
LD 0 1 ; li ; 80
LD 0 2 ; acc ; 81
LD 2 0 ; rec3 ; 82
TAP 4 ; 83
RTN ; 84
LDF 88 ; 85
LDC 0 ; 86
TSEL 1812 1812 ; 87
LDF 91 ; 88
LDC 0 ; 89
TSEL 109 109 ; 90
LDC 0 ; 91
LD 0 3 ; state ; 92
LD 0 1 ; cond ; 93
AP 1 ; 94
CEQ ; 95
TSEL 97 100 ; 96
LD 0 3 ; state ; 97
LDC 0 ; 98
TSEL 108 108 ; 99
LD 0 0 ; me ; 100
LD 0 1 ; cond ; 101
LD 0 2 ; next ; 102
LD 0 3 ; state ; 103
LD 0 2 ; next ; 104
AP 1 ; 105
LD 0 0 ; me ; 106
TAP 4 ; 107
RTN ; 108
LDF 112 ; 109
LDC 0 ; 110
TSEL 1810 1810 ; 111
LDF 115 ; 112
LDC 0 ; 113
TSEL 122 122 ; 114
LD 1 0 ; while-rec ; 115
LD 0 0 ; cond ; 116
LD 0 1 ; next ; 117
LD 0 2 ; state ; 118
LD 4 0 ; rec3 ; 119
TAP 4 ; 120
RTN ; 121
LDF 125 ; 122
LDC 0 ; 123
TSEL 1808 1808 ; 124
LDF 128 ; 125
LDC 0 ; 126
TSEL 153 153 ; 127
LDF 131 ; 128
LDC 0 ; 129
TSEL 148 148 ; 130
LD 0 0 ; res ; 131
ATOM ; 132
TSEL 134 146 ; 133
LD 0 1 ; x ; 134
LD 1 0 ; f ; 135
AP 1 ; 136
TSEL 138 143 ; 137
LD 0 1 ; x ; 138
LDC 0 ; 139
CONS ; 140
LDC 0 ; 141
TSEL 144 144 ; 142
LDC 0 ; 143
LDC 0 ; 144
TSEL 147 147 ; 145
LD 0 0 ; res ; 146
RTN ; 147
LD 0 1 ; ls ; 148
LDC 0 ; 149
LD 3 0 ; fold ; 150
TAP 3 ; 151
RTN ; 152
LDF 156 ; 153
LDC 0 ; 154
TSEL 1806 1806 ; 155
LDF 159 ; 156
LDC 0 ; 157
TSEL 189 189 ; 158
LD 0 2 ; i_n ; 159
CAR ; 160
LDF 164 ; 161
LDC 0 ; 162
TSEL 187 187 ; 163
LD 1 2 ; i_n ; 164
CDR ; 165
LD 0 0 ; i ; 166
CEQ ; 167
TSEL 169 172 ; 168
LD 1 3 ; acc ; 169
LDC 0 ; 170
TSEL 186 186 ; 171
LD 1 0 ; me ; 172
LD 1 1 ; f ; 173
LDC 1 ; 174
LD 0 0 ; i ; 175
ADD ; 176
LD 1 2 ; i_n ; 177
CDR ; 178
CONS ; 179
LD 1 3 ; acc ; 180
LD 0 0 ; i ; 181
LD 1 1 ; f ; 182
AP 2 ; 183
LD 1 0 ; me ; 184
TAP 4 ; 185
RTN ; 186
TAP 1 ; 187
RTN ; 188
LDF 192 ; 189
LDC 0 ; 190
TSEL 1804 1804 ; 191
LDF 195 ; 192
LDC 0 ; 193
TSEL 213 213 ; 194
LD 0 2 ; ls ; 195
ATOM ; 196
TSEL 198 201 ; 197
LDC 0 ; 198
LDC 0 ; 199
TSEL 212 212 ; 200
LD 0 2 ; ls ; 201
CAR ; 202
LD 0 1 ; f ; 203
AP 1 ; 204
LD 0 0 ; me ; 205
LD 0 1 ; f ; 206
LD 0 2 ; ls ; 207
CDR ; 208
LD 0 0 ; me ; 209
AP 3 ; 210
CONS ; 211
RTN ; 212
LDF 216 ; 213
LDC 0 ; 214
TSEL 1802 1802 ; 215
LDF 219 ; 216
LDC 0 ; 217
TSEL 225 225 ; 218
LD 1 0 ; map_rec ; 219
LD 0 0 ; f ; 220
LD 0 1 ; ls ; 221
LD 9 0 ; rec2 ; 222
TAP 3 ; 223
RTN ; 224
LDF 228 ; 225
LDC 0 ; 226
TSEL 1800 1800 ; 227
LDF 231 ; 228
LDC 0 ; 229
TSEL 239 239 ; 230
LDF 234 ; 231
LDC 0 ; 232
TSEL 238 238 ; 233
LD 1 0 ; x ; 234
LD 0 0 ; y ; 235
ADD ; 236
RTN ; 237
RTN ; 238
LDF 242 ; 239
LDC 0 ; 240
TSEL 1798 1798 ; 241
LDF 245 ; 242
LDC 0 ; 243
TSEL 254 254 ; 244
LD 4 0 ; fold_range_rec ; 245
LD 0 0 ; f ; 246
LDC 0 ; 247
LD 0 1 ; n ; 248
CONS ; 249
LD 0 2 ; acc ; 250
LD 10 0 ; rec3 ; 251
TAP 4 ; 252
RTN ; 253
LDF 257 ; 254
LDC 0 ; 255
TSEL 1796 1796 ; 256
LDF 260 ; 257
LDC 0 ; 258
TSEL 276 276 ; 259
LDF 263 ; 260
LDC 0 ; 261
TSEL 271 271 ; 262
LD 1 0 ; n ; 263
LD 0 1 ; x ; 264
SUB ; 265
LDC 1 ; 266
SUB ; 267
LD 0 0 ; acc ; 268
CONS ; 269
RTN ; 270
LD 0 0 ; n ; 271
LDC 0 ; 272
LD 1 0 ; fold_range ; 273
TAP 3 ; 274
RTN ; 275
LDF 279 ; 276
LDC 0 ; 277
TSEL 1794 1794 ; 278
LDF 282 ; 279
LDC 0 ; 280
TSEL 294 294 ; 281
LDF 285 ; 282
LDC 0 ; 283
TSEL 289 289 ; 284
LD 0 0 ; a ; 285
LD 0 1 ; b ; 286
ADD ; 287
RTN ; 288
LD 0 0 ; li ; 289
LDC 0 ; 290
LD 10 0 ; fold ; 291
TAP 3 ; 292
RTN ; 293
LDF 297 ; 294
LDC 0 ; 295
TSEL 1792 1792 ; 296
LDF 300 ; 297
LDC 0 ; 298
TSEL 307 307 ; 299
LD 0 0 ; t ; 300
CAR ; 301
LD 0 0 ; t ; 302
CDR ; 303
LD 0 1 ; f ; 304
TAP 2 ; 305
RTN ; 306
LDF 310 ; 307
LDC 0 ; 308
TSEL 1790 1790 ; 309
LDF 313 ; 310
LDC 0 ; 311
TSEL 324 324 ; 312
LD 0 0 ; t ; 313
CAR ; 314
LD 0 0 ; t ; 315
CDR ; 316
CAR ; 317
LD 0 0 ; t ; 318
CDR ; 319
CDR ; 320
LD 0 1 ; f ; 321
TAP 3 ; 322
RTN ; 323
LDF 327 ; 324
LDC 0 ; 325
TSEL 1788 1788 ; 326
LDF 330 ; 327
LDC 0 ; 328
TSEL 346 346 ; 329
LD 0 0 ; t ; 330
CAR ; 331
LD 0 0 ; t ; 332
CDR ; 333
CAR ; 334
LD 0 0 ; t ; 335
CDR ; 336
CDR ; 337
CAR ; 338
LD 0 0 ; t ; 339
CDR ; 340
CDR ; 341
CDR ; 342
LD 0 1 ; f ; 343
TAP 4 ; 344
RTN ; 345
LDF 349 ; 346
LDC 0 ; 347
TSEL 1786 1786 ; 348
LDF 352 ; 349
LDC 0 ; 350
TSEL 374 374 ; 351
LD 0 0 ; t ; 352
CAR ; 353
LD 0 0 ; t ; 354
CDR ; 355
CAR ; 356
LD 0 0 ; t ; 357
CDR ; 358
CDR ; 359
CAR ; 360
LD 0 0 ; t ; 361
CDR ; 362
CDR ; 363
CDR ; 364
CAR ; 365
LD 0 0 ; t ; 366
CDR ; 367
CDR ; 368
CDR ; 369
CDR ; 370
LD 0 1 ; f ; 371
TAP 5 ; 372
RTN ; 373
LDF 377 ; 374
LDC 0 ; 375
TSEL 1784 1784 ; 376
LDF 380 ; 377
LDC 0 ; 378
TSEL 387 387 ; 379
LD 0 1 ; result ; 380
LD 0 0 ; out ; 381
DBUG ; 382
LDC 0 ; 383
CONS ; 384
CAR ; 385
RTN ; 386
LDF 390 ; 387
LDC 0 ; 388
TSEL 1782 1782 ; 389
LDF 393 ; 390
LDC 0 ; 391
TSEL 398 398 ; 392
LD 0 0 ; x ; 393
LD 0 0 ; x ; 394
LD 1 0 ; print ; 395
TAP 2 ; 396
RTN ; 397
LDF 401 ; 398
LDC 0 ; 399
TSEL 1780 1780 ; 400
LDF 404 ; 401
LDC 0 ; 402
TSEL 421 421 ; 403
LDC 0 ; 404
LD 0 2 ; i ; 405
CEQ ; 406
TSEL 408 412 ; 407
LD 0 1 ; ls ; 408
CAR ; 409
LDC 0 ; 410
TSEL 420 420 ; 411
LD 0 0 ; me ; 412
LD 0 1 ; ls ; 413
CDR ; 414
LD 0 2 ; i ; 415
LDC 1 ; 416
SUB ; 417
LD 0 0 ; me ; 418
TAP 3 ; 419
RTN ; 420
LDF 424 ; 421
LDC 0 ; 422
TSEL 1778 1778 ; 423
LDF 427 ; 424
LDC 0 ; 425
TSEL 433 433 ; 426
LD 1 0 ; at_rec ; 427
LD 0 0 ; ls ; 428
LD 0 1 ; i ; 429
LD 21 0 ; rec2 ; 430
TAP 3 ; 431
RTN ; 432
LDF 436 ; 433
LDC 0 ; 434
TSEL 1776 1776 ; 435
LDF 439 ; 436
LDC 0 ; 437
TSEL 451 451 ; 438
LDF 442 ; 439
LDC 0 ; 440
TSEL 446 446 ; 441
LD 0 0 ; a ; 442
LDC 1 ; 443
ADD ; 444
RTN ; 445
LD 0 0 ; ls ; 446
LDC 0 ; 447
LD 19 0 ; fold ; 448
TAP 3 ; 449
RTN ; 450
LDF 454 ; 451
LDC 0 ; 452
TSEL 1774 1774 ; 453
LDC 0 ; 454
LDF 458 ; 455
LDC 0 ; 456
TSEL 1772 1772 ; 457
LDF 461 ; 458
LDC 0 ; 459
TSEL 478 478 ; 460
LDF 464 ; 461
LDC 0 ; 462
TSEL 471 471 ; 463
LD 0 0 ; a ; 464
LD 1 1 ; key ; 465
LD 0 1 ; key_val ; 466
CAR ; 467
CEQ ; 468
ADD ; 469
RTN ; 470
LD 0 0 ; M ; 471
LDC 0 ; 472
LD 21 0 ; fold ; 473
AP 3 ; 474
LDC 0 ; 475
CGT ; 476
RTN ; 477
LDF 481 ; 478
LDC 0 ; 479
TSEL 1770 1770 ; 480
LDF 484 ; 481
LDC 0 ; 482
TSEL 507 507 ; 483
LDF 487 ; 484
LDC 0 ; 485
TSEL 503 503 ; 486
LD 0 0 ; key_val ; 487
CAR ; 488
LD 1 1 ; key ; 489
CEQ ; 490
TSEL 492 501 ; 491
LD 1 1 ; key ; 492
LD 1 2 ; val ; 493
LD 0 0 ; key_val ; 494
CDR ; 495
LD 1 3 ; update-func ; 496
AP 2 ; 497
CONS ; 498
LDC 0 ; 499
TSEL 502 502 ; 500
LD 0 0 ; key_val ; 501
RTN ; 502
LD 0 0 ; M ; 503
LD 16 0 ; map ; 504
TAP 2 ; 505
RTN ; 506
LDF 510 ; 507
LDC 0 ; 508
TSEL 1768 1768 ; 509
LDF 513 ; 510
LDC 0 ; 511
TSEL 532 532 ; 512
LD 0 0 ; M ; 513
LD 0 1 ; key ; 514
LD 2 0 ; in ; 515
AP 2 ; 516
TSEL 518 526 ; 517
LD 0 0 ; M ; 518
LD 0 1 ; key ; 519
LD 0 2 ; val ; 520
LD 0 3 ; update-func ; 521
LD 1 0 ; replace ; 522
AP 4 ; 523
LDC 0 ; 524
TSEL 531 531 ; 525
LD 0 1 ; key ; 526
LD 0 2 ; val ; 527
CONS ; 528
LD 0 0 ; M ; 529
CONS ; 530
RTN ; 531
LDF 535 ; 532
LDC 0 ; 533
TSEL 1766 1766 ; 534
LDF 538 ; 535
LDC 0 ; 536
TSEL 555 555 ; 537
LDC 0 ; 538
LD 0 2 ; i ; 539
CEQ ; 540
TSEL 542 546 ; 541
LD 0 1 ; ls ; 542
CAR ; 543
LDC 0 ; 544
TSEL 554 554 ; 545
LD 0 0 ; me ; 546
LD 0 1 ; ls ; 547
CDR ; 548
LD 0 2 ; i ; 549
LDC 1 ; 550
SUB ; 551
LD 0 0 ; me ; 552
TAP 3 ; 553
RTN ; 554
LDF 558 ; 555
LDC 0 ; 556
TSEL 1764 1764 ; 557
LDF 561 ; 558
LDC 0 ; 559
TSEL 567 567 ; 560
LD 1 0 ; at_rec ; 561
LD 0 0 ; ls ; 562
LD 0 1 ; i ; 563
LD 28 0 ; rec2 ; 564
TAP 3 ; 565
RTN ; 566
LDF 570 ; 567
LDC 0 ; 568
TSEL 1762 1762 ; 569
LDF 573 ; 570
LDC 0 ; 571
TSEL 582 582 ; 572
LD 0 1 ; y ; 573
LD 0 0 ; x ; 574
CGTE ; 575
TSEL 577 580 ; 576
LD 0 0 ; x ; 577
LDC 0 ; 578
TSEL 581 581 ; 579
LD 0 1 ; y ; 580
RTN ; 581
LDF 585 ; 582
LDC 0 ; 583
TSEL 1760 1760 ; 584
LDF 588 ; 585
LDC 0 ; 586
TSEL 607 607 ; 587
LDF 591 ; 588
LDC 0 ; 589
TSEL 602 602 ; 590
LD 0 1 ; elem ; 591
LD 1 0 ; f ; 592
AP 1 ; 593
TSEL 595 600 ; 594
LD 0 1 ; elem ; 595
LD 0 0 ; result ; 596
CONS ; 597
LDC 0 ; 598
TSEL 601 601 ; 599
LD 0 0 ; result ; 600
RTN ; 601
LD 0 1 ; ls ; 602
LDC 0 ; 603
LD 27 0 ; fold ; 604
TAP 3 ; 605
RTN ; 606
LDF 610 ; 607
LDC 0 ; 608
TSEL 1758 1758 ; 609
LDC 0 ; 610
LDF 614 ; 611
LDC 0 ; 612
TSEL 1756 1756 ; 613
LDC 1 ; 614
LDF 618 ; 615
LDC 0 ; 616
TSEL 1754 1754 ; 617
LDC 2 ; 618
LDF 622 ; 619
LDC 0 ; 620
TSEL 1752 1752 ; 621
LDC 3 ; 622
LDF 626 ; 623
LDC 0 ; 624
TSEL 1750 1750 ; 625
LDC 4 ; 626
LDF 630 ; 627
LDC 0 ; 628
TSEL 1748 1748 ; 629
LDF 633 ; 630
LDC 0 ; 631
TSEL 639 639 ; 632
LD 0 0 ; a ; 633
LD 0 1 ; b ; 634
ADD ; 635
LDC 0 ; 636
CGT ; 637
RTN ; 638
LDF 642 ; 639
LDC 0 ; 640
TSEL 1746 1746 ; 641
LDF 645 ; 642
LDC 0 ; 643
TSEL 649 649 ; 644
LD 0 0 ; x ; 645
LDC 0 ; 646
CEQ ; 647
RTN ; 648
LDF 652 ; 649
LDC 0 ; 650
TSEL 1744 1744 ; 651
LD 40 0 ; wr ; 652
CAR ; 653
LDF 657 ; 654
LDC 0 ; 655
TSEL 1742 1742 ; 656
LDF 660 ; 657
LDC 0 ; 658
TSEL 668 668 ; 659
LD 1 0 ; gmap-init ; 660
LD 0 1 ; y ; 661
LD 11 0 ; at ; 662
AP 2 ; 663
LD 0 0 ; x ; 664
LD 11 0 ; at ; 665
TAP 2 ; 666
RTN ; 667
LDF 671 ; 668
LDC 0 ; 669
TSEL 1740 1740 ; 670
LDF 674 ; 671
LDC 0 ; 672
TSEL 689 689 ; 673
LD 0 0 ; x ; 674
LD 0 1 ; y ; 675
LD 1 0 ; get-init ; 676
AP 2 ; 677
LDF 681 ; 678
LDC 0 ; 679
TSEL 687 687 ; 680
LD 0 0 ; v ; 681
LD 10 0 ; WALL ; 682
CEQ ; 683
LD 4 0 ; not ; 684
TAP 1 ; 685
RTN ; 686
TAP 1 ; 687
RTN ; 688
LDF 692 ; 689
LDC 0 ; 690
TSEL 1738 1738 ; 691
LD 2 0 ; gmap-init ; 692
LD 18 0 ; len ; 693
AP 1 ; 694
LDF 698 ; 695
LDC 0 ; 696
TSEL 1736 1736 ; 697
LD 3 0 ; gmap-init ; 698
CAR ; 699
LD 19 0 ; len ; 700
AP 1 ; 701
LDF 705 ; 702
LDC 0 ; 703
TSEL 1734 1734 ; 704
LDF 708 ; 705
LDC 0 ; 706
TSEL 721 721 ; 707
LD 0 0 ; c ; 708
LD 0 0 ; c ; 709
LDC 1000 ; 710
DIV ; 711
LDC 1000 ; 712
MUL ; 713
SUB ; 714
LD 0 0 ; c ; 715
LDC 1000 ; 716
DIV ; 717
LD 0 1 ; f ; 718
TAP 2 ; 719
RTN ; 720
LDF 724 ; 721
LDC 0 ; 722
TSEL 1732 1732 ; 723
LDF 727 ; 724
LDC 0 ; 725
TSEL 732 732 ; 726
LD 0 0 ; c ; 727
LD 4 0 ; free ; 728
LD 1 0 ; coord-dec ; 729
TAP 2 ; 730
RTN ; 731
LDF 735 ; 732
LDC 0 ; 733
TSEL 1730 1730 ; 734
LDF 738 ; 735
LDC 0 ; 736
TSEL 744 744 ; 737
LD 0 0 ; x ; 738
LDC 1000 ; 739
LD 0 1 ; y ; 740
MUL ; 741
ADD ; 742
RTN ; 743
LDF 747 ; 744
LDC 0 ; 745
TSEL 1728 1728 ; 746
LDC 0 ; 747
LDC 1 ; 748
LDC 2 ; 749
LDC 3 ; 750
LDC 0 ; 751
CONS ; 752
CONS ; 753
CONS ; 754
CONS ; 755
LDF 759 ; 756
LDC 0 ; 757
TSEL 1726 1726 ; 758
LDF 762 ; 759
LDC 0 ; 760
TSEL 815 815 ; 761
LD 0 2 ; move ; 762
LDC 0 ; 763
CEQ ; 764
TSEL 766 774 ; 765
LD 0 0 ; x ; 766
LD 0 1 ; y ; 767
LDC 1 ; 768
SUB ; 769
LD 2 0 ; coord-enc ; 770
AP 2 ; 771
LDC 0 ; 772
TSEL 814 814 ; 773
LD 0 2 ; move ; 774
LDC 2 ; 775
CEQ ; 776
TSEL 778 786 ; 777
LD 0 0 ; x ; 778
LD 0 1 ; y ; 779
LDC 1 ; 780
ADD ; 781
LD 2 0 ; coord-enc ; 782
AP 2 ; 783
LDC 0 ; 784
TSEL 814 814 ; 785
LD 0 2 ; move ; 786
LDC 1 ; 787
CEQ ; 788
TSEL 790 798 ; 789
LD 0 0 ; x ; 790
LDC 1 ; 791
ADD ; 792
LD 0 1 ; y ; 793
LD 2 0 ; coord-enc ; 794
AP 2 ; 795
LDC 0 ; 796
TSEL 814 814 ; 797
LD 0 2 ; move ; 798
LDC 3 ; 799
CEQ ; 800
TSEL 802 810 ; 801
LD 0 0 ; x ; 802
LDC 1 ; 803
SUB ; 804
LD 0 1 ; y ; 805
LD 2 0 ; coord-enc ; 806
AP 2 ; 807
LDC 0 ; 808
TSEL 814 814 ; 809
LDC 827182 ; 810
DBUG ; 811
LDC 0 ; 812
TAP 0 ; 813
RTN ; 814
LDF 818 ; 815
LDC 0 ; 816
TSEL 1724 1724 ; 817
LDF 821 ; 818
LDC 0 ; 819
TSEL 859 859 ; 820
LD 0 0 ; x ; 821
LD 0 1 ; y ; 822
LD 8 0 ; free ; 823
AP 2 ; 824
TSEL 826 857 ; 825
LDF 829 ; 826
LDC 0 ; 827
TSEL 851 851 ; 828
LD 1 0 ; x ; 829
LD 1 1 ; y ; 830
LD 0 1 ; m ; 831
LD 2 0 ; add-move ; 832
AP 3 ; 833
LDF 837 ; 834
LDC 0 ; 835
TSEL 849 849 ; 836
LD 0 0 ; c2 ; 837
LD 10 0 ; free ; 838
LD 7 0 ; coord-dec ; 839
AP 2 ; 840
TSEL 842 847 ; 841
LD 0 0 ; c2 ; 842
LD 1 0 ; free-list ; 843
CONS ; 844
LDC 0 ; 845
TSEL 848 848 ; 846
LD 1 0 ; free-list ; 847
RTN ; 848
TAP 1 ; 849
RTN ; 850
LD 2 0 ; all-moves ; 851
LDC 0 ; 852
LD 45 0 ; fold ; 853
AP 3 ; 854
LDC 0 ; 855
TSEL 858 858 ; 856
LDC 0 ; 857
RTN ; 858
LDF 862 ; 859
LDC 0 ; 860
TSEL 1722 1722 ; 861
LDF 865 ; 862
LDC 0 ; 863
TSEL 879 879 ; 864
LDF 868 ; 865
LDC 0 ; 866
TSEL 873 873 ; 867
LD 0 0 ; x ; 868
LD 1 0 ; y ; 869
LD 2 0 ; get-neibours-init ; 870
TAP 2 ; 871
RTN ; 872
LD 7 0 ; width ; 873
LD 37 0 ; make_range ; 874
AP 1 ; 875
LD 40 0 ; map ; 876
TAP 2 ; 877
RTN ; 878
LD 7 0 ; height ; 879
LD 36 0 ; make_range ; 880
AP 1 ; 881
LD 39 0 ; map ; 882
AP 2 ; 883
LDF 887 ; 884
LDC 0 ; 885
TSEL 1720 1720 ; 886
LD 0 0 ; free-neib-map ; 887
LD 30 0 ; print1 ; 888
AP 1 ; 889
LDF 893 ; 890
LDC 0 ; 891
TSEL 1718 1718 ; 892
LDF 896 ; 893
LDC 0 ; 894
TSEL 904 904 ; 895
LD 2 0 ; free-neib-map ; 896
LD 0 1 ; y ; 897
LD 23 0 ; at ; 898
AP 2 ; 899
LD 0 0 ; x ; 900
LD 23 0 ; at ; 901
TAP 2 ; 902
RTN ; 903
LDF 907 ; 904
LDC 0 ; 905
TSEL 1716 1716 ; 906
LDF 910 ; 907
LDC 0 ; 908
TSEL 1563 1563 ; 909
LDF 913 ; 910
LDC 0 ; 911
TSEL 921 921 ; 912
LD 1 3 ; gmap ; 913
LD 0 1 ; y ; 914
LD 25 0 ; at ; 915
AP 2 ; 916
LD 0 0 ; x ; 917
LD 25 0 ; at ; 918
TAP 2 ; 919
RTN ; 920
LDF 924 ; 921
LDC 0 ; 922
TSEL 1561 1561 ; 923
LDF 927 ; 924
LDC 0 ; 925
TSEL 932 932 ; 926
LDC 0 ; 927
LD 0 0 ; ghost ; 928
CAR ; 929
CEQ ; 930
RTN ; 931
LD 1 4 ; ghs_state ; 932
LD 23 0 ; filter-rev ; 933
AP 2 ; 934
LDF 938 ; 935
LDC 0 ; 936
TSEL 949 949 ; 937
LDF 941 ; 938
LDC 0 ; 939
TSEL 945 945 ; 940
LD 0 0 ; ghost ; 941
CDR ; 942
CAR ; 943
RTN ; 944
LD 0 0 ; alive_ghost ; 945
LD 45 0 ; map ; 946
TAP 2 ; 947
RTN ; 948
AP 1 ; 949
LDF 953 ; 950
LDC 0 ; 951
TSEL 1559 1559 ; 952
LDF 956 ; 953
LDC 0 ; 954
TSEL 982 982 ; 955
LDF 959 ; 956
LDC 0 ; 957
TSEL 974 974 ; 958
LD 1 0 ; vis ; 959
LD 0 1 ; c2 ; 960
LD 32 0 ; in ; 961
AP 2 ; 962
TSEL 964 967 ; 963
LD 0 0 ; front ; 964
LDC 0 ; 965
TSEL 973 973 ; 966
LD 0 0 ; front ; 967
LD 0 1 ; c2 ; 968
LD 1 3 ; src ; 969
LD 27 0 ; min ; 970
LD 30 0 ; add-replace ; 971
TAP 4 ; 972
RTN ; 973
LD 0 2 ; c ; 974
LD 4 0 ; get-neibours-list ; 975
LD 12 0 ; coord-dec ; 976
AP 2 ; 977
LD 0 1 ; front ; 978
LD 52 0 ; fold ; 979
TAP 3 ; 980
RTN ; 981
LDF 985 ; 982
LDC 0 ; 983
TSEL 1557 1557 ; 984
LDF 988 ; 985
LDC 0 ; 986
TSEL 994 994 ; 987
LD 0 0 ; x ; 988
LD 0 0 ; x ; 989
MUL ; 990
LDC 1 ; 991
CEQ ; 992
RTN ; 993
LDF 997 ; 994
LDC 0 ; 995
TSEL 1555 1555 ; 996
LDF 1000 ; 997
LDC 0 ; 998
TSEL 1037 1037 ; 999
LD 0 1 ; ghc ; 1000
LDF 1004 ; 1001
LDC 0 ; 1002
TSEL 1034 1034 ; 1003
LD 0 0 ; x ; 1004
LD 6 0 ; lx ; 1005
SUB ; 1006
LD 2 0 ; dist1 ; 1007
AP 1 ; 1008
LD 0 1 ; y ; 1009
LD 6 1 ; ly ; 1010
CEQ ; 1011
MUL ; 1012
LD 0 0 ; x ; 1013
LD 6 0 ; lx ; 1014
CEQ ; 1015
LD 0 1 ; y ; 1016
LD 6 1 ; ly ; 1017
SUB ; 1018
LD 2 0 ; dist1 ; 1019
AP 1 ; 1020
MUL ; 1021
LD 22 0 ; or ; 1022
AP 2 ; 1023
TSEL 1025 1032 ; 1024
LD 0 0 ; x ; 1025
LD 0 1 ; y ; 1026
CONS ; 1027
LD 1 0 ; r ; 1028
CONS ; 1029
LDC 0 ; 1030
TSEL 1033 1033 ; 1031
LD 1 0 ; r ; 1032
RTN ; 1033
LD 43 0 ; untup2 ; 1034
TAP 2 ; 1035
RTN ; 1036
LD 2 0 ; ghs-coords ; 1037
LDC 0 ; 1038
LD 53 0 ; fold ; 1039
AP 3 ; 1040
LDF 1044 ; 1041
LDC 0 ; 1042
TSEL 1553 1553 ; 1043
LDF 1047 ; 1044
LDC 0 ; 1045
TSEL 1054 1054 ; 1046
LD 0 0 ; c ; 1047
CAR ; 1048
LD 0 0 ; c ; 1049
CDR ; 1050
LD 13 0 ; coord-enc ; 1051
TAP 2 ; 1052
RTN ; 1053
LD 3 0 ; ghs-coords ; 1054
LD 48 0 ; map ; 1055
AP 2 ; 1056
LDF 1060 ; 1057
LDC 0 ; 1058
TSEL 1551 1551 ; 1059
LDF 1063 ; 1060
LDC 0 ; 1061
TSEL 1075 1075 ; 1062
LDC 0 ; 1063
LD 0 0 ; front ; 1064
LD 0 1 ; c ; 1065
LDC -1 ; 1066
LD 30 0 ; min ; 1067
LD 33 0 ; add-replace ; 1068
AP 4 ; 1069
LD 0 1 ; c ; 1070
LDC -1 ; 1071
LD 4 0 ; update-neibours ; 1072
TAP 4 ; 1073
RTN ; 1074
LD 0 0 ; ghs-enc-coords ; 1075
LDC 0 ; 1076
LD 55 0 ; fold ; 1077
AP 3 ; 1078
LDF 1082 ; 1079
LDC 0 ; 1080
TSEL 1549 1549 ; 1081
LDF 1085 ; 1082
LDC 0 ; 1083
TSEL 1110 1110 ; 1084
LD 8 0 ; lx ; 1085
LD 8 1 ; ly ; 1086
LD 0 1 ; m ; 1087
LD 13 0 ; add-move ; 1088
AP 3 ; 1089
LDF 1093 ; 1090
LDC 0 ; 1091
TSEL 1108 1108 ; 1092
LD 0 0 ; new-pos ; 1093
LD 21 0 ; free ; 1094
LD 18 0 ; coord-dec ; 1095
AP 2 ; 1096
TSEL 1098 1106 ; 1097
LD 1 0 ; cur ; 1098
LD 0 0 ; new-pos ; 1099
LD 1 1 ; m ; 1100
LD 32 0 ; min ; 1101
LD 35 0 ; add-replace ; 1102
AP 4 ; 1103
LDC 0 ; 1104
TSEL 1107 1107 ; 1105
LD 1 0 ; cur ; 1106
RTN ; 1107
TAP 1 ; 1108
RTN ; 1109
LD 13 0 ; all-moves ; 1110
LD 0 0 ; ghs-front-tmp ; 1111
LD 56 0 ; fold ; 1112
AP 3 ; 1113
LDF 1117 ; 1114
LDC 0 ; 1115
TSEL 1547 1547 ; 1116
LDF 1120 ; 1117
LDC 0 ; 1118
TSEL 1125 1125 ; 1119
LD 0 0 ; c ; 1120
LD 8 0 ; get ; 1121
LD 18 0 ; coord-dec ; 1122
TAP 2 ; 1123
RTN ; 1124
LDF 1128 ; 1125
LDC 0 ; 1126
TSEL 1545 1545 ; 1127
LDF 1131 ; 1128
LDC 0 ; 1129
TSEL 1149 1149 ; 1130
LD 0 0 ; val ; 1131
LD 29 0 ; PILL ; 1132
CEQ ; 1133
LD 0 0 ; val ; 1134
LD 28 0 ; POWER ; 1135
CEQ ; 1136
LD 26 0 ; or ; 1137
AP 2 ; 1138
LD 0 0 ; val ; 1139
LD 27 0 ; FRUIT ; 1140
CEQ ; 1141
LD 10 5 ; fruit_count ; 1142
LDC 300 ; 1143
CGT ; 1144
MUL ; 1145
LD 26 0 ; or ; 1146
TAP 2 ; 1147
RTN ; 1148
LDF 1152 ; 1149
LDC 0 ; 1150
TSEL 1543 1543 ; 1151
LDF 1155 ; 1152
LDC 0 ; 1153
TSEL 1182 1182 ; 1154
LDF 1158 ; 1155
LDC 0 ; 1156
TSEL 1161 1161 ; 1157
LD 0 0 ; x ; 1158
CDR ; 1159
RTN ; 1160
LDF 1164 ; 1161
LDC 0 ; 1162
TSEL 1176 1176 ; 1163
LD 0 0 ; x ; 1164
CDR ; 1165
LDC 0 ; 1166
CGTE ; 1167
LD 0 0 ; x ; 1168
CAR ; 1169
LD 3 0 ; get-enc ; 1170
AP 1 ; 1171
LD 2 0 ; edible ; 1172
AP 1 ; 1173
MUL ; 1174
RTN ; 1175
LD 0 0 ; front ; 1176
LD 57 0 ; find-first ; 1177
AP 2 ; 1178
LD 54 0 ; map ; 1179
TAP 2 ; 1180
RTN ; 1181
LDF 1185 ; 1182
LDC 0 ; 1183
TSEL 1541 1541 ; 1184
LDF 1188 ; 1185
LDC 0 ; 1186
TSEL 1198 1198 ; 1187
LDC 0 ; 1188
LD 0 0 ; front ; 1189
ATOM ; 1190
CEQ ; 1191
LD 0 0 ; front ; 1192
LD 1 0 ; finish-and-src ; 1193
AP 1 ; 1194
ATOM ; 1195
MUL ; 1196
RTN ; 1197
LDF 1201 ; 1198
LDC 0 ; 1199
TSEL 1539 1539 ; 1200
LDF 1204 ; 1201
LDC 0 ; 1202
TSEL 1235 1235 ; 1203
LD 0 1 ; front ; 1204
LDF 1208 ; 1205
LDC 0 ; 1206
TSEL 1229 1229 ; 1207
LD 0 1 ; e ; 1208
CAR ; 1209
LDF 1213 ; 1210
LDC 0 ; 1211
TSEL 1227 1227 ; 1212
LD 1 1 ; e ; 1213
CDR ; 1214
LDF 1218 ; 1215
LDC 0 ; 1216
TSEL 1225 1225 ; 1217
LD 3 0 ; vis ; 1218
LD 2 0 ; front2 ; 1219
LD 1 0 ; c ; 1220
LD 0 0 ; src ; 1221
LD 13 0 ; update-neibours ; 1222
TAP 4 ; 1223
RTN ; 1224
TAP 1 ; 1225
RTN ; 1226
TAP 1 ; 1227
RTN ; 1228
LD 0 1 ; front ; 1229
LDC 0 ; 1230
LD 62 0 ; fold ; 1231
AP 3 ; 1232
CONS ; 1233
RTN ; 1234
LDF 1238 ; 1235
LDC 0 ; 1236
TSEL 1537 1537 ; 1237
LDF 1241 ; 1238
LDC 0 ; 1239
TSEL 1301 1301 ; 1240
LDF 1244 ; 1241
LDC 0 ; 1242
TSEL 1249 1249 ; 1243
LD 0 0 ; vis-front ; 1244
CDR ; 1245
LD 3 0 ; front-continue ; 1246
TAP 1 ; 1247
RTN ; 1248
LDF 1252 ; 1249
LDC 0 ; 1250
TSEL 1259 1259 ; 1251
LD 0 0 ; vis-front ; 1252
CAR ; 1253
LD 0 0 ; vis-front ; 1254
CDR ; 1255
LD 2 0 ; front-step ; 1256
TAP 2 ; 1257
RTN ; 1258
LDC 0 ; 1259
LD 0 0 ; front ; 1260
CONS ; 1261
LD 61 0 ; while ; 1262
AP 3 ; 1263
LDF 1267 ; 1264
LDC 0 ; 1265
TSEL 1299 1299 ; 1266
LD 0 0 ; final-vis-front ; 1267
CDR ; 1268
LDF 1272 ; 1269
LDC 0 ; 1270
TSEL 1297 1297 ; 1271
LD 0 0 ; final-front ; 1272
ATOM ; 1273
TSEL 1275 1278 ; 1274
LDC -7 ; 1275
LDC 0 ; 1276
TSEL 1296 1296 ; 1277
LD 0 0 ; final-front ; 1278
LD 5 0 ; finish-and-src ; 1279
AP 1 ; 1280
LDF 1284 ; 1281
LDC 0 ; 1282
TSEL 1295 1295 ; 1283
LD 0 0 ; src-list ; 1284
ATOM ; 1285
TSEL 1287 1292 ; 1286
LDC 1893120 ; 1287
DBUG ; 1288
LDC 0 ; 1289
LDC 0 ; 1290
TSEL 1294 1294 ; 1291
LD 0 0 ; src-list ; 1292
CAR ; 1293
RTN ; 1294
TAP 1 ; 1295
RTN ; 1296
TAP 1 ; 1297
RTN ; 1298
TAP 1 ; 1299
RTN ; 1300
LDF 1304 ; 1301
LDC 0 ; 1302
TSEL 1535 1535 ; 1303
LD 32 0 ; POWER ; 1304
LD 34 0 ; SPACE ; 1305
LD 31 0 ; FRUIT ; 1306
LD 33 0 ; PILL ; 1307
LDC 0 ; 1308
CONS ; 1309
CONS ; 1310
CONS ; 1311
CONS ; 1312
LDF 1316 ; 1313
LDC 0 ; 1314
TSEL 1533 1533 ; 1315
LDF 1319 ; 1316
LDC 0 ; 1317
TSEL 1365 1365 ; 1318
LDF 1322 ; 1319
LDC 0 ; 1320
TSEL 1357 1357 ; 1321
LD 0 0 ; r ; 1322
CAR ; 1323
LDF 1327 ; 1324
LDC 0 ; 1325
TSEL 1355 1355 ; 1326
LD 1 0 ; r ; 1327
CDR ; 1328
LDF 1332 ; 1329
LDC 0 ; 1330
TSEL 1353 1353 ; 1331
LD 1 0 ; found ; 1332
ATOM ; 1333
TSEL 1335 1347 ; 1334
LD 2 1 ; x ; 1335
LD 3 0 ; what ; 1336
CEQ ; 1337
TSEL 1339 1344 ; 1338
LD 0 0 ; i ; 1339
LDC 0 ; 1340
CONS ; 1341
LDC 0 ; 1342
TSEL 1345 1345 ; 1343
LDC 0 ; 1344
LDC 0 ; 1345
TSEL 1348 1348 ; 1346
LD 1 0 ; found ; 1347
LDC 1 ; 1348
LD 0 0 ; i ; 1349
ADD ; 1350
CONS ; 1351
RTN ; 1352
TAP 1 ; 1353
RTN ; 1354
TAP 1 ; 1355
RTN ; 1356
LD 0 1 ; where ; 1357
LDC 0 ; 1358
LDC 0 ; 1359
CONS ; 1360
LD 65 0 ; fold ; 1361
AP 3 ; 1362
CAR ; 1363
RTN ; 1364
LDF 1368 ; 1365
LDC 0 ; 1366
TSEL 1531 1531 ; 1367
LDF 1371 ; 1368
LDC 0 ; 1369
TSEL 1402 1402 ; 1370
LD 17 0 ; lx ; 1371
LD 17 1 ; ly ; 1372
LD 0 0 ; move ; 1373
LD 22 0 ; add-move ; 1374
AP 3 ; 1375
LD 8 0 ; get-enc ; 1376
AP 1 ; 1377
LDF 1381 ; 1378
LDC 0 ; 1379
TSEL 1400 1400 ; 1380
LD 0 0 ; type ; 1381
LD 3 0 ; best-emergency-type ; 1382
LD 2 0 ; find-first-index ; 1383
AP 2 ; 1384
LDF 1388 ; 1385
LDC 0 ; 1386
TSEL 1398 1398 ; 1387
LDF 1391 ; 1388
LDC 0 ; 1389
TSEL 1393 1393 ; 1390
LD 0 1 ; foundVal ; 1391
RTN ; 1392
LD 0 0 ; found ; 1393
LDC 999 ; 1394
LD 68 0 ; fold ; 1395
TAP 3 ; 1396
RTN ; 1397
TAP 1 ; 1398
RTN ; 1399
TAP 1 ; 1400
RTN ; 1401
LDF 1405 ; 1402
LDC 0 ; 1403
TSEL 1529 1529 ; 1404
LDF 1408 ; 1405
LDC 0 ; 1406
TSEL 1431 1431 ; 1407
LDF 1411 ; 1408
LDC 0 ; 1409
TSEL 1424 1424 ; 1410
LD 0 1 ; e ; 1411
LD 1 0 ; key-func ; 1412
AP 1 ; 1413
LD 0 0 ; current ; 1414
LD 1 0 ; key-func ; 1415
AP 1 ; 1416
CGTE ; 1417
TSEL 1419 1422 ; 1418
LD 0 0 ; current ; 1419
LDC 0 ; 1420
TSEL 1423 1423 ; 1421
LD 0 1 ; e ; 1422
RTN ; 1423
LD 0 1 ; ls ; 1424
CDR ; 1425
LD 0 1 ; ls ; 1426
CAR ; 1427
LD 67 0 ; fold ; 1428
TAP 3 ; 1429
RTN ; 1430
LDF 1434 ; 1431
LDC 0 ; 1432
TSEL 1527 1527 ; 1433
LDF 1437 ; 1434
LDC 0 ; 1435
TSEL 1487 1487 ; 1436
LDF 1440 ; 1437
LDC 0 ; 1438
TSEL 1466 1466 ; 1439
LD 20 0 ; lx ; 1440
LD 20 1 ; ly ; 1441
LD 0 0 ; m ; 1442
LD 25 0 ; add-move ; 1443
AP 3 ; 1444
LDF 1448 ; 1445
LDC 0 ; 1446
TSEL 1464 1464 ; 1447
LD 0 0 ; c2 ; 1448
LD 29 0 ; free-enc ; 1449
AP 1 ; 1450
LDF 1454 ; 1451
LDC 0 ; 1452
TSEL 1458 1458 ; 1453
LD 0 0 ; ghc-enc ; 1454
LD 1 0 ; c2 ; 1455
CEQ ; 1456
RTN ; 1457
LD 15 0 ; ghs-enc-coords ; 1458
LD 67 0 ; find-first ; 1459
AP 2 ; 1460
ATOM ; 1461
MUL ; 1462
RTN ; 1463
TAP 1 ; 1464
RTN ; 1465
LD 25 0 ; all-moves ; 1466
LD 41 0 ; filter-rev ; 1467
AP 2 ; 1468
LDF 1472 ; 1469
LDC 0 ; 1470
TSEL 1485 1485 ; 1471
LD 0 0 ; filtered-moves ; 1472
ATOM ; 1473
TSEL 1475 1478 ; 1474
LDC 0 ; 1475
LDC 0 ; 1476
TSEL 1484 1484 ; 1477
LD 3 0 ; emergency-type-num ; 1478
LD 0 0 ; filtered-moves ; 1479
LD 2 0 ; search-min ; 1480
AP 2 ; 1481
LDC 0 ; 1482
CONS ; 1483
RTN ; 1484
TAP 1 ; 1485
RTN ; 1486
LDF 1490 ; 1487
LDC 0 ; 1488
TSEL 1525 1525 ; 1489
LDF 1493 ; 1490
LDC 0 ; 1491
TSEL 1509 1509 ; 1492
LD 1 0 ; emergency-move-search ; 1493
AP 0 ; 1494
LDF 1498 ; 1495
LDC 0 ; 1496
TSEL 1507 1507 ; 1497
LD 0 0 ; found-move ; 1498
ATOM ; 1499
TSEL 1501 1504 ; 1500
LDC -7 ; 1501
LDC 0 ; 1502
TSEL 1506 1506 ; 1503
LD 0 0 ; found-move ; 1504
CAR ; 1505
RTN ; 1506
TAP 1 ; 1507
RTN ; 1508
LDF 1512 ; 1509
LDC 0 ; 1510
TSEL 1523 1523 ; 1511
LD 15 0 ; is-ghost-near ; 1512
ATOM ; 1513
TSEL 1515 1520 ; 1514
LD 12 0 ; front-init ; 1515
LD 6 0 ; search-safe-path ; 1516
AP 1 ; 1517
LDC 0 ; 1518
TSEL 1522 1522 ; 1519
LD 0 0 ; emergency-move ; 1520
TAP 0 ; 1521
RTN ; 1522
TAP 1 ; 1523
RTN ; 1524
TAP 1 ; 1525
RTN ; 1526
TAP 1 ; 1527
RTN ; 1528
TAP 1 ; 1529
RTN ; 1530
TAP 1 ; 1531
RTN ; 1532
TAP 1 ; 1533
RTN ; 1534
TAP 1 ; 1535
RTN ; 1536
TAP 1 ; 1537
RTN ; 1538
TAP 1 ; 1539
RTN ; 1540
TAP 1 ; 1541
RTN ; 1542
TAP 1 ; 1543
RTN ; 1544
TAP 1 ; 1545
RTN ; 1546
TAP 1 ; 1547
RTN ; 1548
TAP 1 ; 1549
RTN ; 1550
TAP 1 ; 1551
RTN ; 1552
TAP 1 ; 1553
RTN ; 1554
TAP 1 ; 1555
RTN ; 1556
TAP 1 ; 1557
RTN ; 1558
TAP 1 ; 1559
RTN ; 1560
TAP 1 ; 1561
RTN ; 1562
LDF 1566 ; 1563
LDC 0 ; 1564
TSEL 1714 1714 ; 1565
LDC 10 ; 1566
LD 55 0 ; wr ; 1567
LDF 1571 ; 1568
LDC 0 ; 1569
TSEL 1634 1634 ; 1570
LD 0 1 ; lms ; 1571
LD 0 2 ; ghs ; 1572
LD 0 3 ; frs ; 1573
LDF 1577 ; 1574
LDC 0 ; 1575
TSEL 1583 1583 ; 1576
LD 0 0 ; x ; 1577
LD 0 0 ; x ; 1578
LDC 20 ; 1579
ADD ; 1580
CONS ; 1581
RTN ; 1582
LDC 8 ; 1583
LD 41 0 ; make_range ; 1584
AP 1 ; 1585
LD 44 0 ; map ; 1586
AP 2 ; 1587
LDF 1591 ; 1588
LDC 0 ; 1589
TSEL 1627 1627 ; 1590
LD 0 0 ; r ; 1591
LDC 5 ; 1592
LDC -100 ; 1593
LD 25 0 ; min ; 1594
LD 29 0 ; replace ; 1595
AP 4 ; 1596
LDF 1600 ; 1597
LDC 0 ; 1598
TSEL 1625 1625 ; 1599
LDF 1603 ; 1600
LDC 0 ; 1601
TSEL 1607 1607 ; 1602
LD 0 0 ; x ; 1603
LDC 2 ; 1604
CGT ; 1605
RTN ; 1606
LDC 1 ; 1607
LDC 3 ; 1608
LDC 13 ; 1609
LDC 3 ; 1610
LDC 12 ; 1611
LDC 17 ; 1612
LDC 3 ; 1613
LDC 0 ; 1614
CONS ; 1615
CONS ; 1616
CONS ; 1617
CONS ; 1618
CONS ; 1619
CONS ; 1620
CONS ; 1621
LD 49 0 ; find-first ; 1622
TAP 2 ; 1623
RTN ; 1624
TAP 1 ; 1625
RTN ; 1626
AP 1 ; 1627
DBUG ; 1628
LDC 0 ; 1629
CONS ; 1630
CONS ; 1631
CONS ; 1632
RTN ; 1633
LD 36 0 ; untup4 ; 1634
AP 2 ; 1635
CONS ; 1636
CAR ; 1637
LDF 1641 ; 1638
LDC 0 ; 1639
TSEL 1712 1712 ; 1640
LD 0 1 ; wr ; 1641
LDF 1645 ; 1642
LDC 0 ; 1643
TSEL 1709 1709 ; 1644
LD 0 1 ; lms ; 1645
LDF 1649 ; 1646
LDC 0 ; 1647
TSEL 1706 1706 ; 1648
LD 0 1 ; lm-coord ; 1649
LDF 1653 ; 1650
LDC 0 ; 1651
TSEL 1703 1703 ; 1652
LD 3 0 ; rnd ; 1653
LDC 1000000007 ; 1654
MUL ; 1655
LD 0 0 ; lx ; 1656
LD 0 1 ; ly ; 1657
LD 1 0 ; lvit ; 1658
LD 2 0 ; gmap ; 1659
LD 2 2 ; ghs ; 1660
LD 2 3 ; frs ; 1661
LD 4 0 ; get-move ; 1662
AP 6 ; 1663
LDF 1667 ; 1664
LDC 0 ; 1665
TSEL 1697 1697 ; 1666
LDC -7 ; 1667
LD 0 0 ; move ; 1668
CEQ ; 1669
TSEL 1671 1695 ; 1670
LDC 0 ; 1671
LD 4 0 ; rnd ; 1672
CGTE ; 1673
TSEL 1675 1685 ; 1674
LDC -1073741824 ; 1675
LD 4 0 ; rnd ; 1676
CGTE ; 1677
TSEL 1679 1682 ; 1678
LDC 0 ; 1679
LDC 0 ; 1680
TSEL 1683 1683 ; 1681
LDC 1 ; 1682
LDC 0 ; 1683
TSEL 1693 1693 ; 1684
LDC 1073741824 ; 1685
LD 4 0 ; rnd ; 1686
CGTE ; 1687
TSEL 1689 1692 ; 1688
LDC 2 ; 1689
LDC 0 ; 1690
TSEL 1693 1693 ; 1691
LDC 3 ; 1692
LDC 0 ; 1693
TSEL 1696 1696 ; 1694
LD 0 0 ; move ; 1695
RTN ; 1696
AP 1 ; 1697
CONS ; 1698
LDC 1 ; 1699
CONS ; 1700
CAR ; 1701
RTN ; 1702
LD 41 0 ; untup2 ; 1703
TAP 2 ; 1704
RTN ; 1705
LD 37 0 ; untup5 ; 1706
TAP 2 ; 1707
RTN ; 1708
LD 37 0 ; untup4 ; 1709
TAP 2 ; 1710
RTN ; 1711
CONS ; 1712
RTN ; 1713
TAP 1 ; 1714
RTN ; 1715
TAP 1 ; 1716
RTN ; 1717
TAP 1 ; 1718
RTN ; 1719
TAP 1 ; 1720
RTN ; 1721
TAP 1 ; 1722
RTN ; 1723
TAP 1 ; 1724
RTN ; 1725
TAP 1 ; 1726
RTN ; 1727
TAP 1 ; 1728
RTN ; 1729
TAP 1 ; 1730
RTN ; 1731
TAP 1 ; 1732
RTN ; 1733
TAP 1 ; 1734
RTN ; 1735
TAP 1 ; 1736
RTN ; 1737
TAP 1 ; 1738
RTN ; 1739
TAP 1 ; 1740
RTN ; 1741
TAP 1 ; 1742
RTN ; 1743
TAP 1 ; 1744
RTN ; 1745
TAP 1 ; 1746
RTN ; 1747
TAP 1 ; 1748
RTN ; 1749
TAP 1 ; 1750
RTN ; 1751
TAP 1 ; 1752
RTN ; 1753
TAP 1 ; 1754
RTN ; 1755
TAP 1 ; 1756
RTN ; 1757
TAP 1 ; 1758
RTN ; 1759
TAP 1 ; 1760
RTN ; 1761
TAP 1 ; 1762
RTN ; 1763
TAP 1 ; 1764
RTN ; 1765
TAP 1 ; 1766
RTN ; 1767
TAP 1 ; 1768
RTN ; 1769
TAP 1 ; 1770
RTN ; 1771
TAP 1 ; 1772
RTN ; 1773
TAP 1 ; 1774
RTN ; 1775
TAP 1 ; 1776
RTN ; 1777
TAP 1 ; 1778
RTN ; 1779
TAP 1 ; 1780
RTN ; 1781
TAP 1 ; 1782
RTN ; 1783
TAP 1 ; 1784
RTN ; 1785
TAP 1 ; 1786
RTN ; 1787
TAP 1 ; 1788
RTN ; 1789
TAP 1 ; 1790
RTN ; 1791
TAP 1 ; 1792
RTN ; 1793
TAP 1 ; 1794
RTN ; 1795
TAP 1 ; 1796
RTN ; 1797
TAP 1 ; 1798
RTN ; 1799
TAP 1 ; 1800
RTN ; 1801
TAP 1 ; 1802
RTN ; 1803
TAP 1 ; 1804
RTN ; 1805
TAP 1 ; 1806
RTN ; 1807
TAP 1 ; 1808
RTN ; 1809
TAP 1 ; 1810
RTN ; 1811
TAP 1 ; 1812
RTN ; 1813
TAP 1 ; 1814
RTN ; 1815
TAP 1 ; 1816
RTN ; 1817
TAP 1 ; 1818
RTN ; 1819
TAP 1 ; 1820
RTN ; 1821
TAP 1 ; 1822
RTN ; 1823
TAP 2 ; 1824
(ff wr ghc
(let
(li (cons 1 (cons 2 (cons 3 0))))
(rec (ff f n (f f n)))
(rec2 (ff f a b (f f a b)))
(rec3 (ff f a b c (f f a b c)))
(fold_rec (ff me f ls acc
(if (atom ls) acc (me me f (cdr ls) (f acc (car ls))))
))
(fold (ff f li acc (rec3 fold_rec f li acc)))
(while-rec (ff me cond next state
(if (== 0 (cond state))
state
(me me cond next (next state))
)
))
(while (ff cond next state (rec3 while-rec cond next state)))
(find-first (ff f ls
(fold (ff res x
(if (atom res)
(if (f x) (cons x 0) 0)
res
)
) ls 0)
))
; (merge_rec (ff me A B
; (if (atom A) B
; (if (atom B) A
; (let
; (a (car A)) (b (car B))
; (if (a < b)
; (cons a (me me (cdr A) B))
; (cons b (me me A (cdr B)))
; ))))))
; (merge (ff A B (rec2 merge_rec A B)))
; (split_rec (ff me A1 half1 half2)
; (if (atom A) (cons half1 half2)
; (let
; (A1 (cdr A))
; (if (atom A1) (cons half1 half2)
; (me me (cdr A) (cons (car half2) half1) (cdr half2))
; )
; )
; )
; )
; ; first half is reversed
; (split (ff A (rec3 split_rec A 0 A)))
; (sort (ff A
; (if (atom A) 0 (let
; two-halves (split A)
; (merge (sort (car two-halves)) (sort (cdr two-halves)))
; )
; ))
(fold_range_rec (ff me f i_n acc
(let
(i (car i_n))
(if (== (cdr i_n) i) acc (me me f (cons (+ 1 i) (cdr i_n)) (f acc i)))
)
))
(map_rec (ff me f ls
(if (atom ls) 0 (cons (f (car ls)) (me me f (cdr ls))))
))
(map (ff f ls (rec2 map_rec f ls)))
(gen_adder (ff x (ff y (+ x y))))
(fold_range (ff f n acc
(rec3 fold_range_rec f (cons 0 n) acc)
))
(make_range (ff n (fold_range (ff acc x (cons (- (- n x) 1) acc)) n 0)))
(sum (ff li (fold (ff a b (+ a b)) li 0)))
(untup2 (ff t f (f (car t) (cdr t))))
(untup3 (ff t f (f (car t) (car (cdr t)) (cdr (cdr t)) )))
(untup4 (ff t f (f (car t) (car (cdr t)) (car (cdr (cdr t))) (cdr (cdr (cdr t))) )))
(untup5 (ff t f (f (car t) (car (cdr t)) (car (cdr (cdr t))) (car (cdr (cdr (cdr t)))) (cdr (cdr (cdr (cdr t)))) )))
(print (ff out result (car (cons result (dbug out)) )))
(print1 (ff x (print x x)))
; trivial array operations on list
(at_rec (ff me ls i
(if (== 0 i) (car ls) (me me (cdr ls) (- i 1)))
))
(at (ff ls i (rec2 at_rec ls i)))
(len (ff ls (fold (ff a _ (+ a 1)) ls 0)))
; trivial set implementation on list with linear search
; (empty 0)
; (in (ff set x (> (fold (ff a y (+ a (== x y))) set 0) 0) ))
; (add (ff set x (if (in set x) set (cons x set)) ))
; (union (ff A B (fold (ff Bcur a (add Bcur a)) A B)))
; trivial map implementation on list with linear search
(empty 0)
(in (ff M key (> (fold (ff a key_val (+ a (== key (car key_val)))) M 0) 0) ))
(replace (ff M key val update-func
(map
(ff key_val (
if (== (car key_val) key)
(cons key (update-func val (cdr key_val)))
key_val
))
M
)
))
(add-replace (ff M key val update-func
(if (in M key)
(replace M key val update-func)
(cons (cons key val) M)
)
))
(at_rec (ff me ls i
(if (== 0 i) (car ls) (me me (cdr ls) (- i 1)))
))
(at (ff ls i (rec2 at_rec ls i)))
(min (ff x y (if (< x y) x y)))
; return -1 if no move
(filter-rev (ff f ls (fold
(ff result elem (
if (f elem)
(cons elem result)
result
))
ls
0
)))
(WALL 0)
(SPACE 1)
(PILL 2)
(POWER 3)
(FRUIT 4)
(or (ff a b (> (+ a b) 0)))
(not (ff x (== x 0)))
(gmap-init (car wr))
(get-init (ff x y (at (at gmap-init y) x)))
(free (ff x y (let
(v (get-init x y))
(not (== v WALL))
)))
(height (len gmap-init))
(width (len (car gmap-init)))
(coord-dec (ff c f (f
(- c (* (/ c 1000) 1000))
(/ c 1000)
)))
(free-enc (ff c (coord-dec c free)))
(coord-enc (ff x y (+ x (* 1000 y))))
(all-moves (cons 0 (cons 1 (cons 2 (cons 3 0)))))
(add-move (ff x y move
; * 0: up; 1: right; * 2: down; 3: left
( if (== move 0) (coord-enc x (- y 1)) (
if (== move 2) (coord-enc x (+ y 1)) (
if (== move 1) (coord-enc (+ x 1) y) (
if (== move 3) (coord-enc (- x 1) y) (
(dbug 827182) ; on error
)))))
))
(get-neibours-init (ff x y
(if
(free x y)
(fold
(ff free-list m (let
(c2 (add-move x y m))
(if
(coord-dec c2 free)
(cons c2 free-list)
free-list
)
))
all-moves
0
)
0
)
))
(free-neib-map (map
(ff y (map
(ff x (get-neibours-init x y))
(make_range width)
))
(make_range height)
))
(asdf (print1 free-neib-map))
(get-neibours-list (ff x y (at (at free-neib-map y) x)))
(get-move (ff lx ly lvit gmap ghs_state fruit_count
(let
(get (ff x y (at (at gmap y) x)))
(ghs-coords (let
(alive_ghost (filter-rev (ff ghost (== 0 (car ghost))) ghs_state))
(map (ff ghost (car (cdr ghost))) alive_ghost)
))
(update-neibours (ff vis front c src
(fold
(ff front c2
(if (in vis c2) front (add-replace front c2 src min))
)
(coord-dec c get-neibours-list)
front
)
))
(dist1 (ff x (== (* x x) 1)))
(is-ghost-near (fold
(ff r ghc (untup2 ghc (ff x y (if
(or (* (dist1 (- x lx)) (== y ly)) (* (== x lx) (dist1 (- y ly))))
(cons (cons x y) r)
r
))))
ghs-coords
0
))
(ghs-enc-coords (map (ff c (coord-enc (car c) (cdr c)) ) ghs-coords))
(ghs-front-tmp (fold (ff front c
(update-neibours 0 (add-replace front c -1 min) c -1)
) ghs-enc-coords 0))
(front-init (fold
(ff cur m
(let
(new-pos (add-move lx ly m))
(if
(coord-dec new-pos free)
(add-replace cur new-pos m min)
cur
)
)
)
all-moves ghs-front-tmp
))
(get-enc (ff c (coord-dec c get)))
(edible (ff val ; todo: ghost huntering, they are tasty too
(or (or (== val PILL) (== val POWER))
(* (== val FRUIT) (> fruit_count 300) )
)
))
(finish-and-src (ff front
(map
(ff x (cdr x))
(find-first
(ff x (* (>= (cdr x) 0) (edible (get-enc (car x))) ))
front
)
)
))
; (finish-and-src (ff front (let
; (r (finish-and-src-x front))
; (tmp (print1 front))
; (tmp (print1 r))
; r
; )))
(front-continue (ff front
(* (== 0 (atom front)) (atom (finish-and-src front)))
))
(front-step (ff vis front
(cons
front
(fold
(ff front2 e
(let
(c (car e))
(src (cdr e))
(update-neibours vis front2 c src)
)
)
front
0
)
)
))
(search-safe-path (ff front
(let
(final-vis-front (while
(ff vis-front (front-continue (cdr vis-front)))
(ff vis-front (front-step (car vis-front) (cdr vis-front)))
(cons 0 front)
))
(final-front (cdr final-vis-front))
(if (atom final-front)
-7 ; todo: trivial logic for unknown path
(let (src-list (finish-and-src final-front))
(if (atom src-list) (dbug 1893120) (car src-list))
)
)
)
))
(best-emergency-type (cons POWER (cons SPACE (cons FRUIT (cons PILL 0))))) ; fruit is more like 'empty' here
(find-first-index (ff what where (car (fold
(ff r x (let (found (car r)) (i (cdr r))
(cons
(if (atom found)
(if (== x what)
(cons i 0)
0
)
found
)
(+ 1 i)
)
))
where
(cons 0 0)
))))
(emergency-type-num (ff move
(let
(type (get-enc (add-move lx ly move)))
(found (find-first-index type best-emergency-type))
(fold (ff _ foundVal foundVal) found 999)
)
))
(search-min (ff key-func ls (fold
(ff current e
(if (< (key-func current) (key-func e)) current e)
)
(cdr ls)
(car ls)
)))
(emergency-move-search (ff (let
(filtered-moves (filter-rev
(ff m (let
(c2 (add-move lx ly m))
(*
(free-enc c2)
(atom (find-first (ff ghc-enc (== ghc-enc c2)) ghs-enc-coords)) ; not occupied by ghost
)
))
all-moves
))
(if (atom filtered-moves)
0
(cons (search-min emergency-type-num filtered-moves) 0)
)
)))
(emergency-move (ff (let
(found-move (emergency-move-search))
(if (atom found-move) -7 (car found-move))
)))
;(search-safe-path front-init)
(if (atom is-ghost-near)
(search-safe-path front-init)
(emergency-move)
)
)
))
(cons
; (print 10)
(car (cons 10
(untup4 wr (ff gmap lms ghs frs ( cons lms (cons ghs(cons frs
; (dbug (fold (ff a x (+ a (fold (ff a2 y (+ (== y 2) a2)) x 0) )) gmap 0))
(dbug (let
(r (map (ff x (cons x (+ x 20))) (make_range 8) ))
(r2 (replace r 5 -100 min))
; (while (ff rnd (< (car rnd) 10)) (ff rnd (untup2 rnd (ff i list (cons (+ 1 i) (cons (* i i) list))))) (cons 0 0) )
(find-first (ff x (> x 2))
(cons 1 (cons 3 (cons 13 (cons 3 (cons 12 (cons 17 (cons 3 0)))))))
)
))
)))))
))
(ff rnd wr
(untup4 wr (ff gmap lms ghs frs
(untup5 lms (ff lvit lm-coord _ _
(untup2 lm-coord (ff lx ly
(car (cons
;(cons (* rnd 1000000007)
(cons (* rnd 1000000007)
(let
(move (get-move lx ly lvit gmap ghs frs))
(if (== -7 move)
(if (< rnd 0) (if (< rnd -1073741824) 0 1) (if (< rnd 1073741824) 2 3) ) ; random wandering
move
)
)
)
1
))
))
))
; (car
; (cons
; (cons (* rnd 1000000007) (if (< rnd 0) (if (< rnd -1073741824) 0 1) (if (< rnd 1073741824) 2 3) ))
; ; (print1 (fold (ff a x (+ a (fold (ff a2 y (+ (== y 2) a2)) x 0) )) gmap 0) )
; 1
; ; (print1 gmap)
; ; (print1 (fold (ff a row (cons a (
; ; car (fold (ff a2 v ( cons ( if (== v 3) (cons (cdr a2) (car a2)) (car a2) ) (+ 1 (cdr a2)) )) row (cons 0 0))) )) gmap 0
; ; ))
; ))
))
))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment