gpt4 book ai didi

haskell - 使用 Haskell 将数字拆分为数字

转载 作者:行者123 更新时间:2023-12-03 08:42:54 24 4
gpt4 key购买 nike

给定一个任意数字,如何单独处理该数字的每个数字?

编辑
我添加了一个 Foo 可能做的事情的基本示例。

例如,在 C# 中,我可能会执行以下操作:

static void Main(string[] args)
{
int number = 1234567890;
string numberAsString = number.ToString();

foreach(char x in numberAsString)
{
string y = x.ToString();
int z = int.Parse(y);
Foo(z);
}
}

void Foo(int n)
{
Console.WriteLine(n*n);
}

最佳答案

你听说过div and mod ?

如果您想首先处理最高有效数字,您可能需要反转数字列表。将数字转换为字符串是一种受损的做事方式。

135 `div` 10 = 13
135 `mod` 10 = 5

泛化为一个函数:
digs :: Integral x => x -> [x]
digs 0 = []
digs x = digs (x `div` 10) ++ [x `mod` 10]

或者反过来:
digs :: Integral x => x -> [x]
digs 0 = []
digs x = x `mod` 10 : digs (x `div` 10)

此款待 0因为没有数字。如果您愿意,一个简单的包装函数可以处理这种特殊情况。

请注意,此解决方案不适用于负数(输入 x 必须是整数,即整数)。

关于haskell - 使用 Haskell 将数字拆分为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3963269/

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