Last active
March 9, 2020 09:55
Euler: Problem 106
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
(ns euler.pe_106 | |
(:require [clojure.math.combinatorics :as combo])) | |
;; Prablem 106 | |
;; "Elapsed time: 456.3979 msecs" | |
(defn create-sets [basel m] | |
(let [pair-a (combo/combinations basel m)] | |
(reduce into #{} | |
(for [pair pair-a] | |
(let [reminder (sort (clojure.set/difference (set basel) (set pair)))] | |
(->> (combo/combinations reminder m) | |
(map #(if (< (first pair) (first %)) | |
(vector pair %) | |
(vector % pair)) ,,))))))) | |
(defn needs_verify? [[a b]] | |
(let [comparison (map > a b)] | |
(not | |
(or (every? true? comparison) | |
(every? false? comparison))))) | |
(defn part-size-list [N] | |
(range 2 (+ 1 (quot N 2)))) | |
(defn base-list [N] | |
(range 1 (+ 1 N))) | |
(defn pe106-check [N] | |
(let [basel (base-list N) | |
m-list (part-size-list N)] | |
(apply + | |
(for [m m-list] | |
(->> (create-sets basel m) | |
(map needs_verify? ,,) | |
(filter true? ,,) | |
(count)))))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment