decimal-to-hex

Не буду лукавить, я готовлю сайт посвященный программированию на newLISP и провожу некоторые исследования. Сейчас я обращаюсь к сообществу с просьбой, если кто может - пожалуйста продемонстрируйте, на используемых вами ЯП, реализацию перевода произвольного (в разумных пределах) десятичного числа, в шестнадцатеричное. Со своей стороны предлагаю вот такую реализацию на newLISP:

(define (decimal-to-hex x, result)
   (set 'result (/ x 16))
   (append (if (> result 15)
	       (decimal-to-hex result)
	       (format "%X" result))
           (format "%X" (% x 16))))

(println (string "Число: " (set 'foo 2) " >>> " (decimal-to-hex foo)))        => Число: 2 >>> 02
(println (string "Число: " (set 'foo 15) " >>> " (decimal-to-hex foo)))       => Число: 15 >>> 0F
(println (string "Число: " (set 'foo 315) " >>> " (decimal-to-hex foo)))      => Число: 315 >>> 13B
(println (string "Число: " (set 'foo 643) " >>> " (decimal-to-hex foo)))      => Число: 643 >>> 283
(println (string "Число: " (set 'foo 1564732) " >>> " (decimal-to-hex foo)))  => Число: 1564732 >>> 17E03C

Заранее спасибо всем откликнувшимся.

(*)

Подборка реализаций вашего "(format "%X" result)" на 45 языках:
http://rosettacode.org/wiki/Common_number_base_formatting
Возможно и по иным вопросам ваших некоторых исследований вы сможете получить ответы на сайте http://rosettacode.org/wiki
Также см http://www.youtube.com/watch?v=0YylM0CWGa4
И также вам потребуется рассмотреть оба случая - как с использованием рекурсии, так и без использования рекурсии.
Успехов в ваших исследованиях!

Спасибо :-)Вы я вижу тертый

Спасибо :-)
Вы я вижу тертый калач, но можно было так явно не палить контору :-)
Хорошо, скажите а как вы относитесь к LISP'у, и что по вашему в нем сложного, почему он отпугивает людей?
Да еще, вам именно строчка format в глаза бросилась, или вы попытались вникнуть в код?

Я типичный русский колхозник.
Долго запрягаю, быстро езжу и сильно торможу...

(*)

Нет, я не тёртый калач, я программист-нубас, который даже не может заставить себя дочитать http://devmanual.gentoo.org :(

К LISP'у и другим языкам отношусь как к инструментам, сложного в нём ничего не нахожу (поскольку знаком с ним на весьма базовом уровне) и меня лично он не отпугивает. Каждый язык более удобен для решения одних задач и менее удобен для решения других задач, и если бы вы огласили список задач, для которых newLISP особенно удобен, я бы его даже затестил. А пока остаюсь на Питоне (который, вроде бы, тот же Лисп, только без скобочек, макросов и хвостовой рекурсии) там, где его хватает.

def d2h(x):
    if 0 == x: return "0x"
    return "%s%X" % ( d2h(x/16), x%16  )

print [ d2h(x) for x in [2,15,315,643,1564732] ]    =>   ['0x2', '0xF', '0x13B', '0x283', '0x17E03C']

mastepaner написал(а): Нет, я

mastepaner написал(а):
Нет, я не тёртый калач, я программист-нубас, который даже не может заставить себя дочитать http://devmanual.gentoo.org :(

Главное начать... Я вот даже не начинал ;-)

Цитата:
...К LISP'у и другим языкам отношусь как к инструментам, сложного в нём ничего не нахожу (поскольку знаком с ним на весьма базовом уровне) и меня лично он не отпугивает...

Вот в этом я с вами полностью согласен.

Цитата:
...Каждый язык более удобен для решения одних задач и менее удобен для решения других задач, и если бы вы огласили список задач, для которых newLISP особенно удобен, я бы его даже затестил...

Вот это я и пытаюсь выяснить. Я поверхностно (к сожалению) знаком с различными ЯП, но не настолько хорошо, что бы сказать, что вот этот ЯП вот для этого подходит лучше всего. Когда-то давно я пытался программировать под Windows в связке Assembler + Delphi, тогда я делал управление одной железякой через LPT порт. Эта железяка оказалась очень придирчива к временным отрезкам, она хотела для работы режим "реального времени", Windows 2000 этого ей дать не мог. Это была одна из тех капель, которые в дальнейшем перевесили чашу весов в сторону Linux.
Я не связан профессионально с IT, поэтому долгое время блуждал по разным дистрибутивам Linux, пытаясь понять как устроен Linux, отвлекаясь разумеется на Windows, потому что все окружение использовало его. Одновременно я пробовал различные ЯП, потому как компьютер - это инструмент, а я хотел научиться им пользоваться. После долгих блужданий и поисков я открыл для себя newLISP, это оказалось как озарение, как маяк в бурном море глухой ночью. И вот теперь я хочу привлечь к нему внимание максимального количества людей.

Цитата:
...А пока остаюсь на Питоне (который, вроде бы, тот же Лисп, только без скобочек, макросов и хвостовой рекурсии) там, где его хватает.

Меня в питоне крайне напрягают отступы, а после знакомства с newLISP, еще и усложненный синтаксис. Такое ощущение, что программисты на Си пытались сделать Си-образный Лисп только без скобочек ;-)

Цитата:
Строка format бросилась в глаза тем, что её надо руками изменять, остальное можно почти всегда один-в-один автоматически транслировать на многие другие ЯП, разве нет?

Тут я имел ввиду немного другое:

(print (format "%X" 15)) => F
(print (format "%X" 12345)) => 3039

Я типичный русский колхозник.
Долго запрягаю, быстро езжу и сильно торможу...

(*)

Предвкушая появление qnikst я сделал что-то типа

import Numeric

d2h 0 = "0x"
d2h x = (d2h $ x `div` 16) ++ (showHex (x `mod` 16) "")

main = do
   putStrLn $ show $ map d2h [2,15,315,643,1564732]
$ runhaskell x.hs 
["0x2","0xf","0x13b","0x283","0x17e03c"]

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".