我仅用作Nix包管理器,而不使用所有NixOS. 我想要一个可复制的nix-env -i包安装,可以共享和备份。
我知道使用config.nixfor forNixOS但我正在寻找仅包含Nix包的类似功能。
阅读“了解您的Haskell”之后,我目前正在研究H-99问题。到目前为止,我感觉自己对这些概念掌握得很好,并且在解决或理解先前的问题上没有太多麻烦。但是,这一点让我很困惑,我不明白解决方案。
问题是:
生成从列表的N个元素中选择的K个不同对象的组合
可以从12个人的小组中以3种方式选出3个委员会吗?我们都知道存在C(12,3)= 220个可能性(C(N,K)表示众所周知的二项式系数)。对于纯数学家来说,这个结果可能很棒。但是,我们确实希望在列表中生成所有可能性。
解决方案提供了:
import Data.List
combinations :: Int -> [a] -> [[a]]
combinations 0 _ = [ [] ]
combinations n xs = [ y:ys | y:xs' <- tails xs, ys <- combinations (n-1) xs']
Run Code Online (Sandbox Code Playgroud)
对我来说,主要的困惑是y变量。根据尾部的工作方式,应在开始时为其分配整个列表,然后在生成列表后将其添加到ys之前。但是,当函数运行时,它返回的列表列表的长度不得超过传入的n值。有人可以帮助我确切地了解其工作原理吗?