在 Elixir 中生成数字流的惯用方式是什么?
What is the idiomatic way of generating a stream of number in Elixir?
目前我有以下使用生成器的方法:
(for i <- 999..100, j <- i..100, into: [], do: i * j)
|> Stream.filter(&(palindromic?(&1)))
|> Enum.sort
|> List.last
有没有办法生成产品流?
让我们看看我们需要做什么:
- 999 到 100 之间的每个数字 i
- 对于 j i 和 100
之间的每个数字
- 取 i * j
的乘积
生成这种嵌套枚举的最简单方法是生成一个嵌套的列表列表,然后将其展平,或者立即使用flat_map
函数:
Stream.flat_map(999..100, fn i -> Stream.map(i..100, fn j -> j * i end) end)
目前我有以下使用生成器的方法:
(for i <- 999..100, j <- i..100, into: [], do: i * j)
|> Stream.filter(&(palindromic?(&1)))
|> Enum.sort
|> List.last
有没有办法生成产品流?
让我们看看我们需要做什么:
- 999 到 100 之间的每个数字 i
- 对于 j i 和 100 之间的每个数字
- 取 i * j 的乘积
生成这种嵌套枚举的最简单方法是生成一个嵌套的列表列表,然后将其展平,或者立即使用flat_map
函数:
Stream.flat_map(999..100, fn i -> Stream.map(i..100, fn j -> j * i end) end)