Last active
September 25, 2016 06:28
-
-
Save katsuyan/74f6f526e2fc9aad0d3c576f5b277bf7 to your computer and use it in GitHub Desktop.
数学パズルonClojure-Q2
This file contains 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
(require '[clojure.string :as string]) | |
(defn palindromes-num? [num1 num2] | |
(let [num1-str (str num1) | |
num2-str (str num2)] | |
(if (>= num2 1000) | |
(= num1-str (apply str (reverse num2-str))) | |
false))) | |
(defn join-num [num1 num2] | |
(+ (* num2 10) num1)) | |
(defn operators-list [] | |
(let [operators [* join-num]] | |
(for [x operators y operators z operators :when (not= x y z join-num)] [x y z]))) | |
(defn make-numbers-list [num] | |
(vec (map read-string (string/split (str num) #"")))) | |
(defn answer? [num] | |
(let [opls (operators-list) | |
nums (make-numbers-list num)] | |
(loop [opls opls] | |
(if (empty? opls) | |
false | |
(do | |
(let [ops (first opls)] | |
(if (or (palindromes-num? num ((ops 0) ((ops 1) ((ops 2) (nums 3) (nums 2)) (nums 1)) (nums 0))) | |
(palindromes-num? num ((ops 0) ((ops 1) (nums 3) (nums 2)) ((ops 2) (nums 1) (nums 0)))) | |
(palindromes-num? num ((ops 0) ((ops 1) (nums 3) ((ops 1) (nums 2) (nums 1))) (nums 0)))) | |
true | |
(recur (rest opls))))))))) | |
(defn get-answer [] | |
(loop [num 1000] | |
(if (> num 9999) nil | |
(do | |
(if (answer? num) | |
(println num)) | |
(recur (+ num 1)))))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment