整数をリストに変換してOzに戻すにはどうすればよいですか? のような数字を取り、321
それを に逆にする必要があり123
ます。
Oz の Reverse 関数はリストに対してのみ機能するので、321 を [3 2 1] に変換し、それを逆にして、[1 2 3] を 123 に戻します。これは Oz で実行できますか?
これにより、トリックがより簡潔になります。
{Show {StringToInt {Reverse {IntToString 123}}}}
乾杯
免責事項: 私は実際には 5 分前まで Oz を知らず、ウィキペディアで例を読んだだけなので、以下は誤りだらけである可能性があります。ただし、問題へのアプローチ方法については良いアイデアが得られるはずです。(関数を末尾再帰にすることは、読者の課題として残されています)。
更新: 次のバージョンはテスト済みで動作します。
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