Учитывая двоичное целое число включительно между 0
и 1111111111111111
(то есть 16-разрядное целое число без знака) в качестве входных данных, выведите то же самое целое число в неабинарном виде .
Ввод может быть в любом формате, наиболее удобном для вашего языка; например, если программе легче обрабатывать ввод с 16 цифрами, например 0000000000000101
, а не просто 101
, вы можете написать программу, чтобы принимать ввод только таким способом.
Образец ввода / вывода
> 1
1
> 10
110
> 1010
11110
> 110111001111000
11011001110001000
> 1001001
1011001
Вот пример программы, которую я написал, которая выполняет базовые преобразования, включая отрицательные и нецелые основания. Вы можете использовать его, чтобы проверить свою работу.
code-golf
binary
base-conversion
Питер Олсон
источник
источник
0
s и1
s. Мне кажется ясным, но ответ заставляет меня слегка усомниться ...Ответы:
APL, 21 символ
Для этого я использовал Dyalog APL,
⎕IO
установив в 0, что позволяет нам индексировать массивы, начиная с 0, а не с 1.Пояснение справа налево:
⍞
дает нам ввод пользователя как символьный вектор.⍎¨
применяет функцию execute (⍎
) к каждому (¨
) из вышеупомянутых символов, в результате чего получается вектор целых чисел 1 и 0.2⊥
декодирует вектор из базы 2 в десятичную.-
отменяет полученное десятичное целое число.(16/¯2)⊤
кодирует десятичное целое число в основание¯2
(минус 2). (16/¯2
копия¯2
,16
время, приводя к 16 цифрам в нашем неабинарном номере.)-
отменяет каждый элемент нашего вновь закодированного числа (до этого он состоит из -1 и 0), чтобы мы могли использовать его для индексации нашего вектора символов.'01'[ ... ]
индексирует массив символов ('01'
), используя 0 и 1 отрицательного негабинарного вектора. Это так, мы получаем более хороший вывод.Пример:
источник
Руби,
3231 символовИспользует ярлык негабинального вычисления .
источник
gets
ключевого слова, которое выбирается из STDIN.GolfScript,
342927 символовПростой прямой подход. Интересно, что самая короткая версия - это та, которая сначала конвертируется в число, а затем обратно в базу -2 (по крайней мере, самую короткую версию, которую я мог найти до сих пор). Но самое приятное в этом то, что он содержит почти 15%
%
.Правка 1: для базы 2 мы можем сохранить одну операцию по модулю, а также объединить оба цикла.
Редактировать 2: я нашел еще более короткий код для преобразования двоичной строки в целое число.
источник
Haskell,
8683 байтаВызовите с помощью c, а затем целочисленный массив для цифр, например
PS: я новичок, я правильно представил это?
РЕДАКТИРОВАТЬ: Сохранено несколько байтов благодаря Laikoni, а также исправлены некоторые опечатки
EDIT2: в качестве альтернативы, c :: String -> String:
Для 114 байтов (но вы называете это строкой: c "11")
источник
undigits 2 n
, потому что приложение функции связывается сильнее, чем+m
. Вы также можете сохранить несколько байт, связываясьm
в щитке:c n|m<-0xAAAAAAAA= ...
.Python (2.x), 77 символов
(не такой короткий, как другие решения из-за необходимости вручную переключать базу ...) Должен удовлетворять требованиям.
Предложения по дальнейшим улучшениям приветствуются!
Подайте это с начальными значениями как это:
0b1001001
источник
JavaScript, 68 байт
Было бы 52 байта в ES6, но это позже проблемы:
источник
Желе , 4 байта, вызов языковых постдат
Попробуйте онлайн!
Принимает ввод и производит вывод в виде списка цифр.
объяснение
Это в значительной степени просто прямой перевод спецификации.
источник
k, 17 байт неконкурентоспособны
Некоторые из используемых функций, вероятно, устарели.
Ввод - это список из 1 и 0, а также вывод из списка из 1 и 0.
источник
PHP, 69 байт
Онлайн версия
источник
ES8, 54B
источник
05AB1E , 4 байта
Попробуйте онлайн!
источник
Japt , 4 байта
Ввод в виде двоичной строки, вывод в виде массива неабинарных цифр.
Попытайся
Или, принимая входные данные в виде двоичного массива:
Попытайся
источник