Я пытаюсь изучить Haskell и списки понимания, но не могу найти решение по этому вопросу:
mylist = [x*y | x <- [1..], y <- [1..]]
После моих испытаний результат примерно такой
mylist = [1,2,3,4,5,...]
потому что в списках, x
принимает значение 1
, а затем y
меняет значение несколько раз.
Но моя цель - выполнить другое задание, чтобы получить следующий результат:
mylist = [1,2,2,4,3,3,6.....]
Я имею в виду, что я хочу, чтобы комбинации были смешанными, а не каждая отдельно, потому что у меня есть серьезная проблема, чтобы получить подходящий результат.
Я приведу более конкретный пример.
Я хочу список, в котором будут все номера этой формы:
num = 2^x * 3^y
x
и y
должны принимать все значения >= 0
.
Мой подход следующий:
powers = [2^x * 3^y | x <- [0..], y <- [0..]]
Но таким образом я получаю только 3 силы, потому что x
постоянно 0.
Я попробовал это
multiples = nub (merge (<=) powers2 powers3)
powers3 = [2^x * 3^y | x <- [0..], y <- [0..]]
powers2 = [2^x * 3^y | y <- [0..], x <- [0..]]
, чтобы объединить разные, но опять же значения 6,12 и т. Д. отсутствуют - результат таков:
mylist = [1,2,3,4,8,9,16,27,32,64,81...]