Нужна помощь в добавлении элементов в список (Haskell) - PullRequest
2 голосов
/ 09 октября 2019

У меня есть задание, в котором у меня есть список списков, в котором каждый первый элемент списков внутри списка всегда одинаков, например: [[element, ....], [element, ...], [element, ...]]. У меня также есть функция, которую мне дал профессор, которая генерирует случайный список чисел от 0 до 9, который называется genRandom. Как это работает, вы даете ему Int, например 5, и вы также даете ему семя, и оно дает вам [2,6,3,6,8] (например). Что мне нужно сделать, это, например, дать пользователю Int, давайте используем 3 для этого примера, он должен вернуть что-то вроде этого: [[element, genRandom 2 seed, genRandom 2 seed], [element, genRandom 2 seed, genRandom 2 seed]]. В этом примере каждый раз, когда появляется genRandom 2, должны появляться 2 случайных числа, сгенерированных функцией. Пока это моя попытка:

    gerlists :: Int -> Int -> [[Int]]
    gerlists 0 _ = [[]]
    gerlists _ 0 = [[]]
    gerlists n c = replicate n [Reta Terra 0]

В этой функции я создаю список с первым элементом, уже определенным, как показано выше.

    addRandomN :: [[Int]] -> Int -> Int -> [[Int]]
    addRandomN (x:xs) c seed = (x ++ addRandomN(genRandom 2 seed): addRandomN(c-1) (genRandom 2 seed)

Это функция вкоторый я пытаюсь объединить.

Мне очень жаль, если мне трудно понять, что я пытаюсь сказать, английский не мой основной язык. Заранее спасибо:)

1 Ответ

2 голосов
/ 09 октября 2019

Да, я понимаю проблему, вам нужно несколько изменений, чтобы начать, базовые случаи рекурсии:

genRandom x y = undefined

addRandomN :: [[Int]] -> Int -> Int -> [[Int]]
addRandomN _ 0 _  = []
addRandomN [] _ _ = []
addRandomN (x:xs) c seed = (genRandom 2 seed) : (addRandomN xs (c-1) seed)

с этим код компилируется, и вы сможете заполнить пустые дыры,Я не знаю точный тип genRandom, но функция, как вы говорите, должна быть примерно такой:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...