Напишите самую короткую программу, которая принимает одно целое число в качестве входных данных и распечатывает счеты Suanpan
Testcases
Входные данные:
314159
Выход:
|\======================================/|
|| (__) (__) (__) (__) (__) (__) ||
|| (__) (__) (__) (__) || || ||
|| || || || || || || ||
|| || || || || (__) (__) ||
|<======================================>|
|| (__) (__) (__) (__) || (__) ||
|| (__) || (__) || || (__) ||
|| (__) || (__) || || (__) ||
|| || || (__) || || (__) ||
|| || || || || || || ||
|| || || || || (__) || ||
|| || (__) || (__) (__) || ||
|| || (__) || (__) (__) || ||
|| (__) (__) || (__) (__) || ||
|| (__) (__) (__) (__) (__) (__) ||
|/======================================\|
Входные данные:
6302715408
Выход:
|\==============================================================/|
|| (__) (__) (__) (__) (__) (__) (__) (__) (__) (__) ||
|| || (__) (__) (__) || (__) || (__) (__) || ||
|| || || || || || || || || || || ||
|| (__) || || || (__) || (__) || || (__) ||
|<==============================================================>|
|| (__) (__) || (__) (__) (__) || (__) || (__) ||
|| || (__) || (__) (__) || || (__) || (__) ||
|| || (__) || || || || || (__) || (__) ||
|| || || || || || || || (__) || || ||
|| || || || || || || || || || || ||
|| || || (__) || || || (__) || (__) || ||
|| (__) || (__) || || (__) (__) || (__) || ||
|| (__) || (__) (__) (__) (__) (__) || (__) || ||
|| (__) (__) (__) (__) (__) (__) (__) || (__) (__) ||
|| (__) (__) (__) (__) (__) (__) (__) (__) (__) (__) ||
|/==============================================================\|
Ответы:
J,
126124121119116115113105116115112 символовПринимает ввод с клавиатуры. Пример:
Основным трюком здесь является злоупотребление боксом J путем переопределения используемых им символов. Он использует глобальный параметр -
9!:7
. Может быть, есть место для дальнейшего игры в гольф, но, честно говоря, я был просто рад получить что-то работающее, что должно компенсировать мою последнюю попытку в этом вопросе .Вписывается в твит с достаточным количеством персонажей, чтобы сказать «Газ сделал это» :-).
Изменить: 3 символа сбережений из-за заимствования
2 6$' || (__)'
у Джесси Милликана ответа .Дальнейшее редактирование: Потерянные 11 символов, добавляющие лишние пробелы с обеих сторон, которых я не заметил, отсутствовали.
Объяснение:
Код состоит из трех основных разделов:
1) Настройка
Это само по себе в двух частях.
9!:7'\=/<=>/=\|='
переопределяет символы, которые J будет использовать для отображения полей. Бокс J обычно выглядит так:но после переопределения это выглядит так:
(s=:[,.~,.)
определяет глагол, который я собираюсь использовать пару раз позже. Это оказывается лучшим местом, чтобы объявить это. Он принимает символ слева и массив символов справа и помещает массив между символом. Например:Финал
[
просто служит для отделения установки от следующей части.2) Ввод и представление
".,.1!:1[1
берет ввод с клавиатуры и разделяет его на отдельные цифры:((i.5)</5|])
создает нули и единичное представление нижней части счёта:|:@(1,.<&5)
создает нулевые и единичные представления верхней части счёта:Эти две части упакованы вместе, используя
;
:Затем ящики помещают друг на друга, чтобы сформировать основу счёта, давая:
3) Выход
&.>
означает, что то, что следует, будет работать на обеих коробках по очереди.(,-.)
это ловушка, которая отменяет ввод и затем добавляет его в конец оригинала:Это действительно часть представления, но для целей игры в гольф лучше иметь это в этом разделе. Применяется к предыдущему входу:
[:,.(_6[\' || (__)'){~
Нули и единицы теперь используются для выбора строки для представления бусинки или ее отсутствия:Но теперь, как сказал мне Говард, по обеим сторонам бусинок осталось мало места. Поэтому мы используем предопределенный
s
глагол, чтобы поместить содержимое каждого блока между двумя столбцами пробелов:Сделав это, все, что осталось, - это преобразовать это в строку, используя ее,
":
чтобы мы могли поместить ее между двумя столбцами|
:источник
Ruby 1.9, 154 символа
Предполагается, что вход не завершается переводом строки.
Интересный факт: из-за того, как я превращаю входные цифры в числа (
$&.hex
на один байт короче$&.to_i
), эти счеты фактически работают с шестнадцатеричными цифрами доe
:Для
0xf
третий шарик волшебным образом появляется в верхней половине.При разрешении дополнительных флагов во время вызова скрипта их можно сократить до 152 байтов (149 байтов кода + 3 байта дополнительных флагов вызова):
Беги с
ruby -n suanpan.rb
.источник
Perl (151 символ)
(
168163158157156154)объяснение
Правки
\n
с на новые символы новой строки. Не могу поверить, я не думал об этом раньше!источник
Windows PowerShell, 191
История:
$l
.%
что делает числа из цифр.$r
и$b
. И$a
тоже устарел. Как есть$l
.$OFS
если мне это нужно только один раз.$f
.-join
потому что мы действительно можем использовать дополнительное пространство для хорошего эффекта.источник
Хаскель, 243 персонажа
Не особо умно. Я уверен, что это может быть сокращено как-то ...
источник
interact
z x|x=" (__) "|0<1=" || "
.Дельфы, 348
Эта версия создает строку для записи только один раз; Цифры обрабатываются отдельной функцией, которая работает через
digit modulo m >= value
конструкцию (отрицается, если значение <0).Дельфи, 565Первая попытка :
Это использует 3 массива; одна для 7 строк, которые можно различить, одна для выходных строк и одна для отображения 7 строк в 11 столбцах (10 цифр и 1 начальный столбец).источник
GolfScript, 139 символов
Пока не много в гольфе, но он вписывается в твит (только с ASCII). Попробуй это здесь .
источник
J 225
Пройдено два заданных теста, должно работать не менее нескольких сотен цифр.
Во-первых, да, да, могилы. Второе: это просто смущающе долго. Ну что ж. Я еще не решил, следует ли играть в гольф дальше или свернуться калачиком в позе плода. (Или оба!)
Вот небольшое объяснение вместо более короткой программы:
источник
С
277274 символовВы знаете, мне кажется, что у нас просто не хватает решений, которые бы действительно использовали преимущества препроцессора Си. Отчасти это потому, что они на
#define
самом деле занимают немало места. Но тем не менее, есть такой большой потенциал. Я чувствую необходимость устранить этот недостаток.Так-то лучше.
источник
Mathematica 281
пример
источник
С 548
Первая версия, пока немного игры в гольф.
источник
Скала (489 символов)
Довольно дурацкая попытка на самом деле.
источник
Sclipting , 77 символов
Щедрость относится к твитам , а Твиттер подсчитывает символы (не байты). :)
Я действительно написал это несколько лет назад (когда был опубликован этот вызов), но никогда не публиковал его, потому что изобрел Sclipting после того, как этот вызов был впервые опубликован. Если вы чувствуете, что это делает его неприемлемым, я понимаю.
объяснение
источник
Python,
309301288 символовКомпактная версия:
Чистая версия:
Обратите внимание, что для компактификации переменные были переименованы в одну букву, а списочные значения были изменены на генераторы, которые не требуют дополнительных скобок.
источник