Чтобы получить k-ую строку:
>>> pascal_infinite !! 4
[1,4,6,4,1]
Чтобы получить все строки из [0..k]
:
>>> map (pascal_infinite !!) [0..4]
[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
Чтобы получить все строки из [0..k]
fast :
>>> take (4+1) pascal_infinite
[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
Упс, неправильно прочитал вопрос. Чтобы получить то, что вы просите, вам, вероятно, следует создать просто старую добрую формулу n choose k
или что-то подобное, если вы беспокоитесь о скорости.
Если это просто упражнение, независимо от скорости, вот один из способов:
pascal n = map (!! n) $ drop n pascal_infinite
Затем просто сэмплируйте пару из 4-х элементов:
>>> take 8 $ pascal (4-1)
[1,4,10,20,35,56,84,120]