gpt4 book ai didi

haskell - FizzBu​​zz 清理

转载 作者:行者123 更新时间:2023-12-02 18:53:42 27 4
gpt4 key购买 nike

我仍在学习 Haskell,我想知道是否有一种不太冗长的方法来使用 1 行代码来表达以下语句:

map (\x -> (x, (if mod x 3 == 0 then "fizz" else "") ++ 
if mod x 5 == 0 then "buzz" else "")) [1..100]

生产:[(1,""),(2,""),(3,"嘶嘶声"),(4,""),(5,"嗡嗡声"),(6,"嘶嘶声"),( 7,""),(8,""),(9,"嘶嘶声"),(10,"嗡嗡声"),(11,""),(12,"嘶嘶声"),(13,"") ,(14,""),(15,"嘶嘶声"),(16,""),(17,""),(18,"嘶嘶声"),(19,""),(20,"嗡嗡声"),(21,"嘶嘶声"),(22,""),(23,""),(24,"嘶嘶声"),(25,"嗡嗡声"),(26,""),(27 ,“嘶嘶”),(28,“”),(29,“”),(30,“嘶嘶”),等等

感觉我在与语法作斗争超出了应有的程度。我在 Haskell 中看到了与此相关的其他问题,但我正在寻找在单个语句中表达此问题的最佳方法(试图了解如何更好地使用语法)。

最佳答案

我们不需要臭mod...

zip [1..100] $ zipWith (++) (cycle ["","","fizz"]) (cycle ["","","","","buzz"])

或稍短

import Data.Function(on)

zip [1..100] $ (zipWith (++) `on` cycle) ["","","fizz"] ["","","","","buzz"]

或者暴力方式:

zip [1..100] $ cycle ["","","fizz","","buzz","fizz","","","fizz","buzz","","fizz","","","fizzbuzz"]

关于haskell - FizzBu​​zz 清理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9047775/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com