2017-02-19 16 views
0

Это для школьного проекта.Техасский диапазон в списке списков

Мне нужно создать список списков с диапазонами.

Пример:

myLol x y z = 
[[ x , x-2 , ... , x-y+2 ], 
[ x-2 , x-4 , ... , x - y ], 
[ ... , ... , ... , ... ], 
[x-z+2 , x-z , ... , x-y-z+4]] 

Моя первая мысль была сделать четыре списка, и положить их вместе в конце, но это не дает мне 3-й ряд. Я играл вокруг, пытаясь составить понимание списка внутри понимания списка, но это не принесло пользы.

Я уверен, что создаю 1-й, 2-й и 4-й столбцы, а затем строки из этих значений будут работать. Я недостаточно разбираюсь в коде для этого.

Любые идеи?

Редактировать: Я сделал так, чтобы он работал только с матрицей 4x4. Не работает динамично, хотя.

myLol x y z = [(row1 x y),(row2 x y),(row3 x y z),(row4 x y z)] 

row1 x y = take x [x,(x-1) .. (x-y+1)] 
row2 x y = take x [(x-1),(x-2) .. (x-y)] 
row4 x y z = take x [(x-z+1),(x-z) .. (x-y-z+2)] 

row3 x y z = [((row1 x y) !! 2),((row2 x y) !! 2) .. ((row4 x y z) !! 2)] 
+0

'' myLol хуг = дубль (z'quot'2) [взять (y'quot'2) [£, ξ-2 ..] | ξ <- [x, x-2 ..]] ''? – leftaroundabout

+1

Вложенные списки должны работать нормально. Попробуйте что-то похожее на '[[x + y | x <- [1..10]] | y <- [1..10]] ' – chi

ответ

1

Похоже, ваш пытаются сделать что-то вроде этого:

myLol x y z = [ [ x-i-j | i <- [0,2 .. y-2] ] | j <- [0,2 .. z-2]] 

 Смежные вопросы

  • Нет связанных вопросов^_^