0

整数をリストに変換してOzに戻すにはどうすればよいですか? のような数字を取り、321それを に逆にする必要があり123ます。

Oz の Reverse 関数はリストに対してのみ機能するので、321 を [3 2 1] に変換し、それを逆にして、[1 2 3] を 123 に戻します。これは Oz で実行できますか?

4

2 に答える 2

1

これにより、トリックがより簡潔になります。

{Show {StringToInt {Reverse {IntToString 123}}}}

乾杯

于 2010-01-01T17:56:57.323 に答える
1

免責事項: 私は実際には 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
于 2009-09-26T19:38:22.417 に答える