Euler项目#68简单算法的错误答案

时间:2018-12-28 06:50:48

标签: clojure

所以我正在欧拉计画中尝试problem 68。我想出了一个简单的算法。但是,我提交的内容有误。请注意,该算法在3种情况下均能正常工作。请帮助我了解我在做什么错。我已经坚持了一段时间了。

; https://projecteuler.net/problem=68

(ns eul
  (:require [clojure.math.combinatorics :as combo]))

; Try the 3-case first to see if correct.

;     a
;      \
;       b
;      / \
;     e - c - d
;    /
;   f

(->> (combo/permutations (range 1 7))
     (filter (fn [[a b c d e f]] (and (= (+ a b c) (+ d c e) (+ f e b))
                                      (< a d)
                                      (< a f))))
     (map (fn [[a b c d e f]] (->> [a b c d c e f e b]
                                   (map str)
                                   (apply str))))
     (map #(Integer/parseInt %))
     (sort >)
     (first))

    ;     a
    ;     |
    ;     b -- e - d
    ;     |     \
    ;     |      g
    ;     |     / \
    ; j - c -- i   f
    ;         /
    ;        h

(->> (combo/permutations (range 1 11))
     (filter (fn [[a b c d e f g h i j]] (and (= (+ a b c) (+ d e b) (+ f g e) (+ h i g) (+ j c i))
                                              (< a d) (< a f) (< a h) (< a j))))
     (map (fn [[a b c d e f g h i j]] (->> [a b c d e b f g e h i g j c i]
                                           (map str)
                                           (apply str))))
     (filter #(= (.length %) 16))
     (map biginteger)
     (sort >)
     (first))

1 个答案:

答案 0 :(得分:0)

事实证明,在第二种情况下,var的排列是错误的。问题陈述不匹配。