Skip to content

Instantly share code, notes, and snippets.

@ypsilon-takai
Last active March 9, 2020 09:55
Euler: Problem 106
(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