Я разработал новый шрифт, который я называю PrettyFont. Я потратил много времени на его совершенствование, но так как я работающий человек, у меня нет времени, чтобы закончить это. Поэтому он содержит только 4 символа прямо сейчас. Однажды, когда я стану богатым, это станет моей пожизненной целью закончить это, но сейчас ...
Это PrettyFont: (0, 1, 2, 3)
#### ## #### ####
# # # # # #
# # # # ###
# # # # #
#### ### #### ####
Каждый символ имеет ширину 4 пикселя и высоту 5 пикселей. Сейчас! Я хочу, чтобы вы написали мне программу, которая выводит число в PrettyFont, чтобы я мог начать отправлять дизайны на печать.
Правила:
В качестве входных данных используется номер строки в базе 4 (только символы 0-3), например, «01321». Программа должна иметь возможность обрабатывать не менее 10 символов в строке. Бонусные баллы начисляются программе, которая получает целое число 10, а не строку. РЕДАКТИРОВАТЬ пояснение: целочисленный бонус означает, что можно ввести любой номер базы 10, например, 54321, и программа преобразует его в базу 4 и выведет его (в данном случае 31100301).
Выводом будет число, напечатанное с помощью PrettyFont. Пример ввода и вывода:
> "321"
####
#
###
#
####
####
# #
#
#
####
##
#
#
#
###
Огромный бонус к программе, которая может выводить ее в виде одной строки следующим образом:
> "321"
#### #### ##
# # # #
### # #
# # #
#### #### ###
Символ «#» не является обязательным и может быть заменен любым символом.
При вертикальном выводе требуется пустая строка между каждым символом PrettyFont. Если кто-то делает горизонтальный вывод, между каждым символом PrettyFont требуется один пробел '' или символ табуляции.
Это код гольф, самый короткий код выигрывает! (Мне нужно это коротко, потому что мой офисный компьютер имеет ограниченное хранилище.)
banner -c '#' 0123
Ответы:
к (
118 117 72 71 6966 символов)Я пока не приложил много усилий для игры в гольф,но он достигает желаемого горизонтального выхода не слишком много символов:Принимает ввод из стандартного ввода, печатает вывод в стандартный вывод.
редактирование: реализуя форму сжатия в выходном «растровом изображении», я сократил его до 72. Растровое изображение теперь создается путем преобразования 64-разрядных целых чисел в двоичные и отображения 0 и 1 в «#» или «».
Я мог бы сделать это из hex как некоторые другие решения, но я думаю, что это закончится дольше. Оказывается, гекс лучше.Пример вывода на 012301:
// редактировать: -6 символов
источник
Python3 (124)
Извините, вертикаль мне не интересна.
источник
J,
848281807569 знаковБерет ввод с клавиатуры:
Волшебные числа FTW (или за второе место в этом случае) :-)
источник
#:
, похоже, не сработало для такого размера числа.#:1166416635908028473935870
и#:1166416635908028473931775
оба дают один и тот же ответ для меня.С -
164151 символов по горизонталиНа IDEone: http://ideone.com/gljc3
Код (164 байта):
РЕДАКТИРОВАТЬ - 151 байт
Я добавил предложения из комментариев, а затем некоторые. Это не совсем безопасно (массив 0 длины, который я
gets()
в ...), хотя.Обратите внимание,
i=puts("")
это неопределенное поведение, так как я отношусьvoid
какint
! Он последовательно возвращается0
к моей версии MinGW, но возвращается1
к использованию компилятора IDEOne.Принимает десятичное число, выводит основание 4 (167 байт)
источник
gets
вfor
(сохранить 1). Перейтиputs
к внешнемуfor
приращению и сохранить фигурные скобки. Сохранить парантез:(n[i]-48)*5+j
->n[i]*5-240+j
, тот же трюк с+4*(..
.Рубин, 0123 символа + бонус ([0123] против '#')
Пример:
РЕДАКТИРОВАТЬ: Рубин, 87 символов
источник
Рубин
Вертикальный: 116 знаков
Образец прогона:
Горизонтально:
150148 символовОбразец прогона:
источник
Mathematica
174145139118119123 символовТеперь работает с вводом в базу 10 (Целочисленный бонус). Более ранние версии можно найти в редакциях.
Использование ArrayPlot :
С помощью
ArrayPlot
мы можем напрямую преобразовать 1 и 0 в черно-белые квадраты, сохраняя при этом несколько символов. Например, с n = 58021, что составляет 32022211 в базе 4:объяснение
Ввод - это программный параметр
n
.Ноль может быть представлен
{{1,1,1,1},{1,0,0,1},{1,0,0,1},{1,0,0,1},{1,1,1,1}
или шестнадцатеричным аналогомf999f
.Выражение,
f999f62227f924ff171f
содержит информацию для отображения всех чисел {0,1,2,3}. (Примечание: оно начинается с тогоf999f
, что, как мы отмечали, скрыто равно нулю.) Поскольку Mathematica не распознает это как число, я использовал89998622278924881718
(в четырех целочисленных строках) вместо этого, разбил число на целые цифры, а затем использовал 15 в каждом месте 8 появилось. (Это позволило мне использовать цифры вместо строк везде.)источник
Mathematica ,
112107103Мой взгляд на метод Дэвида.
105 с БОНУСОМ:
(для
n = 54321
)источник
APL (
5857)Выход:
источник
Python 2.7
Вертикальный 160
Горизонтальный
234216Оба принимают ввод как строку в кавычках на стандартном вводе
пример:
$. / pretty
"0123"
источник