day 13, 14 and 15

This commit is contained in:
m
2024-12-15 09:44:05 -05:00
parent 70c72cd6e9
commit d9ff4e14fe
14 changed files with 4289 additions and 0 deletions

1279
resources/2024/day13.txt Normal file

File diff suppressed because it is too large Load Diff

500
resources/2024/day14.txt Normal file
View File

@@ -0,0 +1,500 @@
p=24,25 v=-48,-26
p=7,8 v=-96,-2
p=7,80 v=-66,22
p=5,18 v=25,-98
p=45,67 v=26,90
p=54,71 v=3,67
p=62,66 v=-5,81
p=5,82 v=-7,-45
p=66,89 v=93,-43
p=70,51 v=33,-7
p=75,59 v=-20,-77
p=66,40 v=93,55
p=32,79 v=79,45
p=99,13 v=-18,50
p=13,68 v=-43,-53
p=84,85 v=-69,-65
p=37,84 v=11,-57
p=28,10 v=19,-93
p=78,82 v=-56,36
p=20,69 v=-3,-62
p=39,78 v=27,-1
p=51,87 v=-32,-17
p=90,26 v=20,66
p=35,89 v=-11,20
p=71,2 v=-80,92
p=41,40 v=-64,-30
p=38,8 v=-71,54
p=72,58 v=36,-80
p=62,97 v=52,83
p=96,74 v=90,-23
p=76,75 v=-43,-9
p=35,95 v=74,13
p=90,17 v=99,6
p=61,26 v=17,81
p=43,71 v=-43,-51
p=6,18 v=-62,-9
p=37,62 v=-23,-11
p=60,97 v=36,-64
p=54,63 v=-23,-95
p=76,85 v=24,-4
p=38,54 v=-38,-95
p=48,18 v=52,-49
p=45,36 v=-75,-4
p=31,87 v=64,50
p=4,87 v=68,9
p=25,40 v=99,53
p=74,18 v=-73,-71
p=5,22 v=76,65
p=66,12 v=96,-64
p=20,71 v=68,-3
p=3,20 v=4,-77
p=27,43 v=49,55
p=25,70 v=-52,-84
p=90,64 v=39,52
p=32,69 v=82,88
p=2,97 v=-78,76
p=56,6 v=-71,-27
p=91,31 v=84,-41
p=25,12 v=-91,-51
p=7,43 v=-11,59
p=3,55 v=-6,-44
p=83,102 v=9,-76
p=54,40 v=-94,5
p=3,77 v=80,45
p=32,6 v=3,-35
p=14,34 v=-74,-41
p=16,30 v=-21,-86
p=34,71 v=-75,-62
p=79,11 v=67,-10
p=80,11 v=61,9
p=14,84 v=-59,-83
p=73,66 v=-56,3
p=26,61 v=41,-70
p=45,35 v=-97,40
p=84,39 v=-99,55
p=95,50 v=-66,-56
p=17,35 v=-33,-74
p=33,51 v=4,-22
p=6,77 v=-49,-45
p=9,61 v=28,85
p=14,91 v=-70,-12
p=88,73 v=49,-14
p=73,39 v=-16,73
p=68,83 v=25,60
p=3,31 v=83,62
p=31,102 v=30,-49
p=29,29 v=45,-23
p=47,37 v=97,26
p=35,46 v=87,39
p=13,36 v=-74,-37
p=81,33 v=81,-17
p=6,20 v=-14,43
p=94,41 v=89,-72
p=55,44 v=-91,95
p=92,87 v=-17,64
p=54,79 v=-57,-58
p=53,49 v=-19,-84
p=25,21 v=56,-82
p=82,53 v=51,-85
p=75,27 v=69,-4
p=21,87 v=61,-6
p=6,63 v=-74,-77
p=20,4 v=89,-33
p=21,25 v=-78,62
p=24,0 v=-74,43
p=34,86 v=-43,74
p=72,83 v=-35,85
p=47,17 v=41,87
p=3,73 v=-77,-36
p=98,96 v=-73,75
p=66,93 v=-26,20
p=48,79 v=56,-69
p=91,89 v=-47,9
p=49,11 v=96,-47
p=33,4 v=-86,-16
p=76,45 v=-46,3
p=12,28 v=-40,36
p=64,99 v=-79,-83
p=19,83 v=-10,-3
p=87,57 v=84,-33
p=47,69 v=-64,-58
p=56,9 v=33,-60
p=98,94 v=-14,-25
p=60,59 v=-1,-41
p=18,91 v=-93,-85
p=24,21 v=98,-85
p=51,83 v=-23,45
p=12,41 v=-41,-34
p=8,86 v=-55,-50
p=23,48 v=-11,73
p=46,24 v=-4,-75
p=12,82 v=-6,-47
p=78,37 v=-16,-55
p=13,59 v=68,-66
p=63,100 v=44,83
p=99,66 v=31,-65
p=21,97 v=17,-7
p=1,101 v=91,-90
p=16,74 v=90,8
p=15,102 v=98,-9
p=31,34 v=12,91
p=49,65 v=-8,96
p=48,62 v=-41,-58
p=57,13 v=-72,61
p=82,30 v=-69,47
p=31,21 v=41,-44
p=25,93 v=-30,-69
p=33,45 v=4,-96
p=57,15 v=59,10
p=6,74 v=61,-43
p=9,43 v=-64,51
p=69,67 v=10,-51
p=44,93 v=60,93
p=39,77 v=94,-39
p=38,86 v=86,12
p=43,98 v=26,75
p=64,49 v=-87,-84
p=13,64 v=42,30
p=69,91 v=-39,-91
p=83,100 v=-12,61
p=28,66 v=-62,-27
p=15,90 v=-3,-46
p=0,42 v=27,18
p=56,99 v=-24,-67
p=70,68 v=-61,74
p=7,8 v=-70,35
p=5,100 v=16,-13
p=83,49 v=-22,73
p=63,18 v=64,-56
p=78,84 v=28,-57
p=89,39 v=36,26
p=72,31 v=-80,51
p=72,88 v=8,70
p=29,8 v=34,65
p=36,11 v=-86,39
p=16,27 v=12,-52
p=63,63 v=59,63
p=1,4 v=-21,-79
p=95,86 v=-81,-79
p=30,27 v=90,21
p=17,40 v=81,-5
p=47,24 v=47,93
p=4,23 v=31,-49
p=61,34 v=-42,-78
p=34,61 v=-62,44
p=48,18 v=-12,-97
p=32,81 v=-74,-75
p=61,15 v=96,-98
p=8,86 v=87,-54
p=26,95 v=-63,71
p=94,61 v=13,48
p=26,101 v=94,-57
p=24,102 v=4,2
p=83,56 v=-56,44
p=96,37 v=91,-8
p=60,43 v=-18,5
p=93,68 v=92,1
p=79,57 v=-9,77
p=65,68 v=-16,-51
p=26,28 v=-44,-80
p=39,22 v=-75,-23
p=90,0 v=-73,83
p=66,88 v=10,75
p=61,55 v=-87,52
p=43,2 v=45,68
p=85,25 v=-91,-12
p=14,79 v=-50,-20
p=32,98 v=22,21
p=85,59 v=74,-5
p=4,50 v=-14,8
p=99,85 v=35,-28
p=76,80 v=-2,64
p=49,36 v=-8,14
p=60,65 v=-12,67
p=4,84 v=-98,-82
p=0,92 v=-74,-50
p=88,94 v=26,36
p=20,37 v=-7,-8
p=81,28 v=21,-59
p=95,33 v=-39,36
p=26,45 v=-86,23
p=82,19 v=2,-12
p=85,60 v=32,-44
p=5,60 v=79,10
p=53,33 v=-12,62
p=40,79 v=-71,-47
p=75,31 v=-95,95
p=43,2 v=41,-86
p=17,86 v=-81,82
p=10,15 v=-31,46
p=7,74 v=-25,89
p=69,8 v=-61,32
p=82,65 v=-39,74
p=73,101 v=-12,-79
p=51,9 v=93,-16
p=95,56 v=13,15
p=96,67 v=34,29
p=19,91 v=-31,89
p=2,43 v=-96,-55
p=68,60 v=17,-91
p=17,86 v=8,-43
p=5,95 v=16,71
p=49,20 v=37,21
p=6,67 v=-40,96
p=47,95 v=-32,-76
p=45,71 v=-81,2
p=46,31 v=-34,-89
p=49,17 v=-79,-97
p=66,82 v=18,-95
p=69,86 v=81,-21
p=5,87 v=-10,-21
p=84,81 v=47,97
p=89,9 v=13,-60
p=34,15 v=-67,-38
p=51,46 v=-28,-91
p=94,99 v=-21,-35
p=15,20 v=3,48
p=26,72 v=-32,13
p=80,5 v=-43,-20
p=64,82 v=-49,-75
p=56,58 v=-94,81
p=29,86 v=79,16
p=98,60 v=-36,4
p=23,47 v=-37,77
p=48,66 v=63,78
p=48,92 v=-97,74
p=58,86 v=85,27
p=99,85 v=57,97
p=98,53 v=-28,-25
p=72,44 v=-48,31
p=35,67 v=75,30
p=22,11 v=38,13
p=95,41 v=-85,36
p=3,55 v=-85,-66
p=50,57 v=-94,11
p=58,2 v=-42,-64
p=45,3 v=-97,10
p=1,30 v=97,-31
p=75,68 v=13,-58
p=79,101 v=62,-98
p=20,26 v=83,25
p=49,4 v=25,-16
p=46,54 v=89,7
p=86,42 v=-43,-81
p=6,3 v=-99,-5
p=74,50 v=-61,22
p=40,13 v=-38,-57
p=5,54 v=-5,-65
p=55,66 v=10,-25
p=52,82 v=-55,-28
p=70,18 v=-68,-49
p=54,10 v=-38,-16
p=79,35 v=54,-45
p=95,64 v=80,6
p=88,62 v=-56,78
p=65,28 v=-39,43
p=69,29 v=-35,-78
p=68,99 v=-5,79
p=37,22 v=30,-49
p=98,55 v=-92,-84
p=3,1 v=-10,-64
p=56,60 v=49,26
p=38,25 v=-56,91
p=93,22 v=46,87
p=97,11 v=13,-86
p=16,15 v=23,76
p=34,58 v=45,15
p=20,59 v=-12,72
p=30,78 v=-25,50
p=61,59 v=-53,37
p=33,2 v=75,-24
p=36,5 v=81,43
p=90,93 v=-10,50
p=60,74 v=14,96
p=56,40 v=-56,96
p=79,6 v=77,-71
p=87,64 v=-2,-62
p=25,66 v=64,-47
p=4,13 v=-66,54
p=47,57 v=67,59
p=39,64 v=90,-88
p=81,68 v=-73,52
p=59,36 v=-42,-89
p=0,4 v=14,83
p=20,5 v=-67,-9
p=100,45 v=20,-44
p=85,27 v=54,-48
p=58,54 v=-16,-11
p=71,4 v=-54,42
p=22,98 v=83,-46
p=32,7 v=-26,32
p=33,52 v=37,-62
p=82,33 v=-28,14
p=90,11 v=-88,-97
p=39,79 v=52,45
p=60,15 v=70,-79
p=3,38 v=-70,-29
p=10,80 v=27,-10
p=22,22 v=-89,7
p=23,29 v=-74,49
p=45,34 v=26,51
p=59,63 v=-3,41
p=9,28 v=-82,89
p=18,42 v=-10,-67
p=2,80 v=-3,-80
p=94,73 v=13,89
p=89,73 v=-50,-40
p=22,85 v=71,-38
p=20,99 v=52,-10
p=40,89 v=52,27
p=47,99 v=-18,59
p=71,55 v=25,-47
p=69,102 v=-31,-64
p=67,43 v=-91,44
p=79,27 v=69,-72
p=43,53 v=89,22
p=59,30 v=26,-46
p=53,54 v=37,-33
p=72,11 v=-80,-27
p=56,63 v=33,-14
p=53,61 v=24,86
p=40,77 v=-17,-66
p=88,88 v=53,33
p=40,82 v=56,-76
p=16,2 v=60,-94
p=17,83 v=-78,-3
p=16,99 v=-44,13
p=88,19 v=-73,40
p=61,16 v=36,-30
p=1,90 v=-21,-80
p=65,92 v=-95,-30
p=100,98 v=24,31
p=45,54 v=-42,30
p=87,60 v=56,-57
p=97,43 v=75,-96
p=54,64 v=3,69
p=73,29 v=-5,84
p=69,5 v=-99,-27
p=18,8 v=98,94
p=9,4 v=92,61
p=69,50 v=38,34
p=9,52 v=-85,74
p=33,16 v=34,-86
p=38,68 v=15,45
p=93,82 v=25,17
p=22,34 v=6,-51
p=40,81 v=79,-6
p=62,20 v=23,86
p=2,21 v=43,-60
p=19,79 v=-74,38
p=70,3 v=-20,-81
p=57,66 v=-4,-22
p=54,36 v=65,-30
p=48,83 v=-60,-43
p=71,41 v=92,-56
p=90,66 v=-77,-62
p=65,15 v=-24,-79
p=49,48 v=-53,81
p=41,15 v=71,-49
p=59,58 v=83,18
p=27,84 v=-38,64
p=94,34 v=2,36
p=12,34 v=-55,-30
p=64,40 v=-27,29
p=74,28 v=-91,-63
p=81,86 v=-77,-10
p=83,26 v=32,47
p=20,44 v=-63,-96
p=1,48 v=-51,-11
p=69,18 v=-5,-82
p=63,18 v=16,-28
p=88,1 v=-2,46
p=80,44 v=2,33
p=10,35 v=72,10
p=79,35 v=45,-72
p=6,13 v=-18,3
p=40,43 v=41,-4
p=100,18 v=-51,-93
p=71,54 v=94,37
p=4,93 v=50,97
p=9,56 v=76,-77
p=89,38 v=-50,92
p=96,31 v=35,58
p=73,11 v=96,-86
p=36,67 v=-60,27
p=44,77 v=-82,71
p=67,53 v=96,61
p=14,82 v=72,42
p=96,14 v=65,98
p=91,8 v=78,-72
p=44,80 v=-22,-67
p=47,59 v=-75,48
p=90,52 v=-65,-3
p=10,41 v=-29,-70
p=57,90 v=-75,13
p=42,43 v=67,-85
p=51,72 v=33,79
p=33,87 v=60,56
p=93,55 v=-77,-44
p=31,29 v=64,-19
p=91,81 v=21,86
p=100,99 v=-66,-24
p=68,90 v=29,23
p=43,25 v=-6,-49
p=62,37 v=-98,-74
p=57,11 v=97,-83
p=89,85 v=74,14
p=29,18 v=48,-13
p=84,92 v=-43,-93
p=33,5 v=19,94
p=2,85 v=-58,12
p=18,95 v=-41,42
p=75,59 v=34,91
p=0,56 v=-51,-58
p=85,10 v=-91,-37
p=64,20 v=-42,-23
p=28,30 v=-27,7
p=18,46 v=-96,73
p=33,93 v=-93,-53
p=29,64 v=30,-29
p=65,53 v=-42,15
p=26,92 v=11,62
p=69,34 v=-99,-4
p=44,15 v=-94,-64
p=24,42 v=-22,88
p=37,8 v=41,87
p=22,77 v=-54,-54
p=9,13 v=-18,85
p=90,97 v=46,36
p=37,61 v=64,93
p=96,78 v=80,-47
p=92,62 v=6,74
p=19,20 v=-44,-23
p=63,43 v=-16,-4
p=85,0 v=-73,-64
p=37,53 v=-11,-81
p=28,55 v=11,-40
p=77,22 v=-72,-67
p=88,86 v=47,60
p=43,50 v=-19,-95
p=46,28 v=11,3
p=16,5 v=28,66
p=85,85 v=-36,-98
p=95,15 v=9,17
p=46,70 v=-64,82
p=24,49 v=38,-84
p=94,5 v=-24,-83
p=59,73 v=-98,49
p=13,75 v=72,12
p=68,27 v=-57,-5
p=13,71 v=-55,-84
p=57,12 v=-68,28
p=21,90 v=-45,16
p=38,4 v=-93,21
p=66,96 v=-72,-13
p=34,95 v=-41,-90
p=85,39 v=-18,-30
p=3,94 v=9,97
p=89,12 v=5,-67
p=44,58 v=-4,-62

View File

@@ -0,0 +1,500 @@
p=70,7 v=75,-38
p=67,47 v=92,-45
p=91,51 v=23,10
p=55,16 v=69,6
p=76,64 v=-29,65
p=89,18 v=-45,64
p=18,90 v=70,61
p=61,97 v=-53,-82
p=71,38 v=-20,-55
p=15,72 v=-10,-64
p=53,77 v=-99,98
p=58,99 v=-74,-58
p=49,54 v=2,-85
p=33,23 v=-84,-70
p=10,36 v=5,-70
p=100,64 v=-79,18
p=85,52 v=54,-89
p=88,76 v=-45,-81
p=37,98 v=76,-55
p=58,97 v=6,43
p=24,10 v=30,-87
p=12,73 v=-94,-87
p=40,31 v=-60,-48
p=56,32 v=-69,-18
p=71,86 v=-47,16
p=0,45 v=60,-27
p=79,52 v=14,13
p=53,97 v=-53,-64
p=90,100 v=16,-42
p=23,93 v=-50,57
p=41,67 v=-23,-36
p=69,1 v=-76,-42
p=35,30 v=-44,-81
p=52,77 v=80,-95
p=4,85 v=-73,-78
p=83,15 v=-68,-43
p=58,55 v=-52,95
p=23,70 v=24,-37
p=7,81 v=62,35
p=6,100 v=-56,-78
p=87,60 v=-45,-31
p=28,22 v=91,-79
p=68,18 v=-47,-29
p=6,79 v=98,89
p=56,60 v=-44,19
p=85,74 v=81,-41
p=12,65 v=83,-94
p=70,19 v=29,66
p=36,64 v=-63,90
p=79,34 v=12,-93
p=19,86 v=95,-15
p=45,21 v=21,96
p=2,32 v=-13,72
p=28,52 v=1,-14
p=26,57 v=13,-85
p=39,5 v=72,3
p=17,84 v=-35,-59
p=87,42 v=-63,38
p=97,50 v=90,63
p=23,23 v=-92,46
p=28,60 v=-69,-99
p=84,24 v=56,42
p=28,83 v=-18,69
p=14,79 v=-81,-83
p=70,3 v=-13,-76
p=14,62 v=47,-54
p=14,11 v=-46,25
p=21,87 v=68,12
p=91,93 v=-62,-68
p=87,61 v=16,31
p=92,53 v=54,-17
p=50,54 v=42,76
p=57,91 v=11,20
p=65,20 v=24,39
p=67,32 v=37,-69
p=20,43 v=9,54
p=69,32 v=10,-75
p=20,47 v=-92,-31
p=53,30 v=-17,-97
p=1,82 v=-98,53
p=46,54 v=47,-46
p=70,4 v=-36,-60
p=59,18 v=42,-16
p=62,14 v=-36,11
p=84,31 v=54,-93
p=9,70 v=-22,-27
p=5,26 v=-87,-98
p=89,46 v=-16,-9
p=98,6 v=-1,-92
p=75,8 v=75,-24
p=90,83 v=71,-24
p=47,6 v=95,97
p=20,35 v=-71,59
p=60,18 v=63,-70
p=98,35 v=43,-40
p=97,91 v=39,61
p=5,79 v=84,-20
p=90,61 v=16,-63
p=93,66 v=37,80
p=41,20 v=-86,60
p=81,49 v=-87,19
p=76,79 v=-67,28
p=84,4 v=-66,47
p=7,69 v=-43,93
p=60,46 v=26,-91
p=12,101 v=66,79
p=15,15 v=-15,-37
p=6,80 v=-20,-54
p=38,87 v=-59,-95
p=0,5 v=62,83
p=38,95 v=76,-37
p=34,7 v=-86,88
p=45,18 v=-63,69
p=14,24 v=-27,-97
p=38,40 v=74,-62
p=94,48 v=32,24
p=27,6 v=11,78
p=52,11 v=-7,-8
p=67,30 v=-93,-98
p=49,82 v=-95,-51
p=67,40 v=-57,-45
p=61,63 v=48,9
p=93,34 v=64,-44
p=10,86 v=-50,62
p=12,26 v=45,-88
p=32,29 v=-33,-30
p=19,83 v=-18,-77
p=97,73 v=-20,44
p=40,29 v=99,-75
p=21,63 v=-31,67
p=77,81 v=98,77
p=19,25 v=28,82
p=10,86 v=67,-12
p=11,93 v=48,-25
p=66,20 v=-13,24
p=15,51 v=-75,-89
p=82,31 v=-82,-75
p=100,28 v=1,-30
p=52,50 v=-42,-71
p=22,74 v=-37,-19
p=32,26 v=-23,-52
p=13,75 v=-81,62
p=71,92 v=10,-73
p=18,54 v=-67,32
p=46,54 v=-20,-21
p=79,102 v=-21,-78
p=58,37 v=-81,51
p=33,93 v=72,3
p=87,60 v=3,-7
p=32,6 v=97,10
p=25,81 v=11,-55
p=63,28 v=88,73
p=32,30 v=-63,5
p=51,95 v=61,7
p=54,52 v=-78,-67
p=90,86 v=71,-95
p=6,50 v=-3,99
p=89,16 v=7,66
p=90,91 v=66,-39
p=44,6 v=78,65
p=30,54 v=32,67
p=69,34 v=-11,-75
p=49,10 v=59,-7
p=88,23 v=75,-52
p=51,72 v=-59,80
p=28,100 v=-29,-25
p=34,35 v=15,28
p=57,18 v=-57,10
p=53,21 v=23,33
p=70,70 v=-13,-68
p=74,49 v=-99,-2
p=2,46 v=47,-57
p=75,48 v=65,-49
p=17,95 v=-39,-79
p=68,68 v=51,52
p=25,66 v=-32,-85
p=100,63 v=-41,58
p=21,30 v=-33,-21
p=31,65 v=-69,-81
p=40,12 v=3,75
p=90,41 v=-30,-13
p=60,53 v=65,90
p=80,44 v=35,-26
p=26,21 v=-12,-52
p=28,56 v=-48,49
p=12,43 v=42,-56
p=71,13 v=-34,38
p=27,61 v=-50,-58
p=95,89 v=-24,-83
p=10,8 v=26,-2
p=14,6 v=-43,-84
p=31,44 v=34,95
p=40,14 v=70,-26
p=94,54 v=-62,-22
p=100,97 v=3,-15
p=8,95 v=61,-62
p=25,13 v=-50,-44
p=88,38 v=-62,15
p=7,15 v=62,20
p=49,92 v=82,-33
p=15,58 v=41,-99
p=26,75 v=17,-28
p=62,38 v=-38,46
p=86,59 v=10,-50
p=11,91 v=-58,75
p=94,98 v=79,-38
p=43,54 v=-3,-71
p=85,32 v=12,90
p=31,22 v=-48,74
p=96,70 v=56,49
p=34,33 v=-15,-35
p=3,38 v=-18,1
p=18,18 v=68,-11
p=58,42 v=42,-21
p=55,30 v=60,42
p=36,91 v=72,-28
p=31,9 v=55,-38
p=87,92 v=-4,20
p=88,70 v=56,-36
p=84,56 v=-97,29
p=83,29 v=70,-23
p=74,54 v=-32,-22
p=50,92 v=-92,22
p=33,85 v=34,-77
p=20,92 v=28,-38
p=32,51 v=68,-26
p=4,90 v=76,-27
p=55,93 v=-58,-4
p=89,44 v=95,2
p=92,85 v=-65,7
p=67,44 v=-23,66
p=55,33 v=93,-5
p=60,78 v=71,30
p=82,0 v=73,-38
p=67,80 v=88,12
p=98,59 v=87,-33
p=22,27 v=-37,19
p=70,70 v=-9,13
p=13,10 v=-98,88
p=84,29 v=77,-63
p=6,10 v=9,-42
p=25,94 v=-90,3
p=64,77 v=48,89
p=58,3 v=6,43
p=7,30 v=-43,-98
p=42,42 v=90,-33
p=8,82 v=-71,3
p=18,94 v=30,12
p=92,40 v=-23,49
p=54,13 v=2,11
p=47,64 v=-15,4
p=41,52 v=-23,5
p=52,40 v=61,32
p=12,43 v=-35,72
p=32,23 v=80,38
p=70,57 v=88,67
p=56,28 v=-97,55
p=31,50 v=-94,-18
p=80,44 v=43,18
p=69,100 v=27,34
p=77,38 v=94,-75
p=54,49 v=-54,62
p=51,62 v=82,-99
p=81,4 v=20,98
p=13,54 v=-37,39
p=95,28 v=-16,6
p=54,9 v=-37,-42
p=5,13 v=-58,-20
p=17,79 v=70,-10
p=12,0 v=85,-78
p=42,0 v=69,35
p=85,18 v=89,38
p=59,14 v=50,-78
p=23,41 v=-10,5
p=48,1 v=21,83
p=29,59 v=-65,-40
p=84,10 v=43,10
p=89,90 v=22,3
p=46,31 v=-63,-3
p=47,63 v=-61,27
p=90,11 v=75,-38
p=98,91 v=98,58
p=85,79 v=-87,-50
p=0,73 v=-39,93
p=41,47 v=-4,-40
p=5,60 v=-33,-80
p=23,49 v=35,-77
p=92,95 v=-23,-31
p=74,83 v=71,-23
p=70,88 v=31,84
p=91,64 v=24,-27
p=34,92 v=-25,-38
p=88,50 v=76,30
p=43,29 v=-69,-71
p=39,76 v=59,-35
p=96,85 v=-85,8
p=78,21 v=-68,78
p=51,15 v=-85,14
p=68,32 v=8,-39
p=41,62 v=36,-27
p=23,37 v=-65,-30
p=24,23 v=-12,-35
p=43,5 v=-65,-78
p=11,37 v=99,-81
p=97,100 v=16,-7
p=18,55 v=-56,54
p=81,35 v=-28,55
p=11,14 v=5,-43
p=95,25 v=-24,-12
p=9,72 v=43,-5
p=7,60 v=-14,-16
p=87,75 v=35,-90
p=18,50 v=91,81
p=91,98 v=-70,83
p=70,65 v=-26,-95
p=35,45 v=1,-72
p=49,45 v=78,68
p=87,69 v=-11,-76
p=23,71 v=-31,26
p=26,84 v=-31,44
p=62,68 v=44,14
p=13,46 v=-18,-52
p=98,11 v=79,52
p=12,55 v=47,63
p=25,59 v=-44,45
p=30,90 v=-63,83
p=5,79 v=-96,-24
p=6,97 v=-6,92
p=79,39 v=-75,-66
p=57,30 v=-1,94
p=29,31 v=91,46
p=23,83 v=-13,-79
p=72,6 v=25,97
p=21,43 v=-48,73
p=4,35 v=-58,40
p=67,83 v=-19,-81
p=9,22 v=76,-71
p=93,73 v=-28,-15
p=15,23 v=-73,78
p=66,12 v=-68,-3
p=77,80 v=65,-58
p=45,63 v=17,49
p=44,31 v=99,1
p=6,17 v=66,78
p=17,86 v=-52,-15
p=77,69 v=12,-32
p=36,45 v=-9,72
p=5,93 v=24,-64
p=10,96 v=60,-74
p=29,49 v=30,50
p=7,18 v=64,6
p=64,69 v=63,-37
p=14,5 v=81,-38
p=66,70 v=27,80
p=98,66 v=-81,31
p=12,84 v=-29,-19
p=86,34 v=29,-17
p=51,62 v=-78,-94
p=73,84 v=77,-79
p=41,49 v=-65,-49
p=24,12 v=-4,-25
p=88,76 v=-24,80
p=77,97 v=92,-96
p=0,9 v=-1,-34
p=57,101 v=28,-29
p=38,39 v=95,50
p=78,71 v=-43,75
p=51,15 v=47,-52
p=33,48 v=-2,-75
p=83,52 v=96,-31
p=37,48 v=70,45
p=99,64 v=-41,-9
p=97,68 v=-45,-18
p=97,93 v=58,21
p=21,76 v=-7,-82
p=100,24 v=-24,-65
p=14,98 v=-67,-5
p=18,14 v=22,-25
p=95,81 v=53,-99
p=3,12 v=-21,-93
p=17,21 v=68,86
p=77,91 v=-68,97
p=55,99 v=42,65
p=47,41 v=99,-89
p=57,13 v=-99,47
p=57,81 v=-76,66
p=73,84 v=-13,93
p=54,96 v=25,12
p=76,57 v=-68,27
p=65,2 v=-55,30
p=13,81 v=32,13
p=11,9 v=5,-47
p=40,41 v=55,-35
p=91,26 v=-5,-70
p=62,42 v=80,-30
p=54,26 v=44,20
p=17,92 v=7,84
p=97,10 v=-43,-20
p=61,68 v=-93,-27
p=5,76 v=-36,59
p=22,4 v=91,25
p=52,95 v=82,-11
p=17,78 v=33,20
p=63,20 v=82,-82
p=11,42 v=11,-98
p=75,5 v=8,-87
p=8,35 v=-39,-64
p=34,87 v=-29,-96
p=72,45 v=89,-60
p=73,67 v=-93,84
p=2,22 v=62,56
p=2,69 v=68,33
p=77,46 v=25,-90
p=77,39 v=40,10
p=82,35 v=-11,-24
p=10,11 v=87,-30
p=11,7 v=-48,47
p=47,37 v=-31,-69
p=87,21 v=35,-79
p=73,21 v=-33,86
p=18,69 v=2,-8
p=71,25 v=67,-88
p=64,84 v=-78,13
p=6,25 v=-43,50
p=8,36 v=47,64
p=56,2 v=-95,-42
p=19,92 v=-18,88
p=31,89 v=-27,97
p=35,55 v=-68,78
p=11,45 v=49,66
p=34,63 v=-44,94
p=38,49 v=-86,-31
p=37,0 v=30,48
p=88,38 v=50,-30
p=0,45 v=-41,-98
p=71,57 v=25,-32
p=50,51 v=-17,-81
p=75,62 v=-9,-26
p=62,3 v=80,-87
p=48,91 v=3,-71
p=42,20 v=45,25
p=2,78 v=98,88
p=59,28 v=-91,55
p=48,91 v=-61,43
p=73,56 v=72,85
p=6,49 v=22,-98
p=4,42 v=-98,-71
p=23,10 v=-27,-20
p=87,96 v=-36,37
p=31,102 v=-48,25
p=67,46 v=50,-68
p=51,93 v=23,-37
p=13,45 v=-35,76
p=75,22 v=99,-92
p=17,87 v=80,-19
p=42,94 v=-2,-69
p=31,78 v=34,66
p=14,60 v=19,24
p=34,7 v=55,-25
p=14,76 v=89,-23
p=80,46 v=67,95
p=38,80 v=-52,58
p=32,88 v=-88,-82
p=60,82 v=-97,-41
p=74,41 v=-44,-49
p=89,11 v=35,-61
p=40,81 v=57,-10
p=62,30 v=65,91
p=74,40 v=4,64
p=93,32 v=-5,69
p=8,38 v=-58,10
p=31,38 v=-66,89
p=28,42 v=38,-26
p=97,52 v=-20,-49
p=83,51 v=-67,-52
p=45,32 v=-84,-34
p=61,80 v=-13,-68
p=6,78 v=62,26
p=89,102 v=-85,25
p=24,78 v=54,-75
p=50,23 v=31,88
p=2,59 v=56,54
p=86,21 v=98,-38
p=98,90 v=-64,-64
p=22,23 v=-25,86
p=88,99 v=96,-42
p=17,40 v=85,26
p=42,13 v=-23,-74
p=14,90 v=95,11
p=47,45 v=-61,95
p=49,21 v=-59,24
p=65,86 v=86,-77
p=75,30 v=90,13
p=46,83 v=-99,35
p=90,38 v=-52,-84
p=8,42 v=-14,34
p=27,73 v=-23,40
p=17,3 v=9,-96
p=87,47 v=1,-80
p=43,58 v=81,-1

View File

@@ -0,0 +1,500 @@
p=50,78 v=89,45
p=65,96 v=88,-21
p=23,63 v=61,46
p=61,76 v=25,-67
p=23,90 v=6,91
p=1,47 v=-17,-9
p=84,56 v=-73,-24
p=78,66 v=-20,-76
p=49,59 v=-22,17
p=73,95 v=34,-64
p=99,76 v=67,-40
p=59,77 v=-49,-4
p=15,30 v=24,65
p=89,2 v=-19,-38
p=28,70 v=93,66
p=39,33 v=24,-42
p=14,42 v=-33,-49
p=68,85 v=-37,-47
p=91,0 v=-45,12
p=88,92 v=78,-24
p=19,63 v=-70,-10
p=69,4 v=-40,90
p=61,91 v=64,-11
p=47,95 v=-77,46
p=20,10 v=-23,-63
p=98,82 v=90,96
p=90,30 v=4,74
p=0,28 v=-73,8
p=88,102 v=51,-51
p=66,29 v=26,1
p=19,20 v=-61,-15
p=13,18 v=6,71
p=12,39 v=67,24
p=41,67 v=-24,-23
p=78,10 v=-59,-68
p=30,2 v=-35,85
p=86,47 v=-95,53
p=44,36 v=-69,-89
p=19,20 v=-87,-95
p=65,3 v=73,16
p=95,29 v=43,61
p=66,50 v=49,-69
p=28,92 v=-25,19
p=74,60 v=-6,-98
p=15,80 v=92,-27
p=80,12 v=18,-62
p=72,34 v=19,-65
p=46,75 v=33,-74
p=14,100 v=-79,99
p=94,97 v=74,49
p=46,13 v=-45,-61
p=93,39 v=-9,-64
p=100,45 v=45,-76
p=62,19 v=-76,85
p=18,85 v=30,-71
p=24,68 v=84,-73
p=31,20 v=-86,-35
p=76,46 v=-59,77
p=27,52 v=-95,77
p=52,81 v=1,59
p=43,60 v=-71,-38
p=59,38 v=-6,24
p=70,65 v=26,-23
p=11,40 v=60,-33
p=26,77 v=62,43
p=24,93 v=99,-51
p=46,84 v=24,76
p=48,30 v=58,-87
p=46,100 v=21,98
p=24,39 v=-23,84
p=25,6 v=47,-78
p=89,73 v=-73,23
p=4,49 v=-96,14
p=69,61 v=52,-10
p=96,68 v=-96,99
p=17,12 v=-30,75
p=91,47 v=-98,-87
p=50,38 v=71,67
p=68,58 v=-13,17
p=39,30 v=84,93
p=93,19 v=-66,98
p=31,7 v=-8,75
p=7,81 v=-95,-4
p=38,43 v=8,-89
p=24,21 v=-98,3
p=72,43 v=25,-13
p=4,98 v=-71,78
p=79,65 v=-91,-57
p=49,47 v=-97,23
p=37,7 v=-15,45
p=41,74 v=-15,36
p=58,30 v=-92,71
p=72,92 v=68,-7
p=1,79 v=-4,-75
p=82,99 v=42,6
p=62,51 v=57,63
p=10,43 v=48,-74
p=74,70 v=65,-40
p=25,35 v=-1,-39
p=50,71 v=37,68
p=51,84 v=67,55
p=71,25 v=-45,-98
p=47,14 v=-7,28
p=70,99 v=69,46
p=21,44 v=-94,-16
p=52,40 v=-83,-49
p=76,99 v=-71,63
p=21,92 v=-32,-34
p=78,27 v=-85,-55
p=42,92 v=-76,-61
p=50,29 v=95,77
p=72,10 v=65,58
p=92,48 v=20,-1
p=42,80 v=55,-98
p=69,96 v=41,62
p=68,35 v=-91,-45
p=18,56 v=-33,37
p=52,96 v=1,49
p=22,87 v=53,99
p=84,31 v=19,41
p=87,38 v=58,-13
p=9,13 v=-18,98
p=40,0 v=-94,-31
p=71,16 v=-62,76
p=41,88 v=-46,99
p=27,97 v=-15,-4
p=25,54 v=23,-36
p=61,0 v=-60,-21
p=28,75 v=41,-79
p=64,46 v=-8,34
p=97,26 v=37,74
p=32,67 v=-48,-93
p=18,81 v=53,-2
p=12,101 v=30,-1
p=80,40 v=-90,-16
p=48,16 v=-69,61
p=7,89 v=52,49
p=93,0 v=-35,-61
p=24,52 v=31,53
p=37,67 v=-98,36
p=92,77 v=28,46
p=76,59 v=-74,-21
p=96,63 v=58,57
p=62,2 v=-68,-68
p=39,20 v=-39,-25
p=5,12 v=60,88
p=75,35 v=-37,88
p=77,24 v=-52,-13
p=42,0 v=92,-72
p=33,61 v=-91,-6
p=10,74 v=23,-17
p=6,73 v=37,-54
p=76,99 v=2,-71
p=53,20 v=71,91
p=82,31 v=71,-82
p=20,87 v=-40,26
p=52,47 v=-45,-69
p=32,38 v=43,-55
p=8,85 v=-56,-77
p=11,0 v=68,2
p=40,30 v=-46,-72
p=26,53 v=27,-43
p=5,40 v=98,-90
p=46,4 v=39,-85
p=15,36 v=-95,87
p=0,4 v=-49,42
p=69,11 v=-86,-87
p=47,47 v=86,-17
p=95,88 v=-73,26
p=2,5 v=53,52
p=92,84 v=63,79
p=25,0 v=47,-35
p=83,55 v=-43,-46
p=95,43 v=-3,40
p=30,60 v=-79,-27
p=89,79 v=-39,-80
p=10,19 v=6,-95
p=70,64 v=87,10
p=51,93 v=79,-31
p=30,82 v=85,16
p=66,75 v=-51,40
p=79,70 v=-20,-20
p=59,60 v=25,63
p=86,17 v=75,-62
p=3,62 v=-18,-47
p=43,20 v=24,91
p=23,13 v=56,93
p=32,13 v=71,76
p=12,10 v=53,-28
p=20,86 v=-71,-74
p=91,90 v=-97,-75
p=76,66 v=-67,83
p=54,54 v=-84,64
p=66,70 v=-12,36
p=30,73 v=54,43
p=62,22 v=-21,31
p=11,92 v=-94,76
p=47,101 v=93,-25
p=37,21 v=96,19
p=93,51 v=20,97
p=46,31 v=-54,61
p=26,99 v=-64,-11
p=6,91 v=-55,-90
p=95,7 v=95,33
p=1,89 v=5,19
p=69,24 v=-83,81
p=82,37 v=-66,-92
p=20,66 v=-80,-77
p=45,87 v=-47,-11
p=19,77 v=8,1
p=61,12 v=-70,79
p=59,48 v=14,44
p=68,70 v=48,-37
p=77,94 v=42,-84
p=47,31 v=1,-32
p=22,1 v=-40,95
p=41,98 v=-53,16
p=38,49 v=48,77
p=21,98 v=-71,12
p=67,92 v=-13,69
p=99,99 v=-80,-84
p=50,18 v=-77,-45
p=71,35 v=-36,-22
p=61,65 v=-68,10
p=96,25 v=56,-21
p=77,65 v=-20,-40
p=56,81 v=56,29
p=81,19 v=-97,-15
p=31,12 v=-62,-38
p=92,83 v=51,-4
p=70,23 v=-44,45
p=55,61 v=-27,-33
p=9,48 v=99,40
p=20,36 v=-80,-52
p=83,46 v=-35,-59
p=52,43 v=58,-88
p=2,88 v=-49,-34
p=31,99 v=54,59
p=76,21 v=11,31
p=5,51 v=-27,35
p=57,88 v=2,19
p=86,41 v=-51,60
p=82,58 v=-98,-96
p=100,70 v=-38,-85
p=81,47 v=-10,-30
p=96,88 v=82,6
p=24,28 v=62,98
p=44,71 v=-69,-50
p=75,11 v=-99,-52
p=35,80 v=16,-37
p=2,21 v=-27,84
p=80,14 v=-43,98
p=49,76 v=80,21
p=84,96 v=-82,67
p=32,79 v=-95,74
p=35,81 v=-90,-68
p=47,45 v=-22,-6
p=69,45 v=41,-83
p=63,21 v=1,-92
p=57,1 v=-98,4
p=34,4 v=-93,-81
p=46,63 v=-99,47
p=8,99 v=5,29
p=32,27 v=54,-42
p=27,98 v=17,-98
p=63,22 v=81,98
p=75,36 v=-86,66
p=58,5 v=-67,-58
p=82,20 v=81,-57
p=82,67 v=81,83
p=58,58 v=17,-13
p=18,89 v=14,-21
p=76,63 v=24,65
p=38,48 v=-85,-99
p=17,34 v=45,21
p=77,70 v=3,-50
p=56,82 v=17,76
p=64,97 v=94,-71
p=16,40 v=37,84
p=29,96 v=-61,-7
p=12,79 v=-95,-34
p=1,72 v=63,38
p=0,20 v=60,68
p=43,60 v=-6,40
p=20,22 v=-17,58
p=47,49 v=-70,94
p=12,29 v=-25,-32
p=22,69 v=-44,-22
p=44,78 v=31,33
p=86,50 v=76,-19
p=0,92 v=35,16
p=42,8 v=-39,87
p=30,1 v=14,61
p=41,57 v=18,-84
p=83,82 v=-97,36
p=72,7 v=-78,62
p=17,4 v=-95,12
p=15,15 v=60,73
p=80,79 v=-59,56
p=49,76 v=-22,-47
p=58,82 v=26,62
p=59,101 v=-82,96
p=78,56 v=-97,-56
p=19,62 v=85,-44
p=21,4 v=61,-91
p=80,66 v=-12,-27
p=66,17 v=96,28
p=57,6 v=-45,-38
p=24,70 v=61,-90
p=4,12 v=68,-58
p=27,37 v=15,-59
p=10,66 v=-33,-50
p=22,64 v=95,-38
p=47,44 v=24,-39
p=96,28 v=75,71
p=95,20 v=32,30
p=38,52 v=-89,10
p=88,94 v=96,-6
p=93,31 v=-38,18
p=61,79 v=46,-3
p=22,27 v=-33,5
p=77,62 v=81,-60
p=63,13 v=-94,81
p=39,49 v=93,89
p=7,37 v=-2,-89
p=59,2 v=24,-58
p=82,32 v=-4,-45
p=28,55 v=-70,-13
p=36,49 v=-93,90
p=16,74 v=53,-20
p=56,69 v=-84,93
p=40,25 v=-93,-89
p=73,60 v=-75,90
p=28,82 v=-47,-27
p=35,67 v=-8,-73
p=76,17 v=68,63
p=33,43 v=1,37
p=5,7 v=-52,-34
p=79,49 v=89,60
p=78,59 v=20,57
p=96,31 v=-93,-50
p=24,88 v=78,-24
p=12,39 v=37,-16
p=60,15 v=-21,45
p=25,17 v=-40,-45
p=9,63 v=-42,13
p=46,48 v=8,1
p=16,85 v=18,48
p=36,45 v=-41,95
p=62,88 v=54,6
p=46,57 v=-99,23
p=57,67 v=79,-40
p=88,96 v=4,-51
p=82,19 v=66,-2
p=9,73 v=68,-54
p=66,38 v=9,74
p=40,68 v=-15,83
p=97,24 v=-64,-55
p=52,56 v=-61,7
p=55,15 v=-53,91
p=98,66 v=78,-47
p=27,46 v=-47,4
p=100,19 v=36,-78
p=5,9 v=6,82
p=63,35 v=49,21
p=40,101 v=8,-14
p=98,19 v=-74,-28
p=74,15 v=96,-65
p=53,47 v=-84,34
p=48,14 v=94,-98
p=69,2 v=3,-71
p=38,10 v=78,35
p=74,76 v=-90,-60
p=37,68 v=55,-70
p=52,78 v=-31,48
p=6,24 v=-73,24
p=77,51 v=38,94
p=73,45 v=-42,-72
p=52,57 v=67,-51
p=12,14 v=46,39
p=6,11 v=65,21
p=29,37 v=-54,-95
p=41,24 v=-85,68
p=78,102 v=96,-24
p=13,25 v=-16,66
p=8,53 v=6,90
p=77,6 v=26,-71
p=98,45 v=-95,84
p=56,15 v=-27,-83
p=82,98 v=-35,52
p=24,42 v=-8,-29
p=16,46 v=-78,-53
p=25,15 v=-34,-54
p=27,42 v=-11,-13
p=12,69 v=46,3
p=74,20 v=43,-9
p=25,85 v=9,-93
p=65,99 v=26,-1
p=90,78 v=74,36
p=41,6 v=77,-88
p=85,62 v=-43,93
p=34,61 v=33,2
p=0,65 v=75,53
p=40,30 v=48,-36
p=31,1 v=47,48
p=24,100 v=85,99
p=97,24 v=-76,-67
p=69,59 v=21,28
p=82,72 v=7,96
p=9,10 v=68,25
p=26,91 v=85,49
p=35,86 v=39,-24
p=38,35 v=48,-99
p=99,61 v=35,-61
p=79,86 v=-98,99
p=94,40 v=50,-22
p=47,101 v=16,72
p=53,61 v=41,-3
p=27,101 v=-48,89
p=28,82 v=15,29
p=83,58 v=58,-10
p=40,38 v=-14,-82
p=52,78 v=79,16
p=45,15 v=-47,78
p=72,0 v=81,64
p=72,51 v=-95,-32
p=88,67 v=34,70
p=89,72 v=12,-90
p=61,31 v=25,-92
p=68,53 v=48,70
p=47,53 v=94,10
p=15,53 v=-72,27
p=80,8 v=20,-37
p=28,66 v=-16,-17
p=77,17 v=99,-11
p=46,10 v=-9,-66
p=76,71 v=78,-78
p=26,62 v=-85,56
p=87,9 v=-80,-71
p=67,36 v=-67,18
p=99,32 v=-80,61
p=69,87 v=73,89
p=6,100 v=-72,-48
p=40,38 v=-93,-92
p=89,12 v=81,-92
p=85,97 v=-19,-88
p=22,100 v=37,-4
p=11,45 v=-33,34
p=43,32 v=6,79
p=47,102 v=-84,52
p=89,94 v=-84,65
p=75,14 v=-3,-11
p=11,65 v=2,46
p=76,59 v=65,35
p=65,60 v=-75,40
p=92,36 v=-32,-9
p=69,16 v=11,15
p=62,63 v=32,80
p=47,50 v=-30,60
p=13,98 v=-80,-98
p=32,82 v=23,-74
p=28,6 v=-92,35
p=72,89 v=4,3
p=72,57 v=-3,80
p=6,44 v=89,-1
p=33,19 v=31,-78
p=43,101 v=-39,78
p=46,51 v=-30,-63
p=24,37 v=-79,-82
p=51,46 v=64,44
p=0,36 v=13,-99
p=71,6 v=72,9
p=40,98 v=78,-81
p=36,33 v=96,-14
p=63,100 v=95,12
p=12,42 v=-41,87
p=66,48 v=-52,77
p=5,77 v=36,23
p=94,54 v=80,24
p=77,71 v=-50,1
p=81,20 v=89,-85
p=9,13 v=-95,42
p=13,78 v=71,20
p=36,43 v=-21,88
p=56,94 v=87,69
p=91,53 v=21,57
p=80,84 v=-74,-44
p=19,90 v=-87,96
p=13,83 v=-63,-51
p=14,91 v=5,56
p=23,1 v=-72,-15
p=50,44 v=71,-73
p=6,49 v=45,67
p=4,0 v=-9,-91
p=70,8 v=-98,45
p=30,42 v=-78,61
p=87,74 v=-97,26
p=35,89 v=92,-32
p=23,61 v=94,41
p=87,21 v=-82,28

71
resources/2024/day15.txt Normal file
View File

@@ -0,0 +1,71 @@
##################################################
#O.O.O.O.......O.#O...O.OO.O.#..O..O.....OO.O....#
#O.O.O..O.OOO.O......O..OO..#O.O....O.O#..O..OO..#
#.O.O....OO.OO.....OOO.......O............OO.O...#
#.......O.#.OO..#O.O....O..OO.O..........O#..O..##
#....O...O.....O#....O.O...#.O.O..O..#....#.....##
#.O.#.O..O.OO.O.O.OO..O#..#O...O##....#.O.O..O..O#
#..OO.##O..O....#.OOO.O#O..O...#.O..O.O.OO..OO...#
#.#......O##....O.O..O....O..OOOO......O.#O#...#.#
#.......#O.#....OO....O....OO....OO#.#......OOO..#
#.#..#.O....OO.#.......OO........O.O...#..OOO...##
#..O..O...OO#.......O..#O...#..OO..O..#.#..#..O..#
#O#...O.#O.OOO.O..OOO.......#......O#O.OO...#...O#
#.#O.#...##O.OO..###.O..O#..O...OO..O.....OOO#.#.#
##........O.#.O......O......##......O..OO...O.O..#
#......O.OO..O.......O...O.O#O.......O...OO.O..O.#
#.O....#.O.........O.....O......OO....OO.OOO..O#.#
#..O#..O....OOOO.O.O......OO....O.....O#OO..#O...#
###OO.O.....OOO.....OO#.....O....OOOO.#..O#..##O.#
#.O.....O.#.#OO.#.O........O......#O...#...#.OO..#
#..O..........O...O.#.#.OO#............OO#.#..O..#
#......O.....O.O..O..OO..O...O....OO.O##..O.....O#
#O#.#..#..O...O#.##O#.O#..#..O.OO.........OO..##.#
#..O..O##OO.#.#....O.#O.......OO.O....O.O.O..#...#
#OO..#......#.##OOOO....@..OO.O...O.O...OOOO....O#
#..OOO..#...OO..##O.O...#.....O...O#...O.O..O.#.O#
##...OO........O.#..#......O.O......O..#.O.....O##
#...#....O.#..OO.O....#.O##.O...#..#O........O..O#
#O.OO..O..O.#.O...O..#O...O.O..O....O.O.O..O.#.O.#
#...O...O...O....O...O.O....#...O.O..OO....O.O..O#
#OO#.#O..OOO.#O.O..O...O.OO..OO.......O.........O#
#...OOOO.OO#........O.#.....#.OO.O...O...O....OO.#
#O.O..O..OOO.O...OO.....O..#O..OO......O.......O.#
#.O.O..OO#..#....O..............O.#..O.....O.O#..#
#.O..OO.......O......O.....O.O#O.#..O.O#.OO.....O#
#........OO.O#..O....O.......#O......#O#O....O.OO#
#O.#.#O.....#..#..#.#..O.#..#.O.#O.#.O.O....O#O..#
#O#....O.....O.#.#OO..O..#OO....O....#O.O.....O..#
#OO#..#.OOOOO.......#....#.O#..OO......OO...O.#.O#
#.O#...O.........O.O.....O.O..O..O..OO......OO...#
#..O..O#O.O.OO.....OOOO.O...OO.OO#O......O#..#.O.#
#OO.#OOO......O..#OOOOO#....#...O.#.O#...OO.O.O.O#
#.O.O#....#O........O..#O.O....O......O.OO...#..O#
#.........OO..O......O.......O.##.............O..#
#....#.O.OO.O.....#.OO.O..O#OOO.....#.O.O.#...O..#
#.OO.............#....OO.#OO....OO#....O....OOOO.#
#O.O.O.........O#..OO.......OO.O..#..O..O...O.O.O#
#...OO...#O.##OOO....O.....#..O....#O...OOO#O.O..#
#.O..##.OO....##.....#.....O.....OO.O..#.#OO#OO.O#
##################################################
^^<><<^<^^>>^v>v<<><<^vvv<^<<^>^v<<vv>v<>v^<vv^^>^^^^>><^v<v^>v<><<<v^^v^^v^><>^v>^>^>>><v^<vvv^v><vv<><<v<v>^^<vv><^>^>^>>^>vvv<<v<><^v^vvv^v>>^^^vv<<<^^v>vvv>v^<>>vv<v>^<<<>>>><>vv<<^<v><<^>^<^>>vvv<v<^<<v>><^^>v^^<<>v>vv>v^^<^v><^v^^^v<^v>>vvv^v^vv^^v^^<v^<^v>^v>^>v<^^<><v<>^v<^v<>v>^v<<^^<vv^^^<<^v>>^><<vv>><>vv^<<<v<v>>v^^^>^^v^v><v^>^^<^v^vv^^vvv^^<^>>^><^<^><<>^^><v><>>^v<<^<><><^^^v^><<^v^><><>^v^^>>^v^v^>^><^>v^v^>v<>>^vv^v>^<>>^v<>^v^<<^^^vv<^v^>v><^>v><^<>^>^<^><^vvv^vv><><<^<<><>>^<^v<>v^<>v>^^v^^><v>>>v^>>v>vv<^^^<^<<^<^vv^^>^<v>v<<^v>v^v>v<><^<>>vv^<>^<><v>v^vvv<<^v<>v<v>vvv^^<<>^>>>>^>vv>v>><<v<<^^<<vv>>vv>>v>^v^v^v^v^^v>v>>v><v<>v<^>vv>^>^^<^^><>^^>vv><v^v<<^^^^^<^^<v<v><v><vv<<v<v^vv><<^<v<><^>>>^v<^>v<<<v<v^<<^><<^>>>><^>>^<^<>^^v<<^<<v^v^^^^<><^^><<<v<>^vv>^vv^<^^^^^v^>><><vv^>^^<^<>>>v><<>v^v>^>><^^^^v>>>>v^>v>v><>^>>v<<><<v<>vvv>^<>>v<<><<^<><>^<<>>v<>>v>v>><<<vv^^^^^<><<^v<v<<>^<>^<>^<v<<^v<<<v<v>v<^<vv>><>>vv>><<^<^v>^^>v^^^^v>v^v^v^<><^<>^^>v<<><v^^^<v><^^v^<^<v
^>^v^v<>v>^>^vv<v>^v>v><^>^^<^>^^>v^^v^><>><v^^^<v^v^<<<<>><v^>v>vv^<v^vv^<^v<<v<^v>v>v><>v>vvv>^>>^vv^^>>^vvvv>>v><>^^^<>^<v>v>>^v><v><<^<^>v<^v<<^^v<^v<<^>^^<^v>^<^<v>v^v<><><v<<v>^<v<^^<v>v<><v>v>vvvvv>>>v>vv>><^<<>v^>>^v<>>><>vv^<^<v^v>vv<<<v>^^<v^^>vv>vv>^<>>v^<v<<v^<^v>^<^^<v^<<^>><^v^>v^v><v^^><^v^<^>^>vv^vv^<<v<^^>^>v^vv<^>><^<<<>^v<v>^^<^^^>>vv^><^v^<v^^>v>vv^>v<^vv>v<>>^>^v><vv><>^<>^vv^v<^>v^>><vv>^>v>>^>><>>>v<>^<v<<>v^<^<>^>>v><>v^v><<v>v>><vv><<>v<^vv<>^v<><^><^v>^^>v<>v^<>>v>v^><vvvv>^^>v>^^^^<v>v^<v^vv>^>>^<>vvv>>>^^<<<v>^vv>>v><^^vv<v>v^<vv^^^><<^<^>^^^<<<v><v><^>^vv^^><v>^v><>^^^^<>>^>>^<v>>^><<>^>^>^^v>^vvv^^v^^>^>^vvv^<vvv>^vv<>>>^v<v>v<>^vv>v><>vv<>^vv>^<<<<v^v<^<^<<^<^^<>>^<^v^vv>vv<<>^v<^^^^<^^<^v>^<>^>v<>><<<>><><v<v><^<v^>><<v>v>v^<<^v>^^<>^v><<v^^<v^<^^<><v^^^>v<<^^<>v><<>>^^^>v^vv^^^^^v><>^^>v<^>>^v<<v<^^v^v<^<>v<>vvv<v>vv^v<<v>vvv>v<>^^<vv>>v>^>vvv^<^>>v^vv>vvv>v^>^>>vv<v<^<^<vv^v>>^>><><>>^<v<<vv^<<<<<v^vv>vv<>>v<^>><v<v><^v^^^v><v^>>>><<<><>^<<>>^^^<v<<^^>
>^v>vvvv<<><^<^><<>^^>^>v>>><<>>^^^v^^<vv><<v^^><>^<v><>^^vv><v^<<vv^<v><>><^v^><^<v^v>v<>^<>><<^v>^^v>^^>vvvv<><^<^v>^<<>>v^v>>^^^<^<^><<<^v^v<v^<<^<>>v^^^>^v>>v^^v>v<^>>^v^v^<>^><<vvv^^v<^<v^<^><^vv^<><<><>>>^^^<>vv<^>^<>^><^>v<v^<<^>^^v>^<>><^^>^>^>^<^>><><<^<<v<<^v<v>v^v^><v<><<<>^^v><<<<^>>^^>><>vvvv^<<>v>v^^v<>>v><^<>>^v<^^vv^^vv^^>^<><<>^<<^>^>v<><>^<vv>^^^<^^><<<^^>^<>vvv<<^>^v<vvv><v<v><<><<>>>^<^^<vvv^v<<><>vv>><v<><^<<>vvv<>^<<>^v^>^<v<^<v>^<^>>^^>^<<vv<>vvv<>^^>v<v^><v^>^^v>^v><>^^^^v^<>^><^<>v^>^vv<<<>vv>v>^^v>v<^>^vv>>>>^<v>^vv<v^v<^^>v>>>>^<<>^^v<<^v<vv<^^v^^<v<>^^<^vv<<<<v>vv^^^^^<<<><>^v^vv<v<v>^^<<<>>v^<>><<^><><<<>v>>v<v<<^<vv>^^v^v^<><^v<>^<vvv^^<v^v<^v<>^<^>vv<v<<<^><><<v>^<<vv<<>v^<>v>v^^><^<^>>v>^^<^><^<<^^^<^^v^vv<>^><^<^^^^^vv>v^<^^>><^v<^<><<^<>^vv^^<^<v<>^vv^v<^^>^<^>^^>><><<vv<^<vv^^<v<^v^<>v<<v^<^><v^^^^v><v><v>v<^<^><v<v<>><<^>>^>^<<>v>^>^<^^v<^<<vv^>>^<v^>>>v><<<v>>v><<^v>>v>>^vv<<v^>^v^<><><^v>^>^^<v<^^>>v^v<>>v><vv>><><v^v^<vv>^<v^<^^>>^<>v^>^^<vvvv>v><
vv^^^<^<><^^>^><<^<^<><v^<v<vv<<^vv^<v<<<>vvvv^<<^>>>vvvv><<^<^>v^v<vvv<^v>vv^>^><>>vv>v^<^^<>><v<^><<v^><><^v><<^>>>>><v<>^>>>v^^>^><v><><^<^<^v<^>^^<>^<<^^v^><^v<v>>>^<v^<vv<^<v>^^><^v<>>v<>v^^>^^^v^v<>vv^<^>>vv<v^v<>v<>v><v^^>><v^><>v<vv><>^<^^<v<v^^^v^^v><vv><>>v^>v<><v><^<<<vv<>>^<v^^^v>v<>^>v<<>><^^<<<v^<v>>v^>^>^^v<<^vv<>^v>v^vv<<^^^<v^<>v^v<v^>v<<>v><>>><<><>>v>>v<>v^<<v>^vv<>^^>>vv<<<<><<><<vv>^^<>vvv^^v<><v<v^<>^vv>^>^>^><>>vv>^v<<^><v>vv^>^v<<^<v<<v>^><<<^^^^><^>>>>><<^<>><^^vvv^>^><^>^><>>>^<<v^^<vvv<vv^>>>^>>^^>vv^><>>>>>^<>>v<><>>>^<^<v<<^><v<^<>v>>v>>^>>^<<<<<<><^^^^^<v>>>>^^>><^vvv^v>^>^><><<>><>>v>vvvv^v<^vv><v><v^vv>v<<v^>v^<>v<^^>^>>>^vv>v^><^^^>^>^>^v<>v<><v<><^^vv<<^vv>vvv>><>^^^^v<v<vv<>>^^v<>><<vv>^^vvv^<^<v^^<>vvv^<<^v^>>^<^^>v^v<v>>>^v^>^v>v><<v<<<^v^^>vv<^^v^v<<^^<><<<>^<^<<^<^v^<>>^<>^^<<^>v<v^<>^<>>>v>^^^^<>^^v<>>^<^vvvv^v><<^>vvv<><>>v<<<^^v>>vv<>^^<<>><<vv<>>>>><v<^v>^<vvv>v>>>><<>^v<v^><^<v<<^<<>^><^<<v^v>^v<>^<<<<v>>v^<vv<><>^^<^v>^^^<^^>^^v><<<<>>vvv^vv
>>^v^><v<v>>>>vvv<^v^^><>>>vv<>>^^^><>><<^v<v<vv>v^>><v<v<v^<>>^><^^>><^>>^<^<<^^v^^^v^v^<v>^^<v^<v^v<v>><^>>v^>v<v<^><>>v<>v<>^><<^v<>><^^v<<v^<<><^^<v<v><><>^^>^<v^vv>^>^>>vv><^>vv<>>^><><>^v<^^vv<^v^<v^><^^><v<v>^vv<<^>^<<v>^^v<^^>>^<<vvv>v^v<v^<<^>v^<^<v^^<vv><^>^^v>v<^<^>v><^^<><v^v^<<^<<v^v<>^^<><^^>^v>v>vv^<<>^vv>v><>v<vv>v<<vvv<v<vv><vv^v^>>>^^>^<<<^<><v>><^<v^vv^v^v<><v<v^vv>v<^>v>>>>^v<>^>^<v^^^vv>^v><<>^>^v^>><><>v^<><<^>>v<>^><<^^v<><^v>vv^<>vv>^><v>><>v>><^v^>><v<v>^v><>^<>><<>>v^<v>>v<<^v^vv><>^v>^><^vv<v<v^^vv>>>v<^>><^v^>><>>^^^v^><>>v^v<<><><><><^><^>^^v^^<<v<<^<>^^>>v<<v^<^<^>><^>>>v^^v^vvvv><<>^<^^^v<^v<<>v<<^>v^<^><v<><v^v>>v<^^v>>v<<v>v>><^^<^v<>>^<<<<^vvvv^^v^^v<>^>^^<v^<<^^v^>>^>>v^vv<<<<v>vv><<<v><><v>^v<v>^>vv^vv^vv^v<<v^><v>><<<v^^v^<>v^^>^<vvv<^v>vv>vv<>^>^<<><^><>>^<<><>^<v^<v<>vv>^v><v<<v<<vv^v<<>>^^v^^vv>^<v>^^^<^^^<^vv<>><^>^<<<^<^<vv>vvv<v^<>v>><<^^>vv^v<^vv<^>^><^><v^<v<v<^^<<^>v<<^v>^<><^<^>^vv<<^>>^<v>^>v>>vvvvv^><>>^>><>>v<>vv<v<<v<v<^<^><<>><<^^vv^>
vv<vv>^<^v^>v^>v^v>>>>^><v>>>><<^v<<vvv<v<vv^^^><v<^v^>v<^><v^^^^>^^<^^><<>vv<v<v>>^v><>vv<^<^v>v>^^vv^<v>^><^>^^>^^^^><<v<>>^vvvv^><>^v>>^<v>v<>>^<<<v^v>v^v<>^>>^^><><<>>>><v<vv^v^<><v^^>v>^>><<<^^>^<><^<<v>v<<<^>v><^<>v^^<>>><><^v^<^>v>^v>>v<^vv^>^>v<>>><v>^^^<v<>>^v<^><><^v>v<v>v<<<vv>vv<v><<>>>vv^<><^^<v>^>v^vv^<<<<<><<^v<^>v<^<<>^>>^^v>v>^<v>>>^v>><vv<vv>^>>><^vv^v<>v>v>^<<^<^<^>^<v<v<v<v<v<<>^>>>><>vvv^<v>>^<<v<<><><^>^><^<>v^>^>vv<<<^vv>^v<>v>v><>>v>v><>>v^>^<<^>v><vv^>>v>v<v><^>><>>^><^v<v<>>><v<^^<^v^v<^v<v^v^>>^^>^<>^<^vv<v<v>>^>>>>^<^>><v<v^<<<>vv>>^<v^^^v>^>>>vv^^v>>v>v^^<^<<v<v^^<<<>>vv>^^>^<<vv<>^<<<^vv><<>vv<>>>^<v^^^v^<>^<<v>v>>>><^>^v<v<>^>vvv>>v>^^><<<<<^<^>>vv<^^v>^vv>^v^v^>^<v<<<^v<v<>v>v><v><v>>^<^>>^vv^>vvvvvv<^><v<v<>^>vvv<v^v>^v>^<v^>^>><v>vv^>v><<vvv>^v^>v>v<v^>^v<^>v>^v<<<>^>v<<>vv<^>vv<^>v>^<v<^<vvv^>^v<v<vv<^^>>><<>><>v<v<v>^^^>>>^<<>vvvv>^<^v>><>v^<^v>><^v<<v^v^v>vvv>>v^vv<<<vv>v^<^vv>v<>><v^^>><<^><<>^^v^^><><^^>>v<<<<><>^>v^^v<>>>v^v^v><<v<<^>>^v^<<v>v^<v
v^><><<><<vv^^><v<^v^>v>>vv>v>v<<v<^v^>^v^^^><v<<v>>v<vv^^v^vvv>v<<^^>v^v<v>v^^<<vv<><vv^vv>^v^<^>^v><>^^<>>^v>^vv^<^v^^<^v>^><v>vvvvvvv^<v^<v>^>^>^^<>><>><v>>>v<^^v>v>>v<^<>v><vv>>><<v<^<>v>vvv^>^^vv<^><<>v<v>>^>^>^^^><<vv>>^v^>v^^>>v^<>>>>^^>^><^<<>^v<^^<<>^^><<^v>><^v<^^vv^^^<<^><v><<<^<^<><<>><^><^>v>^^vv>^<^v>><<v^vvv^<^<v^^<<v^^<<>>>^^v^^v<<v>v><>>v<<>^v>v^<^^^<>^<v>>v<>^><v>>>^<v^>>vv><>v><>vv<v^^^>>v^^v^>^>^<^^>>^^<<>^>^v^v<v>>^^^<vvv<^<>>>vvv^><>><^^<v^^v<<vv^v><^>>>vv<vv^>><vvvvv>^<v^>v<><vv<>^><<^^^^^v^v<><^<>vvv<><><^v<><^><><^vv^^<^<^vvvv<><><^><vvv>v<<>>^^^<^v^v^<>^<>^>>><^^v^^<^<<>v>^^^^vv>^><^^>>^>vv^>v>v<>^^^^v^^>v>vv^<>v<v<^v^>>><^vvv>>><vvv<^>v^>^v^<<^<^^vv><v<>v<^v>>^<>v^>><>v><^>><>>v>><^v<^^vv>v^<<>^^<><<<>>v^<>v>^v>>v^v^>^>>^^><^><v<<^<>v>^<v^<><vv>v^^<^><^vv<<vvvvv^>>^<v<v>vv<<v^<<>^^vvv^>^v<>^^>^<^>v>^^<v^<<<>vv>>>>^v><^>>>>v^<v><>^v<v><>><^v<>v>^^v^v<^v><<v<<v^v<^<<^vv>>>>v<vvvv^<v<>>^>^vvv^<><^>^vv<<<vv>>v<>^>vv^>v^<<>^v^>^<<^v^^<^<v>>v><v>>^><^><^v>v<>v^v<<<
>^v^^<<>v^v^v>^v>>^^^vv<<>^<^v>^^v>v<^<^vv<><<>>>v<<^<>>^<v^>><<<<<^^<>vvv^>v><>>><vvvv>vvv^>>v<>>^<>^><^><<<^<<<v>v^^^^<v<^><>>^<>v^<>^>>>vvv^^<<v^v<<<^^><v^>^v>><<>v><^v^^vv>v>v^<<<v<vv><v^<v<>>v^^^<vv^^<<>^vv<>>v>^<<>>v<^<v<vv<^^<><v^v^^<><vv>^^^v<>^><>>^<>v^<<<v^<^<>v^<>v^v><<^^v^vv<<<>^<v>^>v<v>^vv<vvvv>>><>v>^<^><v^v<>v^><^>>>>^>^v><>^<^<<>v<vv<>>^v>>^v><<^^vv^><>^<<v>^>v<>^^v^<>vv^v><^v>><>^<><v^^^><^>>^<v<v^^^v^^<v>^^>><><<<>v^vv^>^vv<<>v>v>>v^v^>vv<><v<^>v^^<v>v<^v<<v<v^>>^^>v<^v>>^^<^v><^v^>^^^v^<>v^^^^<><>>v<>><<><><<>>>^>><>>v^<<><vv^<v<v^v>^v^<v<>^v<>v>^<v>^^^v^v<>vv<>^v>^v><^^^^>v^>v<>^vv>>v>^>><v>vv>^<<>v^>^>v^<^^^>>^^<v<>^>>v^v<<vv><^v>>vv<>v<v<^<>v>^><<<^v><>^^>><v^>^>^>>^vvv^v<<>><^<^<v^>>v^^vvv>^^<<v>>^v>v<<vv>v<^<>v<>>^>v<^^^v>>vv>v^^v<^^v>vv<>>v<v>><>v<v<>^>vv>^^<<><<<v>^<^<^^<><><v>v>^^vv^v<v<v><<^<^<>v<><^>^><>v<v^^<v^vv^v>>^v^v<<vv<^v^v>^^v^<<<>v^^<<<v>^><^>>>^<>>^v><><^vvv><vvvv>^^^<><v>vv<^^v>^^^<vvv<^^<v>vvv<<<^^>>^v^^><<<>>^<^>^<^v>>>>v^^>><v<>><^>^^v<vv^>^^
v<>>>vvv<<><<vv^^v^<^<v>>v<vv<v^<<>vvv<<<<^^<<^>>>v<>^<>>vvv><^>>^^<<^>>^>v^><<><<<v^<^v><v^<>>v>>vv<>^>>^v<<vv^<<<v>^<^^^<<<v^^><^>vv>vv<v^<^v^v>v>^>v<v>^^v>^>v>vvv<^>v^v<<^v>>^>v^>v^<^v><v>><vv<^>>vvv<^v^^<<v^<<<^><^^v>>^v<vv<<vv<^^^><v^>vv^vv<<>vv>v<^><<<<>>v^^vvv^^>><^v><<>^v<^><<v^><vvv><>^<vvv<>>><v<><<<><vv>><<^^^v<v>v>^<><>^><v<^<v>>vv<v^^^<vvv<^>^<v>>^v>^>><<<vvvv>>>v^^<>>v>^^><v^><<>>>^^^<vvv^^>vvvv<<^^>^<<v<^^<^v<>>v<^><>^<<>><<>v<v^^<<<<>>^v^vv><><v<^<^>^v^vv^><^v><^<vvv^^v><^vv^><^v<v^^>^vv<>v<v^>>>v<vvv>^><<v^<<v>>v<^<v><<<<<<<>>^^v><v^^>v>>^<v<^^<>^<v>v^>>v>^v<><^v^<<^v^vv<^v><v<^<<^v^<<>><><<<>><^vvv^vv>vv<^><^>vv<>v^<><^<<v>^>v>^^v<><<><v^<^>>>^v<>><v^vvv>^><^v^^^>^<<^<^<v<>v>^^><<^^v^^^^v<<>>^v^<<<><><^^>><>^>>^^>^>v<^^>>^>>v<<vv<v<><><v^<>>v<v<^^>^<vv^<^>^<^v^^<v<>vvv^><^<<^^<v^>>^^^^^v>v<v<>v>><v<^>v^>^><><<><<v^<v<<^<vv<<^v<^>^^<<v<^vvv^^^^<>v<^^>><><^v<>><^<<^<^<^<<><>>v>^>vv>v^^^<^^v>><v<>^>v><^<<vvv^^><><v^<^^^>>vvv^<<^^<^>>>>^v^<>^>>>v>v>v>>v^^><><>^>>><<>^>>>>
<^>^^>>>^>^>>v<v>v>^<><v>^<vvv><^vv>v<>v>^>><^v^^^>>^^<v>><v><>v><>^v<^^>>^vv<v<>^<v>v>^v<<<^^^>v^^v^<<v<>^^^><v>vv<<^^v>v^^<<>^<^^><v<>^<>v<v<>^^><vv^^^>^v>v<>v<<v^<>^vv^v^^>>^<vv<^<<v<>^<>v>>>^^^>v^><vv>^<>vv><<<><<v^v<>^<v>^<v>v^<^<<^^>vv>v>>>v^v<>^>v<>v><<v^v^>^><><^vv<v<>vvv>><<v<><<^>^<^v>vv>^^<<<>^<vv^<^v<<v^<^>v>^>v>vv<v^<vvv><>^v^<^^>>>^>vv><>>^><^><><><v<v^<<v>vv^v>^>v<^v^v>>><<vv<^<v^^^>>^^^^<<<<>^vvvv>>^<vv^v^<<^^<>v^<v<v>><vvv<<^^^v>v>^<^>v>>v<v<^v<vvv<>>v<v<v^<^^<>^<<<v^><^>>>^v^vvv^>v>>v^>>>><^^^^^^<vv^>^<>vvvv^^<<<v^<v<^v><<>^^v<><v>^v^<v<<><>>^v<^v^^^>v^>^<<v^^<<<^^vvv^<v>^^<>^^v^v>^vv>>v^><^^>>>>>v><<^><^>v><vv^<<<^>^^v>v^<<^>^<v>>>>v^^<>><<<v<><^<^<<<<v^^^v^><v>vv^<<><<>>^v><v>^<^>>v^>>>>>v^^>>^<^><v>><^<^<<>vv>v<v><v^<vvv>>v<<>>>v><^v<^<<vv<vv<<^^v<>^<vvv<v><v>v^><^><vv^>^^><^^v^<>>^><^^^>><^<^<^<v<<<><vv<>^<vv<v>v<>v>><>v>><^>>>>><<<v^<^v^^^v<v^v>>v^^<^>v^<>^>>>><^^^>vv^<^v>^>^^>^v^><v>^^^<<>><^<><^^<v>v<v<><<<<<>^>>>^<<>>^vvv<>v><^<v>v^>^<<^<<><>>^<<^v<<^>>>>^>v>v
v<><<^v<>><<<^>vv^<^^^v^^^v^^^<v^>v^^^^>v<><>vv>^>^<vv<^v>v^>vv^v^v>^<<vv^<>>v<<^<>>>^><vv>><v^><<vv>><^>^^<vv^><vv>><^vv^^^>^v^<>^^<>^><>^>>^>v<><^vv><<^>v^<<^^<v><v><<v>>^^v<><^^^>^<<^vv><>>^v>v^v<vv>v^<>>>^v^<<<^^>v^v<<>>><vv^<v^^^>^^^v^<>v^v>>^^>>v<^^vv^>>>^>>v<>^^v<v>>>>^<<^^<v^<><^>^<^v<vv<^><^>^v^^><v><<<<>>^v>>^^>^<v^<<v^<>vvv>><<<vvv<^v<v<v^<v^<^>^^>^>>v>vvv<v^<>v^^>^<^>^<<<>^v<<><v^v<^^vv><v^<^>v^^v^v^v<<^<><vv^>^<v^^^>>^<>v<v>><^>^<>>v>v<v>>^^vv><<v<>^>^v^<><<vvv<<<<v^>^<vv<<^^v^><<v<^^^<^vv<<v>v<>>>v<>^v<<>^<<><>>^vvv>^<<^>v>^vv^<<<<vv><v<>vv^>^vv^vvvvv^>>^^><v<<>vv>vv>^<^><vv<v>^^<^<v^<vvv>>^>v>><vv><><><v>vv>^<^vv^v<vv>^^vvv<v>^>>>v<v<<^^v>v><^^<v>><>^v<<v><^v^<vvvv^<^^^<<>vvvv>>v<v<>>>v>^^<>v>v>^<<>^v><v>v<^<>v<v<<vv^^<>v<v^^v<v<<^^^^>>>^>v<><>><^^^>^v<v<><<v<<^^v<<<v^vv<vv>><>><>^<^<^<<^>>v<^<v<>v<<vvv^^<v>v>^v<^v>^><<^>^<<<>>>>vv^^>v>vv^v^<>v^v^<^v<v<^v^><^^<<>>><>v>^>^<v^vv^v>^>^<>>><vvv^v<vv<v<^^v>^^<>^>^<vv^><<>^^><v<<<>v>v<>^<<>>>^v<<^vv>v><>^<^>^>>v^<<>><<>><v<^<v
<<^<<v^vvv^^^>><v^^<^^v^vvvvv<^><v^^><<<>^<<^^<v>>vv>>^<>^>>>^<>>^^^<<>>^^>v^v>v>^v<v<>v^v^><v^><>>vv<v<<><<^v>^^v^>>>^>^v^v^>v<v<vv^<<>v<v<v^^^^>^v^^<^^vvv^<v<v^^><<>>^>>^<v^<v<^<<^<><v^^<>v^^<<>^>^^><vvv^><^vv^^<v^v^^>v^v^<v><<<^>^>>v><v^v>v><v><v>^<v^v<^<<<^<vv<>><vvvvv>^<^vv^^>v><<^^<><^<<^<vv^v><>v^><^^><^v><><v><>^v>^^>v^^>^><v^<v^<^vv<v^^>v^>^^v<<v^v^<vv^^<vv>v<>v^vv<v>v>>vv<><v<<vv^^^v^<<^<v^v<><v>vv><<^<v<^^<>><<v^^v^<v<<<>v>vvv><>^>>>>>>>vv<v^<^>^v^^<^<vv<>>v>>>^v^^<^v^^v^^^vv<>^^^<>v^>vvvvv><<v<v^v>^<v<>><^vv>^>vv^><^<^^v><^v^<v^vv^v<>v<v><^>>^vv<><>^v<>v^v^vvvv<<vvv<>>>v<v>^v^>^>^v<^v<^<<v<<^^^>>^>v<><v<<<v>>v^<v>^>>^^^vv^<<^<vv<vv><>v<<^><^^vv><^vv>>^<<vv<<vv<>vvv<^<>^<v>^^^^>>><^v>>^><<^<<^>v>^<<>>^^^^^v<<^>^^>^>>vv>vv>>^vv<><v<v><<^<^^^vv^vv>v^>^><>>v^^<<<v^><v^>^v^^v<<v>^>>>>^^vv><<v>>^^v^^<<>^<><^>^^<>^v^v^><^<>>v^^vv<v>v^>^^vv>>vv>^<v<>^^><<>>v^<<^^<>>>^^<>v><^<><>^><v>>><^^>><<<^^^^<<>^v<v>^><<vvv^>v<^^<^<>v^<v<v^>>>>^<<<v^>^><><^>^<>>v<^^^v^^^<<^v^>^v<v<^>>^v<^<<^v<
>>><vvv>v>>v>vvv<^^>^<v^>>^^>>^<>^<<^>^<>v^<^>><>^<^^v^v>v<<>v<^^^><>v>>^^v>>^<<v^<v^^<><>^v<v^<^v>>^><^<<>>>^^^^>v>v<<vv<<>>>>^><v>^>v>>>^<^^v<>vvv<>>>><^>v^>^<>vv>>vv^<v><v^v<<^<>^>>^v>^<<^v>^vv><><>>^>^^vv<<v^^^>vv<><v>^v>^>><v^v<<>v<v<<<<<^^^<^^<<<>v><^><v^^<v<>^v<>v^v^>vv>^^><<v<<>>v<><<>v>>v>><vv^<><v<><v>v^<^>v>>>>^^v^<v>v>^<>v>vv^<><^<>v>^<>^<^>vvv<v^vv<^^vv^^vvv^v<v>^v>>vv<><v<<><<<^<<^^vvv^^^><vv<>v<<^><^>v^><><vv>v<vvv<>v<^>>><<<<<^v><<v><><vvvv<^^^^v>><><>><^<><<vv^>v<v^><<<v<>>v>><>vv<><<^^<>^^>v^<^<<>^<v<<>><v^<<>>><vv^<<<<^v>>^<<<^<v<v<<<^^<v>><^>v^v>^^>v><^<v^v<<>^<>^^<vv<^vv<<>>>^<<<>v>>^<v<^<v<>>^^><<<^^^^<^^><^^^v<^>^^<^v^vvvv<>>^vv^^^^vv<>v^v^<v^v><v>^^<><><vv^<>^<^>>>>>vv>>>^^>>^>><^^<<vvv><^<v^><^v^v^>^v^>><v^^vv><><^v>>^<<>><^v>^>^v>vv>^<v<>>^^<^^<vvv>^>^v^v<^<>v<v^>v>v>>v^^v^^v>>^<><<v^v<v^>>^^v>^^>><>^v^<^^v>^vv^<v>^>>^>v^>><>v<>><><v>^>^^>>>^><<v>v<<>^>>>v>>^>vvvvv><v^^^v<<^>>^^><vvv^<^<<vv>>v^>>vv^<^^^<^<v^<<^v<><^>^v<v<vv>vv<v<>^^<><v<^>>v^v>>v<<v>>^^<^vv^>>
v^>>>v><<v^<>><v^vv>>v<v>^^>>v^<>><<<v><>^<^<><^v>v<>v^<<<<<v^><<v^v<v<>^<v>v^<>>>><<v^^^^<^>v<<>^<vv<^<>>>>^>>^^^<^<>^vv<v^>v^>^v>v^v^^v^^<v^^^vv^<<^^v<v<>^^v<^^<<>v<v>^vv^<v^v>^^>v<<<>^vv>v<v>><>^^<<v^^vvvv<<^<>v^<>v>vv>>^>^vv<vv^v<>^>^v^^><>^vvv>v^v^<^>v^<v<<<>><^^<v><v^><<<v^^^>>^^<vv<v^>>^>v>>^^>^^>><>^>><><v^vv>>>>v^v^<^^><vv^><vvv><><>v<>^^v^><^^^<v<^<^v^^><^>><v<v^v<>^>>v<<v<<<^><^v>^v<>><^v><>><>>^^<>>v^><>^><<>^v><<>^^^<<v^<^<<^<<<><^^<<<<^v<vvv<vv^><vv^<^^<>^><vv^vv^vv^>^vv^><v^<^<^^vv><<<<>v^>v^<^^<>vv<vv>>v><^<<^vv>v^>^<>v>>>>>^<><^^v<v>^v^vv<^>>v^><v^v^vvv^>^>^><<<^<<>v<>vv>>>^<vvv>vv^<^^vv<>vv<v^>^>^v<<v^<^<^><>v<<v^^v>>v>^<v^^>^v^<>><^v^v^>>vv>^vv^<^<^<>v>^v<v^v>>^^vv^^v><vvv<v^><^>><<<^^<v><^^<^v<><v<<^vv<^^^<v<v^vv^<<^v^^>>v^<^^^<vv><<><v^>vv>^>v^^^^^^v>v^<v<<vv<>>v><>><>><<^<>^v<^v^^>>>v>v<<>><<^><^><><>^v><>v>>v^<vv>^vv<<>vv^><<^^v^vv^v>><<>><v^v^^>v>>><v>>^>>v<<<><>>v<>>v>vv^^<^v<>^v>v>>v>^>>>>^v>><^<><><^><<<<^^^^><<^<v>^^>^<<v^v^>v<<<v>>v^vv^v^^^<^<>><vv>v><>v^>v
^^^>>><<v^v><v^<v^v<^<^v>^v>v<v>^>^v><^<<v<>^<><<v<<>v>>>>><v<<^><>vv^<^<<v>^>^^<^^>>v><<>^><<>>>>><>vv^^>^>>>v>^^v>^<<>><^<^<^><v>>><>v<vv<>^v><>>>v<v>v^>v><<><^v^v<><><v>>^vv^^<^vv<^vvvv<><v<^<<^>>>>><^^<>^>^<>v<<v^<>v^v^><>><^v<<vv>><^^vv>^^>vv<^>v^v>>>^v><<>>vv^>>^>^<^v><<^^<v^^v<vv<^><^^^^>><>^^<>vv^vv^^v^vv>>v^>^v<<>^>><^>><><<<>v>^v>^v>v>v^v<<^^>v><v^>^v<>>><<v>vv^>^^v<>^<^^^v>>v><v>^<<^v<>>>^<<<^<^<<<^>v<^<^v><^^<><v^vv^^^>v^v<^><vvv><v<><^>v^v><<>>^^^v><>v^^<<<^vv<><vv^<v<^v^^><v^>v<><v<>>^>vv>^^<><<vv<<v<v^<>><v^>v><>v<>^<^v<v<<><>v^<><^>><v^>v<>>^^<^^vv<>^^^v^<^v><>^vv><^v<>^^>><v^>^^^v^>>vv>><>>^vvvv<vv^><<v<^>^^^><><><vv^>><<^>vv<^v><>^><<^v^^<^<<>v><<^v^^<^^v<^v^v^v^>v^^^>>^>^>vv<><v^^<<v^^>^^^^><^^v<^>vvv^<^^>^<^<v>^><v><v><<^v>v<<>^<>v>^^v>v^vvv<^>^<v>v<v>v^v><<^>>vv^v<<vv^vv<vv>^>vv><>v^^>>>vv>>v>^v^<^v^v>v^><^><<^<>v><<^v<<<>>vvvv>^>>>vv>>vv<v<<vv>^><^>v>^<>^v^v^^>>v^>^^>^<v<<^<<v^v>^^>>v<^>>v<><>vvv<<>^^vv<v<<^v<v<v^>>v^<v^vv><<>>>^>v>>v^>><v<v>^><^>vvv>><>>>>v<^v^v<
^>^>^^<^<vv>v<^>^<<^v<><>>>>v^^>^<^<<v^<^^<v^v^^v><vv<^>^^v>v^vv><^>><vv^v^vv^<<<><v>v<^^vvv^<^^^>vv<^<vv><>v<^^v><<v<<^v<^^>>><v^^v><vv^^v>><v><>>>v>vv^><^<<>><<^<><^^<v^^^vv^^v^^>><><^<>v>v<>v<>v<^^<v<<v<<<<><vv^>v>^v^>^vv^<>>>v^v^<v>vv^vv>^^<>v>^>^>>v>^^><>>^v>v<<<>v<>><^^^v<<^^vvv^>>^^><><><<>>>>^>^><>v>>>>v>><^v<v><^vvv><^>>^>v>^vv^>>>^vvv<v>vv>^v>><<>v>^^v<<><^vv^vvv^^><<<^><v^<<v^v>vvv>^>^^^<v^v<v<^>v<^v>vv><v^<><<^<<^<>^v<>v>>><>v>^<>>^>v<v^^<^^<>vv<^<><^v^><>vv>v>^<v^><<>v><>^>v>v<><^>^vv>v^^><^>v^^^>>vv>vv<v<>^>v>vvv<><^<>^<v<<^><<<v<<>^<^v^^<<v<vvv<>><<<v>v>>v>^>^v<><vv<vv^^>^<<v>v<^<vv>><^<>^^v<>v<<>>v>^>^v^^^<v<><<>v>>^<^<>^v>vv>v<^<^^><^<><>v^<^v>>>^vv<>^v^<<<<v<><>vv>v<v<<^<>v>^<>>^v>v<>v>^<^v><<v^^<<>vv^>><v<><^v^vv^^^vv><>v^vv<<v<>>>v><<><<><v^<v^><<>>v^>>>>v<>>^vv^>>vv>>^<>><<^<><^<><>v^^>^v>vv^^<v<v^>>v<>v>>><v<>v<^^><v><v^>v^<>v^>>v<v<vvv>^<v<>vvv^vv^v><v^>v><^>>v^<>^v<>v<^vv^v><^<><^><<^>>>^>^v<<<v>>vv^^<>^>>^<>vv^>vv^v<^<v<v<>>v>v>><^<^>vv<<<<v><^><vv^>^v<<<^><<>^
^<^v^>^^^>>>vv<<<vvv>^^v<v^><^<v^^<<<vvv^<v<<<>><<>vv>vv>v<>><v^v>>>>^<vv<^>v>>v^v>v<>^vv>><v^v^<^<>><^v>v<>>>v^v>v>><v<v><v^v<>v<v>>>vvvv^vv<^^<<<vv^vv>>v^><<^<v<v>vv<^^<><<vvv>^v^^>>>>^^<<<^<<^>v^^^^>v><<<v>^^>vv^vv^>>v^^<^><v<^v^>^<v<^<v<>vvvv^v^v><^v^vv<vv<^v>v>v>v^^^vv^><vvv<v^^<^^<>vv^>><v^<v<<v<v>^><^<>>v>^<^vvv>vv>^v^v^<>^<<v><<><<<^vv^<>v><^<<^^>vvvv><v<<^vv^^>>><<>><>>>><>><v^>^<v<vv^v<<^v<<<^^v^<<v<^>><<>v><^vv>vv<^>v^<>^v^>><^^>>^><>>^>v>^<^^^v>vvv^><<<^v^<v<>>v<<vv<^^^<>v>>v<^<vvv<^<^v^>v<>>>>^^^^vv^^^^>v><<vv<<<<v><>><vv^>v>^<vv<^<^v>>><v^<vv^>vv<><<v<>v>>v^<^^>v^>>>v<><v<>^^<<^<>>^v>>>>^<><^^<<<>>vv^<<>v^>v<vv>vv^v<^v<^<v><v<v^<><>>v^><v<>v<<>>v<vv^>vvvv<>^vv>^vv><^^<<>>>><^<^<>v^>^^><><vv><v<<<^>v<^^>>v<^>v>>^<<>^<><v^v<<v^><^^<v><><>>>^<<^^><<v>><^<>^^^^<><<v>^vv<<vv<v^v><>>^<<v>>^v<^<<<<<><>^^^>^<>vv^^v>^^^<^vv><^>><>v<<>^>>>^><<^<<<>><>^v<>^^^v^v><^^vv^vvv<<v^>>>>^v>v>v<<>v<><>^vv^<^<>vv>>vv^<<vvv<v<<^<^<^<v>><>^>vvv^<v<><^^^<v<<>>v><>v^vvv^^<vv^<v^<<<vvvvv^^^>v<v>>>
<^^^<vv<><<<>^^>>^v>^<^>><>^<>^<^^>><<<^><>>v><v>^v><>><><vvv<^<<^<^<><<><^v>^v>>>>^^^^^v^<<<^v^>^v^><<><<<>^><<<>^v<^>vv^^v<^<<<<^<^v^><v<v^^^^vv^<^<>v>>><><<<^>^vv><vv>^v^><<>^^<<v>>vv>^^>v>>^v^^<^v<>><^v^^v<^<>v>^v^^^<<>><vv^^v^v>v<^^<v<^v>><>^<^<^<^^v^>vv^<^v>^v<<^^<v^<v>>>>>v^<^<>v^>^>v^^<^vv^v>v^^v^<v>>vv^<^<<^v>vv^vv<<v><^>^<^^^<<^><>vv>><<<><<<^v><<<<v^<<^<>vvv^<^<>v>>^^vv<><>><^<^vvv<^^>>vvv<^<<v>^^^^v<^v<^<<<<<^<v<^>^vv><v^<^v<v>v>v^^^>v^<v^>>>v^>><<>>>><><<<>>>><^v>v^><^><<^<<^v<vv<>vv>>>>v><><>v<v><v>^<v^>>v>v^^vv^<<^>^<^v>^^<v<^<^v<>v>v>vvv>v>v><<<>vv^>^^v<^^v^<^^v>v>v<<<v>vv>^<vv^^v<^<v>v^v>><<v><>^^v>>v>>vv^><^^>vvvv^v^v^^<>>v^<<<^vv<><v<<v^>^v^>><vv<v^^v>v>v>><>><>><v>v^<^>v^<<<^<<>><v<v^v^^>v<>>>><v<>^<><<v^^<<><<^<^v<vv<>v^v<^<^<<<^vv><v>>>>v>>>v<><<^^<v>^v>^vv^>><>>^><<^>><^^v^<^<<^><v^>v>v>>vvv^^vv^^v<v^v<>^v><<^v>>>><<v^<><vv>^v><^^^^<<<^>vv><<<><vv<^>>v^<vv<<v><^<^>v^<>^><^vvvv^^>v<<<>v^<^<v<<<>v>^<^^^>^v<v^>v<vv<<vv<>v><^<v>v<^<v<<><v<<^<>><^^>>>v>^^>>^^v^<v^<vv<
>^^^^v^v^<v^>>^<<v<><^<v>^<>>><>v<v>^v<<^>^^^^vv<><>vv^^^<>^>v^^<^v<>v>>>^<vvv<vvv<<^<>>^^<^<>v^<<^v^<>v^<><<vv<<<<<^>^^^><v^<<^><vv<^v^>>vv^^<>^^v^^>>^>>v>^>>^<^v>^^v>v><<v<<<<^><v>^>>v^^>^><<v><vv^>^><v<v<<^<<<<^^v>v<v<^<<<^>>>>v^>>>^<<^>><>><^^^>>><<vv<v^<v^v>><^v><><<>v^<<>vvv^v>>>v^^^v<vvvv><<vv^>>v<v>^vv><vv<><<^>>^<>>v<v^>^<^v>>vv>v<>^>v>vv^v><><v<v^v><vv<>^<>^<v^<^vvv>v<>vv<<^v><vvv<v^^v^^>^v>v><>^vvv^^><^^<v<><>^>>^><vv^^vvv<>vv<^vvv<>>v^<>v>^<<^>^v^><>>>>>^>v^>^v>v<<><>v^v<>>v^^^><vvvv<<v^v>vv<v^^>^<^><v^>^<<v>v^^<<>>v>vv^^^vvvv^>^^<<<<>v<<>^v>^<^<v>^v^^>v^><<vv>^<<v^<vvv^<>>vv^^v<><^><<>^v^^<>vvv^<^v>^<^<<>^<>vv<><<<^^>>>>>><^<>>v^^vv<^>v^>^<vv>^<<>>^>>^<^v^>^v^^<^^>>v^<<v^<<<v<v<<^<<>v<^v>^v^<v><^<<^vv>^<<<>v^<>^v>v^v>^<>^^<v^^>>^v^v><<^>^^^^v<><^v<<><>v^>^>>v^<><>v^>>^v<^^vvv^<v><><^^^v>v<<v>v^vv>^>^<v<>>v<><v^^^^v>v<>>^<>^^>>v<^^>^vv^^<<^<v><^^<><<^v^^>>v<^v<<<v>^<^>vv>><^<vv<>vvv<<><<<<><<<^<<^>><<v<^vv^<^<<^vv^^<^^^>>^^>vv^v<vvvv<^v<>v^>^<<><<><<><<>^^<v><<^>v^>>^<^>>>>
v^vv<>v^<><^<>>^<<<^>^^^<>>v<<<vv^><v<<<>v<vvv^>><<^>v<v^v><^v>>vv^^>>>^v^^v^^<^>v^vvvvvv>^^vv><^>>^^<<^^>v<^><>v>v^><>v^>^>><>>>^^><^>^<vv>>><vv^vvvvv>>>v<v<^<<v<v<v<<^<<v<v>vv><<^<<<v<<>vv^><<v^<^vvv>v^<<v>^v^>>^>^<vv^<<v<v^^^^<<<>v<^>v^>^v^>>^><^><v<<^^^^v>>^><><<<<v>><<vv^^><v^<>^<vv<^^<^<^><<<^^<^<v<^<^><<<v^vvvv>^^vv^v>v^v^^<>vv^<v^>^v^v<<v^<<^>v><^<>^<<^^<^v>^vv>>v<v<v>^><>v^<v<>v^v><>vvv^^v^<><>v<vv><v<v<vvvvv<v^^><>^^>^<^<>>^vv>^v>^v^<<>v>><<><><<^^<>^<>v>v>^v<<v<v>>v^>v<<^vv^>><v<>^>><<vv>v<^>^^v^<^<<><>vv<v><v<^v>^>v>><<^v>><<v<<>^>^>v>v>>^v^v^><<><>^^>^v>^<>><<>^>vv><v>vv<^<<>v<^<<^<<^>>^v<>^>>^>^^^>v>>^<^^^v^v^<v^^vv<<>v><^>><><vvv^<^<^vv>>v<>^v<<^^><v^v^>v><^<^<^^<>vv>>^<vv^^><v<<^^^vv<><v^<v<>v<v^v><<>^^>^vvv^v>v^^><<<><^^^<>^^v^^^>vv<>>>v>^<>v><^><<<<^><><^v^<<v^v<><v^^<<^^^><<v^v<<v^v<vv>><v<v<^><^><v^>^<v><<<^>v^^^><>vv^<>^v>>>v<>><^>>vv^>v^^<v<v^^<v<>><^>v^><v^<vv<<>vv>^^><><><>><<<><<<vv>^^^>^<>^<<^><>^<<<v<<>^vv<vvv><^^><v^<^v>>^^>v<>v>>><^<v<^<<<^<>>>vv^><^<v^^<^v

View File

@@ -0,0 +1,147 @@
state read_a
return_if(`ln` < '0' or `ln` > '9')
read_number()
`sA`
set_state(read_b)
end
state read_b
return_if(`ln` < '0' or `ln` > '9')
read_number()
`sD`
set_state(read_c)
end
state read_c
return_if(`ln` < '0' or `ln` > '9')
read_number()
`sB`
set_state(read_d)
end
state read_d
return_if(`ln` < '0' or `ln` > '9')
read_number()
`sE`
set_state(read_e)
end
state read_e
return_if(`ln` < '0' or `ln` > '9')
read_number()
`sC`
set_state(read_f)
end
state read_f
return_if(`ln` < '0' or `ln` > '9')
read_number()
`sF`
`[a=]nlAn[ b=]nlBn[ c=]nlCn[ d=]nlDn[ e=]nlEn[ f=]nlFn`
`10an`
# (a, d)
# (b, e)
# (c, f)
# (af - cd) / (ae - bd)
# num
`lAlF*`
`lClD*`
`-`
# den
`lAlE*`
`lBlD*`
`-`
`~s.sY`
# if no residue
if `l.` == 0 then
`lClBlY*-lA/sX`
`[x = ]nlXn[ y = ]nlYn10an`
`lX3*lY+`
`lo+so`
end
if `l.` != 0 then
`[no solution]n10an`
end
set_state(read_a)
end
interrupt program_end
`lop`
end
function read_number
read_number_start()
read_number_end()
end
function read_number_start
-1
# ret _1 if not a digit
return_if(`ln` < 48)
return_if(`ln` > 57)
`st`
# throw the true digit onto the stack
`ln48-`
# inc i
adjust_index(1)
# recurse
read_number_start()
end
function read_number_end
# if we only have 1 item on stack (-1) we found no number, so return
return_if(1 == `z`)
# push entire number thing onto temporary stack
`[STz0<.]ds.x`
# multiply ten then pop and add repeatedly until done
`0`
`[LTd_1=qr10*+l.x]ds.x`
# get rid of the extra -1
`st`
# decrement i so we reread the skipped char
adjust_index(-1)
end

View File

@@ -0,0 +1,164 @@
state read_a
return_if(`ln` < '0' or `ln` > '9')
read_number()
`sA`
set_state(read_b)
end
state read_b
return_if(`ln` < '0' or `ln` > '9')
read_number()
`sD`
set_state(read_c)
end
state read_c
return_if(`ln` < '0' or `ln` > '9')
read_number()
`sB`
set_state(read_d)
end
state read_d
return_if(`ln` < '0' or `ln` > '9')
read_number()
`sE`
set_state(read_e)
end
state read_e
return_if(`ln` < '0' or `ln` > '9')
read_number()
`sC`
set_state(read_f)
end
state read_f
return_if(`ln` < '0' or `ln` > '9')
read_number()
`sF`
`lC10000000000000+sC`
`lF10000000000000+sF`
`[a=]nlAn[ b=]nlBn[ c=]nlCn[ d=]nlDn[ e=]nlEn[ f=]nlFn`
`10an`
# (a, d)
# (b, e)
# (c, f)
# (af - cd) / (ae - bd)
# num
`lAlF*`
`lClD*`
`-`
# den
`lAlE*`
`lBlD*`
`-`
`~s.sY`
`[. = ]nl.n[ ]n`
if `lY` < 0 and `l.` == 0 then
`[fuck!!! ]n`
end
# if no residue
if `l.` == 0 then
`lClBlY*-lA~s.sX`
if `l.` == 0 then
`[x = ]nlXn[ y = ]nlYn10an`
`lX3*lY+`
`lo+so`
end
if `l.` != 0 then
`[no sollution x]n10an`
end
end
if `l.` != 0 then
`[no solution]n10an`
end
set_state(read_a)
end
interrupt program_start
`0k`
end
interrupt program_end
`lop`
end
function read_number
read_number_start()
read_number_end()
end
function read_number_start
-1
# ret _1 if not a digit
return_if(`ln` < 48)
return_if(`ln` > 57)
`st`
# throw the true digit onto the stack
`ln48-`
# inc i
adjust_index(1)
# recurse
read_number_start()
end
function read_number_end
# if we only have 1 item on stack (-1) we found no number, so return
return_if(1 == `z`)
# push entire number thing onto temporary stack
`[STz0<.]ds.x`
# multiply ten then pop and add repeatedly until done
`0`
`[LTd_1=qr10*+l.x]ds.x`
# get rid of the extra -1
`st`
# decrement i so we reread the skipped char
adjust_index(-1)
end

View File

@@ -0,0 +1,96 @@
interrupt program_start
`101sw`
`103sh`
`lw2/sm` # width middle
`lh2/sM` # height middle
`100s.`
# 7890 are outputs
end
state read
adjust_index(2) # go past p=
read_number()
`sx` # x position
adjust_index(1) # go past ,
read_number()
`sy`
adjust_index(3) # go past " v="
read_number()
`s1` #dx
adjust_index(1) # go past ","
read_number()
`s2`
#adjust_index(1) # go past newline
`[x=]nlxn[ y=]nlyn[ 1=]nl1n[ 2=]nl2n10an`
`lxl1l.*+lw%sx`
`lyl2l.*+lh%sy`
if `lx` < 0 then
`lxlw+sx`
end
if `ly` < 0 then
`lylh+sy`
end
`[nx=]nlxn[ ny=]nlyn10an`
if `lx` < `lm` then
if `ly` < `lM` then
`[quadrant 1]n10an`
`l71+s7`
end
if `ly` > `lM` then
`[quadrant 3]n10an`
`l91+s9`
end
end
if `lx` > `lm` then
if `ly` < `lM` then
`[quadrant 2]n10an`
`l81+s8`
end
if `ly` > `lM` then
`[quadrant 4]n10an`
`l01+s0`
end
end
end
interrupt program_end
`[w=]nlwn[ h=]nlhn[ m=]nlmn[ M=]nlMn10an`
`[7=]nl7n[ 8=]nl8n[ 9=]nl9n[ 0=]nl0n10an`
`l7l8l9l0***p`
end
function read_number
# does no error checking
`1` # sign
if `ln` == '-' then
`2-` # negative
adjust_index(1)
end
`0` # c num
while `ln` >= '0' and `ln` <= '9' do
`10*`
`ln48-+` # add in number
adjust_index(1)
end
#adjust_index(-1)
`*`
end

View File

@@ -0,0 +1,192 @@
interrupt program_start
`101sw`
`103sh`
`0s.` # num
`0sc` # count
# X: x array
# Y: y array
`0sm` #x mean
`0sM` #y mean
`0sv` # x variance
`0sV` # y variance
`10 10^s(` # min x variance
`10 10^s)` # min y variance
`0s{` # min x loc
`0s}` # min y loc
`0sF` # finished flag
# A: posx
# B: posy
# C: velx
# D: vely
end
state read
adjust_index(2) # go past p=
read_number()
`lc:A` # x position
adjust_index(1) # go past ,
read_number()
`lc:B`
adjust_index(3) # go past " v="
read_number()
`lc:C` #dx
adjust_index(1) # go past ","
read_number()
`lc:D`
inc('c')
#adjust_index(1) # go past newline
end
interrupt program_end
`[finished reading]n10an`
#`[x=]nlxn[ y=]nlyn[ 1=]nl1n[ 2=]nl2n10an`
# calculate variances
for '.' in 0 to 103 do
calculate_variance()
end
`[lowest x var at ]nl{n[, lowest y var at ]nl}n10an`
while `l{` != `l}` do
`l{101+s{` # inc x by 101
if `l}` < `l{` then
`l}103+s}` # inc y by 103 if it's smaller
end
end
`[calculated first tree at ]nl}n[, printing...]n`
`l}s.`
calculate_positions()
for '!' in 0 to `lhlw*` do
if `l!lw%` == 0 then
`10an`
end
if `l!;Z` == 0 then
`[ ]n`
end
if `l!;Z` != 0 then
`[#]n`
end
end
`10an[ at ]nl.n10an`
end
function calculate_variance
# find positions
for '!' in 0 to `lc` do
`l!;Al!;Cl.*+lw%sx`
`l!;Bl!;Dl.*+lh%sy`
if `lx` < 0 then
`lxlw+sx`
end
if `ly` < 0 then
`lylh+sy`
end
# store these
`lxl!:X`
`lyl!:Y`
`lmlx+sm`
`lMly+sM`
end
# x and y variance calculation
`0sv`
`0sV`
`lmlc/sm`
`lMlc/sM`
for '!' in 0 to `lc` do
`lvl!;Xlm-2^+sv`
`lVl!;Ylm-2^+sV`
end
if `lv` < `l(` then
`lvs(`
`l.s{`
end
if `lV` < `l)` then
`lVs)`
`l.s}`
end
`[.=]nl.n[ v=]nlvn[ V=]nlVn10an`
end
function calculate_positions
# find positions
for '!' in 0 to `lc` do
`l!;Al!;Cl.*+lw%sx`
`l!;Bl!;Dl.*+lh%sy`
if `lx` < 0 then
`lxlw+sx`
end
if `ly` < 0 then
`lylh+sy`
end
`1`
# index of this
`lylw*lx+`
`:Z` # store in Z
end
end
function read_number
# does no error checking
`1` # sign
if `ln` == '-' then
`2-` # negative
adjust_index(1)
end
`0` # c num
while `ln` >= '0' and `ln` <= '9' do
`10*`
`ln48-+` # add in number
adjust_index(1)
end
#adjust_index(-1)
`*`
end

View File

@@ -0,0 +1,112 @@
interrupt program_start
`101sw`
`103sh`
`lw2/sm` # width middle
`lh2/sM` # height middle
# found through excel
`8006s.`
# robots bunch up horizontally every 103s
# offset of 27
# robots bunch up vertically every 101s
# offset of 75
# 7890 are outputs
end
state read
adjust_index(2) # go past p=
read_number()
`sx` # x position
adjust_index(1) # go past ,
read_number()
`sy`
adjust_index(3) # go past " v="
read_number()
`s1` #dx
adjust_index(1) # go past ","
read_number()
`s2`
#adjust_index(1) # go past newline
#`[x=]nlxn[ y=]nlyn[ 1=]nl1n[ 2=]nl2n10an`
`lxl1l.*+lw%sx`
`lyl2l.*+lh%sy`
if `lx` < 0 then
`lxlw+sx`
end
if `ly` < 0 then
`lylh+sy`
end
#`[nx=]nlxn[ ny=]nlyn10an`
`1`
# index of this
`lylw*lx+`
`:X` # store in X
if `li1+;I` == -1 then
`[---------------------------------------------------------------------------------------]n10an`
`[. = ]nl.n`
for '!' in 0 to `lhlw*` do
if `l!lw%` == 0 then
`10an`
end
if `l!;X` == 0 then
`[ ]n`
end
if `l!;X` != 0 then
`[#]n`
end
`0l!:X` # clear
end
rewind()
`l.103+s.`
`10an`
`10an` # for less
end
end
interrupt program_end
`[w=]nlwn[ h=]nlhn[ m=]nlmn[ M=]nlMn10an`
`[7=]nl7n[ 8=]nl8n[ 9=]nl9n[ 0=]nl0n10an`
`l7l8l9l0***p`
end
function read_number
# does no error checking
`1` # sign
if `ln` == '-' then
`2-` # negative
adjust_index(1)
end
`0` # c num
while `ln` >= '0' and `ln` <= '9' do
`10*`
`ln48-+` # add in number
adjust_index(1)
end
#adjust_index(-1)
`*`
end

View File

@@ -0,0 +1,181 @@
interrupt program_start
`101sw`
`103sh`
`0s.` # num
`0sc` # count
# X: x array
# Y: y array
`0sm` #x mean
`0sM` #y mean
`0sv` # x variance
`0sV` # y variance
`10 10^s(` # min x variance
`10 10^s)` # min y variance
`0s{` # min x loc
`0s}` # min y loc
`0sF` # finished flag
# A: posx
# B: posy
# C: velx
# D: vely
end
state read
adjust_index(2) # go past p=
read_number()
`sx` # x position
adjust_index(1) # go past ,
read_number()
`sy`
adjust_index(3) # go past " v="
read_number()
`s1` #dx
adjust_index(1) # go past ","
read_number()
`s2`
#adjust_index(1) # go past newline
#`[x=]nlxn[ y=]nlyn[ 1=]nl1n[ 2=]nl2n10an`
`lxl1l.*+lw%sx`
`lyl2l.*+lh%sy`
if `lx` < 0 then
`lxlw+sx`
end
if `ly` < 0 then
`lylh+sy`
end
#`[nx=]nlxn[ ny=]nlyn10an`
# store these
`lxlc:X`
`lylc:Y`
inc('c')
`lmlx+sm`
`lMly+sM`
# if done put it in an array for printing
if `lF` == 1 then
`1`
# index of this
`lylw*lx+`
`:Z` # store in Z
end
if `li1+;I` == -1 then
#`[.]n`
# print tree when done
if `lF` == 1 then
for '!' in 0 to `lhlw*` do
if `l!lw%` == 0 then
`10an`
end
if `l!;Z` == 0 then
`[ ]n`
end
if `l!;Z` != 0 then
`[#]n`
end
end
`10an[ at ]nl.n10an`
return
end
# if we're done here
if `l.` == 103 then
`[lowest x var at ]nl{n[, lowest y var at ]nl}n10an`
while `l{` != `l}` do
`l{101+s{` # inc x by 101
if `l}` < `l{` then
`l}103+s}` # inc y by 103 if it's smaller
end
end
`[calculated first tree at ]nl}n[, printing...]n`
`l}s.`
rewind()
`1sF`
end
if `lF` != 1 then
# x and y variance
`0sv`
`0sV`
`lmlc/sm`
`lMlc/sM`
for '!' in 0 to `lc` do
`lvl!;Xlm-2^+sv`
`lVl!;Ylm-2^+sV`
end
if `lv` < `l(` then
`lvs(`
`l.s{`
end
if `lV` < `l)` then
`lVs)`
`l.s}`
end
`[.=]nl.n[ v=]nlvn[ V=]nlVn10an`
`0sm`
`0sM`
`0sc`
rewind()
inc('.')
end
end
end
function read_number
# does no error checking
`1` # sign
if `ln` == '-' then
`2-` # negative
adjust_index(1)
end
`0` # c num
while `ln` >= '0' and `ln` <= '9' do
`10*`
`ln48-+` # add in number
adjust_index(1)
end
#adjust_index(-1)
`*`
end

View File

@@ -0,0 +1,140 @@
state read_map
if `ln` == '@' then
`lisp`
end
end
state read_instructions
`lnan`
if `ln` == '<' then
-1
end
if `ln` == '^' then
`0lw-`
end
if `ln` == '>' then
1
end
if `ln` == 'v' then
`lw`
end
if `ln` == 10 then
return
end
move()
#print_board()
end
interrupt newline
if `lw` == 0 then
`li1+sw`
end
if `li1+;I` == 10 then
`li1+lw/sh`
`[board is ]nlw1-n[x]nlhn10an`
`lplw~`
`[robot is at (]nn[,]nn[)]n10an`
adjust_index(2)
set_state(read_instructions)
end
end
interrupt program_end
`st`
`[finished]n10an`
0
for '!' in 0 to `lwlh*` do
if `l!;I` == 'O' then
`l!lw~`
`[box is at (]nn[,]nn[)]n10an`
`l!lw~`
`r100*++`
end
end
end
function print_board
for '!' in 0 to `lwlh*` do
`l!;Ian`
end
end
function move
`sv`
`lpSP`
if _move() == 1 then
'.'
`lp:I`
'@'
`lplv+dsp:I`
end
end
function _move
# v is vector of movement
# P is current position of push
# returns 1 if can move/push
# empty space -- can push
if `lPlv+;I` == '.' then
`LPst`
return 1
end
# wall -- can't push
if `lPlv+;I` == '#' then
`LPst`
return 0
end
# box, need to check further
if `lPlv+;I` == 'O' then
`lPlv+SP` # add new position to stack
# if we can move
if _move() == 1 then
# set the next spot to be an O
'O'
`LPlvd++:I`
return 1
end
`LPst`
return 0
end
`[unknown symbol type: ]nlPlv+;Ian10an`
end

View File

@@ -0,0 +1,382 @@
interrupt program_start
`0sc`
end
state read_map
if `ln` == '@' then
'@'
`lc:X`
`lcsp`
inc('c')
'.'
`lc:X`
inc('c')
end
if `ln` == '#' then
'#'
`lc:X`
inc('c')
'#'
`lc:X`
inc('c')
end
if `ln` == '.' then
'.'
`lc:X`
inc('c')
'.'
`lc:X`
inc('c')
end
if `ln` == 'O' then
'['
`lc:X`
inc('c')
']'
`lc:X`
inc('c')
end
end
state read_instructions
`lnan`
if `ln` == '<' then
-1
end
if `ln` == '^' then
`0lw-`
end
if `ln` == '>' then
1
end
if `ln` == 'v' then
`lw`
end
if `ln` == 10 then
return
end
move()
#print_board()
end
interrupt newline
if `lw` == 0 then
`lisw`
end
if `li1+;I` == 10 then
`lilw/sh`
`lw2*sw`
`[board is ]nlw1-n[x]nlhn10an`
`lplw~`
`[robot is at (]nn[,]nn[)]n`
adjust_index(2)
set_state(read_instructions)
print_board()
end
end
interrupt program_end
`st`
`[finished]n10an`
0
for '!' in 0 to `lc` do
if `l!;X` == '[' then
`l!lw~`
`[box is at (]nn[,]nn[)]n10an`
`l!lw~`
`r100*++`
end
end
`p`
end
function print_board
for '!' in 0 to `lc` do
if `l!lw%` == 0 then
`10an`
end
`l!;Xan`
end
`10an`
end
function move
`sv`
`lpSP`
`[`
_move()
`10an]x` #????
`[wow]nps.`
if `l.` == 1 then
`[moved]n`
'.'
`lp:X`
'@'
`lplv+dsp:X`
end
end
function _move
# v is vector of movement
# P is current position of push
# returns 1 if can move/push
# empty space -- can push
if `lPlv+;X` == '.' then
`LPst`
return 1
end
# wall -- can't push
if `lPlv+;X` == '#' then
`LPst`
return 0
end
# box left, need to check further
if `lPlv+;X` == '[' then
# rightwards push
if `lv` == 1 then
`lP2+SP` # add point to the right
# if we can move
if _move() == 1 then
# move this box
']'
`lP3+:X`
'['
`LP2+:X`
return 1
end
return 0
end
# up/down push
if `lv` != 1 then
`lPlv+SP` # add point to the up/down
# check if we can move
if updown_check() == 1 then
`LPlv+SP` # move
updown_move()
return 1
end
`[done]n`
`LPst`
return 0
end
end
# box right, need to check further
if `lPlv+;X` == ']' then
# leftwards push
if `lv` == -1 then
`lP2-SP` # add point to the two left
# if we can move
if _move() == 1 then
# move this box
'['
`lP3-:X`
']'
`LP2-:X`
return 1
end
return 0
end
# up/down push
if `lv` != -1 then
`lPlv+SP` # add point to the up/down
# check if we can move
if updown_check() == 1 then
`LPlv+SP` # move
updown_move()
return 1
end
`LPst`
return 0
end
end
0
`[unknown symbol type: ]nlPlv+;Xan10an`
end
# takes position in P
# also vector (assmed to be up or down) in v
function updown_check
`[updown_check p=]nlPn[ ]nlP;Xan10an`
if `lP;X` == '.' then
`LPst`
return 1
end
if `lP;X` == '#' then
`LPst`
return 0
end
if `lP;X` == ']' then
`LPlv+d`
`SP` # store one directly above
`1-SP` # and one directly to the left
if updown_check() == 1 then
if updown_check() == 1 then
`[}1]n`
return 1
end
end
`[}0]n`
return 0
end
if `lP;X` == '[' then
`LPlv+d`
`SP` # store one directly above
`1+SP` # and one directly to the right
if updown_check() == 1 then
if updown_check() == 1 then
`[{1]n`
return 1
end
end
`[{0]n`
return 0
end
0
end
# takes position above/below [ in P
function updown_move
`[updown_move p=]nlPn[ ]nlP;Xan10an`
if `lP;X` == '.' then
`LPst`
return
end
if `lP;X` == '#' then
`LPst`
`[updown move on invalid thing. fuck.]n10an`
return
end
if `lP;X` == '[' then
`lPlv+ds11+s2` # 1 = above directly, 2 = abo
'.'
`lP:X`
'.' # and remove traces
`lP1+:X`
`l1SP` # store one directly above '['
`l2SP` # store two directly above ']'
updown_move()
updown_move()
`LPlv+ds11+s2` # 1 = above directly, 2 = abo
'['
`l1:X` # put this here
']'
`l2:X` # and this here
return
end
if `lP;X` == ']' then
`LP1-SP`
updown_move()
return
end
end

View File

@@ -0,0 +1,25 @@
import re
a = open("temp").read().split("\n\n")[:-1]
#a = open("resources/2024/day13.txt").readlines()
def solve(a, b, c, d, e, f):
y = ((a * f) - (c * d))/(a * e - b * d)
x = (c - b * y) / a
return (x, y)
for i in a:
ba, bb, bp = i.split("\n")
a, d = [int(re.sub(r'\D+', '', x)) for x in ba.split(", ")]
b, e = [int(re.sub(r'\D+', '', x)) for x in bb.split(", ")]
c, f = [int(re.sub(r'\D+', '', x)) for x in bp.split(", ")]
x_s, y_s = solve(a, b, c, d, e, f)
x_10000, y_10000 = solve(a, b, 10000, d, e, 10000)
print(a, b, c, d, e, f)
print(x_s + x_10000 * 1000000000, y_s + y_10000 * 1000000000)