diff --git a/2024/day05/day05.bqn b/2024/day05/day05.bqn new file mode 100644 index 0000000..4e80adf --- /dev/null +++ b/2024/day05/day05.bqn @@ -0,0 +1,24 @@ +in←•FLines"input" +n←⊑/⟨⟩⊸≡¨in +Split←((⊢-˜+`׬)∘=⊔⊢) +es←•ParseFloat¨>'|'⊸Split¨n↑in +ls←•ParseFloat¨¨','⊸Split¨(1+n)↓in + +Kahn←{𝕊es: + Step←{𝕊es‿s‿l: + n←⊑s + s↩1↓s + l↩l∾n + emask←n=⊏˘es + s↩s∾{1=≠((1⊑˘es)=𝕩)/es}¨⊸/1⊏˘emask/es + es↩(¬emask)/es + es‿s‿l + } + ns←⍷⥊es + s←(¬ns∊1⊏˘es)/ns + 2⊑Step•_while_{0≠≠1⊑𝕩} es‿s‿⟨⟩ +} +sorted←Kahn¨{(∧´˘∊⟜𝕩˘es)/es}¨ls +Middle←(⌊≠÷2˙)⊸⊑ +•Show +´Middle¨ /⟜sorted ls≡¨sorted +•Show +´Middle¨ /⟜sorted ls≢¨sorted diff --git a/2024/day05/input b/2024/day05/input new file mode 100644 index 0000000..2c06efa --- /dev/null +++ b/2024/day05/input @@ -0,0 +1,1370 @@ +66|19 +99|87 +99|55 +49|28 +49|64 +49|81 +43|81 +43|55 +43|13 +43|39 +18|34 +18|51 +18|66 +18|53 +18|65 +83|87 +83|74 +83|56 +83|26 +83|17 +83|47 +84|64 +84|81 +84|43 +84|61 +84|57 +84|66 +84|12 +74|14 +74|88 +74|64 +74|66 +74|15 +74|99 +74|49 +74|52 +87|26 +87|38 +87|57 +87|18 +87|84 +87|43 +87|28 +87|65 +87|22 +64|45 +64|14 +64|77 +64|55 +64|94 +64|29 +64|56 +64|26 +64|25 +64|22 +88|37 +88|77 +88|55 +88|76 +88|64 +88|35 +88|57 +88|99 +88|43 +88|13 +88|19 +19|56 +19|76 +19|37 +19|14 +19|99 +19|64 +19|83 +19|43 +19|24 +19|15 +19|35 +19|77 +48|58 +48|39 +48|15 +48|81 +48|75 +48|29 +48|13 +48|35 +48|45 +48|12 +48|61 +48|14 +48|37 +53|14 +53|42 +53|15 +53|83 +53|25 +53|12 +53|77 +53|58 +53|76 +53|48 +53|39 +53|37 +53|56 +53|55 +29|62 +29|97 +29|88 +29|65 +29|17 +29|52 +29|42 +29|38 +29|51 +29|28 +29|22 +29|47 +29|87 +29|84 +29|45 +14|24 +14|62 +14|87 +14|56 +14|65 +14|47 +14|45 +14|18 +14|42 +14|75 +14|17 +14|92 +14|58 +14|84 +14|25 +14|83 +77|13 +77|17 +77|22 +77|38 +77|94 +77|58 +77|75 +77|24 +77|49 +77|92 +77|83 +77|84 +77|87 +77|56 +77|18 +77|47 +77|45 +45|74 +45|26 +45|97 +45|18 +45|75 +45|57 +45|38 +45|49 +45|19 +45|51 +45|94 +45|62 +45|28 +45|92 +45|34 +45|88 +45|87 +45|84 +24|26 +24|88 +24|42 +24|22 +24|65 +24|34 +24|17 +24|62 +24|97 +24|94 +24|47 +24|28 +24|52 +24|49 +24|38 +24|29 +24|84 +24|18 +24|75 +35|25 +35|38 +35|14 +35|18 +35|26 +35|87 +35|97 +35|24 +35|22 +35|58 +35|65 +35|94 +35|29 +35|47 +35|56 +35|76 +35|45 +35|37 +35|62 +35|77 +62|48 +62|88 +62|81 +62|49 +62|97 +62|15 +62|99 +62|51 +62|84 +62|53 +62|61 +62|65 +62|34 +62|66 +62|64 +62|28 +62|92 +62|74 +62|38 +62|57 +62|19 +39|25 +39|22 +39|13 +39|62 +39|35 +39|24 +39|58 +39|56 +39|14 +39|94 +39|87 +39|77 +39|47 +39|26 +39|18 +39|76 +39|83 +39|42 +39|75 +39|97 +39|29 +39|37 +92|43 +92|28 +92|55 +92|99 +92|49 +92|81 +92|34 +92|19 +92|88 +92|66 +92|15 +92|39 +92|51 +92|17 +92|48 +92|57 +92|74 +92|84 +92|61 +92|64 +92|52 +92|35 +92|12 +81|29 +81|55 +81|58 +81|25 +81|39 +81|35 +81|76 +81|77 +81|56 +81|12 +81|24 +81|83 +81|22 +81|64 +81|13 +81|75 +81|45 +81|15 +81|99 +81|47 +81|37 +81|87 +81|42 +81|14 +15|77 +15|22 +15|94 +15|56 +15|47 +15|76 +15|24 +15|83 +15|75 +15|18 +15|14 +15|29 +15|58 +15|12 +15|13 +15|64 +15|39 +15|45 +15|87 +15|37 +15|35 +15|25 +15|55 +15|42 +28|88 +28|35 +28|53 +28|57 +28|76 +28|12 +28|81 +28|77 +28|14 +28|19 +28|48 +28|39 +28|61 +28|99 +28|83 +28|66 +28|55 +28|34 +28|51 +28|43 +28|15 +28|37 +28|64 +28|25 +37|42 +37|26 +37|77 +37|47 +37|92 +37|62 +37|22 +37|45 +37|94 +37|25 +37|56 +37|24 +37|58 +37|14 +37|18 +37|87 +37|38 +37|17 +37|13 +37|75 +37|83 +37|97 +37|65 +37|29 +38|12 +38|57 +38|81 +38|43 +38|34 +38|61 +38|17 +38|28 +38|49 +38|55 +38|88 +38|51 +38|53 +38|39 +38|92 +38|15 +38|84 +38|19 +38|64 +38|52 +38|48 +38|99 +38|74 +38|66 +56|17 +56|38 +56|13 +56|22 +56|87 +56|65 +56|42 +56|74 +56|75 +56|49 +56|94 +56|84 +56|28 +56|26 +56|62 +56|52 +56|92 +56|18 +56|24 +56|97 +56|29 +56|45 +56|47 +56|58 +25|77 +25|29 +25|62 +25|58 +25|47 +25|56 +25|42 +25|87 +25|65 +25|75 +25|92 +25|97 +25|13 +25|83 +25|84 +25|94 +25|38 +25|24 +25|74 +25|22 +25|26 +25|45 +25|17 +25|18 +47|18 +47|62 +47|51 +47|28 +47|52 +47|97 +47|88 +47|22 +47|49 +47|43 +47|92 +47|26 +47|17 +47|19 +47|74 +47|66 +47|87 +47|53 +47|38 +47|84 +47|94 +47|57 +47|34 +47|65 +55|62 +55|42 +55|87 +55|18 +55|22 +55|24 +55|76 +55|75 +55|58 +55|35 +55|94 +55|39 +55|12 +55|14 +55|13 +55|47 +55|29 +55|37 +55|45 +55|56 +55|26 +55|77 +55|25 +55|83 +17|74 +17|43 +17|84 +17|28 +17|15 +17|51 +17|35 +17|57 +17|52 +17|12 +17|39 +17|99 +17|66 +17|88 +17|49 +17|48 +17|55 +17|64 +17|61 +17|81 +17|76 +17|34 +17|19 +17|53 +12|42 +12|37 +12|75 +12|47 +12|14 +12|18 +12|25 +12|35 +12|13 +12|22 +12|83 +12|45 +12|56 +12|76 +12|26 +12|87 +12|29 +12|65 +12|24 +12|94 +12|62 +12|58 +12|77 +12|97 +52|25 +52|35 +52|64 +52|77 +52|53 +52|28 +52|57 +52|61 +52|14 +52|66 +52|55 +52|81 +52|37 +52|99 +52|12 +52|34 +52|88 +52|76 +52|19 +52|43 +52|48 +52|51 +52|39 +52|15 +61|12 +61|87 +61|24 +61|81 +61|25 +61|77 +61|45 +61|15 +61|83 +61|47 +61|37 +61|56 +61|39 +61|13 +61|14 +61|75 +61|58 +61|29 +61|76 +61|55 +61|64 +61|99 +61|35 +61|42 +76|38 +76|45 +76|94 +76|97 +76|14 +76|83 +76|13 +76|24 +76|18 +76|56 +76|22 +76|26 +76|42 +76|65 +76|75 +76|37 +76|25 +76|58 +76|87 +76|47 +76|77 +76|92 +76|29 +76|62 +94|84 +94|28 +94|57 +94|66 +94|26 +94|81 +94|99 +94|88 +94|38 +94|74 +94|62 +94|97 +94|34 +94|19 +94|51 +94|49 +94|65 +94|53 +94|48 +94|17 +94|52 +94|43 +94|92 +94|61 +65|17 +65|61 +65|19 +65|99 +65|53 +65|81 +65|43 +65|88 +65|28 +65|49 +65|84 +65|66 +65|92 +65|38 +65|64 +65|39 +65|48 +65|57 +65|74 +65|15 +65|55 +65|52 +65|34 +65|51 +57|66 +57|24 +57|55 +57|19 +57|25 +57|15 +57|14 +57|35 +57|48 +57|77 +57|81 +57|61 +57|43 +57|64 +57|56 +57|76 +57|58 +57|99 +57|12 +57|39 +57|83 +57|53 +57|37 +57|13 +51|66 +51|55 +51|25 +51|53 +51|48 +51|81 +51|12 +51|99 +51|39 +51|43 +51|61 +51|76 +51|57 +51|14 +51|37 +51|77 +51|35 +51|15 +51|64 +51|19 +51|56 +51|34 +51|83 +51|88 +42|18 +42|51 +42|66 +42|28 +42|17 +42|84 +42|26 +42|45 +42|49 +42|38 +42|87 +42|74 +42|75 +42|88 +42|94 +42|52 +42|97 +42|22 +42|62 +42|65 +42|47 +42|92 +42|57 +42|34 +97|66 +97|15 +97|28 +97|49 +97|52 +97|17 +97|81 +97|84 +97|38 +97|61 +97|43 +97|65 +97|99 +97|48 +97|55 +97|34 +97|19 +97|57 +97|88 +97|74 +97|64 +97|51 +97|53 +97|92 +34|43 +34|76 +34|39 +34|35 +34|53 +34|55 +34|37 +34|57 +34|66 +34|77 +34|58 +34|61 +34|13 +34|48 +34|83 +34|14 +34|25 +34|15 +34|99 +34|56 +34|19 +34|12 +34|64 +34|81 +75|22 +75|88 +75|28 +75|66 +75|74 +75|65 +75|51 +75|62 +75|94 +75|97 +75|52 +75|57 +75|49 +75|18 +75|19 +75|92 +75|38 +75|17 +75|26 +75|87 +75|47 +75|34 +75|43 +75|84 +22|57 +22|28 +22|88 +22|18 +22|17 +22|92 +22|52 +22|19 +22|26 +22|62 +22|53 +22|61 +22|65 +22|38 +22|51 +22|97 +22|66 +22|43 +22|84 +22|74 +22|34 +22|94 +22|49 +22|48 +58|49 +58|74 +58|45 +58|26 +58|62 +58|87 +58|22 +58|88 +58|75 +58|47 +58|65 +58|24 +58|18 +58|17 +58|42 +58|97 +58|94 +58|29 +58|84 +58|92 +58|28 +58|38 +58|51 +58|52 +26|92 +26|99 +26|34 +26|74 +26|61 +26|81 +26|43 +26|19 +26|48 +26|62 +26|65 +26|38 +26|17 +26|28 +26|51 +26|15 +26|52 +26|84 +26|88 +26|66 +26|53 +26|57 +26|97 +26|49 +13|65 +13|17 +13|94 +13|58 +13|47 +13|22 +13|49 +13|84 +13|51 +13|29 +13|75 +13|92 +13|42 +13|26 +13|87 +13|24 +13|97 +13|28 +13|18 +13|74 +13|62 +13|38 +13|52 +13|45 +66|83 +66|55 +66|25 +66|13 +66|61 +66|39 +66|43 +66|58 +66|15 +66|35 +66|14 +66|53 +66|24 +66|56 +66|29 +66|64 +66|37 +66|77 +66|48 +66|76 +66|99 +66|81 +66|12 +99|75 +99|14 +99|39 +99|22 +99|77 +99|42 +99|45 +99|83 +99|12 +99|29 +99|15 +99|37 +99|58 +99|18 +99|35 +99|56 +99|47 +99|64 +99|25 +99|76 +99|13 +99|24 +49|57 +49|88 +49|19 +49|99 +49|35 +49|76 +49|25 +49|61 +49|15 +49|39 +49|66 +49|34 +49|52 +49|14 +49|48 +49|37 +49|55 +49|43 +49|51 +49|12 +49|53 +43|61 +43|14 +43|45 +43|25 +43|83 +43|64 +43|35 +43|12 +43|37 +43|53 +43|15 +43|76 +43|29 +43|58 +43|56 +43|48 +43|77 +43|24 +43|42 +43|99 +18|17 +18|97 +18|61 +18|52 +18|48 +18|19 +18|57 +18|81 +18|74 +18|43 +18|49 +18|62 +18|84 +18|92 +18|94 +18|38 +18|26 +18|88 +18|28 +83|18 +83|49 +83|24 +83|42 +83|45 +83|62 +83|65 +83|29 +83|22 +83|97 +83|75 +83|13 +83|58 +83|94 +83|38 +83|84 +83|92 +83|52 +84|49 +84|52 +84|48 +84|15 +84|35 +84|34 +84|37 +84|74 +84|99 +84|19 +84|39 +84|76 +84|53 +84|55 +84|88 +84|28 +84|51 +74|19 +74|55 +74|12 +74|51 +74|57 +74|34 +74|48 +74|76 +74|28 +74|53 +74|35 +74|81 +74|37 +74|61 +74|39 +74|43 +87|51 +87|17 +87|92 +87|49 +87|88 +87|34 +87|53 +87|74 +87|62 +87|48 +87|94 +87|52 +87|66 +87|19 +87|97 +64|18 +64|24 +64|58 +64|13 +64|35 +64|87 +64|47 +64|83 +64|76 +64|37 +64|75 +64|12 +64|42 +64|39 +88|39 +88|48 +88|25 +88|66 +88|83 +88|81 +88|15 +88|61 +88|14 +88|56 +88|12 +88|34 +88|53 +19|61 +19|48 +19|42 +19|58 +19|81 +19|39 +19|29 +19|55 +19|13 +19|25 +19|12 +19|53 +48|47 +48|25 +48|64 +48|76 +48|24 +48|99 +48|77 +48|56 +48|42 +48|83 +48|55 +53|13 +53|81 +53|99 +53|64 +53|75 +53|45 +53|61 +53|35 +53|24 +53|29 +29|75 +29|26 +29|49 +29|74 +29|94 +29|92 +29|34 +29|57 +29|18 +14|77 +14|13 +14|97 +14|38 +14|29 +14|26 +14|94 +14|22 +77|62 +77|42 +77|65 +77|97 +77|74 +77|26 +77|29 +45|47 +45|17 +45|52 +45|66 +45|65 +45|22 +24|87 +24|51 +24|92 +24|45 +24|74 +35|75 +35|83 +35|13 +35|42 +62|52 +62|43 +62|17 +39|12 +39|45 +92|53 + +62,65,92,74,49,52,28,88,57,61,81,99,15 +61,99,55,39,35,76,25,77,83,13,29,45,47 +84,97,38,34,94,65,57,81,19,66,74 +49,52,51,88,66,19,43,53,48,61,81,99,15,55,39,12,35,76,37 +13,58,25,62,12,37,97,29,42,87,77 +94,75,58,38,62,29,56,26,18,97,47,49,24,42,45,22,17,13,74,84,83,65,87 +48,64,37,13,24,42,75 +75,22,18,94,26,62,97,65,38,92,17,84,74,49,52,51,88,34,66 +34,66,43,53,81,64,13 +52,28,88,61,81,15,12 +19,53,48,64,55,99,56,34,43,77,88,76,66,25,35 +12,35,76,37,14,25,83,56,13,58,24,29,42,45,75,47,87,22,18,94,26,62,97 +48,81,84,28,92,34,43,66,51,57,62,97,17,65,49,19,15,88,38,52,61,99,53 +48,58,29,53,37,25,64,76,77,55,15,83,45 +22,24,35,45,75,87,26,77,56,14,76,12,62,37,97,18,83,58,13,94,47 +49,52,28,51,88,57,66,19,43,53,61,81,99,15,64,55,39,12,35,76,37 +26,97,65,38,49,52,88,48,99 +34,57,66,19,43,53,48,61,81,99,15,64,55,39,12,35,76,37,14,25,77,83,13 +45,75,22,84,28 +34,76,15,49,55,84,66,19,35,64,12 +35,76,37,14,25,77,83,56,58,24,42,45,47,87,22,18,62,97,65 +42,76,48,29,81,45,58,99,53,61,14,83,24,35,64 +55,61,77,53,43,83,57,48,99,15,66,56,14,25,12 +84,49,52,51,88,34,57,19,43,48,61,99,55,35,76 +52,28,34,57,66,53,48,61,99,55,12,35,76,37,14 +74,49,52,28,51,88,34,57,43,53,48,81,99,64,55,12,35,76,37 +76,65,87,83,58,38,26,77,42,25,47,13,97,24,45,18,22,29,37,56,75,62,94 +53,99,15,12,76,25,77,29,45 +43,53,48,61,81,99,15,64,55,39,12,35,76,37,14,25,83,56,13,58,24,29,42 +39,14,37,64,61,58,56 +99,65,55,88,28,48,19 +88,38,26,99,19,66,17,49,34,43,53,61,28,65,74,92,62 +35,39,45,12,83,56,47,42,25,75,37,81,24,76,99,87,64,14,29 +55,81,61,43,25,88,35,48,66,12,15,14,34,52,37,99,19,64,57 +75,47,87,22,18,94,26,62,97,65,38,92,17,84,74,49,52,28,51,88,34,57,19 +37,14,25,77,83,56,13,24,42,45,47,87,22,18,94,26,62,97,65,38,92 +58,45,47,18,94,26,92,17,52,28,51 +76,37,58,24,42,45,47 +56,13,24,29,42,47,87,22,18,94,26,62,97,65,38,92,17,84,74,49,52 +34,88,84,66,75,19,57,94,62,47,49 +45,75,47,87,22,18,94,26,62,97,65,38,17,84,74,49,52,28,51,88,34,57,66 +28,84,52,49,42,26,18,38,97,75,17,94,87 +35,99,58,61,48,37,15,19,55,64,53,81,13,56,43,39,24 +57,19,53,99,12,37,58 +75,25,83,14,64,12,77,39,56,45,35,81,61,99,76,13,55,47,24,58,29,42,37 +83,14,92,62,38,42,24,75,26,97,29,94,13,37,47,18,25,45,22 +45,75,47,87,22,18,94,26,62,65,38,92,17,84,74,49,52,28,51,88,34,57,66 +52,64,55,17,38,92,43,53,65,51,28,74,66,88,19,81,99,84,57,48,61,15,49 +83,56,58,24,42 +18,94,26,62,97,65,38,92,17,84,74,49,52,28,51,88,34,57,66,19,43,53,61 +17,74,49,28,51,88,66,53,61,99,55,12,35 +57,66,19,43,53,48,61,64,55,39,12,76,37,14,25,77,83,13,58 +43,58,61,39,57,14,37,77,66,81,55,48,99,12,13,64,15,53,19,56,76 +55,39,12,76,37,14,25,77,83,56,13,58,24,29,42,45,75,47,87,22,18,94,26 +65,92,17,84,52,28,51,88,34,66,19,43,53,48,61,81,99,64,55 +52,28,51,88,34,57,66,19,43,53,48,61,99,15,64,55,39,12,35,37,25 +56,42,18,65,14,45,94,22,26,58,75,47,25 +76,37,14,25,77,56,13,58,24,29,42,45,75,87,18,94,26,62,97,65,38 +81,97,62,17,43,28,15,51,38 +65,17,84,74,49,52,51,34,43,48,61,81,99,15,55 +92,74,52,66,53,81,12 +24,45,75,47,22,94,62,97,65,92,17,74,52,51,88 +49,52,88,34,57,66,19,53,61,81,99,15,64,39,12,35,37 +17,84,74,49,52,28,51,88,34,57,66,19,43,53,48,81,99,15,39,12,35 +37,58,87,45,47,55,94,22,35,42,18,26,77 +62,97,65,92,49,34,57,43,53,48,81,99,15 +28,88,34,57,66,19,43,53,48,61,81,99,15,64,55,12,76,37,14,25,77 +34,57,19,43,53,48,61,81,99,15,64,55,39,12,35,76,37,14,25,77,83,56,13 +29,92,94,77,24,62,58,42,65,97,84,47,75,22,25,87,83,26,18 +74,28,51,34,57,19,43,48,61,81,15,64,55,12,35,76,37 +35,12,76,25,42,13,37,26,77,87,39,29,94,56,45,47,14,58,75,22,24,83,62 +94,26,97,52,88,34,57,43,81 +75,47,87,18,94,26,62,97,65,38,92,17,84,49,52,51,88,34,57,66,19 +35,83,81,15,24 +29,39,55,64,13,47,12,18,42,87,24,94,14 +49,52,28,51,88,34,57,66,19,53,48,61,81,99,15,55,39,12,35,37,14 +48,61,81,15,55,39,35,76,37,14,77,56,13,58,24,29,42,45,75 +39,35,14,83,24,29,45,87,22,26,62 +43,53,61,81,15,55,39,76,25,77,58,29,42 +49,81,61,48,55,88,15,12,14,37,51,57,66,34,99,52,64,39,76 +97,47,37,87,75,83,77,94,45,56,76,42,25,13,29,22,18,58,14,38,65 +53,48,15,12,35,13,58,29,45 +42,22,12,47,75,35,18,24,58,45,97,29,13,76,25,26,37,87,94,56,83 +49,47,26,74,65,38,19,57,84,92,66,43,87,52,97,94,17,34,18,28,62 +55,39,12,35,76,14,77,56,13,29,45,75,47,87,22,18,26 +58,97,28,84,18,29,42,92,13,87,47 +24,64,76,13,83,15,77,61,56,42,75,12,81,39,45,25,29,37,14,48,58,99,55 +92,74,49,28,57,53,81 +58,24,29,42,45,75,47,87,22,18,94,26,62,97,65,38,92,17,84,49,52,28,51 +74,43,84,28,19,87,62,38,94,88,18,66,47,34,65 +34,66,61,15,55,35,25,77,83 +29,42,45,47,22,65,38,92,49,28,51,88,34 +13,24,29,42,45,75,47,87,94,65,74,49,28 +37,25,77,83,56,42,45,47,62,38,92 +77,56,24,42,45,75,26,62,97,17,74 +57,66,19,43,53,48,61,81,99,15,55,39,12,35,37,25,56 +48,35,76,64,77,37,43,39,61,15,99 +83,56,58,24,42,45,87,22,94,97,65,92,84,74,49 +77,64,14,22,37,29,39,13,24,76,83,99,35 +58,66,99,15,43,25,64,76,12,61,19,35,13,14,39 +37,14,58,42,47,87,22,65,92 +55,61,42,75,81,15,58,64,83,13,25,14,48,56,24,29,39,77,45,99,12 +92,43,65,52,66,61,74,81,84,62,15,53,97,28,19,57,88,34,17,51,49 +26,62,97,65,38,92,17,84,74,49,52,28,51,34,57,66,19,43,53,48,61,81,99 +47,87,22,18,94,62,65,92,74,49,52,28,88,57,43 +92,52,94,81,57,49,97 +25,77,83,56,13,58,29,42,45,75,87,22,94,26,62,97,65,17,84 +84,94,97,45,47,66,92,26,49,88,57 +47,42,94,24,12,87,37,64,35 +38,87,51,97,65,94,52,26,66,57,49,18,75,92,62,17,88,84,47,34,74,45,22 +26,97,84,88,66,61,99 +66,43,62,65,87,94,17,57,49,97,19,52,47 +28,84,65,66,74,38,55,99,64 +14,77,83,13,29,42,45,75,47,22,26,62,65 +62,65,38,92,52,88,15 +84,88,66,19,61,81,12 +14,55,76,48,88,43,49,28,57,37,15,53,66,19,39,52,64,81,51 +87,22,18,94,26,62,97,65,38,92,17,84,74,49,52,28,51,88,34,19,53 +28,42,38,87,22,45,97,34,92,51,17,26,47,29,94,18,49,52,74,75,65,84,62 +97,17,18,26,45,13,22,29,94,25,38,87,42,56,47,14,62,24,58 +17,84,74,52,28,88,34,57,66,19,43,99,64,55,35 +48,99,15,64,39,12,37,14,83,56,13,24,42,45,75 +14,25,77,83,56,13,58,24,29,42,45,75,47,22,18,94,26,62,97,65,38,92,17 +55,25,15,35,58,24,19,77,39,66,12,13,37,53,56,81,76,14,43,61,48,83,64 +14,19,83,48,76,24,13,61,29,15,25,37,12,99,81 +88,34,99,64,35,83,56 +22,94,26,62,97,65,92,17,84,74,28,88,34,57,66,19,48 +43,83,53,25,51,57,37 +99,77,64,28,37,12,15,43,25 +84,52,51,34,19,43,48,61,99,15,64,55,39,35,76 +56,24,38,75,62,29,74,26,47,17,94,97,45,87,52,49,42,84,13 +13,58,24,29,42,87,94,26,65,74,28 +97,65,38,92,17,84,74,49,52,28,51,88,34,57,66,19,53,48,61,81,99,15,64 +42,94,56,76,25,58,37,45,14,18,12,22,87,47,24,75,26,97,13 +26,49,28,57,22,45,87,66,18,92,65 +42,18,92,17,84,34,57 +52,28,51,88,34,57,66,19,43,53,48,61,81,99,15,55,39,12,35,76,37,14,25 +47,38,92,17,84,74,49,88,34,66,43 +76,53,15,19,51,37,66,83,35,48,61,88,55,77,81 +87,94,97,65,38,92,84,49,52,28,51,88,66,43,53 +19,52,99,49,66,34,53,81,61,64,57,74,12,55,43,39,15,92,17,88,28 +55,39,12,35,14,13,42,45,75 +29,84,24,75,18,38,47,22,87,28,42,49,74,51,17,65,88,26,62,45,97,92,52 +87,58,49,42,75,84,52 +53,48,61,81,99,15,64,55,39,12,35,76,37,25,77,56,13,58,24,42,45 +52,57,66,48,61,37,25 +55,12,35,37,14,25,77,13,58,29,42,45,75,47,87,22,18 +81,15,64,39,12,76,25,77,83,56,13,24,42,45,75,47,87 +18,38,17,84,49,52,34,19,43,48,61 +88,52,66,97,74,17,92,94,65,45,75,84,87,51,47 +19,53,48,99,55,12,76,14,25,77,83,56,13,58,29 +13,24,29,45,87,94,26,62,65,84,74,49,28 +77,55,75,26,42,37,29 +37,56,42,45,47,13,35,55,22,83,75,64,58,76,15,14,18 +66,97,26,65,57,92,88,62,18,51,74,94,38,48,53,19,49,52,34 +56,26,18,92,49,38,83,13,47,97,94 +49,52,88,19,43,81,99,15,12,35,76,37,14 +37,83,35,24,13,43,12,99,77,66,64,14,55,39,48,58,76 +17,26,51,22,38,42,57,74,84,92,34 +29,42,45,75,47,87,18,26,62,97,38,17,74,52,34 +19,43,53,48,61,81,64,55,12,35,76,14,25,77,83,58,24 +99,28,15,14,12,55,37,49,51 +28,12,53,81,43,74,76,57,55,64,35,52,37,34,99,49,51,88,66,48,19,39,61 +18,94,26,62,65,92,17,84,74,52,51,88,34,57,53,48,61 +39,12,35,76,37,14,25,77,83,56,13,24,29,42,45,75,47,87,22,18,94,26,62 +25,77,83,56,13,58,24,29,42,45,75,47,22,18,94,26,62,97,65,38,92,17,84 +57,66,19,43,48,61,81,99,15,64,55,39,35,76,37,25,83,56,58 +53,55,57,81,28,48,74,39,17,38,52,61,66,15,84,51,92 +22,77,12,42,39,14,45,37,29,94,18,83,55,75,47,24,35,76,56,13,58,26,25 +58,25,22,42,26,14,62,29,18,56,83 +34,76,37,25,83,56,13 +77,56,24,42,45,22,18,26,62,97,38,92,17,84,74 +29,87,94,26,65,17,84,74,49,52,28,88,34 +15,64,55,39,12,35,14,25,77,24,29,42,45,75,47,87,18 +47,65,43,94,74,38,62 +22,18,94,26,62,97,92,17,84,52,28,88,34,66,43,53,48 +28,51,57,66,43,53,99,64,55,12,76,37,25 +24,83,58,35,14,45,64,75,15,29,25,76,81,55,42,39,77,13,61,47,56 +26,62,97,65,38,92,17,84,74,49,52,28,88,34,57,66,19,43,53,48,61,81,99 +81,15,12,35,14,25,56,13,58,75,87 +37,14,25,77,83,56,13,58,29,42,45,75,87,22,94,26,62,97,65,38,92 +64,55,37,58,45,22,94 +38,92,17,84,74,49,52,28,51,88,34,57,19,43,53,48,61,81,99,15,64,55,39 +15,64,55,39,12,35,76,37,14,25,77,83,56,58,24,29,42,45,75,47,87,22,18 +14,25,77,83,56,58,24,29,42,45,75,47,87,22,18,94,26,97,65,92,17 +65,26,38,62,24,29,94,45,84,17,51,42,52,87,28 +56,13,29,42,45,87,22,18,26,62,97,65,92,84,74,49,52 +97,65,38,92,17,84,74,52,28,51,88,34,57,66,19,43,53,48,61,81,99,15,64 +22,62,97,17,74,49,28,51,43,53,48 +35,99,25,12,76,53,64,48,15,19,52,57,61,43,51,81,14,88,66,37,55,34,28 +22,18,94,26,62,97,65,38,17,84,74,49,52,28,51,88,34,57,66,19,43,53,48 +74,94,97,47,65,29,49,87,18,13,24,52,84,58,22,56,75,42,17,62,38 +65,92,17,74,49,52,28,34,57,66,43,48,61,81,99,64,55 diff --git a/2024/day05/test b/2024/day05/test new file mode 100644 index 0000000..9d146d6 --- /dev/null +++ b/2024/day05/test @@ -0,0 +1,28 @@ +47|53 +97|13 +97|61 +97|47 +75|29 +61|13 +75|53 +29|13 +97|29 +53|29 +61|53 +97|53 +61|29 +47|13 +75|47 +97|75 +47|61 +75|61 +47|29 +75|13 +53|13 + +75,47,61,53,29 +97,61,53,29,13 +75,29,13 +75,97,47,61,53 +61,13,29 +97,13,75,29,47 diff --git a/2024/day06/day06.bqn b/2024/day06/day06.bqn new file mode 100644 index 0000000..4195abc --- /dev/null +++ b/2024/day06/day06.bqn @@ -0,0 +1,16 @@ +in←>•FLines"input" +map←'#'=in +i‿j←⊑/○⥊⟜(↕≢)'^'=in + +Move←{𝕊map‿i‿j‿v‿k: + p←⌽/i↑j⊏˘map + newi←{0<≠p ? 1+⊑p ; ¯1} + v↩1¨⌾((∾⟜j¨1+newi+↕i-newi)⊸⊑)v + ⟨⌽∘⍉map,(≠map)-j+1,newi,⌽∘⍉v,k+1⟩ +} +≠·‿·‿·‿v‿k←Move•_while_(0≤2⊸⊑)⟨map,i,j,(≢map)⥊0,0⟩ +•Show +´⥊v + +cs←>/○⥊⟜(↕≢)⌽∘⍉⁼⍟k v +Stop←{𝕊map‿i‿j‿v‿k: ((i‿j⊑v)∧(¬⟨i-1,j⟩⊑v)∨(¬⟨i+1,j⟩⊑v))∨j<0} +•Show +´{0≤2⊑Move•_while_(¬Stop)⟨1⌾(𝕩⊸⊑)map,i,j,(≢map)⥊0,0⟩}˘cs diff --git a/2024/day06/input b/2024/day06/input new file mode 100644 index 0000000..5bc1f4c --- /dev/null +++ b/2024/day06/input @@ -0,0 +1,130 @@ +...#........................................#........#.................#............#.#.......................#...............#..# +...#........#.....#..................................................................................#......#..#.................. +.................#.......................#.#........#......#...........................................#...#..........#........... +..................#..................#...#.....................................#........#......................................... +...#.....#.......#..............#.#....##.............#....##......................................#...................#.......... +...#..........................................................................................................................#... +..#..#.............#.....#...............#.......#..............................................#....#............................ +......................#..#...............#...................#....#..........................#...#............#...#....##......... +..#.#.........#................#............#............#.#.......#................#....#..#..................................... +.......................................................................#.....................................#...........#........ +...........#.....................................................................#.................................#......#....... +...#.........#....................................................#..............#.............#..........#....................... +.................................................................................................#................................ +..................................#.#.#...#.......#.............#.......................#..#.......................#.#............ +.......................#.........................................#..........#...#.....#....................................#...... +.......#.......#.#...........#......................#.....#..#...#.#...............#.............................#...#............ +............##...#......#.........#......#............................................................#.........#..............#.. +..#........................................#........##..#...............................................................#......... +...........#..............##................................................................................#..................... +..#................................................................................#..............#............................... +...................................##..............#..........................#.......#..#...............#........#............... +....#............#.........................#................................................................#........#............ +............#.....................................................................#.............................................#. +............#..........#.......#...........#.#......#..............#.........#.......................................#......#..... +..#...............................................#..................................#.............................#.............# +.........................................................................#........#................#......#.......#....#........#. +.......................................................................#.....##.................................................#. +..............#.............#...........................#...#..#....................................................#............. +.......#..........................#.......................###..................................#.....................#..#......... +................#.................#.............#......................................................................#........#. +.#.....#................#......................................................................#................#................. +................................#........................#........#..#........................#................................... +..............................................................................................#.....................#.........#... +..................#.................#.........................#.....#................#............................................ +......#...................#...#...................#..................#...........................#......###...................#... +.............................##.....#..............#..............................................................#....#.......... +......#..................#....................................................###....................#..............#............. +............#...#..................#........#.............#..............................#.........#..........................#... +....#...............................#......#......#...............#.#......#............#...................................#..... +.......#...................................#.#.#.........................................................#..................#..... +.....................#.......#.#......#.#.....................#................................................................... +......#.....#............................................................................#............#.......#..#................ +..........#.#......#...................................#....#.#............##..................................................... +...............#........................#..................................#...........#...................................#...... +.#....................................................#.......................................................................#... +......#.........................................#...#.........................................#........#.......................... +.........................................#..........#............................................................................. +...................#.....................................#.....................#..#............#....#........................##... +.................................#.........#.............#.............................#...........................#...#.......... +..#................................................................#.....#....#.................................#................. +........#................#............#.#..........................................#.............................................. +..#...........##.....................#..#..........................#...#...#....#................................................. +................................................................................#................................................. +............#...........#.........#....#.........................................................................#................ +.............................#...........................................#...............##...................................#... +......................#..............#...#........................#........................................#...................... +............#..............#...#.....#.....#..........#...........................#........#...............#...................... +..................#............................#....#................................................................#............ +..#........................#.............................#......#...............#....#...........#................................ +.................................................#................................................#..................#........#... +.#......#.........................................................#...........#...#.......................#....................... +..........................................#.......##........#................................................#..##............##.. +..............#...#....................................................................#........#...........................#..... +................#....................................................................#........................................###. +....#............................................#........................#.................#........#.....#...#.....#.#....#..... +...##..........#.................................................................................................................. +#....#.........#....................#.#.........................#..........##.......#....#..#....................#................ +........#.........#..........#.................#..................#................................#.......#................#...#. +.#..........................................#..#..#......#................................#.#.#..#................................ +....#.......#.........#............................................................#....#......................................... +.....................................................................#...#......................#................................. +............#.....#.....#..........#...............................................................................#.............. +.........................#...#.#.......#....................................................................#.................#... +......................................................#.#..........................#...#................#......................... +.....#.........#.........#..............................................................#...................#.#......#............ +.......................................#......#.......................#.................................................#.....#... +.....#....#....................................................................................................................... +#..........#....#....................................#.............#...............#...................#..........#............... +..#....................................##.....................................#...............................#................... +....#..................................#........................#................................................................. +....#................................................................................................#...................#........ +....#................................................................................#............................................ +..........#.....#...................#.......................#......#.............................................................. +#...................#..........#............................................................#............#..............#......... +...#...#....#................................#............................#.##.....................................#.............. +..........#.........#.....#...........#............................#...............#.#....#................#....................## +.....#...................................................#........................................................................ +............##....................................#..................#.#..#.....................#.........#....##......#...#...... +...........#.......#....................#.......................#..#.................#.......#.........#.......................... +#.....................#..#..............................................................................................#......... +....#....#..............#............##....................................................^.................#..............#..... +.........#......................................................#..............#............#...#......#....#..................... +.......##...................#...........#.........#.......................................#..........................#............ +.#........#.#........................#...........#............#..#........#........#.............#................................ +..................##........##.................................................................................#................#. +...#...................#.....#...........#.........#..#............#..................................#.....#..................... +.................#.........#..........#............#......#.........................#.............#.......#......................# +.................................................................#...............#.....#.#....#................................... +..........................#...........................................................................................#..#........ +..............#.................................................................................##......................#......... +....#...#....................#...............................................#................#............#...................... +........................................................................#........#................................................ +....#.....#......................#.......#............#......................................#..................................#. +................#................................#.#.............#.#.........#..............................................#..... +..............#..................#...#...........................................................................#................ +...#..........#....................................................#...............................#...........#.......#.......... +...................................#....................#..#.#........#..#.......................#...#.....#...................... +.......#.....#.#.......#....#............#...............#..........#.................#........#.#................................ +.....#....#.........#........#.......#............................................................................................ +..#........#......#............................................................#..........#...............................#....... +..#..#...................................#....................#...#.#................#......................#..................... +....................................#......#.....................#...........#.....................#........#..................... +.#..................#.........................................................................................................#... +..............#...........#.#....#..#......#..#.#...#.#.........................................................................#. +...#............##.......................................................#.......................#..#............................. +......#........#..........#..#.#........#.....................#................................................................... +...#...........#.........................................#............#.............#....#.....................................#.. +...........#.....................#......................................................................................#......... +.......#..............#...............#............#..........................#............................#........##............ +.............#..........#..............................................#................#..............................#.......... +...............#..............................#.................#.....#................#....#..................................... +............#.................#..........#........#............#..#......#.......................#....#...#.#...#.#............... +.......#.#...................................##..............#.....#.....................#.................................##..... +..#..#...#...#....#.............#..#.....................................................................................#........ +......#......................#...#...#..........#......................................#.................#....#.................#. +.......#...........#...........#...................#..............................#.......................................#....... +......#.......................................#...............................................#.........#........#....#.........## +......#.................................................................#...#............#..........#............................. +.....................................#..........#.........#.....#.............#...........#....................................... +.#.....................................#......................#.....#..#.......................................................... diff --git a/2024/day06/test b/2024/day06/test new file mode 100644 index 0000000..a4eb402 --- /dev/null +++ b/2024/day06/test @@ -0,0 +1,10 @@ +....#..... +.........# +.......... +..#....... +.......#.. +.......... +.#..^..... +........#. +#......... +......#... diff --git a/2024/day07/day07.bqn b/2024/day07/day07.bqn new file mode 100644 index 0000000..b1903cf --- /dev/null +++ b/2024/day07/day07.bqn @@ -0,0 +1,16 @@ +Split←((⊢-˜+`׬)∘=⊔⊢) +in←⊑⌾⊑˘•ParseFloat¨¨0‿1⊸(↓¨)˘>' '⊸Split¨¨':'⊸Split¨•FLines"input" +Check1←{ + 𝕨𝕊⟨n⟩: 𝕨=n; + 0=(⊑𝕩)|𝕨 ? ((𝕨÷⊑𝕩)𝕊1↓𝕩)∨(𝕨-⊑𝕩)𝕊1↓𝕩 ; (𝕨-⊑𝕩)𝕊1↓𝕩 +} +•Show +´⊑˘/⟜in Check1⟜⌽´˘in + +Unconcat←{(𝕨-𝕩)÷10⋆≠•Repr𝕩} +Suffix←{0=(10⋆≠•Repr𝕩)|𝕨-𝕩} +Check2←{ + 𝕨𝕊⟨n⟩: 𝕨=n; + 𝕨Suffix⊑𝕩 ? ((𝕨Unconcat⊑𝕩)𝕊1↓𝕩)∨((𝕨÷⊑𝕩)𝕊1↓𝕩)∨(𝕨-⊑𝕩)𝕊1↓𝕩 ; + 0=(⊑𝕩)|𝕨 ? ((𝕨÷⊑𝕩)𝕊1↓𝕩)∨(𝕨-⊑𝕩)𝕊1↓𝕩 ; (𝕨-⊑𝕩)𝕊1↓𝕩 +} +•Show +´⊑˘/⟜in Check2⟜⌽´˘in diff --git a/2024/day07/input b/2024/day07/input new file mode 100644 index 0000000..e413496 --- /dev/null +++ b/2024/day07/input @@ -0,0 +1,850 @@ +20261572812: 98 138 31 2 666 +45327: 8 9 335 97 87 +829287: 99 13 816 7 1 744 9 +231630061: 460 2 33 93 500 1 52 8 +651017: 713 52 851 +30996182: 4 107 24 60 50 60 182 +16545464: 810 5 1 85 3 6 4 6 19 +146327: 7 4 8 7 7 1 1 3 73 466 7 +326: 6 4 5 7 91 4 62 8 85 7 3 9 +14687269: 7 63 8 5 6 337 1 857 1 3 +1730: 82 7 613 522 21 +6511850: 626 2 36 4 1 8 9 9 1 665 +13883777: 43 3 923 109 3 1 1 11 +19083747060: 546 3 33 44 5 5 38 3 6 7 +1568: 84 9 71 662 6 63 9 1 +203: 72 48 4 70 9 +157: 70 83 4 +1494863426: 249 6 2 4 2 748 9 4 3 4 +416767: 392 19 52 90 9 55 +60088: 8 1 2 723 12 67 +3169: 25 98 3 685 31 +11301912270: 2 680 336 4 5 6 9 5 274 +2292: 29 418 11 5 2 +48651: 40 304 4 5 6 +33745743: 49 3 9 890 9 1 846 9 +867714120: 374 4 6 5 327 234 +26733890742: 8 95 2 8 4 729 45 6 1 6 +4511655425: 11 59 4 94 613 3 64 +44441: 92 524 72 81 7 1 +7991: 6 5 9 1 764 7 7 5 733 1 +278337: 8 7 248 8 4 5 375 6 30 6 +476229876539: 94 3 1 9 8 9 29 9 1 5 7 39 +1733207525: 13 2 525 3 19 6 301 25 +1466117: 8 17 9 509 846 +1189: 4 5 5 3 889 +7817084617971: 781 708 4 570 47 9 72 +151614: 16 4 3 5 92 +8682: 2 8 86 3 24 +7446697: 35 71 38 7 97 +8668844903: 2 5 276 5 3 8 1 2 6 71 8 3 +22949069796: 2 815 9 8 9 7 6 73 6 8 9 4 +73257040: 4 54 1 3 9 7 7 6 21 3 7 +2434621: 629 289 34 1 78 85 +135: 20 7 5 +213408: 1 369 86 234 2 +106817943544: 2 74 29 852 61 50 14 4 +50897732: 53 4 3 2 8 98 66 5 15 74 +481687: 63 545 18 44 151 +866107837: 68 962 5 662 4 +21651: 1 7 4 3 6 5 2 5 +1867497: 33 5 629 3 784 6 +658564: 2 6 4 6 53 42 4 4 4 2 2 +1286: 6 327 878 70 5 +150654: 7 53 20 2 52 +32009509009: 619 108 3 6 29 95 7 4 9 +128298588: 8 2 5 77 4 8 9 8 65 2 8 12 +106971480: 1 6 7 23 5 88 6 7 4 85 99 +1298: 838 4 118 5 333 +109869: 30 95 499 68 4 3 +9534854: 9 47 9 1 5 628 449 36 1 +16008: 295 7 1 948 105 884 4 +7800300697: 60 9 37 8 450 231 3 4 +19656: 93 6 4 53 42 3 +3331320: 17 7 6 124 80 744 85 3 +2023999391: 681 118 4 7 7 4 514 +239993784: 7 41 2 5 527 191 7 948 +769876: 4 6 6 285 8 5 9 1 1 5 9 1 +730784: 545 6 6 41 32 +94876096665: 24 2 7 20 1 6 1 7 4 2 665 +459334762: 2 2 9 93 2 3 8 9 412 8 2 +6027067800: 3 27 695 221 120 +42749: 4 7 399 44 5 +137175: 84 9 59 25 +16830002448: 337 6 2 9 3 7 8 17 6 477 +473075680: 453 64 172 76 70 +950398: 63 8 119 5 398 +3374757296819: 721 4 4 9 71 514 130 +8906411904: 43 834 398 20 624 +89494: 6 2 451 8 9 634 3 1 6 7 6 +385612430: 10 7 677 103 79 +226663: 1 7 5 11 280 2 2 1 5 69 +7019457032: 2 83 3 809 1 41 826 +117829733: 332 846 297 22 6 4 1 +4293: 47 5 61 8 4 576 92 9 +27956: 4 3 50 13 6 +1698430: 2 4 737 4 72 226 156 +904: 46 9 2 654 52 20 68 +592947912: 1 219 8 5 903 8 3 83 8 3 +594519: 59 1 4 51 9 +82300: 7 2 113 64 50 +18655560: 3 365 66 1 84 +183864: 4 9 80 95 978 +4549914: 4 6 46 9 1 582 8 4 952 9 +627883: 6 278 8 3 +18928824: 3 5 6 262 81 4 2 24 +57994: 1 4 95 2 15 73 2 1 31 +1759022: 39 1 8 5 42 8 493 +5033908: 23 706 3 31 35 +556387631: 7 7 54 90 3 6 67 6 3 32 +1458452: 2 3 1 4 90 158 678 9 4 +746735089: 45 775 519 2 67 91 3 9 +96495380: 4 85 303 17 6 1 4 149 +275290785: 1 5 3 8 42 4 5 505 4 6 5 9 +9455765: 424 946 4 69 4 +603870572: 903 86 6 6 6 9 491 2 2 +2110: 51 114 91 8 62 +2463: 3 303 756 2 3 1 791 1 +65915810695: 65 827 88 810 696 +185882150: 1 8 58 821 47 +95795337: 86 254 617 953 37 +159378123309: 8 9 7 6 1 520 82 20 5 3 3 +480856880: 9 7 73 6 670 3 8 1 6 4 8 7 +2592: 75 176 8 5 +123664181: 1 8 391 8 4 644 6 2 723 +29321568: 834 366 189 96 1 +195388: 903 36 6 277 63 +4824530231: 15 75 7 497 36 30 231 +33868: 5 3 78 4 5 6 1 53 1 +734046: 81 65 44 15 114 +14871045810: 619 6 4 2 1 148 45 81 1 +3448940: 774 88 4 931 9 +48501274: 61 5 67 9 5 6 9 45 88 6 +7122124803: 6 105 8 92 16 480 2 3 +56015: 62 14 9 9 7 +63596840304: 3 3 91 27 92 5 15 2 2 +17858156412: 7 3 49 450 9 7 540 9 3 +390165: 6 3 8 22 316 6 2 4 9 37 +1276750: 50 6 51 1 8 28 9 98 4 6 +9471132: 816 67 2 3 633 3 132 +5998115: 51 4 4 9 6 816 515 +405042823: 54 75 42 823 +270329888710: 6 3 38 9 5 8 8 72 4 7 10 +9011938: 5 3 5 1 7 36 36 3 7 9 3 20 +660: 4 75 581 +1341831680: 4 7 258 141 88 56 560 +22831300800: 7 4 876 5 591 80 7 5 9 +6298914: 5 113 64 8 914 +29294: 3 9 76 876 2 11 +237239168: 35 7 1 8 2 828 85 7 67 1 +1802251877126: 15 2 267 25 2 9 77 129 +11008: 4 865 554 2 96 74 +642251445: 64 22 5 144 5 +2064: 3 2 78 543 7 9 5 2 +13773890668: 71 833 4 7 7 9 528 7 78 +28935437: 12 51 7 219 353 6 7 7 +2400515: 480 5 4 55 60 +761: 12 8 84 53 528 +3640: 20 6 480 7 20 78 +60299935213: 472 589 964 225 6 4 3 +224408: 8 8 9 1 8 29 2 95 8 2 5 3 +2046614307: 7 55 3 12 9 25 14 307 +31922850999: 6 9 1 19 1 118 7 9 4 5 6 8 +83457941113: 84 300 2 5 1 69 99 6 13 +608409710: 58 4 6 1 4 52 7 41 55 2 +819044459: 7 975 3 705 2 6 +10019018: 93 43 97 430 18 +2726736: 664 958 82 21 2 8 +849157: 996 2 9 5 1 2 1 1 1 7 421 +7278520: 1 2 981 6 3 2 1 9 4 8 5 61 +118060806: 373 11 5 143 43 6 +20902: 70 81 2 69 32 5 26 1 +639450: 359 70 6 435 735 +41696: 5 212 8 +7392: 3 765 3 453 7 1 6 +4249867874: 62 1 9 1 19 7 58 69 +32408375: 32 40 832 5 5 +1609379: 38 605 7 8 1 +1045: 9 67 6 7 956 +3060188: 8 606 1 818 9 2 6 5 8 +288224602: 1 942 3 773 2 32 730 +119: 4 3 93 8 6 +26606: 8 49 7 671 3 9 6 4 5 633 +70567960: 42 210 9 95 8 +11162592: 89 9 9 493 12 98 +1312192163295: 79 25 1 193 83 8 6 8 95 +23027: 876 2 542 8 7 +92299: 201 457 443 +73140250: 102 581 713 +134246144: 61 8 87 93 8 34 +44: 9 3 8 22 3 +66755594563: 55 62 9 1 1 4 42 3 6 4 4 3 +1235240: 9 8 90 2 69 +1167032: 9 40 2 7 38 4 7 9 7 9 73 2 +2620881661: 8 7 362 3 9 6 6 656 5 +187793: 8 179 692 98 1 +47794: 3 69 3 43 44 65 8 76 +284165701644: 99 706 353 701 644 +335162944: 57 6 98 2 944 +169260: 6 70 403 +178035795: 38 34 9 7 9 40 6 3 755 +66948420: 21 7 6 5 43 924 +2479370: 247 93 50 3 16 +6967886707: 696 7 88 6 705 +31062240000: 49 1 6 5 53 8 4 5 74 33 +8117959754763: 2 701 4 98 6 584 9 2 1 3 +14179652599: 3 70 50 492 2 94 84 7 +8834: 29 3 69 4 2 +211195608: 67 686 1 48 8 39 +9141370: 9 9 358 7 6 1 5 41 9 1 7 7 +398636: 12 5 60 4 4 6 1 322 +45629: 427 4 18 86 588 42 4 6 +209140108: 701 1 16 49 7 38 +54854749: 3 8 8 31 1 36 3 8 2 2 9 7 +36782309: 3 59 8 80 2 307 +5143959332411: 1 57 15 5 9 9 332 402 8 +1602608: 3 91 8 5 349 9 2 3 688 5 +37788: 6 8 7 687 3 +283577: 1 9 13 263 995 2 +115730: 9 3 2 124 26 2 56 8 9 2 +20700: 48 2 2 7 49 3 6 7 991 53 +276460: 25 6 6 415 3 6 70 +3271850: 322 4 392 793 10 +188703367670: 5 46 9 1 6 9 8 8 766 9 +126394406: 141 169 6 649 7 880 6 +43849535: 2 1 58 36 94 7 52 5 +7113117119: 702 9 31 137 34 11 8 +512831269: 9 29 572 229 883 15 4 +886: 4 8 15 700 6 +290874054503317: 5 9 986 8 10 900 663 5 +1150293: 4 185 21 424 9 8 885 +16808387: 45 747 23 5 8 764 +338100965: 7 1 333 5 28 35 8 74 91 +5743: 42 591 84 1 8 7 +1017379449: 233 3 95 9 18 7 6 5 2 6 9 +312579238: 665 2 442 1 89 2 2 991 +436338339683: 55 5 392 436 7 1 1 46 4 +47035605: 55 4 63 37 1 2 342 3 +85619743907: 594 144 83 743 907 +924237690: 1 8 1 37 6 9 34 11 7 688 +43212856321: 65 367 1 2 856 276 45 +5352: 506 7 39 7 9 10 1 8 303 +244908: 27 62 917 23 3 +136335660: 8 865 3 8 549 37 6 41 +30147022: 597 8 8 789 910 +267424: 1 932 3 2 6 1 5 68 1 137 +651: 6 46 5 +87604475: 8 1 725 4 236 79 2 8 9 2 +11278205567: 765 7 7 490 8 724 36 +30585804: 367 926 90 1 24 +19147: 9 69 245 34 +10826820: 520 7 522 33 68 15 5 +12150: 81 2 75 +4889: 80 6 1 5 3 9 9 1 9 380 18 +120193530: 39 642 6 2 34 4 6 9 6 +207977: 10 5 6 117 977 +1324: 4 66 5 977 +129600605: 2 5 4 331 720 7 5 3 252 +33300996: 925 36 93 6 5 +1551665414: 888 8 1 5 7 569 8 3 1 4 +1281554136: 7 62 90 6 837 487 +121034377174: 6 71 2 103 953 6 763 5 +7706354167554: 7 539 475 3 878 43 9 8 +17506596: 29 6 1 59 31 8 327 5 4 4 +413531: 9 1 19 33 2 86 9 8 899 +20895: 3 77 9 7 8 3 4 75 8 6 1 +408404: 44 7 1 327 6 3 62 9 4 6 6 +10722: 97 6 5 6 6 3 3 4 4 1 23 8 +996: 1 7 5 965 1 6 7 5 +507325: 6 83 5 88 25 +29347686: 4 2 89 9 424 8 4 1 25 8 3 +1356080: 3 129 876 8 4 +518639: 3 9 4 5 3 7 168 7 7 9 2 5 +68790276: 4 74 115 2 1 6 7 9 71 5 4 +27608836421: 74 23 112 303 478 2 +1866792852: 9 2 6 5 2 6 7 291 57 5 4 +3227072784: 34 858 526 57 912 +408841: 8 6 833 2 5 72 2 3 7 56 6 +625: 82 77 6 5 453 +710281278: 493 635 6 8 6 707 9 6 7 +7947543334: 52 6 6 7 4 908 4 5 32 2 +13287971: 8 1 3 4 4 797 2 +920304107: 4 44 9 581 107 +145: 2 6 4 95 2 +1221276: 628 4 23 3 84 +3152042325: 8 44 183 5 895 +9004631: 878 46 64 31 294 +32755464: 83 7 9 62 4 426 63 +465434: 763 61 3 +117023125: 95 9 11 871 949 3 9 4 1 +5489531364874: 871 3 526 8 7 84 9 7 9 4 +227647935510: 573 82 158 3 17 95 +987686437: 289 89 64 6 37 +489723554: 580 3 84 3 554 +2980101: 348 83 916 94 9 +932: 38 4 82 1 698 +10720145: 9 9 2 1 3 913 6 4 31 9 38 +1582199043: 331 239 95 2 44 +4939116: 488 5 845 66 6 +12960: 533 16 6 791 274 8 +1131: 6 5 4 7 893 +3956427580: 63 628 275 83 +579603: 5 13 72 45 920 +120: 2 44 31 1 1 +707973546: 698 9 969 3 6 50 7 889 +82171: 81 407 764 +59078: 146 444 74 1 4 +372416: 43 78 364 6 14 +283157070382: 1 5 1 73 6 547 4 4 7 9 8 4 +127665181: 753 6 892 46 513 +3931604: 48 840 233 19 428 +2922: 2 2 6 42 9 304 8 2 +1628538200: 2 833 6 97 7 7 7 40 251 +18933: 3 5 4 7 2 6 7 5 3 1 870 +1983470022326: 85 1 1 3 8 5 72 2 5 6 97 6 +1518804: 47 883 650 38 9 4 +206771: 533 223 932 896 6 8 4 +14944382: 55 3 94 1 15 936 9 323 +420277: 87 5 9 133 987 7 3 1 +3451113: 75 46 3 35 778 +24826110: 973 81 9 5 7 15 +2273099665: 5 7 2 5 690 397 735 +2236642944: 64 6 9 46 835 96 79 68 +184786375236: 229 83 38 804 36 +3354043148: 7 93 846 609 8 +45799: 59 10 64 3 7 +29664054396: 886 310 6 45 72 6 2 4 9 +22212: 60 256 7 8 56 28 +320339168: 20 8 161 14 94 750 2 8 +207560639: 8 597 883 85 31 2 70 +5549006: 384 76 94 900 6 +638281767: 97 5 96 6 654 3 +14219040: 7 351 2 6 54 2 1 6 32 5 3 +80115: 11 581 67 366 6 1 2 43 +12344046: 78 4 2 8 21 2 117 74 2 2 +25789271222525: 5 9 9 70 73 86 67 5 863 +6248074: 37 584 3 80 75 +69253: 9 3 1 33 8 9 3 24 6 3 616 +5420650221: 45 6 1 20 6 491 4 108 1 +82962: 5 2 69 7 7 729 3 3 3 6 1 3 +28999: 604 13 47 +1065075928: 80 2 3 99 4 664 1 6 +127772: 77 823 401 75 2 78 +130939215: 691 9 6 84 21 1 9 8 +7660: 935 6 2 8 115 +451212: 230 7 42 6 19 +2247886690: 51 1 4 8 452 6 6 667 70 +1811035556: 9 9 82 5 899 51 79 56 +4109365120: 7 62 932 476 20 316 +17089560: 4 5 8 43 3 43 6 512 10 9 +22982: 8 55 52 93 9 +186: 2 8 3 28 145 +1377312127: 5 655 33 24 8 531 70 9 +24621407: 548 52 2 432 863 +57879912: 2 24 63 5 41 1 1 3 8 4 +9319523: 224 416 8 3 23 +210304: 4 162 9 9 74 14 4 +87226: 96 3 3 2 80 7 +2148130634: 20 77 642 3 22 34 +112797844: 60 1 687 151 8 44 +34875: 44 9 2 634 5 +704382941: 3 9 462 6 9 3 2 8 1 533 1 +514339: 5 1 4 33 7 +91172: 3 34 7 7 779 805 3 +10679126102: 7 7 410 3 2 99 8 671 62 +917320: 32 3 4 710 1 +55748: 151 5 7 51 5 1 9 9 4 2 6 7 +982512: 13 3 221 459 9 376 9 +434145: 3 3 8 97 8 99 5 6 8 7 61 8 +1472458: 20 5 4 1 64 88 6 244 66 +152: 78 4 8 2 60 +1241: 22 2 83 80 6 +2740059: 48 8 6 2 41 61 63 +528: 494 32 2 +4800: 57 138 26 79 16 +1322689: 9 4 96 268 9 +987420: 4 89 693 26 34 84 4 6 6 +6243825: 8 615 1 3 825 +2466861957: 881 7 4 42 7 183 9 54 +4914: 3 2 819 +11451: 94 96 3 20 51 +23964156: 78 38 3 396 54 1 5 7 1 +2163758589: 478 21 710 4 29 433 +5237550860: 7 828 6 229 5 9 43 20 +338665: 32 6 7 78 6 7 6 6 4 9 664 +178: 3 7 9 80 8 +2147171: 69 1 75 7 7 7 9 4 3 83 4 5 +1605002: 27 9 71 5 93 8 +256854564: 20 38 803 59 6 918 +291006063: 8 6 4 6 2 505 20 9 6 5 4 +3639475198: 42 13 9 129 862 +77155930: 76 88 27 59 30 +3946048: 95 472 44 33 4 2 9 7 38 +2160667: 523 1 5 96 797 +165008: 8 456 5 5 89 9 +18151435: 8 37 9 53 395 +5369239218: 8 59 8 9 238 1 215 +5049390643: 7 651 7 4 52 591 8 9 43 +56719056: 9 568 33 7 4 1 762 8 48 +451791000: 33 46 19 8 58 30 9 +2603596800: 7 779 8 629 668 640 +1242803851704: 891 9 58 20 5 69 1 703 +19728171: 543 5 4 9 17 1 +726115: 7 1 2 3 336 5 20 5 2 6 9 +197421: 4 7 7 4 80 345 2 594 +342622733: 48 235 81 630 7 733 +611736748: 972 247 91 97 28 +5709688746: 6 8 20 6 8 8 7 9 84 59 93 +26935: 8 7 13 267 9 3 1 1 51 8 9 +1110319: 3 408 25 6 2 9 619 +1729: 728 8 984 9 +1516073592: 24 477 4 3 578 64 3 +10192: 20 38 5 2 +4199874129612: 658 8 64 668 724 9 7 +4463235120291: 949 8 57 973 5 106 91 +469476: 2 6 2 158 61 2 683 6 6 7 +5635257: 9 6 2 29 3 6 52 2 3 5 1 6 +139207: 1 870 2 8 7 +2768307332: 477 5 4 7 9 2 49 1 94 +115373519: 7 279 65 8 6 98 4 4 3 4 9 +13997490486: 5 7 7 1 5 7 570 30 9 3 91 +1680: 20 461 2 718 +1270: 135 484 80 563 9 +2821947: 4 6 5 6 56 2 9 6 895 7 3 2 +825506: 1 77 28 3 382 6 98 3 4 8 +393493259: 577 828 3 33 28 5 5 9 +7301408: 145 67 35 41 6 4 128 +63195971622: 1 51 6 633 5 3 9 9 4 3 8 3 +2782104: 662 229 7 52 6 +569: 8 17 537 3 4 +146904291: 20 7 785 707 297 1 1 +775581: 692 42 51 26 38 +72170: 8 28 8 22 248 35 +15580: 32 7 60 91 82 +15137565: 8 2 1 3 37 267 667 +4932150: 9 2 9 4 39 56 3 171 +25927855: 81 4 8 765 20 2 +79854: 7 1 3 7 9 94 3 3 20 8 9 6 +22979158: 476 9 3 6 8 327 70 3 4 +127781982: 47 80 5 268 28 30 3 43 +2102: 5 4 83 9 295 2 +105687: 32 33 13 4 70 +36448653989: 36 44 865 321 3 776 +170271265: 27 6 8 270 36 2 903 +14111307: 2 1 5 2 2 21 5 265 64 7 9 +34356195344: 4 966 68 794 9 656 +213840: 55 8 9 6 9 +919113216: 74 6 6 4 6 7 1 9 3 9 888 7 +4412885624: 7 500 5 17 9 7 9 85 27 2 +109: 1 4 98 +9371772: 2 2 4 4 2 485 26 6 1 8 3 +816: 3 41 43 9 6 8 +372878004: 997 85 440 4 +1080585: 731 342 5 1 6 9 2 96 1 2 +200215: 77 2 4 90 63 +618205474: 3 9 21 3 245 70 472 +814900: 76 13 49 87 725 +19021857936: 13 2 5 2 8 7 2 9 4 977 9 7 +7647520449: 4 79 5 9 3 5 3 83 7 8 3 97 +27673593644: 7 611 2 6 7 59 308 4 +5303585976395: 86 3 46 67 6 988 388 9 +4761: 2 4 8 7 2 +47095296: 4 969 5 5 2 3 2 3 8 3 54 6 +540397305: 4 55 983 204 3 734 81 +29687553: 92 4 537 579 6 81 +1323: 41 295 988 +7119955: 2 637 9 3 57 +25443072: 96 704 18 576 1 54 +5959: 9 725 10 8 7 +4114: 3 5 257 131 35 93 +82044355016: 92 332 3 93 95 4 7 76 4 +294366037: 4 56 11 247 63 33 5 89 +214663955220: 2 5 29 7 7 901 429 30 6 +3262: 50 9 16 7 +11457938: 416 5 486 56 2 +906440: 19 1 75 60 34 +2191342561199: 330 8 5 444 4 153 975 +437950713: 145 7 6 9 8 50 713 +246758: 92 9 297 781 61 +82810: 12 975 58 72 7 +7891: 73 11 578 +1255272: 125 42 9 81 91 +27973: 3 23 4 79 11 282 +68667: 678 3 6 77 7 +136624821: 673 29 831 7 1 +41550483: 74 9 55 6 58 687 853 +309186514: 2 3 6 98 6 545 447 7 91 +8249343115: 94 70 12 87 3 109 6 +399336: 62 8 11 22 226 8 7 +795786: 4 89 439 7 89 +298384: 83 7 1 7 9 42 8 7 6 2 6 4 +11562407: 6 9 8 4 16 5 1 5 7 6 240 5 +186661952: 9 7 274 698 61 +34885431: 387 508 56 40 3 917 +2067520: 89 16 841 7 910 +128753: 45 4 3 93 7 +511005: 8 8 43 857 7 5 +28633297: 78 29 892 3 97 +63180: 46 596 44 91 3 81 +990793851: 7 5 9 2 4 8 3 39 3 6 3 51 +16421139602: 9 67 3 6 4 27 6 1 69 6 1 2 +139: 6 8 91 +1649833: 3 3 738 902 833 +2671786336: 26 717 7 7 75 858 6 +10141397: 55 790 4 3 44 9 951 +2464139376: 734 563 5 9 31 9 586 4 +424715: 9 4 501 9 869 +81979110546: 910 879 90 54 5 +2986635261: 1 70 96 4 61 88 599 3 +2152893601: 6 9 1 6 2 97 85 492 8 5 3 +61426224: 4 3 85 8 8 978 +40496968: 3 1 5 5 9 847 49 9 7 84 2 +30897645282: 8 6 55 921 933 33 7 +22188546846: 9 8 2 40 9 3 136 7 4 47 +18083286: 2 5 4 78 1 522 44 24 1 2 +33589182: 5 36 96 16 43 533 9 46 +538: 4 91 7 80 4 77 6 +2803584: 9 97 9 7 6 3 73 8 2 9 5 56 +8723: 9 78 1 2 3 +52823506: 528 23 494 9 2 +53738020: 99 68 53 110 72 820 +205872: 2 71 5 5 2 2 9 8 7 1 855 8 +676868645553: 6 685 83 686 1 45 550 +193662: 5 6 4 8 1 18 8 5 929 5 1 2 +80168990: 2 8 1 1 20 8 7 4 87 8 55 1 +39364: 7 656 1 49 8 260 8 84 +5957812: 52 5 9 4 7 791 +10356: 79 4 63 6 12 +34261: 4 54 9 5 6 4 5 491 +749180: 23 9 137 676 95 797 +4663718: 6 78 1 474 3 1 743 7 38 +1925011: 40 59 4 814 715 +52506566150: 6 2 7 5 6 3 2 9 6 661 50 +8945777399: 6 7 90 5 3 15 3 15 2 39 9 +3028272604: 484 8 638 552 604 +188437635: 5 436 5 4 9 72 8 12 2 1 1 +181156501: 6 48 31 50 567 1 +325638624: 8 3 800 44 4 841 60 +8032850: 79 52 7 73 767 19 64 +433839131280: 2 1 3 3 8 7 6 5 454 10 2 4 +86385975: 69 36 1 1 535 75 65 +13686: 46 2 280 1 245 +1712014581552: 341 2 621 4 44 11 57 4 +1489310550: 78 449 9 9 525 +255151481: 54 51 1 27 5 18 69 78 8 +63232569: 23 47 98 94 16 4 569 +15505: 8 35 30 1 5 +489767: 5 960 102 89 78 +325626915: 395 6 8 914 68 2 9 5 1 +14129837307: 28 90 7 239 89 652 9 +764: 721 5 33 6 +4223: 7 463 56 919 7 +166163510506: 16 531 6 847 510 506 +587419833297: 3 37 6 882 9 69 33 2 97 +399277947: 31 8 927 7 664 2 281 +170242241098: 49 39 425 38 8 13 907 +5668108: 9 227 545 6 58 +203298244380: 6 69 493 315 964 +33496949455: 809 49 35 1 845 6 249 +501967675: 7 9 1 784 5 3 6 6 7 62 5 5 +1876910: 5 4 6 2 8 4 389 5 6 708 2 +2965650: 3 707 8 50 +118205: 95 51 42 2 99 4 2 261 +100089048: 8 4 2 70 3 4 4 7 825 2 3 8 +46834203: 9 4 41 9 6 135 4 +88282419: 44 2 282 4 17 +1181936466: 1 6 3 9 72 22 94 7 1 6 7 5 +16346: 8 7 4 86 6 +79124454: 6 4 6 3 2 4 20 310 3 9 2 3 +8135081494: 8 1 1 338 7 6 938 3 8 6 8 +333717154: 3 918 472 3 530 3 65 4 +58432: 3 900 2 8 64 +26363: 9 7 82 269 1 +2099820378: 443 5 948 375 3 +12057: 632 2 19 3 8 +147361111: 917 7 7 49 78 3 4 6 3 34 +1045885343: 7 249 6 853 46 +170369280: 87 4 7 6 24 2 46 120 +669944977: 331 46 44 97 7 +257509: 263 583 5 61 60 49 +1757606033: 258 4 7 17 2 3 67 4 562 +4072900: 6 65 918 216 4 845 +984: 2 4 77 866 17 +1530342088: 128 6 17 140 28 389 5 +171554880: 128 480 8 346 56 588 +1018072: 2 4 8 9 1 87 598 9 88 1 +2349979998225: 78 332 66 57 9 3 223 +3024234657: 64 2 95 6 17 41 1 48 55 +1515192: 621 1 29 7 4 3 +305325282: 272 33 31 91 61 82 +54685: 7 18 9 3 1 2 4 9 7 82 38 +71892: 3 9 69 79 98 9 5 7 93 4 9 +221909351484: 78 8 219 359 2 547 6 +799880400: 6 9 4 9 747 250 4 3 396 +26946: 2 2 3 8 1 9 4 221 8 3 4 6 +280535: 7 811 3 341 565 11 +7694: 11 699 3 +77108114084: 2 50 4 320 3 6 4 8 5 21 4 +2144050592168: 1 4 97 6 6 9 3 3 8 402 1 8 +514177: 4 54 6 3 47 2 5 4 4 333 5 +5795806: 49 117 118 +255481250: 4 121 82 997 25 +53713731064: 7 89 7 8 9 4 9 6 3 1 674 1 +3827: 2 64 6 38 7 789 +12069: 302 37 9 9 875 +26340: 5 40 49 633 86 5 +39004: 9 1 66 3 49 40 7 77 98 +199466019: 88 909 2 1 3 5 4 5 5 2 4 4 +94346225618: 548 1 5 879 559 5 7 7 1 +411053: 97 5 6 31 3 3 9 5 +15666: 54 4 72 2 19 3 84 6 +7685786934: 768 5 713 73 919 14 +2639: 565 1 804 487 783 +116657452: 5 5 29 9 8 4 9 7 2 3 5 2 +391689: 1 3 4 1 240 96 9 +20629030: 3 3 685 4 96 49 30 +92190575: 9 85 162 357 798 57 5 +200187465: 5 3 7 2 7 1 7 470 7 298 6 +841: 7 2 5 5 491 +2124: 3 593 2 343 +36610063992: 2 43 93 9 4 918 554 +114822786: 181 97 654 9 +10260285: 5 1 371 137 200 2 85 +16025920: 7 6 188 21 1 9 638 +17613507: 6 15 3 45 9 807 3 8 6 3 +239580: 1 83 310 2 484 +2027025: 779 40 55 3 15 +7115144510: 89 890 45 945 283 95 +3388245182269: 9 89 846 679 7 489 54 +1595992599927: 2 85 10 6 3 933 92 6 1 +4531547: 93 5 6 1 1 6 118 8 7 20 +789698706: 635 9 658 6 35 6 +1433136093: 4 9 64 27 5 818 750 93 +424116828954: 580 43 483 918 741 +139600188: 516 991 3 91 +120808840: 9 9 9 7 851 564 6 7 1 7 5 +10581: 48 19 1 673 786 4 +82117538: 5 1 79 33 5 9 94 63 +27964789: 21 257 656 987 4 86 5 +956: 9 35 21 +3163734: 554 79 833 6 1 +583: 3 1 9 571 +1161556284: 3 427 5 9 8 1 4 6 9 73 1 8 +605316855: 867 9 37 65 29 +7787780235: 7 9 6 382 7 41 5 303 3 +1267497: 2 13 7 3 400 6 4 2 3 2 4 5 +21273569: 96 695 55 78 5 4 337 +5218526406: 700 35 710 88 30 8 +6422539915: 8 896 896 8 109 2 18 +7471037503: 965 9 959 897 2 746 +1760697625: 5 2 7 60 697 623 +104951442: 954 22 4 8 3 7 2 1 6 59 +796965533: 29 3 4 34 4 7 2 84 5 612 +2637180: 90 25 49 6 78 +65441892692: 6 544 18 92 692 +2055416: 63 303 62 48 3 96 2 9 +3726049: 8 88 3 84 154 481 +192424: 9 71 8 248 3 8 11 21 8 +114575369: 387 925 73 32 9 +730: 4 4 2 66 8 58 +894217550: 565 989 8 801 6 8 6 5 5 +126551425: 2 371 131 652 97 385 +4561: 4 8 5 116 8 9 3 31 5 1 9 2 +85412348: 773 3 9 3 7 7 1 79 6 8 7 4 +8653448: 6 989 27 31 1 6 9 2 +38808424190: 10 485 93 8 4 302 4 8 +8051: 3 80 97 +5219: 974 114 4 8 15 6 830 8 +15324: 90 2 82 4 560 +6746536845: 70 878 8 8 711 45 +1191528: 1 6 289 260 72 +177897089474: 8 7 68 8 555 43 75 51 +2678692: 267 869 2 +651553: 2 2 6 2 18 1 9 352 69 5 8 +143: 92 7 30 8 6 +233481: 3 602 438 3 900 4 44 +230845835: 5 225 796 1 45 4 829 5 +616135338477: 13 868 46 1 7 6 91 479 +19341080: 48 35 4 50 1 3 567 +8588906: 478 3 6 4 93 2 8 147 7 +885519043205: 790 76 118 4 9 40 71 3 +3872: 5 3 226 482 +3514395790: 5 2 3 9 3 3 5 8 95 741 49 +53662: 55 97 1 5 97 8 42 149 +5088: 26 4 48 89 7 +359229: 1 437 12 8 29 +36437462: 7 3 49 13 936 1 4 4 +86296: 3 1 6 5 5 2 2 2 553 7 21 +131253470: 201 653 47 2 5 +5445324: 2 10 5 508 9 9 5 958 24 +60870634648: 5 806 8 72 8 4 9 472 +16988: 2 75 261 41 137 +53595: 45 936 8 6 12 2 7 9 +922311575: 184 462 315 5 +6210: 161 3 43 3 2 +23761847403: 8 1 238 9 33 7 23 6 6 7 9 +69625: 9 10 6 7 47 2 458 7 2 +27763: 3 23 9 41 1 747 8 4 3 8 8 +3052647: 5 65 438 4 647 +3381704: 59 5 1 164 9 4 206 1 3 2 +4970: 5 21 47 6 31 +118: 98 2 4 8 6 +8316014: 1 971 19 84 13 +3465: 138 5 10 32 2 1 2 528 7 +3530332260: 8 7 2 767 910 9 +12063293616: 6 4 5 62 1 2 86 1 7 1 5 16 +5536: 7 37 87 16 +1179238531713: 815 95 78 651 222 +27708: 2 7 175 5 528 +3879901: 3 746 69 51 75 1 +5067983: 5 3 3 4 154 1 12 5 3 608 +42455989: 4 9 9 30 5 7 1 794 7 8 +359560160: 5 425 56 10 41 16 +5120: 493 7 13 776 880 +87496046313: 910 9 1 1 95 5 5 4 6 315 +60686: 319 5 2 38 +106937025061: 9 276 5 827 3 250 61 1 +29347: 111 257 503 2 315 +614534: 6 8 6 3 947 4 878 +24659: 465 7 51 585 2 +2296436: 635 55 832 29 4 +6149400: 80 25 85 641 50 148 +1924040510520: 80 6 72 5 6 5 713 93 +220087571: 55 40 8 757 1 +610462400: 6 6 1 7 40 934 76 5 +3531963: 3 957 5 41 6 3 +698721408: 113 4 6 6 9 4 4 8 8 9 4 4 +5148269: 45 880 6 13 191 +628: 141 1 78 192 199 18 +103117571: 91 12 994 95 11 +1484996971: 716 768 99 697 1 +20880: 4 3 58 5 6 +7404612: 79 7 1 86 12 +30842169828: 6 168 3 1 5 1 697 4 1 87 +59759: 79 5 6 47 19 3 7 7 1 8 7 +38429118000: 91 49 91 6 4 435 809 +318576716: 3 44 1 9 815 98 47 7 94 +5897: 7 8 397 29 4 2 4 8 3 8 5 4 +4722: 46 4 82 8 614 +193939725: 6 390 296 280 528 +7908668418: 5 9 3 75 98 4 352 781 2 +1080: 6 9 96 5 525 +78879: 33 42 3 45 640 2 157 +16555109276: 8 3 2 1 6 24 9 2 9 1 346 6 +46600957875: 2 3 7 38 5 61 3 784 7 28 +619697449: 19 1 2 6 86 5 77 1 8 8 9 +17149600: 8 67 267 992 50 +90: 2 2 1 2 9 +567900: 2 59 815 6 2 6 4 9 8 7 9 +179229819: 2 56 7 298 22 +5464512: 1 411 62 80 6 6 7 9 2 8 9 +318552570: 7 325 37 14 7 67 +7281: 1 904 8 35 6 +36284: 36 263 21 +146: 86 1 60 +960991455: 9 60 17 3 4 787 442 4 9 +1636416607: 85 559 205 6 4 7 7 +7640592: 1 6 3 493 738 6 7 1 7 57 +61572395640: 6 1 85 2 1 5 5 43 9 345 8 +316803329: 70 7 6 45 1 1 974 4 6 5 3 +119040: 5 46 43 4 3 1 7 273 2 6 4 +102523960284: 854 366 3 1 3 6 8 8 6 5 4 +1796198: 914 5 3 7 791 92 89 +91670: 66 824 103 +4758: 7 59 9 4 10 498 +2932560: 12 2 1 8 7 6 64 8 1 99 60 +2466642: 24 66 642 +2516: 4 49 3 3 9 37 +39268: 8 49 60 8 +388603: 476 815 639 16 8 +286225867: 21 6 106 25 867 +111798479: 4 31 144 6 3 831 8 4 95 +4432: 1 4 17 4 85 2 4 8 +76038195: 99 3 77 68 7 42 5 527 3 +75741848: 5 40 5 8 2 9 9 1 3 8 7 91 +3223727766: 5 7 1 3 9 7 85 4 1 9 301 4 +259448: 5 147 5 85 2 198 +11318777470897: 4 8 262 41 9 412 9 95 +50547: 4 1 95 21 8 7 97 975 5 +125447831: 32 60 7 651 1 32 +3164824079999: 580 8 12 8 4 860 33 4 6 +621945: 497 283 33 9 85 1 +126774605416: 74 573 297 3 17 6 +12802698: 73 40 81 474 48 9 +6289: 5 1 57 37 49 +22886763: 68 840 67 29 9 5 8 +45506381: 408 531 49 3 70 2 9 +1086077699545: 15 29 686 9 71 545 +96330: 9 7 8 569 735 1 +26524275: 873 51 28 652 17 9 7 8 +17287261563680: 882 49 4 615 63 677 +488039: 4 8 6 3 59 69 7 4 8 8 9 95 +2937672: 82 1 2 4 6 243 394 18 +2991816576: 6 751 2 6 31 6 56 984 +442230660: 1 60 226 6 19 276 +93051972: 368 1 280 71 9 73 +1160: 7 5 131 740 211 +4941982155: 81 61 9 82 14 3 12 +36760: 5 4 5 64 655 9 4 280 4 5 +5418: 3 3 25 68 7 3 1 2 6 +86247005055: 35 1 8 636 8 6 737 29 5 +190642: 5 346 9 8 3 118 3 52 8 2 +434695950: 2 846 36 7 4 4 7 51 3 93 +1911065788: 195 980 6 578 8 +25555915: 57 3 8 73 7 11 524 38 3 +95100: 6 5 8 39 2 4 5 987 4 7 3 6 +28837000: 1 8 97 1 8 584 9 9 4 250 +505569315: 543 931 35 519 1 796 +41223: 6 687 2 +901: 21 6 4 870 +8637229: 991 585 548 75 1 +163576: 162 96 287 60 5 75 1 +962371163023: 213 860 25 83 1 5 3 15 +109350192: 7 57 1 7 9 1 405 258 4 6 +16613281652: 7 383 8 1 85 624 9 5 2 +9596305077: 6 70 5 8 7 401 2 2 6 6 5 +17875933357: 644 63 9 881 5 7 5 8 +89783: 9 6 6 2 15 96 503 +27300689: 3 5 64 1 38 5 2 7 838 9 +764541238248: 9 4 6 9 6 7 1 654 78 1 4 2 +658436: 86 66 2 270 395 4 8 3 6 +8419432: 84 1 94 18 4 8 +859023: 1 9 7 7 3 50 858 8 5 8 7 9 +14951976: 266 30 48 344 39 +59478: 38 2 212 80 +83264: 76 8 3 957 5 +239182: 8 191 31 1 2 1 6 +1108645374204: 8 6 8 4 2 388 3 2 93 20 4 +12300944: 61 5 4 1 83 5 2 5 8 8 2 5 +7204006: 2 90 4 249 145 3 65 +258603731420: 71 834 6 2 3 2 1 3 1 420 +3464130: 86 4 2 41 30 +2125224: 5 812 18 2 9 96 72 +15015078406: 175 858 78 358 49 +17380390: 49 358 9 7 9 41 4 8 8 +9550084: 18 829 8 8 4 +20665420: 9 9 7 3 92 1 2 1 580 6 3 8 +7411523885: 223 3 68 4 152 38 88 +1106464: 389 45 53 32 71 +1180722080: 478 1 245 6 5 2 20 503 +3184109157: 87 602 2 6 770 51 50 7 +113071859: 7 540 22 3 2 29 7 9 2 6 5 +868: 3 7 8 4 35 4 3 7 7 5 283 6 +2153328173529: 951 5 9 452 173 529 +6349117323: 4 62 3 81 5 6 455 174 3 +2309765691: 35 37 18 40 709 2 8 3 +7943: 87 81 26 869 1 +9289401: 7 6 581 2 342 +1562470: 3 4 252 17 182 +3575975392: 3 3 903 216 8 44 +2171436: 21 3 1 20 4 2 5 2 9 8 1 24 +46506582: 95 679 6 5 6 491 88 +136519099056: 8 975 9 571 92 81 3 +2390175: 94 611 15 48 45 5 +8295222: 768 5 8 45 6 73 8 741 +20445495: 61 85 20 785 7 +27369402341: 999 9 6 6 1 8 7 4 2 1 4 95 +15647742: 99 92 174 30 9 +19937073: 36 6 1 2 6 7 20 3 77 +217602: 6 2 1 4 5 730 2 2 552 4 2 +1077224: 78 2 408 33 7 97 diff --git a/2024/day07/test b/2024/day07/test new file mode 100644 index 0000000..fc6e099 --- /dev/null +++ b/2024/day07/test @@ -0,0 +1,9 @@ +190: 10 19 +3267: 81 40 27 +83: 17 5 +156: 15 6 +7290: 6 8 6 15 +161011: 16 10 13 +192: 17 8 14 +21037: 9 7 18 13 +292: 11 6 16 20 diff --git a/2024/day08/day08.bqn b/2024/day08/day08.bqn new file mode 100644 index 0000000..8d3d16c --- /dev/null +++ b/2024/day08/day08.bqn @@ -0,0 +1,8 @@ +in←>•FLines"input" +freqs←∾"0aA"+¨↕¨10‿26‿26 +_antinodes←{f _r m: + ns←∾{∾(≠⌜˜↕∘≠)⊸(/○⥊)F⌜˜/○⥊⟜(↕≢)𝕩=m}¨freqs + ⍷(∧´0⊸≤∧<⟜(≠m)¨)¨⊸/ns +} +•Show ≠{⟨𝕩+𝕩-𝕨⟩}_antinodes in +•Show ≠{𝕩⊸+¨(𝕩-𝕨)⊸ר↕≠in}_antinodes in diff --git a/2024/day08/input b/2024/day08/input new file mode 100644 index 0000000..43b8c92 --- /dev/null +++ b/2024/day08/input @@ -0,0 +1,50 @@ +........5..................................e..3... +.......q...........m................e............. +....m.......................................e..... +.........................................C........ +.u.m........................8..................... +...........7......9.......8...........F...s....... +6...q..............................s.............. +.................................................. +.................................................. +.................................................. +..........9....................F.................. +.................................M....D........... +.........U........................................ +..q................................8.............. +.......9.......................................... +0....6.....................e..Qs...............F.. +.................................Q...D............ +.0.u....................................2......... +.................................................. +........u................Q........................ +.....E........1................................... +...n....v....................................3.... +......u..0................N....................... +............................................z..... +.........7....U.........4.....Z...Q.....D.....V... +..............n1.........f.................2...... +E.............................f..............z.... +...E........1.Z.......U......................D.... +.......n...v....7Z...N............................ +..........7..N.....Zf...........................3. +................................b............V.... +............4..................................9.. +..n...v........................5................2. +.........v.................5.........S............ +..........................s....................... +.....U.........4..C.....................S..V...... +.................................................. +......................c........b............M..... +...........4.Wc....d.......1.....b.....S.......... +..E........c............................5......z.. +..............w..C....................SM.2........ +........................d......................... +...............c......C3.......................... +...............w....W............................. +.................................................. +.........d.......B....w........................... +....B.....W.......dw..........................M... +...............W......................N...V....... +.B................................................ +....................B...............b............. diff --git a/2024/day08/test b/2024/day08/test new file mode 100644 index 0000000..78a1e91 --- /dev/null +++ b/2024/day08/test @@ -0,0 +1,12 @@ +............ +........0... +.....0...... +.......0.... +....0....... +......A..... +............ +............ +........A... +.........A.. +............ +............ diff --git a/2024/day11/day11.bqn b/2024/day11/day11.bqn new file mode 100644 index 0000000..6801105 --- /dev/null +++ b/2024/day11/day11.bqn @@ -0,0 +1,16 @@ +Split←((⊢-˜+`׬)∘=⊔⊢) +in←•ParseFloat¨' 'Split ¯1↓•FChars"input" + +h←⟨⟩•HashMap⟨⟩ +NumberOfDigits←{⌊1+10⋆⁼𝕩} +F←{ + 𝕊0: ⟨1⟩; + n←NumberOfDigits 𝕩 + (1=2|n)⊑⟨⟨⌊𝕩÷10⋆n÷2,(10⋆n÷2)|𝕩⟩,⟨2024×𝕩⟩⟩ +} +G←{ + 0𝕊n: 1; + d𝕊n: {𝕊¯1: r←+´(d-1)⊸G¨F n ⋄ d‿n h.Set r ⋄ r ; 𝕩}¯1 h.Get d‿n +} +•Show +´25⊸G¨in +•Show +´75⊸G¨in diff --git a/2024/day11/input b/2024/day11/input new file mode 100644 index 0000000..6a94b4e --- /dev/null +++ b/2024/day11/input @@ -0,0 +1 @@ +872027 227 18 9760 0 4 67716 9245696 diff --git a/2024/day13/day13.bqn b/2024/day13/day13.bqn new file mode 100644 index 0000000..3f768b2 --- /dev/null +++ b/2024/day13/day13.bqn @@ -0,0 +1,20 @@ +⟨lf,Split⟩←•Import"../bqn-libs/strings.bqn" +in←>•ParseFloat¨¨¨2⊸↓¨¨¨", "⊸Split¨¨1⊸⊑¨¨": "⊸Split¨¨lf⊸Split¨(lf∾lf)Split ¯1↓•FChars"input" + +Solve←{offset𝕊⟨xa‿ya,xb‿yb,xp‿yp⟩: + xp‿yp+↩offset + na‿nb←{ + # A and B are collinear, we should find the optimal solution, + # but I didn't need it for my input + 𝕊0: 0‿0; + # General case + nb←((xp×ya)-yp×xa)÷𝕩 + na←(xp-nb×xb)÷xa + # Check that solution is integer + {∧´⌊⊸=𝕩 ? 𝕩 ; 0‿0}na‿nb + }(xb×ya)-yb×xa +} + +•Show +´+˝3‿1⊸ע0⊸Solve˘in +•Show +´+˝3‿1⊸ע10000000000000⊸Solve˘in + diff --git a/2024/day13/input b/2024/day13/input new file mode 100644 index 0000000..3f54c45 --- /dev/null +++ b/2024/day13/input @@ -0,0 +1,1279 @@ +Button A: X+11, Y+73 +Button B: X+95, Y+99 +Prize: X=6258, Y=10706 + +Button A: X+79, Y+75 +Button B: X+29, Y+98 +Prize: X=6375, Y=10985 + +Button A: X+42, Y+53 +Button B: X+55, Y+21 +Prize: X=7713, Y=4941 + +Button A: X+90, Y+73 +Button B: X+19, Y+81 +Prize: X=8266, Y=12870 + +Button A: X+55, Y+21 +Button B: X+29, Y+51 +Prize: X=16798, Y=16250 + +Button A: X+30, Y+33 +Button B: X+73, Y+21 +Prize: X=4530, Y=3204 + +Button A: X+14, Y+43 +Button B: X+26, Y+14 +Prize: X=1878, Y=1224 + +Button A: X+15, Y+49 +Button B: X+90, Y+72 +Prize: X=2085, Y=2149 + +Button A: X+21, Y+51 +Button B: X+51, Y+12 +Prize: X=10874, Y=16718 + +Button A: X+28, Y+59 +Button B: X+79, Y+29 +Prize: X=4347, Y=6273 + +Button A: X+65, Y+14 +Button B: X+13, Y+36 +Prize: X=15174, Y=11664 + +Button A: X+46, Y+29 +Button B: X+37, Y+75 +Prize: X=1779, Y=2000 + +Button A: X+19, Y+54 +Button B: X+35, Y+17 +Prize: X=17401, Y=6576 + +Button A: X+13, Y+47 +Button B: X+58, Y+19 +Prize: X=5785, Y=19501 + +Button A: X+17, Y+43 +Button B: X+53, Y+24 +Prize: X=19583, Y=18001 + +Button A: X+35, Y+51 +Button B: X+84, Y+33 +Prize: X=9863, Y=6147 + +Button A: X+73, Y+28 +Button B: X+13, Y+22 +Prize: X=4476, Y=1938 + +Button A: X+18, Y+74 +Button B: X+71, Y+61 +Prize: X=4747, Y=5893 + +Button A: X+91, Y+98 +Button B: X+99, Y+13 +Prize: X=8693, Y=8800 + +Button A: X+38, Y+96 +Button B: X+86, Y+42 +Prize: X=11668, Y=12126 + +Button A: X+27, Y+49 +Button B: X+59, Y+16 +Prize: X=3065, Y=3832 + +Button A: X+24, Y+12 +Button B: X+23, Y+62 +Prize: X=1273, Y=3010 + +Button A: X+84, Y+39 +Button B: X+38, Y+66 +Prize: X=8062, Y=8337 + +Button A: X+25, Y+79 +Button B: X+51, Y+11 +Prize: X=12198, Y=7376 + +Button A: X+44, Y+68 +Button B: X+79, Y+24 +Prize: X=8612, Y=7424 + +Button A: X+12, Y+66 +Button B: X+77, Y+61 +Prize: X=4664, Y=6802 + +Button A: X+89, Y+14 +Button B: X+39, Y+99 +Prize: X=9927, Y=6762 + +Button A: X+30, Y+55 +Button B: X+36, Y+13 +Prize: X=11834, Y=16317 + +Button A: X+25, Y+55 +Button B: X+46, Y+17 +Prize: X=16094, Y=703 + +Button A: X+14, Y+67 +Button B: X+81, Y+24 +Prize: X=6074, Y=5068 + +Button A: X+99, Y+79 +Button B: X+11, Y+84 +Prize: X=1705, Y=3542 + +Button A: X+81, Y+37 +Button B: X+26, Y+63 +Prize: X=2900, Y=3523 + +Button A: X+13, Y+72 +Button B: X+44, Y+14 +Prize: X=8787, Y=14736 + +Button A: X+15, Y+45 +Button B: X+56, Y+47 +Prize: X=6633, Y=8646 + +Button A: X+67, Y+11 +Button B: X+16, Y+64 +Prize: X=1755, Y=2067 + +Button A: X+60, Y+62 +Button B: X+12, Y+51 +Prize: X=2700, Y=3562 + +Button A: X+22, Y+30 +Button B: X+89, Y+36 +Prize: X=4435, Y=3060 + +Button A: X+31, Y+90 +Button B: X+96, Y+60 +Prize: X=9035, Y=9390 + +Button A: X+62, Y+16 +Button B: X+17, Y+55 +Prize: X=14267, Y=5195 + +Button A: X+13, Y+41 +Button B: X+55, Y+20 +Prize: X=12522, Y=12634 + +Button A: X+29, Y+88 +Button B: X+79, Y+47 +Prize: X=2329, Y=3791 + +Button A: X+32, Y+98 +Button B: X+74, Y+56 +Prize: X=8610, Y=10500 + +Button A: X+23, Y+43 +Button B: X+65, Y+38 +Prize: X=15552, Y=7005 + +Button A: X+33, Y+70 +Button B: X+55, Y+23 +Prize: X=7173, Y=8588 + +Button A: X+22, Y+62 +Button B: X+27, Y+12 +Prize: X=6025, Y=5790 + +Button A: X+12, Y+43 +Button B: X+64, Y+35 +Prize: X=13012, Y=14798 + +Button A: X+73, Y+35 +Button B: X+21, Y+52 +Prize: X=7187, Y=3150 + +Button A: X+11, Y+62 +Button B: X+80, Y+17 +Prize: X=2202, Y=10500 + +Button A: X+51, Y+18 +Button B: X+14, Y+30 +Prize: X=16884, Y=5450 + +Button A: X+82, Y+28 +Button B: X+25, Y+47 +Prize: X=7443, Y=4657 + +Button A: X+20, Y+65 +Button B: X+72, Y+21 +Prize: X=14496, Y=3213 + +Button A: X+18, Y+34 +Button B: X+54, Y+11 +Prize: X=3654, Y=3353 + +Button A: X+76, Y+16 +Button B: X+15, Y+91 +Prize: X=3317, Y=5881 + +Button A: X+37, Y+72 +Button B: X+38, Y+11 +Prize: X=18396, Y=4330 + +Button A: X+21, Y+54 +Button B: X+51, Y+22 +Prize: X=5849, Y=1902 + +Button A: X+58, Y+12 +Button B: X+51, Y+61 +Prize: X=7145, Y=5161 + +Button A: X+18, Y+77 +Button B: X+31, Y+23 +Prize: X=1740, Y=2182 + +Button A: X+15, Y+84 +Button B: X+37, Y+41 +Prize: X=2637, Y=6291 + +Button A: X+13, Y+29 +Button B: X+25, Y+13 +Prize: X=18941, Y=7681 + +Button A: X+15, Y+43 +Button B: X+59, Y+20 +Prize: X=4970, Y=18833 + +Button A: X+30, Y+13 +Button B: X+47, Y+68 +Prize: X=1581, Y=6697 + +Button A: X+48, Y+14 +Button B: X+27, Y+99 +Prize: X=4365, Y=6285 + +Button A: X+15, Y+60 +Button B: X+64, Y+27 +Prize: X=9014, Y=11147 + +Button A: X+85, Y+93 +Button B: X+75, Y+22 +Prize: X=6880, Y=4945 + +Button A: X+30, Y+74 +Button B: X+37, Y+12 +Prize: X=5167, Y=10388 + +Button A: X+22, Y+69 +Button B: X+45, Y+17 +Prize: X=18854, Y=18935 + +Button A: X+32, Y+83 +Button B: X+45, Y+14 +Prize: X=4258, Y=6730 + +Button A: X+27, Y+54 +Button B: X+42, Y+12 +Prize: X=5802, Y=5916 + +Button A: X+13, Y+74 +Button B: X+96, Y+40 +Prize: X=6782, Y=8724 + +Button A: X+11, Y+86 +Button B: X+88, Y+31 +Prize: X=1650, Y=7644 + +Button A: X+92, Y+16 +Button B: X+20, Y+86 +Prize: X=8304, Y=6478 + +Button A: X+13, Y+97 +Button B: X+68, Y+88 +Prize: X=5904, Y=14696 + +Button A: X+18, Y+47 +Button B: X+42, Y+14 +Prize: X=5112, Y=5312 + +Button A: X+77, Y+15 +Button B: X+12, Y+66 +Prize: X=6444, Y=5642 + +Button A: X+34, Y+13 +Button B: X+34, Y+57 +Prize: X=5140, Y=8134 + +Button A: X+51, Y+69 +Button B: X+50, Y+20 +Prize: X=4947, Y=4263 + +Button A: X+20, Y+86 +Button B: X+80, Y+65 +Prize: X=5160, Y=10470 + +Button A: X+33, Y+11 +Button B: X+13, Y+34 +Prize: X=19022, Y=14511 + +Button A: X+32, Y+12 +Button B: X+26, Y+65 +Prize: X=13510, Y=2707 + +Button A: X+14, Y+72 +Button B: X+84, Y+24 +Prize: X=17112, Y=17216 + +Button A: X+47, Y+36 +Button B: X+17, Y+98 +Prize: X=3926, Y=3602 + +Button A: X+30, Y+61 +Button B: X+56, Y+31 +Prize: X=9676, Y=7909 + +Button A: X+38, Y+18 +Button B: X+20, Y+42 +Prize: X=13692, Y=1196 + +Button A: X+43, Y+74 +Button B: X+47, Y+12 +Prize: X=1668, Y=8492 + +Button A: X+32, Y+25 +Button B: X+13, Y+64 +Prize: X=3276, Y=7513 + +Button A: X+67, Y+70 +Button B: X+87, Y+16 +Prize: X=6348, Y=3936 + +Button A: X+46, Y+96 +Button B: X+97, Y+61 +Prize: X=2620, Y=2922 + +Button A: X+15, Y+65 +Button B: X+38, Y+11 +Prize: X=1042, Y=1029 + +Button A: X+68, Y+96 +Button B: X+85, Y+29 +Prize: X=12971, Y=10031 + +Button A: X+37, Y+98 +Button B: X+67, Y+31 +Prize: X=6264, Y=4435 + +Button A: X+44, Y+13 +Button B: X+34, Y+69 +Prize: X=15896, Y=4626 + +Button A: X+22, Y+61 +Button B: X+67, Y+17 +Prize: X=8385, Y=16256 + +Button A: X+47, Y+14 +Button B: X+34, Y+70 +Prize: X=2645, Y=15362 + +Button A: X+48, Y+75 +Button B: X+50, Y+21 +Prize: X=4914, Y=3051 + +Button A: X+67, Y+42 +Button B: X+11, Y+24 +Prize: X=2928, Y=2348 + +Button A: X+13, Y+47 +Button B: X+38, Y+25 +Prize: X=3798, Y=5190 + +Button A: X+39, Y+97 +Button B: X+85, Y+42 +Prize: X=2155, Y=4174 + +Button A: X+21, Y+41 +Button B: X+48, Y+22 +Prize: X=653, Y=5721 + +Button A: X+12, Y+59 +Button B: X+42, Y+17 +Prize: X=10862, Y=13076 + +Button A: X+62, Y+15 +Button B: X+24, Y+72 +Prize: X=12840, Y=16544 + +Button A: X+95, Y+28 +Button B: X+76, Y+90 +Prize: X=13395, Y=7666 + +Button A: X+86, Y+29 +Button B: X+44, Y+80 +Prize: X=5078, Y=4775 + +Button A: X+67, Y+25 +Button B: X+14, Y+46 +Prize: X=19653, Y=9555 + +Button A: X+28, Y+72 +Button B: X+40, Y+26 +Prize: X=3592, Y=4164 + +Button A: X+22, Y+36 +Button B: X+48, Y+23 +Prize: X=6948, Y=17149 + +Button A: X+83, Y+40 +Button B: X+26, Y+77 +Prize: X=3039, Y=5913 + +Button A: X+16, Y+35 +Button B: X+36, Y+25 +Prize: X=14052, Y=5215 + +Button A: X+24, Y+96 +Button B: X+41, Y+32 +Prize: X=3001, Y=3424 + +Button A: X+61, Y+18 +Button B: X+24, Y+64 +Prize: X=8524, Y=18664 + +Button A: X+26, Y+67 +Button B: X+40, Y+13 +Prize: X=904, Y=922 + +Button A: X+12, Y+92 +Button B: X+51, Y+62 +Prize: X=4101, Y=6766 + +Button A: X+19, Y+46 +Button B: X+71, Y+37 +Prize: X=5769, Y=794 + +Button A: X+57, Y+35 +Button B: X+14, Y+29 +Prize: X=2449, Y=14032 + +Button A: X+14, Y+82 +Button B: X+81, Y+12 +Prize: X=3839, Y=878 + +Button A: X+13, Y+66 +Button B: X+46, Y+17 +Prize: X=3369, Y=16833 + +Button A: X+95, Y+44 +Button B: X+47, Y+74 +Prize: X=11413, Y=8890 + +Button A: X+18, Y+57 +Button B: X+52, Y+11 +Prize: X=1708, Y=13953 + +Button A: X+85, Y+46 +Button B: X+12, Y+46 +Prize: X=13622, Y=16614 + +Button A: X+14, Y+32 +Button B: X+89, Y+26 +Prize: X=4220, Y=3968 + +Button A: X+27, Y+99 +Button B: X+25, Y+13 +Prize: X=4084, Y=9940 + +Button A: X+34, Y+69 +Button B: X+44, Y+19 +Prize: X=530, Y=5810 + +Button A: X+25, Y+62 +Button B: X+70, Y+36 +Prize: X=8500, Y=8696 + +Button A: X+17, Y+76 +Button B: X+42, Y+42 +Prize: X=2072, Y=3724 + +Button A: X+64, Y+38 +Button B: X+16, Y+49 +Prize: X=9088, Y=18122 + +Button A: X+60, Y+12 +Button B: X+21, Y+83 +Prize: X=9836, Y=6412 + +Button A: X+81, Y+34 +Button B: X+12, Y+54 +Prize: X=2930, Y=9196 + +Button A: X+72, Y+22 +Button B: X+24, Y+64 +Prize: X=4320, Y=3870 + +Button A: X+87, Y+46 +Button B: X+16, Y+77 +Prize: X=2191, Y=7190 + +Button A: X+12, Y+48 +Button B: X+57, Y+22 +Prize: X=1617, Y=1318 + +Button A: X+15, Y+39 +Button B: X+34, Y+13 +Prize: X=2564, Y=8999 + +Button A: X+21, Y+94 +Button B: X+66, Y+29 +Prize: X=2358, Y=8157 + +Button A: X+70, Y+25 +Button B: X+22, Y+97 +Prize: X=6566, Y=4841 + +Button A: X+13, Y+48 +Button B: X+76, Y+16 +Prize: X=13082, Y=14832 + +Button A: X+27, Y+65 +Button B: X+31, Y+21 +Prize: X=1712, Y=1440 + +Button A: X+21, Y+74 +Button B: X+60, Y+57 +Prize: X=4350, Y=7916 + +Button A: X+96, Y+12 +Button B: X+68, Y+91 +Prize: X=3632, Y=2764 + +Button A: X+89, Y+12 +Button B: X+16, Y+69 +Prize: X=5386, Y=1662 + +Button A: X+54, Y+19 +Button B: X+19, Y+38 +Prize: X=16870, Y=17524 + +Button A: X+62, Y+74 +Button B: X+62, Y+13 +Prize: X=7068, Y=5813 + +Button A: X+93, Y+71 +Button B: X+22, Y+72 +Prize: X=8688, Y=6964 + +Button A: X+49, Y+95 +Button B: X+62, Y+34 +Prize: X=7185, Y=7551 + +Button A: X+70, Y+14 +Button B: X+17, Y+80 +Prize: X=12277, Y=19564 + +Button A: X+18, Y+36 +Button B: X+42, Y+22 +Prize: X=13628, Y=1690 + +Button A: X+28, Y+92 +Button B: X+47, Y+16 +Prize: X=5837, Y=9904 + +Button A: X+72, Y+39 +Button B: X+14, Y+40 +Prize: X=7940, Y=6181 + +Button A: X+30, Y+66 +Button B: X+40, Y+12 +Prize: X=17470, Y=10778 + +Button A: X+15, Y+63 +Button B: X+71, Y+18 +Prize: X=5909, Y=12509 + +Button A: X+78, Y+17 +Button B: X+13, Y+59 +Prize: X=11469, Y=13316 + +Button A: X+21, Y+67 +Button B: X+62, Y+19 +Prize: X=19738, Y=12336 + +Button A: X+28, Y+82 +Button B: X+62, Y+18 +Prize: X=3278, Y=4202 + +Button A: X+92, Y+22 +Button B: X+22, Y+67 +Prize: X=3406, Y=4951 + +Button A: X+13, Y+33 +Button B: X+70, Y+39 +Prize: X=18623, Y=15701 + +Button A: X+21, Y+14 +Button B: X+11, Y+26 +Prize: X=8927, Y=10498 + +Button A: X+37, Y+11 +Button B: X+33, Y+78 +Prize: X=15481, Y=18465 + +Button A: X+46, Y+68 +Button B: X+41, Y+13 +Prize: X=17896, Y=5058 + +Button A: X+90, Y+28 +Button B: X+53, Y+93 +Prize: X=12611, Y=11345 + +Button A: X+58, Y+30 +Button B: X+14, Y+38 +Prize: X=7314, Y=15018 + +Button A: X+13, Y+53 +Button B: X+95, Y+52 +Prize: X=7328, Y=8416 + +Button A: X+61, Y+26 +Button B: X+34, Y+69 +Prize: X=3368, Y=5538 + +Button A: X+57, Y+29 +Button B: X+24, Y+57 +Prize: X=11123, Y=11321 + +Button A: X+15, Y+69 +Button B: X+73, Y+26 +Prize: X=1329, Y=13645 + +Button A: X+18, Y+64 +Button B: X+71, Y+13 +Prize: X=10555, Y=19825 + +Button A: X+69, Y+28 +Button B: X+12, Y+54 +Prize: X=9761, Y=17012 + +Button A: X+81, Y+31 +Button B: X+16, Y+75 +Prize: X=8535, Y=9672 + +Button A: X+19, Y+65 +Button B: X+31, Y+18 +Prize: X=3318, Y=4571 + +Button A: X+49, Y+13 +Button B: X+23, Y+63 +Prize: X=8548, Y=15356 + +Button A: X+74, Y+27 +Button B: X+15, Y+44 +Prize: X=19165, Y=15290 + +Button A: X+31, Y+93 +Button B: X+57, Y+21 +Prize: X=5183, Y=5499 + +Button A: X+12, Y+37 +Button B: X+85, Y+55 +Prize: X=12946, Y=12661 + +Button A: X+44, Y+21 +Button B: X+12, Y+64 +Prize: X=4668, Y=5025 + +Button A: X+39, Y+15 +Button B: X+40, Y+57 +Prize: X=18523, Y=5327 + +Button A: X+41, Y+16 +Button B: X+17, Y+71 +Prize: X=3094, Y=2366 + +Button A: X+26, Y+57 +Button B: X+56, Y+23 +Prize: X=7312, Y=8168 + +Button A: X+23, Y+57 +Button B: X+70, Y+32 +Prize: X=18057, Y=7085 + +Button A: X+29, Y+82 +Button B: X+54, Y+12 +Prize: X=12515, Y=18830 + +Button A: X+29, Y+75 +Button B: X+54, Y+18 +Prize: X=3230, Y=1826 + +Button A: X+40, Y+18 +Button B: X+47, Y+74 +Prize: X=11787, Y=19460 + +Button A: X+68, Y+12 +Button B: X+14, Y+15 +Prize: X=2776, Y=966 + +Button A: X+69, Y+79 +Button B: X+78, Y+12 +Prize: X=8259, Y=4895 + +Button A: X+57, Y+44 +Button B: X+25, Y+70 +Prize: X=3205, Y=4350 + +Button A: X+17, Y+61 +Button B: X+39, Y+12 +Prize: X=12544, Y=19002 + +Button A: X+21, Y+67 +Button B: X+64, Y+19 +Prize: X=19259, Y=15969 + +Button A: X+98, Y+27 +Button B: X+11, Y+92 +Prize: X=1610, Y=7917 + +Button A: X+36, Y+61 +Button B: X+46, Y+18 +Prize: X=12026, Y=1751 + +Button A: X+75, Y+22 +Button B: X+25, Y+84 +Prize: X=1650, Y=3474 + +Button A: X+63, Y+39 +Button B: X+14, Y+29 +Prize: X=1988, Y=2837 + +Button A: X+42, Y+98 +Button B: X+45, Y+21 +Prize: X=2031, Y=4319 + +Button A: X+37, Y+92 +Button B: X+45, Y+28 +Prize: X=4068, Y=6256 + +Button A: X+67, Y+18 +Button B: X+28, Y+71 +Prize: X=14143, Y=1192 + +Button A: X+17, Y+56 +Button B: X+58, Y+16 +Prize: X=2134, Y=18544 + +Button A: X+56, Y+15 +Button B: X+22, Y+54 +Prize: X=10668, Y=6257 + +Button A: X+27, Y+69 +Button B: X+49, Y+24 +Prize: X=1442, Y=2268 + +Button A: X+31, Y+66 +Button B: X+71, Y+26 +Prize: X=7164, Y=4864 + +Button A: X+62, Y+64 +Button B: X+98, Y+25 +Prize: X=3182, Y=2980 + +Button A: X+37, Y+76 +Button B: X+63, Y+22 +Prize: X=6799, Y=3762 + +Button A: X+63, Y+42 +Button B: X+17, Y+99 +Prize: X=3485, Y=3726 + +Button A: X+48, Y+21 +Button B: X+21, Y+37 +Prize: X=18911, Y=15387 + +Button A: X+22, Y+80 +Button B: X+72, Y+13 +Prize: X=11000, Y=9276 + +Button A: X+71, Y+15 +Button B: X+12, Y+61 +Prize: X=420, Y=9282 + +Button A: X+35, Y+78 +Button B: X+58, Y+15 +Prize: X=2313, Y=7946 + +Button A: X+22, Y+54 +Button B: X+35, Y+17 +Prize: X=4593, Y=8259 + +Button A: X+77, Y+29 +Button B: X+53, Y+81 +Prize: X=5992, Y=7384 + +Button A: X+72, Y+24 +Button B: X+12, Y+50 +Prize: X=16076, Y=5134 + +Button A: X+11, Y+52 +Button B: X+93, Y+39 +Prize: X=6295, Y=5720 + +Button A: X+40, Y+11 +Button B: X+68, Y+95 +Prize: X=8140, Y=7961 + +Button A: X+33, Y+87 +Button B: X+63, Y+12 +Prize: X=6080, Y=10865 + +Button A: X+13, Y+49 +Button B: X+29, Y+14 +Prize: X=16295, Y=6941 + +Button A: X+76, Y+22 +Button B: X+15, Y+52 +Prize: X=9122, Y=13050 + +Button A: X+38, Y+22 +Button B: X+20, Y+39 +Prize: X=2790, Y=18819 + +Button A: X+34, Y+65 +Button B: X+27, Y+13 +Prize: X=2681, Y=6100 + +Button A: X+11, Y+57 +Button B: X+82, Y+23 +Prize: X=3062, Y=4411 + +Button A: X+32, Y+13 +Button B: X+45, Y+65 +Prize: X=14055, Y=18775 + +Button A: X+99, Y+11 +Button B: X+66, Y+62 +Prize: X=10560, Y=2704 + +Button A: X+38, Y+16 +Button B: X+14, Y+37 +Prize: X=7348, Y=19551 + +Button A: X+61, Y+33 +Button B: X+28, Y+56 +Prize: X=4335, Y=3579 + +Button A: X+27, Y+70 +Button B: X+42, Y+11 +Prize: X=13907, Y=461 + +Button A: X+93, Y+34 +Button B: X+16, Y+47 +Prize: X=6949, Y=2952 + +Button A: X+90, Y+57 +Button B: X+13, Y+85 +Prize: X=8995, Y=9919 + +Button A: X+59, Y+92 +Button B: X+98, Y+27 +Prize: X=10725, Y=4394 + +Button A: X+73, Y+58 +Button B: X+32, Y+99 +Prize: X=5119, Y=9291 + +Button A: X+69, Y+30 +Button B: X+25, Y+61 +Prize: X=8871, Y=8169 + +Button A: X+49, Y+37 +Button B: X+34, Y+98 +Prize: X=3501, Y=5609 + +Button A: X+86, Y+23 +Button B: X+55, Y+72 +Prize: X=4661, Y=1533 + +Button A: X+34, Y+67 +Button B: X+55, Y+16 +Prize: X=7322, Y=2183 + +Button A: X+19, Y+92 +Button B: X+70, Y+55 +Prize: X=2454, Y=3932 + +Button A: X+21, Y+47 +Button B: X+21, Y+12 +Prize: X=725, Y=3815 + +Button A: X+38, Y+17 +Button B: X+26, Y+43 +Prize: X=17474, Y=18191 + +Button A: X+20, Y+68 +Button B: X+67, Y+24 +Prize: X=13490, Y=12632 + +Button A: X+28, Y+55 +Button B: X+56, Y+31 +Prize: X=11540, Y=16425 + +Button A: X+80, Y+24 +Button B: X+16, Y+65 +Prize: X=3808, Y=6594 + +Button A: X+19, Y+48 +Button B: X+43, Y+16 +Prize: X=4596, Y=8992 + +Button A: X+16, Y+55 +Button B: X+81, Y+42 +Prize: X=11978, Y=1253 + +Button A: X+61, Y+11 +Button B: X+45, Y+55 +Prize: X=5134, Y=4114 + +Button A: X+29, Y+60 +Button B: X+52, Y+25 +Prize: X=12606, Y=7045 + +Button A: X+23, Y+14 +Button B: X+28, Y+93 +Prize: X=2419, Y=2232 + +Button A: X+60, Y+28 +Button B: X+54, Y+78 +Prize: X=2874, Y=2450 + +Button A: X+73, Y+18 +Button B: X+12, Y+46 +Prize: X=7943, Y=15740 + +Button A: X+19, Y+51 +Button B: X+23, Y+13 +Prize: X=15763, Y=12809 + +Button A: X+12, Y+29 +Button B: X+43, Y+12 +Prize: X=9442, Y=1612 + +Button A: X+20, Y+48 +Button B: X+52, Y+19 +Prize: X=15244, Y=8013 + +Button A: X+24, Y+11 +Button B: X+68, Y+98 +Prize: X=4612, Y=4453 + +Button A: X+43, Y+45 +Button B: X+22, Y+96 +Prize: X=3533, Y=7857 + +Button A: X+13, Y+38 +Button B: X+39, Y+11 +Prize: X=3640, Y=3327 + +Button A: X+63, Y+67 +Button B: X+71, Y+12 +Prize: X=3886, Y=2291 + +Button A: X+18, Y+57 +Button B: X+43, Y+33 +Prize: X=2953, Y=4296 + +Button A: X+15, Y+66 +Button B: X+97, Y+51 +Prize: X=4814, Y=3519 + +Button A: X+12, Y+46 +Button B: X+82, Y+82 +Prize: X=7190, Y=8278 + +Button A: X+80, Y+78 +Button B: X+78, Y+19 +Prize: X=8694, Y=7735 + +Button A: X+91, Y+46 +Button B: X+18, Y+87 +Prize: X=6083, Y=8528 + +Button A: X+16, Y+82 +Button B: X+79, Y+86 +Prize: X=4090, Y=8844 + +Button A: X+63, Y+62 +Button B: X+84, Y+21 +Prize: X=11550, Y=6495 + +Button A: X+47, Y+29 +Button B: X+15, Y+45 +Prize: X=2495, Y=8765 + +Button A: X+67, Y+16 +Button B: X+13, Y+63 +Prize: X=5757, Y=2088 + +Button A: X+17, Y+69 +Button B: X+71, Y+37 +Prize: X=7460, Y=9180 + +Button A: X+44, Y+99 +Button B: X+58, Y+13 +Prize: X=8246, Y=8801 + +Button A: X+18, Y+32 +Button B: X+75, Y+34 +Prize: X=7677, Y=3814 + +Button A: X+62, Y+28 +Button B: X+17, Y+55 +Prize: X=17349, Y=4969 + +Button A: X+13, Y+37 +Button B: X+60, Y+13 +Prize: X=5026, Y=16882 + +Button A: X+74, Y+16 +Button B: X+14, Y+58 +Prize: X=15668, Y=19214 + +Button A: X+59, Y+22 +Button B: X+33, Y+90 +Prize: X=6053, Y=7618 + +Button A: X+64, Y+13 +Button B: X+15, Y+56 +Prize: X=1952, Y=3628 + +Button A: X+39, Y+80 +Button B: X+91, Y+45 +Prize: X=5655, Y=8625 + +Button A: X+24, Y+60 +Button B: X+56, Y+24 +Prize: X=15872, Y=4484 + +Button A: X+16, Y+50 +Button B: X+44, Y+15 +Prize: X=9532, Y=10445 + +Button A: X+83, Y+30 +Button B: X+11, Y+20 +Prize: X=7206, Y=3550 + +Button A: X+35, Y+26 +Button B: X+11, Y+29 +Prize: X=10166, Y=18644 + +Button A: X+38, Y+41 +Button B: X+70, Y+21 +Prize: X=7120, Y=4356 + +Button A: X+76, Y+20 +Button B: X+78, Y+95 +Prize: X=5736, Y=5680 + +Button A: X+31, Y+77 +Button B: X+35, Y+17 +Prize: X=4816, Y=5808 + +Button A: X+19, Y+49 +Button B: X+74, Y+36 +Prize: X=1016, Y=14630 + +Button A: X+58, Y+81 +Button B: X+28, Y+11 +Prize: X=6544, Y=9463 + +Button A: X+82, Y+42 +Button B: X+12, Y+44 +Prize: X=15908, Y=4308 + +Button A: X+91, Y+32 +Button B: X+33, Y+64 +Prize: X=10820, Y=8992 + +Button A: X+63, Y+16 +Button B: X+24, Y+61 +Prize: X=7319, Y=18275 + +Button A: X+19, Y+66 +Button B: X+95, Y+71 +Prize: X=3420, Y=6441 + +Button A: X+21, Y+11 +Button B: X+11, Y+48 +Prize: X=5706, Y=4145 + +Button A: X+19, Y+40 +Button B: X+56, Y+24 +Prize: X=2764, Y=16176 + +Button A: X+19, Y+95 +Button B: X+68, Y+21 +Prize: X=6794, Y=9407 + +Button A: X+28, Y+18 +Button B: X+13, Y+68 +Prize: X=1456, Y=5946 + +Button A: X+32, Y+36 +Button B: X+14, Y+83 +Prize: X=2034, Y=8677 + +Button A: X+38, Y+17 +Button B: X+32, Y+51 +Prize: X=9608, Y=14779 + +Button A: X+95, Y+97 +Button B: X+12, Y+67 +Prize: X=10149, Y=13757 + +Button A: X+95, Y+44 +Button B: X+17, Y+30 +Prize: X=6256, Y=4734 + +Button A: X+64, Y+31 +Button B: X+40, Y+63 +Prize: X=9080, Y=7670 + +Button A: X+62, Y+27 +Button B: X+21, Y+56 +Prize: X=6001, Y=3691 + +Button A: X+57, Y+27 +Button B: X+57, Y+90 +Prize: X=4389, Y=6426 + +Button A: X+56, Y+24 +Button B: X+13, Y+62 +Prize: X=3518, Y=14892 + +Button A: X+57, Y+14 +Button B: X+23, Y+76 +Prize: X=11140, Y=520 + +Button A: X+55, Y+75 +Button B: X+57, Y+20 +Prize: X=7901, Y=6560 + +Button A: X+61, Y+16 +Button B: X+11, Y+43 +Prize: X=3907, Y=19482 + +Button A: X+92, Y+89 +Button B: X+20, Y+74 +Prize: X=5232, Y=5280 + +Button A: X+47, Y+15 +Button B: X+13, Y+31 +Prize: X=10373, Y=18663 + +Button A: X+42, Y+25 +Button B: X+12, Y+86 +Prize: X=2400, Y=4504 + +Button A: X+66, Y+40 +Button B: X+13, Y+29 +Prize: X=6346, Y=4184 + +Button A: X+17, Y+76 +Button B: X+72, Y+74 +Prize: X=3233, Y=9000 + +Button A: X+55, Y+29 +Button B: X+18, Y+48 +Prize: X=9848, Y=4856 + +Button A: X+35, Y+18 +Button B: X+38, Y+62 +Prize: X=6563, Y=2950 + +Button A: X+51, Y+14 +Button B: X+24, Y+85 +Prize: X=2619, Y=7776 + +Button A: X+61, Y+84 +Button B: X+89, Y+34 +Prize: X=9147, Y=8168 + +Button A: X+14, Y+70 +Button B: X+54, Y+59 +Prize: X=1252, Y=5416 + +Button A: X+39, Y+17 +Button B: X+50, Y+76 +Prize: X=2314, Y=4036 + +Button A: X+55, Y+14 +Button B: X+13, Y+69 +Prize: X=12946, Y=17990 + +Button A: X+64, Y+21 +Button B: X+44, Y+66 +Prize: X=4320, Y=4305 + +Button A: X+15, Y+65 +Button B: X+80, Y+29 +Prize: X=12630, Y=5391 + +Button A: X+25, Y+54 +Button B: X+66, Y+34 +Prize: X=3926, Y=8320 + +Button A: X+76, Y+16 +Button B: X+61, Y+61 +Prize: X=12496, Y=6676 + +Button A: X+71, Y+16 +Button B: X+77, Y+94 +Prize: X=6265, Y=6164 + +Button A: X+61, Y+25 +Button B: X+33, Y+64 +Prize: X=17870, Y=13221 + +Button A: X+17, Y+38 +Button B: X+42, Y+21 +Prize: X=11058, Y=2469 + +Button A: X+51, Y+26 +Button B: X+32, Y+64 +Prize: X=6461, Y=6918 + +Button A: X+62, Y+99 +Button B: X+97, Y+23 +Prize: X=12563, Y=7531 + +Button A: X+89, Y+73 +Button B: X+19, Y+57 +Prize: X=3359, Y=5033 + +Button A: X+15, Y+88 +Button B: X+66, Y+26 +Prize: X=5568, Y=9910 + +Button A: X+12, Y+34 +Button B: X+83, Y+53 +Prize: X=18259, Y=6061 + +Button A: X+91, Y+54 +Button B: X+19, Y+36 +Prize: X=5358, Y=3402 + +Button A: X+79, Y+47 +Button B: X+15, Y+46 +Prize: X=553, Y=11830 + +Button A: X+32, Y+51 +Button B: X+42, Y+16 +Prize: X=608, Y=4734 + +Button A: X+62, Y+93 +Button B: X+67, Y+17 +Prize: X=10022, Y=9188 + +Button A: X+49, Y+18 +Button B: X+12, Y+89 +Prize: X=1694, Y=3583 + +Button A: X+15, Y+70 +Button B: X+83, Y+24 +Prize: X=14502, Y=14506 diff --git a/2024/day13/test b/2024/day13/test new file mode 100644 index 0000000..912f482 --- /dev/null +++ b/2024/day13/test @@ -0,0 +1,15 @@ +Button A: X+94, Y+34 +Button B: X+22, Y+67 +Prize: X=8400, Y=5400 + +Button A: X+26, Y+66 +Button B: X+67, Y+21 +Prize: X=12748, Y=12176 + +Button A: X+17, Y+86 +Button B: X+84, Y+37 +Prize: X=7870, Y=6450 + +Button A: X+69, Y+23 +Button B: X+27, Y+71 +Prize: X=18641, Y=10279 diff --git a/2024/day14/day14.bqn b/2024/day14/day14.bqn new file mode 100644 index 0000000..8403f71 --- /dev/null +++ b/2024/day14/day14.bqn @@ -0,0 +1,10 @@ +Split←((⊢-˜+`׬)∘=⊔⊢) +in←>•ParseFloat¨¨¨','⊸Split¨¨2⊸↓¨¨' '⊸Split¨•FLines"input" +size←101‿103 +Step←{n𝕊p‿v: size|p+n×v} + +p1←100 Step˘in +•Show ×´/⁼⊐(size÷2)⊸<˘(∧´˘(⌊size÷2)⊸≠˘p1)/p1 + +•Show n←⊑⊐⟜1 ⍷⊸≡¨{𝕩Step˘in}¨↕10000 +•Out ∾1↓⥊(@+10)≍˘<˘⍉⊑⟜" #"¨+˝{1⊸+⌾(𝕩⊸⊑)size⥊0}˘n Step˘in diff --git a/2024/day14/input b/2024/day14/input new file mode 100644 index 0000000..cf6959f --- /dev/null +++ b/2024/day14/input @@ -0,0 +1,500 @@ +p=91,23 v=98,-65 +p=100,68 v=-43,14 +p=33,76 v=55,34 +p=83,21 v=14,67 +p=59,43 v=-65,77 +p=2,89 v=-53,61 +p=22,83 v=44,85 +p=54,82 v=13,72 +p=72,70 v=-81,43 +p=9,89 v=42,-76 +p=80,10 v=-79,-19 +p=65,86 v=-38,-35 +p=67,41 v=-87,72 +p=39,82 v=-20,-80 +p=76,20 v=-4,98 +p=44,22 v=56,63 +p=91,13 v=-74,19 +p=48,56 v=-15,69 +p=61,30 v=99,74 +p=10,38 v=55,80 +p=24,61 v=59,-72 +p=98,50 v=74,95 +p=17,33 v=3,87 +p=91,70 v=17,-7 +p=79,92 v=31,-49 +p=8,30 v=-73,-95 +p=9,34 v=-83,-34 +p=62,17 v=21,29 +p=47,51 v=-56,38 +p=57,64 v=86,96 +p=92,1 v=18,43 +p=16,72 v=89,-69 +p=85,96 v=-23,-91 +p=7,25 v=95,-50 +p=95,71 v=30,-47 +p=23,5 v=19,-91 +p=79,40 v=87,73 +p=12,84 v=63,6 +p=30,79 v=-92,85 +p=64,36 v=91,70 +p=63,6 v=26,50 +p=64,76 v=-41,-80 +p=61,6 v=-10,-22 +p=54,65 v=41,-68 +p=95,101 v=-33,19 +p=90,18 v=77,19 +p=46,40 v=-91,66 +p=11,10 v=-7,43 +p=9,23 v=33,-48 +p=72,59 v=-95,4 +p=10,40 v=-98,-54 +p=85,80 v=-3,82 +p=56,45 v=-50,76 +p=66,8 v=-55,67 +p=34,101 v=75,-84 +p=57,31 v=66,25 +p=1,98 v=-78,71 +p=95,62 v=-4,-85 +p=68,34 v=6,4 +p=64,83 v=-96,64 +p=59,93 v=43,24 +p=41,37 v=40,-37 +p=53,71 v=-90,6 +p=6,54 v=-38,-27 +p=14,78 v=-98,-35 +p=62,72 v=-19,-49 +p=70,52 v=96,-83 +p=8,71 v=-18,-4 +p=75,67 v=-50,96 +p=93,49 v=37,-30 +p=37,67 v=-51,-10 +p=41,19 v=-30,-23 +p=10,13 v=79,-84 +p=22,83 v=-26,-38 +p=68,79 v=-85,-52 +p=78,72 v=-65,-73 +p=66,53 v=-60,-19 +p=84,79 v=-99,-87 +p=12,67 v=34,-10 +p=77,17 v=67,-71 +p=9,41 v=-93,-58 +p=87,42 v=43,-23 +p=88,90 v=27,16 +p=11,28 v=-82,-19 +p=44,68 v=56,58 +p=1,89 v=-58,-87 +p=6,68 v=85,-55 +p=37,41 v=55,52 +p=4,102 v=-47,-56 +p=30,42 v=-77,-51 +p=14,34 v=74,11 +p=91,68 v=72,-28 +p=28,6 v=-23,74 +p=75,30 v=66,34 +p=66,69 v=50,-79 +p=92,86 v=-26,-82 +p=67,32 v=82,80 +p=44,80 v=-61,-28 +p=86,55 v=22,-45 +p=18,44 v=-11,56 +p=41,76 v=25,5 +p=81,1 v=80,-52 +p=3,64 v=-83,-93 +p=3,30 v=-83,1 +p=100,86 v=-88,44 +p=41,31 v=45,70 +p=60,21 v=-65,-23 +p=4,0 v=54,98 +p=24,68 v=-98,-93 +p=5,25 v=79,-81 +p=39,44 v=26,-51 +p=65,5 v=-49,81 +p=50,2 v=-40,-25 +p=96,100 v=-43,88 +p=21,95 v=34,2 +p=38,42 v=15,97 +p=90,102 v=74,64 +p=29,66 v=-58,-54 +p=86,32 v=7,12 +p=57,83 v=-50,-90 +p=25,35 v=-77,11 +p=97,102 v=47,-95 +p=81,12 v=-54,-98 +p=6,56 v=23,-51 +p=80,102 v=-79,16 +p=93,26 v=-83,83 +p=32,86 v=23,-43 +p=24,84 v=-52,-97 +p=20,52 v=23,79 +p=51,95 v=-96,88 +p=23,89 v=69,3 +p=42,23 v=-66,53 +p=96,69 v=-28,65 +p=23,50 v=99,41 +p=97,77 v=94,-80 +p=10,92 v=-63,19 +p=70,32 v=92,1 +p=7,66 v=-96,-67 +p=77,14 v=-34,-37 +p=99,46 v=41,25 +p=61,39 v=-45,-27 +p=76,80 v=-19,93 +p=57,36 v=52,32 +p=62,53 v=38,-67 +p=83,11 v=39,-45 +p=37,92 v=-46,23 +p=81,39 v=-69,73 +p=48,63 v=-5,-24 +p=14,15 v=74,36 +p=48,35 v=81,-30 +p=31,50 v=-21,-10 +p=87,93 v=-83,33 +p=46,101 v=-55,35 +p=79,96 v=-94,54 +p=71,31 v=1,-23 +p=14,51 v=44,76 +p=42,20 v=-91,14 +p=0,21 v=-48,87 +p=61,24 v=-28,-26 +p=48,27 v=-91,8 +p=84,78 v=-49,-90 +p=35,66 v=-77,13 +p=81,30 v=52,39 +p=66,76 v=85,5 +p=19,45 v=80,-78 +p=51,77 v=-55,-79 +p=59,2 v=82,36 +p=22,83 v=22,-65 +p=82,17 v=52,15 +p=84,61 v=-49,52 +p=19,46 v=80,90 +p=35,81 v=71,-13 +p=94,24 v=78,91 +p=19,33 v=8,61 +p=47,25 v=69,-96 +p=6,8 v=-2,-60 +p=9,20 v=-22,-19 +p=68,0 v=21,-5 +p=30,15 v=-97,84 +p=9,59 v=-19,-84 +p=77,35 v=57,35 +p=91,54 v=-13,-31 +p=53,69 v=81,-69 +p=27,41 v=-54,33 +p=28,69 v=-67,65 +p=23,58 v=60,-48 +p=35,16 v=35,36 +p=39,84 v=-84,-18 +p=41,82 v=45,71 +p=34,48 v=16,61 +p=22,1 v=39,-87 +p=42,85 v=-76,68 +p=5,52 v=18,-34 +p=19,58 v=-62,-34 +p=60,4 v=-30,26 +p=32,43 v=4,-92 +p=10,38 v=-78,1 +p=54,76 v=-46,6 +p=9,93 v=-17,-39 +p=93,27 v=-61,-89 +p=39,89 v=93,6 +p=23,69 v=8,55 +p=23,8 v=-52,43 +p=29,96 v=4,57 +p=88,49 v=2,93 +p=37,49 v=20,-36 +p=48,84 v=85,82 +p=62,101 v=6,16 +p=79,82 v=-39,-4 +p=10,71 v=-12,-4 +p=35,42 v=-31,-61 +p=2,95 v=-50,53 +p=44,26 v=-97,-13 +p=2,36 v=84,-89 +p=3,64 v=-25,-39 +p=35,23 v=4,67 +p=38,102 v=-26,-53 +p=11,70 v=-22,-4 +p=41,42 v=-97,55 +p=59,76 v=52,-82 +p=39,23 v=29,53 +p=7,46 v=-47,1 +p=82,27 v=-84,32 +p=56,20 v=26,-5 +p=76,33 v=16,-58 +p=87,46 v=-74,-68 +p=63,3 v=97,2 +p=71,15 v=-30,22 +p=37,6 v=80,5 +p=39,66 v=60,51 +p=85,62 v=-40,94 +p=26,97 v=41,-51 +p=84,63 v=-86,69 +p=23,59 v=-97,-96 +p=93,32 v=77,-47 +p=88,1 v=-23,64 +p=14,36 v=-67,-49 +p=40,94 v=-25,78 +p=54,54 v=-47,1 +p=96,31 v=93,90 +p=91,21 v=-94,-57 +p=88,23 v=25,21 +p=12,64 v=16,-8 +p=75,17 v=-73,70 +p=32,9 v=38,-36 +p=37,2 v=80,64 +p=72,69 v=66,62 +p=52,98 v=-23,42 +p=10,74 v=36,38 +p=33,6 v=-42,-87 +p=83,55 v=22,-48 +p=59,80 v=-80,76 +p=1,32 v=-70,-30 +p=34,49 v=33,-58 +p=28,25 v=34,74 +p=57,43 v=50,23 +p=7,12 v=53,9 +p=54,30 v=-95,-9 +p=11,91 v=28,37 +p=70,38 v=-9,-92 +p=30,15 v=25,77 +p=88,63 v=-98,39 +p=40,15 v=-51,-19 +p=100,26 v=28,-88 +p=68,30 v=-90,66 +p=44,80 v=-56,54 +p=11,58 v=39,42 +p=62,85 v=67,13 +p=92,6 v=2,-88 +p=71,98 v=-30,-5 +p=99,33 v=-69,-13 +p=90,84 v=-87,76 +p=23,71 v=24,27 +p=62,61 v=16,-35 +p=42,57 v=-86,-34 +p=28,66 v=-16,-7 +p=88,94 v=-99,78 +p=95,42 v=51,-82 +p=82,50 v=52,4 +p=1,69 v=-53,-21 +p=37,21 v=91,-37 +p=30,2 v=-32,-81 +p=18,59 v=-7,-96 +p=40,28 v=-56,94 +p=45,66 v=50,-31 +p=39,79 v=-41,-42 +p=75,68 v=97,-42 +p=27,22 v=-21,-33 +p=6,15 v=-34,-68 +p=28,94 v=-65,-7 +p=48,25 v=-15,63 +p=77,51 v=-85,-54 +p=36,53 v=-48,-7 +p=15,38 v=-73,-41 +p=24,73 v=-23,2 +p=17,15 v=-37,63 +p=12,59 v=-33,57 +p=45,66 v=-96,10 +p=27,98 v=-67,71 +p=88,66 v=-14,79 +p=59,12 v=91,36 +p=7,29 v=3,15 +p=44,90 v=-76,47 +p=77,45 v=67,-23 +p=14,62 v=-47,-86 +p=28,90 v=-77,-80 +p=65,17 v=-80,70 +p=63,47 v=62,-99 +p=47,30 v=-71,97 +p=7,47 v=-58,83 +p=2,57 v=12,-3 +p=57,71 v=70,47 +p=56,26 v=94,55 +p=66,97 v=-71,45 +p=41,54 v=-30,-86 +p=31,85 v=-26,47 +p=63,55 v=-39,48 +p=6,84 v=28,-66 +p=64,62 v=-50,86 +p=51,49 v=91,-82 +p=19,95 v=44,30 +p=54,98 v=96,-32 +p=71,65 v=54,42 +p=97,72 v=83,-21 +p=71,19 v=-95,-9 +p=59,45 v=51,83 +p=85,18 v=37,-53 +p=59,58 v=-60,86 +p=96,63 v=68,-89 +p=53,25 v=58,-22 +p=95,72 v=52,7 +p=10,0 v=-83,16 +p=48,50 v=-16,-44 +p=25,27 v=-30,45 +p=79,33 v=73,44 +p=40,3 v=-36,-70 +p=68,85 v=-64,-72 +p=86,73 v=-9,-72 +p=25,53 v=50,90 +p=64,41 v=68,-76 +p=85,42 v=-69,-61 +p=84,57 v=-10,-73 +p=36,53 v=-89,22 +p=24,55 v=54,-17 +p=1,97 v=-43,93 +p=29,1 v=95,-49 +p=19,22 v=28,90 +p=73,59 v=18,-7 +p=65,36 v=41,48 +p=22,50 v=-57,-72 +p=61,36 v=11,56 +p=18,96 v=-68,-1 +p=88,18 v=-89,5 +p=73,2 v=36,68 +p=24,99 v=49,88 +p=43,50 v=-5,-20 +p=34,99 v=95,-56 +p=9,2 v=48,-52 +p=68,39 v=-55,-30 +p=33,99 v=-42,12 +p=80,26 v=52,-23 +p=31,70 v=19,-7 +p=75,27 v=23,-69 +p=41,8 v=40,-22 +p=2,36 v=-28,-89 +p=13,92 v=49,-38 +p=25,60 v=-82,96 +p=7,33 v=-83,11 +p=58,63 v=56,-65 +p=62,85 v=-85,68 +p=97,16 v=-18,-50 +p=48,34 v=-47,43 +p=43,82 v=-71,20 +p=63,55 v=-60,-17 +p=28,62 v=-75,-70 +p=7,52 v=-12,47 +p=72,73 v=66,-4 +p=98,33 v=68,-64 +p=87,51 v=-79,-89 +p=98,63 v=-58,-72 +p=57,22 v=-15,87 +p=11,20 v=42,-63 +p=72,10 v=66,-67 +p=28,20 v=-87,1 +p=22,5 v=-90,29 +p=23,30 v=66,30 +p=38,26 v=-21,32 +p=90,87 v=-28,58 +p=71,94 v=22,13 +p=32,32 v=24,-71 +p=9,30 v=69,29 +p=34,64 v=-11,17 +p=80,35 v=78,63 +p=39,93 v=72,-8 +p=63,94 v=-42,96 +p=85,26 v=-69,-31 +p=5,100 v=-22,5 +p=96,37 v=99,-85 +p=55,51 v=43,5 +p=20,58 v=84,93 +p=1,29 v=41,82 +p=83,73 v=-79,-62 +p=71,98 v=21,23 +p=49,72 v=-87,-38 +p=0,63 v=-50,62 +p=69,50 v=68,34 +p=94,37 v=48,38 +p=5,28 v=-53,63 +p=99,58 v=-15,44 +p=1,86 v=-78,34 +p=25,25 v=69,-91 +p=15,13 v=-57,-19 +p=68,59 v=92,-17 +p=7,65 v=-58,72 +p=90,88 v=-83,83 +p=31,60 v=69,-40 +p=83,60 v=52,-55 +p=16,63 v=86,-5 +p=21,19 v=-82,-85 +p=4,74 v=-12,-1 +p=51,76 v=-73,-63 +p=71,67 v=26,41 +p=3,86 v=-88,6 +p=5,65 v=73,31 +p=79,66 v=-44,-96 +p=80,79 v=39,49 +p=24,66 v=-25,64 +p=0,1 v=2,-49 +p=40,21 v=-25,97 +p=97,47 v=-28,90 +p=97,70 v=-61,-99 +p=12,42 v=-38,-44 +p=42,39 v=-86,42 +p=17,28 v=94,-16 +p=68,50 v=37,4 +p=31,46 v=-81,-89 +p=95,74 v=-23,-28 +p=24,35 v=-82,-23 +p=53,27 v=54,27 +p=26,17 v=95,-57 +p=77,92 v=37,54 +p=99,33 v=68,-30 +p=46,100 v=20,19 +p=64,22 v=-95,43 +p=9,94 v=-88,6 +p=44,78 v=70,-52 +p=100,67 v=38,-66 +p=31,79 v=90,16 +p=57,67 v=40,-86 +p=79,48 v=67,-96 +p=46,100 v=73,44 +p=26,18 v=-7,80 +p=60,84 v=21,-59 +p=18,16 v=64,17 +p=48,81 v=91,-35 +p=54,9 v=-10,43 +p=34,58 v=-16,31 +p=33,0 v=-77,-63 +p=90,1 v=-36,-27 +p=53,68 v=71,34 +p=37,60 v=75,-93 +p=49,8 v=30,-40 +p=10,102 v=94,19 +p=78,54 v=60,-21 +p=42,52 v=35,48 +p=98,69 v=66,-32 +p=89,98 v=-47,80 +p=44,8 v=56,70 +p=67,8 v=97,26 +p=7,81 v=65,39 +p=87,38 v=23,97 +p=95,11 v=87,-5 +p=23,13 v=14,80 +p=98,13 v=84,34 +p=1,57 v=-22,3 +p=22,10 v=81,-8 +p=75,14 v=-44,-26 +p=7,75 v=3,-80 +p=1,20 v=-58,84 +p=20,12 v=79,-60 +p=80,8 v=78,-36 +p=41,66 v=64,-33 +p=82,30 v=-59,63 +p=95,50 v=53,-84 +p=27,0 v=-87,40 +p=58,18 v=-25,53 +p=50,34 v=65,22 +p=6,41 v=50,37 +p=3,72 v=-56,-25 +p=85,1 v=67,-15 +p=63,52 v=34,-93 +p=28,72 v=4,-35 +p=59,102 v=-71,-39 +p=26,16 v=24,49 +p=10,97 v=-3,90 +p=22,82 v=-32,88 +p=47,25 v=-96,-16 +p=58,102 v=72,-78 +p=26,92 v=76,-72 +p=28,22 v=34,-2 diff --git a/2024/day14/test b/2024/day14/test new file mode 100644 index 0000000..2455da4 --- /dev/null +++ b/2024/day14/test @@ -0,0 +1,12 @@ +p=0,4 v=3,-3 +p=6,3 v=-1,-3 +p=10,3 v=-1,2 +p=2,0 v=2,-1 +p=0,0 v=1,3 +p=3,0 v=-2,-2 +p=7,6 v=-1,-3 +p=3,0 v=-1,-2 +p=9,3 v=2,3 +p=7,3 v=-1,2 +p=2,4 v=2,-3 +p=9,5 v=-3,-3 diff --git a/2024/day17/day17.bqn b/2024/day17/day17.bqn new file mode 100644 index 0000000..1404b53 --- /dev/null +++ b/2024/day17/day17.bqn @@ -0,0 +1,18 @@ +in←•FLines"input" +a‿b‿c←•ParseFloat¨12⊸↓¨3↑in +Split←((⊢-˜+`׬)∘=⊔⊢) +p←•ParseFloat¨','Split 9↓¯1⊸⊑in +Combo←{𝕩⊑(↕4)∾𝕨} +Step←{ +0‿n𝕊r‿a‿b‿c‿o: ⟨r+2,⌊a÷ 2⋆ a‿b‿c Combo n,b,c,o⟩; +1‿n𝕊r‿a‿b‿c‿o: ⟨r+2,a,⊑b 32•bit._xor ⟨n⟩,c,o⟩; +2‿n𝕊r‿a‿b‿c‿o: ⟨r+2,a,8 | a‿b‿c Combo n,c,o⟩; +3‿n𝕊r‿0‿b‿c‿o: ⟨r+2,a,b,c,o⟩; +3‿n𝕊r‿a‿b‿c‿o: ⟨n,a,b,c,o⟩; +4‿n𝕊r‿a‿b‿c‿o: ⟨r+2,a,⊑b 32•bit._xor ⟨c⟩,c,o⟩; +5‿n𝕊r‿a‿b‿c‿o: ⟨r+2,a,b,c,o∾8| a‿b‿c Combo n⟩; +6‿n𝕊r‿a‿b‿c‿o: ⟨r+2,a,⌊a÷ 2⋆ a‿b‿c Combo n,c,o⟩; +7‿n𝕊r‿a‿b‿c‿o: ⟨r+2,a,b,⌊a÷ 2⋆ a‿b‿c Combo n,o⟩ +} +Run←{p𝕊a‿b‿c: {(2↑(⊑𝕩)↓p)Step 𝕩}•_while_{(⊑𝕩)<≠p}0‿a‿b‿c‿⟨⟩} +•Out 1↓∾(','∾•Fmt)¨¯1⊑p Run a‿b‿c diff --git a/2024/day17/input b/2024/day17/input new file mode 100644 index 0000000..050736b --- /dev/null +++ b/2024/day17/input @@ -0,0 +1,5 @@ +Register A: 24847151 +Register B: 0 +Register C: 0 + +Program: 2,4,1,5,7,5,1,6,0,3,4,0,5,5,3,0 diff --git a/2024/day17/test b/2024/day17/test new file mode 100644 index 0000000..f09839b --- /dev/null +++ b/2024/day17/test @@ -0,0 +1,5 @@ +Register A: 729 +Register B: 0 +Register C: 0 + +Program: 0,1,5,4,3,0