Количество цифр

Я программирую функцию в Mozart-Oz, которая, например, возвращает зеркало числа

Зеркало(1234) вернет 4321

Так или иначе, у меня есть идея, как это сделать, но я застрял, потому что мне нужна встроенная функция, которая возвращает количество цифр (возвращает целое число) целого числа.

Я попробовал функцию {Длина X}, но понятия не имею, что она возвращает...

Вот мой код (который не работает), чтобы понять контекст моей проблемы.

declare
fun {Mirror Int Acc}
if Int==0 then Acc
else {Mirror (Int div 10) (Int mod 10)*(10^({Length Int}-1))+Acc}end
end

{Browse {Mirror 1234 0}}

person user3078046    schedule 28.03.2014    source источник


Ответы (2)


я бы так и сделал:

declare
fun{Mirror X Y}
   if X==0 then Y
   else {Mirror (X div 10) (X mod 10)+Y*10}
   end
end
{Browse {Mirror 1234 0}}

или, если вам нужен только один аргумент:

declare
fun{Mirror X}
   fun{Aux X Y}
      if X==0 then Y
      else {Aux (X div 10) (X mod 10)+Y*10}
      end
   end
in
   {Aux X 0}
end
{Browse {Mirror 1234}}
person yakoudbz    schedule 31.03.2014

Вы можете найти количество цифр, преобразовав в строку и взяв ее длину:

  NumDigits = {Length {Value.toVirtualString Int 10 10}}

Кстати, оператор ^ имеет другое значение в Оз. Вероятно, вам нужна функция Pow.

person wmeyer    schedule 28.03.2014
comment
OZ очень расстраивает... Я выяснил пару вещей. Если вы указываете Int для Value.toVirtualString, браузер не показывает Если вы даете String для длины, браузер не показывает, я проверил это с реальным простые строки, как в {Length 'AZERTY'}, браузер не отображал, но когда я сделал {Length AZERTY}, это сработало... дело в том, что когда я поместил строку, которую я получил из toVirtualString, в переменную, и дал ее к функции Длина не работает... так что мне делать О боже, я так сильно ударил кулаком в стену... если вы можете провести меня через это, я полный новичок в этом языке - person user3078046; 28.03.2014