Вступление:
Я помню, когда я был ребенком, я брал калькулятор и продолжал нажимать +
кнопку, и смотрел, как высоко я могу считать. Теперь я люблю программировать, и я разрабатываю для iOS.
Подсчет является фундаментальным навыком как для людей, так и для компьютеров. Без этого остальная часть математики не может быть сделана. Это делается просто, начиная с 1
повторного добавления 1
к нему.
Соревнование:
Это всего лишь простая задача. То, что я хотел бы, чтобы ваша программа делала, печатает из того, 1
во что Integer
она входит . Однако, я добавлю поворот, так как десятичный подсчет довольно скучен:
Счет не может быть в базе 10, он должен показывать себя в двоичном виде.
Итак, для подсчета до 5, используя 32-битные целые, это будет выглядеть так:
0000 0000 0000 0000 0000 0000 0000 0001 ..... 1
0000 0000 0000 0000 0000 0000 0000 0010 ..... 2
0000 0000 0000 0000 0000 0000 0000 0011 ..... 3
0000 0000 0000 0000 0000 0000 0000 0100 ..... 4
0000 0000 0000 0000 0000 0000 0000 0101 ..... 5
Это компьютер. Они знают двоичный код лучше всего. Ваш ввод может быть 32-разрядным или 64-разрядным целым числом. Это действительно зависит от вас. Однако если вы используете 32-разрядные целые числа, ваши выходные данные должны быть 32-разрядными целыми числами в двоичном формате , а если вы используете 64-разрядные целые числа, выходные данные должны быть 64-разрядными целыми числами в двоичном виде .
Пример ввода:
32-разрядное целое число, 5
Пример вывода:
0000 0000 0000 0000 0000 0000 0000 0001
0000 0000 0000 0000 0000 0000 0000 0010
0000 0000 0000 0000 0000 0000 0000 0011
0000 0000 0000 0000 0000 0000 0000 0100
0000 0000 0000 0000 0000 0000 0000 0101
Подсчет очков:
Ваша оценка равна количеству байтов вашего кода. Поскольку это Code Golf, выигрывает самая низкая оценка.
Бонусные очки:
Если в выходных данных вы показываете число, в котором оно находится как число 10 (например, 0000 0000 0000 0000 0000 0000 0000 0001
в двоичном коде равно 10 1
), умножьте свой результат на 0.8
.
Если вы сгруппировали 4 цифры вывода, как я, то умножьте свой результат на 0.8
(снова). Это не обязательно.
Не округляйте и не округляйте. Ваш счет - число с плавающей запятой.
int
)?Ответы:
APL, 10 символов
Еще один в APL. Предполагается
⎕IO←1
(по умолчанию). Нет бонусных баллов. Читает число с устройства ввода. Если ваш APL использует 64-битные целые числа вместо 32-битных, замените 64 на 32 при необходимости.Обратите внимание, что APL прозрачно преобразуется в числа с плавающей запятой при превышении диапазона целого числа. Трудно точно сказать, с чем работает APL целого размера.
объяснение
источник
JavaScript ( ES6 ) 56,8 (71 * 0,8)
32-битная версия, так как JavaScript не может обрабатывать 64-битную точность (не более 53 бит с использованием двойных чисел с плавающей точкой)
Без группировки
С группировкой - оценка 60,16 (94 * .64)
Тест в любом браузере (ES5)
источник
Pyth, 18 * 0,8 * 0,8 = 11,52 байта
Пример вывода:
источник
Pyth, 19 * 0,8 * 0,8 = 12,16 байт
Пример вывода для ввода 5:
Демонстрация.
источник
Python 2, 48 * 0,8 = 38,4
Преобразует число в двоичное, использует форматирование строки, чтобы преобразовать его в двоичное с 32 цифрами, а затем также печатает десятичное число для бонуса. Использует
exec
цикл для увеличения от1
входного значения.источник
OverflowError: repeated string is too long
. Не уверен, что это предел только для моей машины.CJam, 13,44 (21 × 0,64)
Попробуйте онлайн.
источник
APL, 23,68 (37 × .8 × .8)
источник
КДБ (Q), 50 * 0,8 * 0,8 = 32
Мне немного грустно от моего представления :( Должен быть лучший способ сделать это!
объяснение
Тестовое задание
источник
k){-1{" "/:,/'$:(0N 4#0b\:x),x}@'1+!x}
Common Lisp, 96.0
Гол:
(* 150 .8 .8)
пример
Вызов функции с 10:
объяснение
(format()"~39,'0b ~:*~d" #b101010101010)
дает:Промежуточная строка (массив) модифицируется, чтобы поместить символ пробела в следующие нулевые индексы: 4 9 14 19 24 29 34. Затем она печатается.
Обратите внимание, что очевидно простой
(format t"~39,'0,' ,4:b ~:*~d" #b101010101010)
формат не делает то, что мы хотим. Это печатает:(отступы не сгруппированы по 4)
источник
Рубин, 28 (35 * 0,8)
источник
С, 97 * 0,8 * 0,8 = 62,08
Пример вывода для ввода «5»:
Я мог бы добавить еще один символ пробела, чтобы отделить десятичные числа от двоичных чисел, но технически проблема не требует этого, я думаю?РЕДАКТИРОВАТЬ: Спасибо, CL!источник
x%-4-1
на,x%-4-2
чтобы добавить пробел между двоичным и десятичным без дополнительных затрат в байтах. (Это также избавит от лишнего пробела в начале каждой строки.)Октава, 23 символа
Пример вывода для ввода 5:
источник
MatLab, 19 байт
Не так уж и много, MatLab имеет встроенный десятичный преобразователь в двоичный и автоматически печатает результат.
источник
Юлия, 42 байта
Это немного короче без бонусов.
Это создает безымянную функцию, которая принимает целое число и печатает двоичное представление каждого числа от 1 до n , каждое слева дополнено нулями до 64 символов.
С бонусами 78 байтов * 0,8 * 0,8 = 49,92
Это создает безымянную функцию, которая принимает целое число и печатает двоичное представление, как и раньше, на этот раз разделенное на группы по 4 с номером в базе 10 в конце.
источник
Common Lisp, оценка: 64,0
100 байт * 0,8 * 0,8
Я очень доволен своим счетом, но я все еще чувствую, что должна быть возможность немного упростить мой код.
Выход
Код
объяснение
Как описано в ответе coredump , строка формата
выводит числа base2, но, похоже, также нет возможности правильно настроить группировку. Поэтому я ввожу строку в список и перебираю ее, выбирая группы из 4 с этой строкой формата:
"~ {~ a ~ a ~ a ~ a ~} ~ a ~%"
После каждой группы из 4 появляется пробел, а после последней группы печатается число base10.
Без группировки (60x0,8 => 48,0)
При этом используется ~: * для повторной обработки (единственного) аргумента формата.
источник
PHP 51,84 (81 × 0,8).
32-разрядная версия, так как PHP ограничен только 32-разрядной версией Windows независимо от того, является ли ОС 64-разрядной.
Принимает один аргумент командной строки.
источник
CoffeeScript, 60,8 (76 × 0,8)
32-битная версия по причинам, указанным выше , так как CoffeeScript компилируется в JavaScript.
С группировкой становится немного длиннее: 64,64 (101 × .8 × .8)
источник
Haskell, 56 байт
Использование:
Для 64 - битной, замените
32
с64
. Любой другой номер тоже работает.источник
J, 20 байт
Пример ввода и вывода:
источник
Свифт: 98,56 (154 * 0,8 * 0,8)
источник
Рубин, 64 бит
70 * 0,8 * 0,8 = 44,8 байта (разделение, десятичное число)
51 * 0,8 = 40,8 байта (десятичное число)
67 * 0,8 = 53,6 байта (разделено)
44 байта (без бонусов)
источник
05AB1E ,
1311 байт-2 байта благодаря @ Mr.Xcoder .
Выходы без пробела и порядкового номера.
Попробуйте онлайн.
Объяснение:
источник
Lb32jsäð0:»
работает для 11 байтовj
для добавления, чтобы он стал правильной длины.