Итак, я пытаюсь проблема 68 в Project Euler.Я придумал простой алгоритм.Тем не менее, мое представление не подходит.Обратите внимание, что алгоритм работает правильно для 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))