作为练习,我正在尝试为Haskell中的赌场游戏"战争"编写模拟.
http://en.wikipedia.org/wiki/Casino_war
这是一个非常简单的游戏,有一些规则.用我所知道的任何命令式语言编写一个非常简单的问题,但是我很难在Haskell中编写它.
我到目前为止的代码:
-- Simulation for the Casino War
import System.Random
import Data.Map
-------------------------------------------------------------------------------
-- stolen from the internet
fisherYatesStep :: RandomGen g => (Map Int a, g) -> (Int, a) -> (Map Int a, g)
fisherYatesStep (m, gen) (i, x) = ((insert j x . insert i (m ! j)) m, gen')
where
(j, gen') = randomR (0, i) gen
fisherYates :: RandomGen g => g -> [a] -> ([a], g)
fisherYates gen [] = ([], gen)
fisherYates …
Run Code Online (Sandbox Code Playgroud) 我希望链接到第三方网站上包含大量内容的页面,但希望读者从那里开始阅读。是的,我可以明确告诉他们,但有时并不总是理想的。如果我在一般位置找不到任何具有 name 或 id 属性的元素,还有其他方法吗?谢谢!
例如,我们有任务,在列表中选择前10个偶数.
这可以通过简单的for循环轻松完成:
i = 0
list_even = []
for x in range(30):
if x % 2 == 0 and i < 10:
list_even.append(x)
i += 1
print(list_even) # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18] - correct!
Run Code Online (Sandbox Code Playgroud)
怎么可能与列表理解相同?
我试图使用枚举,但它计算所有元素,不仅满足if语句,所以我不能使用枚举中的索引作为计数器.
list_even = [x for i, x in enumerate(range(30)) if x % 2 == 0 and i < 10]
print(list_even) # [0, 2, 4, 6, 8] - incorrect!
Run Code Online (Sandbox Code Playgroud)
我描述的任务只是示例 - 我正在写关于列表推导的文章,并希望了解这类任务的细节和一般解决方案.