如何在Oz中将整数转换为列表,反之亦然?

时间:2009-09-26 19:17:13

标签: oz mozart

如何将整数转换为列表并返回Oz?我需要使用321之类的数字并将其反转为123

Oz中的反转功能仅适用于列表,因此我想将321转换为[3 2 1],反转它,并将[1 2 3]转换回123.可以在Oz中完成吗?

2 个答案:

答案 0 :(得分:1)

免责声明:直到5分钟前我才真正了解Oz并且只阅读维基百科上的示例,因此以下内容可能会出现错误。但是,它应该为您提供如何解决问题的好主意。 (使函数tail-recursive留给读者练习。)

更新:以下版本已经过测试并可以使用。

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

答案 1 :(得分:1)

这应该更加娴熟地完成这个伎俩:

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

干杯