Как я могу пробовать без замены из набора чисел ([1, 2, 3]
) до тех пор, пока я не нажму x
?
Мой план состоял в том, чтобы перетасовать список [1, 2, 3]
и нарезать его на x
:
-- chopAt 3 [2, 3, 1] == [2, 3]
-- chopAt 3 [2, 1, 3] == [2, 1, 3]
-- chopAt 3 [3, 1, 2] == [3]
chopAt _ [] = []
chopAt x (y:ys)
| x /= y = y : chopAt x ys
| otherwise = [y]
Однако я не мог понять, как перетасовать список (или еще разобраться в Monads).
-- sample without replacement from [1, 2, 3] until one hits a 3
-- x <- shuffle [1, 2, 3]
-- print (chopAt 3 x)
main = do
-- shuffle [1, 2, 3]
print (chopAt 3 [1, 3, 2])