Необходимо увеличивать каждый второй элемент, начиная справа в списке Haskell, но сохраняя исходный порядок (например, reverse
не является случаем). Например:
f [1, 2, 3] -- [1, 3, 3]
f [1, 2, 3, 4] -- [2, 2, 4, 4]
Я пробовал что-то вроде следующего:
fc ([]) = []
fc (x:[]) = [x]
fc (x:[y]) = [x+1,y]
fc( x:xs ) = fc [x] : ( fc xs ) -- this line is wrong
p.s. Очевидно, я мог бы изменить (но предпочел бы понять исходную задачу) список дважды и применить что-то вроде:
helper (x:y:tail) = [x, y+1] ++ tail
fc x = reverse (helper (reverse x) )
3->(3+1)=4
, теперь пропустите2
, после этого 4-й1->(1+1)=2
. Итак, результат[2, 2, 4, 4]
- person Dewfy   schedule 27.09.2015