-
-
Save rrcook/1041697 to your computer and use it in GitHub Desktop.
ReadyForZero solutions in Clojure
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns readyforzero.core | |
(:use clojure.contrib.combinatorics)) | |
(def *CT1* "en3pG3+nz+A2acXKrsyDouhViP9EDQS4JQK6uJqM3rBjKEBKC3yc=AA1=LUQqRPHvQ4dopgkbb/axClP3smzVcaTkRsCqHSG5aKFQ2TbOae0t5r4nWrCVesGK1Z3yEq+dClrDwXXOiAMyW09WdCS+CaKcfu=6kv9dUFBcS4KsUIgwMiXimoBpJZSWlBzILVf4zVA=7GjRP8RXn6uKjbjAPkpFEs/mYJpeOpEnhQfPhjoscgjfL5/SQsU6+jaAf5pg9MQzZdQAEJt7Jm1541fEmnumpjmJMd/MTJ5vzBttBBA7b5rbjDX0nHdTWn8C5suYKfNyYzc6x8S6FIepoEBsMS2mKhx5BRH5jSBrYRem4iQgYARzGnCFot3jPhp3cHj7qjXBWfZZASz8YJqi2d+r393AmdGm1L9NfU2f=FJprbLwJpuE7uT7xAlQA3Ry8aHRNgNkffP29Iqb2DSoQ0PK+9LX0t37HIAhI5zvoP6b4J7yQZEQDgeNlnPQMvSjw9pLWAxQ1VUY+NMU5BLZ2Bxuma1cIsHxcx4PwHcg0u1HYPJAWM2WK=xhJP5aQSc6oNMQK4s2=6guQRVFll6rvWkXTebrdsws7m/Kpa29spUFl8XzFx0ondEMCF3byAyWj875wAI3Hn8ZY92ddTAKj0s+a4X7qSti2lA0GzePHjBjMCD5g9kZYLtB94kkbVZ6eCle/xtto4LHH8GElc5YoUi=mk3nmQ5iOL1zMWfDyRUMLq+HCXbQL9NTejNa/yTdL3sayJOlMW1T7/Jmaz1FMbfBRFzruHeMT41=Zu3nYZJ3nIP22qKrFzNkt/24RuQ+7IMVCI2ngh2Yr8qLiL7QjSThRJPxA1wIJXwR2wqGiMhOqpun4DyQ5b/fTw1eTavpbFg6+tvqS4GKOt6p=bPoTV0GHIBBlXgHF/GUss90N0mXMKKiGwHhn/kyz=FxN0j=mfQUuUQa7lrZLjr10sqflWTwskIUkp1Cd8GYU4PaeWxiMBYFne4/8gJDt+dcZj9NV1U/B1lWigh9XvX7MiDWMAPvdrnGx0kp9v9V7LaL+JAkGGpa7s+CwwVr9C6rR0KIQLa2zF23o8men71vOVBt5Nn3U6rlmU6vWTwVhYCTptD8CHjKAX0EWcWo8T=gmYotqgXdi2y/VomdXCaBFLMtiVjpyY2npHF14p9yjvX/PBV9j4utnLeEPUZW7VD7SOc2FiqAMNBrsmNDSX64mbB6Rq1Jna36n55V5yB7=hx5FjowsqlDPD/HUR+yHAqSj7f3ZBjZZonmFFqE5ffwgf385zhjRG1x9JQRXbHG8SfLekwymb6KjkpxgZC6ATsbwALgUmmZbeMQxTAqUjyJIb9Oy2QxarahyX+bl8sElnM+j/IfvMwjSfDj/OZBl6AQpbVPfFFua4s2yhziu/vom5gtY/JDUOlEaRG=WBDX=W8Tjyx/dLE4xGuj8m9OlFWnLA6V4VVBPRbd3qUlQ9mQQYcqJj8pj=AWd3v2/yLw/SRw78lrSUajrz8i0=/mnd=8rsCMIi/F4d71XkH8V6C7Sd4IEsxVHG5EPreIZOAM0ehPTyZ4VQqHoTY2yjZwpu4LwNqQ0/l8Izyh3hczpHzl8Ai/gfkLXwR159IhKVgwP0/wxzcnnD2F8dBiQGHF7XEdbRmlplyvFos0dXsWfTFfBSRXwc2BGJtKyvO3ku2WIb1EAKJBq9rGNQv=WaMUeh087HNk+c1L6TQwCPrqm/HzaRtl3t1LYm1nmFpSfpZnbVohIfuWpIhAKrKWULSiJqJeD1Wo2TzRCh5E2tfqtRdfMvaoRoXAsU8i8RKHxmHu5qG0IUAI/ux4D0W=+Hw/DYCi47I3gaMpOf2ZsJa3SKr+kk4Hp2Oou1YfHyNw4VaPEXvkw+/WjU/9qqt4GOKAlG179j3slwGcxO6zMTxd/UoLw0h1S4wTqbi27zKkYiXB8fdTvxppQ9NAkIZQJpQ10ARdKByve6wqSznbhnGGiVEGwAmhTXPZ1v0NbAY+my1747N/2RdWSsEAX9m3WBniojR4AQENeXr=GZx0WZ01LlE2qScizbxu7UuDrCQL9LxuYf1/HYYwnzIhvvrldWmwAbylRJc1VYXGLu0dhkd/dbdIHvGr9AZQ37iMicXWvd/9E3ZftMJKPA9ilvdwCW42UMcXX8VTTQVgNNPWItRGtGWesVvugY8y5T/XZ=nOgdlwUqLsWtTH13cqgCmz+UgWcGnRFxVTmL17pJ6ZKucy8AkkUYQRsITfZfqhFxKbxR+oNTDFHSrhw/ADcOmh4ZeQA0AK67gvok4H9=t=v+6vFWEnvhrfr9RiHc9yVbwBUzAYTCZk2bOz0V6telWvtnon3Qo6qZu6SzALhnnZX4UXLpuk+Jtsfuu26dEg5Hf1I1C5l3i7+Vo6gmKGbyGe/BXf3Rhp2M/uVrNczYcZaH+GdTLUmXPEf/eZ62xKBDV0eoQAAqiv4h+xXTRvfL92dqizpXm9f35upJxwWo+jmRv1XH=ZVY5ocHnPWIXrhS3xz5fSx+uB0kcMaZz1Da6EW=AUZoccRx0nWrMUCmkDBzCQDi2Z+rXgv=Gzy96BKEkdLes9qGoLQoHJjIRlIkTPGixVXTMoWsV/f=HG9Aa2450cI1RmujMFkBRsyPDn0+zL2ZvoSIOXlHhx62zET=3mdbYsBmMiqAn88jBno7GUfbQ5DQ8L695cOtaOK9UF8ICSra5UswBmvUatVwvgMcKRSNDfTnEtsYt2+KSO8P1xCvHaJ=PiN95LM6PEzaGliQwZ7Dd=LWXR0GUBqqq+TsuTxGHLxzPvm119ceAEfyF8fqP/2Fuj6snCgRl1x/mbu/xBjUjvNAUGtfgtN5p8c3YlC9JN+D=XMo8MF0wYTqsXaN1ssGdXHsU0tbl2NZHizzJ4+njTYZMqmRTZD=h6zDW3ZkcGmGG0GLuo0TuJUTmE7tKpr7Sn2rWwWksdXe3GmicdYU0Py1YMtoO6qjGpDk0rJlDCyqzCi3RfH8R2C6+2WWx1NGhzmL2n8ku=iZT2uLnLn+RaeFse38LD38TKvjrYmxZFN4fGeKSdMqK") | |
(def *CT2* "bDq4i3eFNmjh2oMgjNsIFkRWsonRl=tz9kf8gOpED2gVQrfx49GjR9/QNqTEJkSzM30p4RfneDc7EmdusIYdxxZ8KKdND==YpLlmN/FkErS7uqVHYIyGEBIhIRX+mbg6FjVGqfYjobX3F1lSmPpLXXxhux1lV=EzIgGct9pd=ogzAdJU4/yZOj9=njfvbSo11bcE/yUDHg/J=6DAtmWt+P/VDvE4GyYHlKVGUoksn+Lzm6Y1VVF6qw=onnKZS=CQQUPeMlUGtMobJEeyIyGBMFj5kHml1waI97qgVt/yeKWSXxhJyK+As0M0UR2KL+U7klKMlWlxgbIJ2beN0gaMHbIClKrBuroo+L73CwnbFKRiyKOx8Ke=PPukm1BWYd4Do5nikrT0dgPWlmItCzyZrEiOBgBtEB9FG1qdQJud182qYU4Xwry=bR7R5PH=Npab7JQ7gY=MYHW24iw=m2+XayIachr=QVt4giclLluUEu3Dx/5y7R0GlINqoJc9O6QwEP6a9PRsdt86nZYQUF/b729lzilkM1PB8mDPACTOGobXSJJQshRQCoJoC9TX6ERou/tlMWNQTaaU0YmzIFh8t72lgOeIMu4W2S9V8Y5jO8T47ZPRGxeQDWRQlpx1tc3AC4+x2zJxZaYV6d4+rxxWgYnYC1ZwUvXNF2YLaRw7ldRXCz9/7xZ3mKBj4Ox51L3PqGXAIB+OI4pgkUc1X52tOPdRPgpsfi8wNpynfylwjITvNKq93iViQiyiEVGBgazbHQ7boh5tejStBE1SCk1fMe1=ycNoxJzhAH4x/YlQSUOz/2qkl+JxFBt8sqRYXZjZ6R=Gh87ZwS4B0Meo56/WF+40bf2mTgG05KQ/qR89NMyttHdwwnzvkZuXGrlt/yuStJaXJNkqQ5atDPWqLJy4Q9iylEdI3qmTe6Wmou/umQG7Q+aiOXorJde3Z4CzMyTYnCWvudFDZvgEZsuKRiSOurstnxFRlqVQ0LC7WRuS=qCsDcxoDT5dl9NHusV4kZ/") | |
(def *CT3* "2298163507642079319714044011236386616537514556458624876361063538594523631728704374833046762730571781372667347996722877761242458964516235987144911867899093570411259125272325950690385718016406645948728247900092493610635939061585125579278248678382561153927262068997135688096479833275438059003000577156030985752302737572142995389102392941277376055589936729467932043612276625158946842268530893693249010877756556663809256430403075836704397788157103267683082146557414910592210694688897583745853279150372366550265606245942901619641524394840947123797093291647952437507481770581519782926025000309975240809176732086412721877283182868239907386563436552684713604652833551208756316179487399401951895977814655415305700855625446129108900687384799001387951671104621436799720362491054813946856845126233235524710982837568591533011593761372364447069814628293634127437282262501219295880363659562599465416237996647317561877859528573985271179776400465798163016446475504146022123819119158936569549701762530276146646914630937941723419963811828693735274888334852800116766879328915880099767105948195091109555590581643322251908783026670007080972249010100892419108486345305849353679974424946961324819560021379840782224833262895740825258961195814695840112138347952831118547888120194142040782810626793593") | |
(defn equalcount [xs ys] | |
(count (filter identity (map = xs ys)))) | |
(defn get-common4 [] | |
(let [groups (partition 5 *CT1*)] | |
(some (fn [[x y] ] (if (= 4 (equalcount x y)) [x y] nil)) (combinations groups 2)))) | |
(defn challenge1 [] | |
(let [common4 (get-common4)] | |
(apply str (for [[x y] (map vector (first common4) (second common4)) :when (= x y)] x)))) | |
(def *ZERO* (int \0)) | |
(defn char-to-num [ch] | |
(- (int ch) *ZERO*)) | |
(defn challenge2 [] | |
(reduce + (map char-to-num (filter #(java.lang.Character/isDigit %) (take-nth 2 *CT2*))))) | |
(defn factor [n] | |
(for [x (range 1 (inc n)) :when (zero? (mod n x))] x)) | |
(defn even-chop? [lst n] | |
(loop [lst lst acc 0] | |
(cond | |
(and (nil? lst) (zero? acc)) n | |
(nil? lst) false | |
:else (let [newacc (+ acc (first lst))] | |
(cond | |
(> newacc n) false | |
(< newacc n) (recur (next lst) newacc) | |
:else (recur (next lst) 0)))))) | |
(defn challenge3 [] | |
(let [nums (map char-to-num (filter #(java.lang.Character/isDigit %) *CT3*)) | |
total (reduce + nums) | |
factors (factor total)] | |
(if-let [even-factor (some #(even-chop? nums %) factors)] | |
(/ total even-factor) | |
nil))) |
(java.lang.Character/isDigit %) can be replaced with just java.lang.Character/isDigit :)
Sorry, although they can be called by being in the front of a sexp, Java methods aren't Clojure functions and can't be used with map, filter, etc., as mentioned in "Programming Clojure", pages 86 & 87.
right on!
…On Tue, Jul 5, 2011 at 1:09 PM, rrcook < ***@***.***>wrote:
Sorry, although they can be called by being in the front of a sexp, Java
methods aren't Clojure functions and can't be used with map, filter, etc.,
as mentioned in "Programming Clojure", pages 86 & 87.
##
Reply to this email directly or view it on GitHub:
https://gist.github.com/1041697
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
The original is also mine, just hadn't figured out gists yet.