Вызов:
На выбранном вами языке программирования примите целое число в качестве ввода в базе 10 и выведите его в нечетно-десятичной записи , также известной как база -10
Пример алгоритма:
Этот алгоритм взят из Википедии для преобразования базы 10 в любую отрицательную базу в VB.NET :
Function toNegativeBase(Number As Integer , base As Integer) As System.Collections.Generic.List(Of Integer)
Dim digits As New System.Collections.Generic.List(Of Integer)
while Number <> 0
Dim remainder As Integer= Number Mod base
Number = CInt(Number / base)
if remainder < 0 then
remainder += system.math.abs(base)
Number+=1
end if
digits.Insert(0, remainder)
end while
return digits
end function
Очевидно, что вы можете использовать любой алгоритм, если он выполняет задачу
Пример входов / выходов:
Входные данные:
12
Выход:
192
Другой пример:
Входные данные:
2048
Выход:
18168
Правило:
Вы не должны использовать какие-либо встроенные методы, которые решают эту проблему, которые существуют в вашем языке программирования
Это код-гольф , поэтому выигрывает самый короткий код!
code-golf
math
base-conversion
П. Ктинос
источник
источник
[0, 1, 8, 1, 6, 8]
ли приемлемый вывод для ввода2048
?Ответы:
JavaScript (ES6),
514537 байтКонтрольные примеры
Показать фрагмент кода
источник
Japt , 11 байт
Проверьте это онлайн!
объяснение
источник
Пакет, 82 байта
Деление пакета усекается до нуля, поэтому, если остаток отрицательный, мне нужно добавить 1 (а также добавить 10 к остатку), чтобы компенсировать. Затем цифры накапливаются
%2
до тех пор, пока результат не станет равным нулю.источник
Желе , 9 байт
Это обратная перестановка в преобразование негадецимального числа в целое.
Попробуйте онлайн!
Как это устроено
источник
Pyth - 9 байт
В этом есть плачущий смайлик.
Тестирование .
источник
Python 3, 35 байт
Python порт алгоритма Арно .
В качестве альтернативы, для 102 байт универсальной функции используется алгоритм исходного поста:
источник
Python 3.5.1 (v3.5.1:37a07cee5969, Dec 5 2015, 21:12:44)
.k
или вn
другом месте в коде?-n//10
делает-(n//10)
: отрицаетn
, затем делит на пол на10
, округляя до отрицательной бесконечности, а не на 0. Напротив,0-n//10
делает0-(n//10)
, который сначала делит на пол на 10, а затем отрицает. По какой-то причине Python рассматривает унарное отрицание с более высоким приоритетом, чем двоичный минус. Смотрите эту таблицу приоритетов . Я сталкивался с такой же ситуацией, прежде чем в гольф.Желе , 10 байт
Попробуйте онлайн!
Фон
Преобразование неотрицательного списка из базы b в целое число может быть достигнуто путем сворачивания влево функцией x, y y bx + y . Преобразовать и целое число в базу b , мы должны просто обратить эту функцию в обратном направлении, то есть найти выражение для bx + y ↦ x, y .
В Python (и, соответственно, в Jelly) результат оператора по модулю всегда неотрицателен, поэтому (bx + y)% | b | = У .
Кроме того, целочисленное деление всегда округляется, проверяя, что если q = n / d и r = n% d , выполняется равенство n = qd + r . Если s - знак b , то (sx) | b | + y = bx + y , поэтому sx = (bx + y) / | b | и, следовательно, s ((bx + y) / | b |) = x.
Как это устроено
источник
SimpleTemplate , 147 байт
Это язык шаблонов, над которым я работал.
Ни в коем случае не для игры в гольф.
Ему даже не хватает полной базовой математики, но он позволяет писать крошечные фрагменты PHP напрямую.
Это работает вокруг этой проблемы.
Это бросает кучу предупреждений.
Код «скомпилирован» в PHP.
Не вольфрам, с мусорным пробелом:
При необходимости можно добавить пошаговое объяснение, но я считаю, что оно довольно простое.
Отказ от ответственности :
Последний коммит, на момент написания этого ответа, был 2017-01-07 20:36 UTC + 00: 00.
Это работает для коммита 140e56ff38f45fa4fd40fd3ec382094e707b1bad от 2017-01-06 23:27 UTC + 00: 00.
Это версия, используемая для запуска этого ответа.
Код PHP доступен по адресу https://raw.githubusercontent.com/ismael-miguel/SimpleTemplate/140e56ff38f45fa4fd40fd3ec382094e707b1bad/SimpleTemplate.php
Я рекомендую запускать это с последней версией, но она хорошо работает для этого вопроса.
Как запустить?
Создайте файл с кодом и запустите его так:
Значение будет отображаться на экране.
источник
PHP,
7167 байтили 62 байта для порта ответа Арнаулда :
источник
Mathematica, 49 байтов
Определяет функцию,
d
принимающую один целочисленный аргумент и возвращающую строку. Рекурсивный алгоритм - похож на тот же алгоритм в ответе Арно . Он работает и на отрицательных числах. (Возвращает пустую строку intsead, равную «0», если ввод равен 0.) Примечание для игроков в гольф Mathematica: для использования±
требуется один дополнительный набор скобок, и, следовательно, он не будет короче.источник
C 68 байт
Вместо вывода полученного числа программа просто возвращает его. Очевидно, что это ответ Арно , единственное отличие состоит в том, что, поскольку C не является интерпретируемым языком, я чувствовал, что должен сделать его полной программой, а не просто функцией.
источник
f
выходит из области видимости, когда функция возвращается, если я действительно не глуп.Ржавчина, 88 байт
Это просто рекурсивная версия алгоритма, представленная в вопросе.
источник