【问题标题】:How do I convert an integer to a list and vice versa in Oz?如何在 Oz 中将整数转换为列表,反之亦然?
【发布时间】:2010-12-01 16:52:23
【问题描述】:

如何将整数转换为列表并返回Oz?我需要取一个像321 这样的数字并将其反转为123

Oz 中的 Reverse 函数仅适用于列表,因此我想将 321 转换为 [3 2 1],将其反转,然后将 [1 2 3] 转换回 123。这可以在 Oz 中完成吗?

【问题讨论】:

    标签: oz mozart


    【解决方案1】:

    免责声明:直到 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
    

    【讨论】:

    • 非常聪明。我实际上想出了如何使用 mod 和 div 在数学上反转数字的数字,因此不再需要将数字转换为列表来反转它们。谢谢。
    【解决方案2】:

    这应该更简洁:

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

    干杯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-16
      • 1970-01-01
      • 1970-01-01
      • 2021-05-10
      • 2011-11-28
      • 1970-01-01
      • 2012-05-01
      相关资源
      最近更新 更多