【发布时间】:2010-12-01 16:52:23
【问题描述】:
如何将整数转换为列表并返回Oz?我需要取一个像321 这样的数字并将其反转为123。
Oz 中的 Reverse 函数仅适用于列表,因此我想将 321 转换为 [3 2 1],将其反转,然后将 [1 2 3] 转换回 123。这可以在 Oz 中完成吗?
【问题讨论】:
如何将整数转换为列表并返回Oz?我需要取一个像321 这样的数字并将其反转为123。
Oz 中的 Reverse 函数仅适用于列表,因此我想将 321 转换为 [3 2 1],将其反转,然后将 [1 2 3] 转换回 123。这可以在 Oz 中完成吗?
【问题讨论】:
免责声明:直到 5 分钟前我才真正了解 Oz,并且只阅读了 Wikipedia 上的示例,因此以下内容可能充满错误。但是,它应该让您对如何解决问题有一个好主意。 (让函数尾递归留给读者作为练习)。
更新:以下版本已经过测试并且可以使用。
local
% turns 123 into [3,2,1]
fun {Listify N}
if N == 0 then nil
else (N mod 10) | {Listify (N div 10)}
end
end
% turns [1,2,3] into 321
fun {Unlistify L}
case
L of nil then 0
[] H|T then H + 10 * {Unlistify T}
end
end
in
% Turns 123 into 321
{Browse {Unlistify {Reverse {Listify 123}}}}
end
【讨论】:
这应该更简洁:
{Show {StringToInt {Reverse {IntToString 123}}}}
干杯
【讨论】: