Haskell Список типов данных Фильтр Подсписок - PullRequest
0 голосов
/ 23 марта 2012

У меня есть тип данных person, у которого есть имя, и его вес выглядит следующим образом.

data Person = Person
    {pName :: String,
     pWeight :: Double} deriving (Show)

persons :: [Person]
persons = [Person "Peter" 35.0,
            Person "Joe" 45.0,
            Person "Alex" 55.0,
            Person "Ruby" 60.0,
            Person "John" 65.0,
            Person "Ann" 35.0]

Q1 Если я хочу отфильтровать и получить первый набор из заданного списка лиц, что сумма их максимальных весов должна быть меньше заданного значения, как это сделать?

например, вывод, если максимальный вес составляет 150,0

Персона "Петр" 35,0

Персона "Джо" 45,0

Персона "Алекс" 55,0

Общий вес: 135,0

Q2 Если я хочу получить все подмножества максимального веса, который установлен

например, вывод, если максимальный вес составляет 100,0

Набор 1

человек "Петр" 35,0 Персона "Джо" 45,0

Общий вес: 80,0

Набор 2

Персона "Алекс" 55,0

Общий вес: 55,0

Набор 3 ...... так далее

1 Ответ

2 голосов
/ 23 марта 2012

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

...