Comments 7
Я конечно фанат, Haskell, но вы как-то плохо его популяризируете =)
Уберите пожалуйста эти пугающие типы у read, они легко выводятся из использования (solve и printNSolutions принимают Int).
Там где вы считываете два числа можно сразу их распаковать:
Уберите пожалуйста эти пугающие типы у read, они легко выводятся из использования (solve и printNSolutions принимают Int).
Там где вы считываете два числа можно сразу их распаковать:
let n1 : n2 : [] = map read $ words numsStr
А конец итерации лучше заменить на: printNSolutions 0 = return ()
+1
Не ставил своей целью популяризацию языка, скорее хотел помочь новичкам, показав, что такие программы, обычно пишущиеся на императивных языках, не так уж и сложно пишутся и на Хаскеле.
Про типы у read согласен, выглядит страшно, но я не могу избавиться от параноидальной привычки явно их указывать) Да и так более наглядно, я думаю.
А про такой удобный способ распаковки даже не подумал, спасибо за совет!
Добавлю в пост ваши замечания.
Про типы у read согласен, выглядит страшно, но я не могу избавиться от параноидальной привычки явно их указывать) Да и так более наглядно, я думаю.
А про такой удобный способ распаковки даже не подумал, спасибо за совет!
Добавлю в пост ваши замечания.
0
let n1 : n2 : [] = ...
можно заматчить и так: let [n1, n2] = ...
+2
Как вы находите время так воду лить во время соревнования, обычно выходит что-то вроде:
Задача та же самая.
main = putStr.unlines.map(show.solve.map read.words).tail.lines=<<getContents
where { solve (0:_) = 0; solve (_:0:_) = 0; solve (a:b:_) = if a >= b then (div a b) + solve [b,(mod a b)] else solve [b,a]; }
Задача та же самая.
+2
Sign up to leave a comment.
Решение турнирных задач на языке Haskell