2012-02-07 2 views
1

Пифагорейский триплет представляет собой набор из трех натуральных чисел, < b < c, для которого a^(2) + b^(2) = c^(2). Там существует ровно один Пифагора триплет, для которого а + Ь + с = 1000.Создание списка чисел с помощью Haskell

Я пытаюсь создать список с ответом:

[200,375,425] 

Для этого, я запрограммировал в Haskell:

p = [ [a, b, c] | b <- [1..1000], a <- [1..b], let c = 1000 - b - a, a^2 + b^2 == c^2 && b<c] 

Это создает

[[200,375,425]] 

Как я могу изменить свое решение, чтобы генерировать первый выходной сигнал (в вместо того, что у меня есть сейчас)?

+0

Я думаю, что голосование было за то, что вы солгали. Ваш код возвращает '[[200,375,425]]'. – Rotsor

+0

Yup, извините ... моя ошибка – Joel

ответ

3
head $ [ [a, b, c] | b <- [1..1000], a <- [1..b], let c = 1000 - b - a, a^2 + b^2 == c^2 && b<c] 
3

Посмотрите на свой выход. Он создал список, первым результатом которого является результат, который вы хотите. Есть функция, которая берет список и возвращает первый элемент - head. Вызовите head на выходе из вашего существующего кода, и вы получите нужный результат.