Как стать автором
Обновить

Комментарии 2

НЛО прилетело и опубликовало эту надпись здесь
Haskell не может распечатать операцию, поэтому приходится издеваться, а вообще так:
ghci> let ops = [(+), (-), (*), div]
ghci> length [(op1, op2, op3, op4, op5) | op1 <- ops, op2 <- ops, op3 <- ops, op4 <- ops, op5 <- ops, 1 `op1` 2 `op2` 3 `op3` 4 `op4` 5 `op5` 6 == 35]
3

Т.е. видно, что решения три, но там список операций
Ну и куда же без обобщения
ghci> let ops = [("+", (+)), ("-", (-)), ("*", (*)), ("/", div)]
ghci> let calc (arg:args) ops = foldl (flip ($)) arg $ zipWith (flip ($)) args $ map (flip.snd) ops
ghci> let findForArgs args result = map (map fst) $ filter (\o -> calc args o == result) (sequence $ replicate (length args - 1) ops)
ghci> findForArgs [1,2,3,4,5,6] 35
[["+","+","*","+","+"],["+","*","*","+","-"],["*","*","*","+","+"]]
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации