Для любого 16-разрядного целого числа без знака преобразуйте его десятичное число (т. Е. Число-10) в сетку ASCII 4x4 его битов, где старший бит (MSB) находится в верхнем левом, младший бит (LSB) в внизу справа, прочитайте поперек и затем вниз (как текст на английском языке).
Примеры
Вход: 4242
+---+---+---+---+
| | | | # |
+---+---+---+---+
| | | | |
+---+---+---+---+
| # | | | # |
+---+---+---+---+
| | | # | |
+---+---+---+---+
Вход: 33825
+---+---+---+---+
| # | | | |
+---+---+---+---+
| | # | | |
+---+---+---+---+
| | | # | |
+---+---+---+---+
| | | | # |
+---+---+---+---+
Особые требования
Входные данные должны быть в десятичном формате (основание-10), однако вы можете преобразовать в двоичный файл любым удобным для вас способом (включая использование встроенных языковых модулей, если они доступны).
Формат выходной таблицы должен точно соответствовать . Это означает , что вы должны использовать символы ASCII конкретных (
-
,+
и|
) для линий сетки таблицы , как показано на рисунке, интерьер каждой ячейки 3 символов, а истинные биты представлены в#
то время как ложь представляется пробелом ().
Начальные или конечные пробелы запрещены. Окончательный перевод строки требуется .
Битовый порядок должен соответствовать примерам, как описано.
довольствие
- Ввод должен быть числом 10 в командной строке, стандартном вводе или вводе пользователем, но не должен быть жестко запрограммирован в исходном коде.
Пусть победит самый ясный и короткий код! :-)
источник
Ответы:
J, 26 байт
Анонимный глагол. К счастью, J очень хорош в рисовании коробок. Давайте попробуем это:
Как упоминали некоторые комментаторы, способ рисования блоков J зависит от системы: на некоторых платформах этот код будет работать с настройками по умолчанию, а на других - с помощью символов рисования линий Unicode. (Команды
9!:6
и9!:7
позволяют запрашивать и устанавливать символы для рисования в штучной упаковке значений, соответственно.)источник
JavaScript (ES6), 102
... или 96
return
вместоconsole.log
.Попробуйте запустить приведенный ниже фрагмент в браузере, совместимом с EcmaScript 6.
источник
Befunge -93, 196
218байтЧтобы запустить программу ...
Show
.Input
поле.Run
. (Или измените значениеSlow
на 5 миллисекунд, а затем нажмитеShow
.)Выход за 4242:
Выход за 33825:
объяснение
О боже, во что я ввязался? Ну, вот и все! (Нерелевантный код заменяется на
.
s.)Часть 1: Получить ввод (сохранить в 0,0) и вычислить 32768 (сохранить в 1,0).
Часть 2: Распечатайте «+ --- + --- + --- + ---».
Часть 3. Выведите «+» и символ новой строки и проверьте, равен ли (1,0) 0 (т. Е. Все готово). Если это так, прекратить. В противном случае продолжайте.
Часть 4: Получить двоичные цифры ввода, обновляя (0,0) и (1,0) по мере продвижения. Напечатайте правильные вещи. Я пользуюсь поведением Бефунга.
Часть 5: Распечатайте новую строку и вернитесь к части, которая печатает "+ --- + --- + --- + --- +". Используется обходной трюк.
Та-да!
источник
Юлия,
156143 байтаUngolfed:
Попробуйте онлайн
источник
Python 2,
157153151146 байтСпасибо Моргану Треппу за сохранение 4 байта и Джонатану Фречу за сохранение 5.
использование
источник
'+---'*4
j=''.join
int(input())
сinput()
и сохранить пять байтов.Руби,
118114спасибо за @ w0lf за сохранение некоторых символов.
источник
?
нотации (например,?|
вместо'|'
). Это работает для всего, кроме космоса.?\s
работает для космоса, но это не очень полезно здесь.GNU sed + dc, 116
Оценка включает +1 для
-r
флагов, чтобыsed
:Тестовый вывод:
В качестве альтернативы:
Чистый сед, 146
Вы можете подумать, что обманывать использование
sed
расширения GNU для оценкиdc
команды. В этом случае мы можем сделать это немного по-другому, в соответствии с этим мета-ответом . Конечно, в вопросе четко говорится, что входные данные должны быть в базе 10, но здесь я пытаюсь утверждать, что мы можем переопределить это дляsed
ответов и использовать вместо них унарный (база 1).Тестовый вывод
Использование
printf
для генерации необходимой унарной строки:источник
С ++ 11,
193191190176172 байтаМое первое решение на Codegolf когда-либо, так что не вините меня.
Ungolfed
Предыдущая версия
источник
using namespace std
в производственном коде. И это тоже не полезно здесь.0x
.using namespace std
экономит несколько байтов, потому что я не должен префиксcout
иcin
сstd::
. Даже используя просто неusing std::cout;
поможет.C++
не поддерживает auto int.Pyth, 37 байт
Попробуйте онлайн: демонстрация или тестовый набор
Объяснение:
источник
CJam,
4341 байтОпределенно гольф, но это начало, я думаю. Создает верхнюю строку, затем для каждых 4 битов создает четную строку и копирует предыдущую нечетную строку.
Попробуйте онлайн .
источник
Питон 2,
122121120 байт-1 байт благодаря изящному
4**8+
трюку @ xnor . Основная печать выполняется зацикливанием 9 раз, выбирая соответствующую строку для нечетного / четного.источник
bin(4**8+input())[3:]
экономит байтformat
Python 2, 94
Идея состоит в том, чтобы взять образец
за исключением случаев, когда
%s
вместо заготовок выполняется замена кортежей. Кортеж выглядит такОн создается путем взятия цифр из входных данных в двоичном формате и добавления соответствующего символа в начало кортежа. Выражение с явным кортежем дало равную длину.
Спасибо Sp3000 за 2 байта.
источник
PowerShell,
203188182 байтаРедактировать - сохранил 15 байт, изменив порядок
|
прорисовки, поэтому мы можем.TrimEnd("|")
вывести на выход дамп и вместо этого преобразовать цикл for в блок подкода, который создает массивEdit2 - сохранил еще 6 байтов, избавив от необходимости сохранять в
$o
переменную и просто выводить с-join''
напрямую.Ooooooooof.
Рисовать в PowerShell сложно . Работать с двоичными цифрами в PowerShell сложно .
Использует встроенные модули для
[convert]
входного целого числа в строковом представлении в двоичном формате, а затем снова возвращает значение в,[int64]
чтобы мы могли повторно вызвать его.ToString()
, чтобы добавить / дополнить соответствующее число нулей. (Обратите внимание, что создание массива строк и присоединение к ним@(,"0"*16)-join''
на 1 символ короче, чем буквенная строка"0000000000000000"
)Затем возьмите простой цикл for,
1..16|%{...}
проверяющий каждую цифру, чтобы создать наш выходной массив, а затем, наконец-join''
, снова вместе.Предыдущая, 188
Предыдущий, 203
источник
Javascript (ES6),
216207 байтОпределяет анонимную функцию.
Спасибо ETHproductions за советы!
источник
.join` | `
2. Вы также можете использовать строки шаблона для интерполяции значений:i=>`,${"0".repeat....join`,`},`.replace...
3 Вы можете найти больше советов ES6 в этой теме .i=>`,${("0".repeat(16)+i.toString(2)).slice(-16).split``.map((v,l,a)=>l%4?"":"| "+a.slice(l,l+4).map(v=>' #'[v]).join` | `+" |").filter(v=>v).join`,`},`.replace(/,/g,`<line break>+---+---+---+---+<line break>`).slice(1)
("0".repeat(16)+i.toString(2)).slice(-16)
->(65536|i).toString(2).slice(1)
CJam, 62 байта
Попробуйте онлайн .
источник
Pyth, 50 байтов
Пояснения придется подождать, пока в другой раз я выложу это на свой телефон!
источник
Руби, 102
Алгоритм
Распечатать горизонтальный разделитель
Цикл 20 раз (19..0)
Если номер цикла не делится на 5, преобразовать его в число в диапазоне 16..0, умножив на 4/5. Выведите пробел (ascii 32) или
#
(ascii 32 + 3 = 35), перед которым стоит|
которым стоит пробел.Если номер цикла делится на 5, выведите завершающий |, символ новой строки и горизонтальный разделитель, идентичный первому.
источник
Perl, 103 байта
Много строки повторения , чтобы сделать сетку
x
с, преобразовать входные данные в двоичные , а затемs///
вx
сек до#
или$"
() в зависимости от флага в указанной позиции (
$x
).источник
PHP, 159 байт
bingrid16.php
:Использование:
Ничего особенного, только грубый форсированный рендеринг.
Я попробовал другой угол, используя массивы вместо петель, но он был длиннее - 224 байта:
источник
Perl 5 ,
8584 байта8483 байта кода +-p
флаг-1 байт после того, как Дом напомнил мне использовать новую строку
Попробуйте онлайн!
источник
$/
!c99 263 байта
golfed:
ungolfed:
Мне просто нравилось представлять немного изменчивый вариант, и я чувствовал, что это первый раз, когда он уместен (даже если он стоит мне несколько байтов, но C не может выполнить этот вызов в байтах, даже если есть шанс, поэтому мне все равно) использовать argc / ARGV
источник
Руби, 95
Кивок Mhmd для краткого преобразования строк, но я хотел попробовать использовать строковые методы вместо числовых.
источник
Руби, 93
Немного более короткая версия, использующая только числовые операции.
источник
C # 227 байт
Golfed:
Абзац:
В первый раз я пытаюсь что-то вроде этого, советы будут приветствоваться!
источник
wc
командуПитон 3,
145144 байтаВ линию:
С символами новой строки:
Изменить: Танки @manatwork для сохранения 1 байта
источник
r=0,1,2,3
1 символ короче , чем генерации егоr=range(4)
.Котлин , 192 байта
украшенный
Тест
источник
05AB1E , 45 байт
Попробуйте онлайн!
источник