Project Euler # 68 неправильный ответ для простого алгоритма - PullRequest
0 голосов
/ 28 декабря 2018

Итак, я пытаюсь проблема 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))

1 Ответ

0 голосов
/ 07 января 2019

Оказалось, что во втором случае неправильное расположение варов.Постановка проблемы не совпадает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...