gpt4 book ai didi

elm - 如何在 Elm 中打乱列表?

转载 作者:行者123 更新时间:2023-12-04 11:34:31 24 4
gpt4 key购买 nike

假设我有一个包含数字 1 到 5 的列表。我将如何在 Elm 中编写一个名为 shuffleList 的函数这样它将整数列表作为参数并返回列表的随机版本?

例如。,

shuffleList [1,2,3,4,5]
{-5,1,2,4,3-}

可以对随机种子进行硬编码

最佳答案

您可能想要 shuffle 来自 elm-community/random-extra 的函数。在 Ellie 上使用的示例

如果您想手动执行此操作,请给出初始 Seed 您可以执行以下操作(这使用了 elm-community/list-extra 包中的一些功能)

import List.Extra exposing (getAt, removeAt)
import Random exposing (Seed, int, step)

shuffleList : Seed -> List a -> List a
shuffleList seed list =
shuffleListHelper seed list []


shuffleListHelper : Seed -> List a -> List a -> List a
shuffleListHelper seed source result =
if List.isEmpty source then
result
else
let
indexGenerator =
int 0 ((List.length source) - 1)

( index, nextSeed ) =
step indexGenerator seed

valAtIndex =
getAt index source

sourceWithoutIndex =
removeAt index source
in
case valAtIndex of
Just val ->
shuffleListHelper nextSeed sourceWithoutIndex (val :: result)

Nothing ->
Debug.crash "generated an index outside list"

Ellie 上使用的示例

关于elm - 如何在 Elm 中打乱列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42207900/

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