gpt4 book ai didi

erlang - Elixir:将列表拆分为奇数和偶数元素,作为元组中的两个项目

转载 作者:行者123 更新时间:2023-12-04 06:44:22 25 4
gpt4 key购买 nike

我对 Elixir 编程很陌生,并且在将元组拆分为两个元素方面非常困难。

给定一个整数列表,返回一个二元素元组。第一个元素是列表中偶数的列表。第二个是奇数列表。

Input : [ 1, 2, 3, 4, 5 ]
Output { [ 2, 4], [ 1, 3, 5 ] }

我已经确定了奇数或偶数,但不确定如何进行。
defmodule OddOrEven do
import Integer

def task(list) do

Enum.reduce(list, [], fn(x, acc) ->
case Integer.is_odd(x) do
:true -> # how do I get this odd value listed as a tuple element
:false -> # how do I get this even value listed as a tuple element
end
#IO.puts(x)
end
)
end

最佳答案

您可以使用 Enum.partition/2 :

iex(1)> require Integer
iex(2)> [1, 2, 3, 4, 5] |> Enum.partition(&Integer.is_even/1)
{[2, 4], [1, 3, 5]}

如果你真的想用 Enum.reduce/2 , 你可以这样做:
iex(3)> {evens, odds} = [1, 2, 3, 4, 5] |> Enum.reduce({[], []}, fn n, {evens, odds} ->
...(3)> if Integer.is_even(n), do: {[n | evens], odds}, else: {evens, [n | odds]}
...(3)> end)
{[4, 2], [5, 3, 1]}
iex(4)> {Enum.reverse(evens), Enum.reverse(odds)}
{[2, 4], [1, 3, 5]}

关于erlang - Elixir:将列表拆分为奇数和偶数元素,作为元组中的两个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39564826/

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