Выведите 12 цифр на циферблате точно так:
12
11 1
10 2
9 3
8 4
7 5
6
Чтобы лучше увидеть сетку, вот с точками:
...........12............
.....11...........1......
.........................
.10...................2..
.........................
.........................
9.......................3
.........................
.........................
..8...................4..
.........................
......7...........5......
............6............
Обратите внимание, что сетка растягивается по ширине в два раза, чтобы она выглядела более квадратной.
Также обратите внимание, что двузначные числа выровнены с их цифрами на месте. Цифра 9 должна быть заподлицо с левой стороной.
Вернуть или распечатать результат в виде многострочной строки (не списка строк). Любые конечные пробелы являются необязательными. Финальный перевод строки также необязателен.
charCodeAt()
05AB1E ,
393331 байтСпасибо Magic Octopus Urn за сохранение 6 байтов!
Код
Некоторые 33-байтовые альтернативы:
Использует кодировку 05AB1E . Попробуйте онлайн!
источник
ÿ
с.V
, очень оригинально! И забавно, как вы привыкли12¤
получать оба12
и2
в стек. Я, вероятно, только что использовал12Y
, но я думаю, что это не имеет значения, так как оба имеют 12 и 2 в стеке. Если бы я попробовал этот вызов в 05AB1E, я бы закончил намного больше в подсчете байтов. Думаю, мне еще нужно многому научиться. ;)Y
. Это было бы проще, хахаха.6xsŸ5L•δ;Ì’•2ôúð.ø‚ζJ012∞S¶×‚ζJ.c
но вы можете здесь что-нибудь использовать.6xŠ»
тоже поддерживает , я бы никогда не подумал об этом.6502 машинный код (C64),
827673 байта1
цифры специальноИдея здесь состоит в том, чтобы хранить цифры всех чисел только в том порядке, в котором они нужны. Требуется дополнительная информация: количество новых строк, которые нужно добавить, и количество пробелов впереди.
Максимальное количество строк новой строки
3
, поэтому для этого нам нужно 2 бита, а максимальное количество пробелов -23
поэтому достаточно 5 бит. Поэтому для каждой цифры, которую нужно напечатать, мы можем сжать эту информацию в одном «управляющем байте».Таким образом, данные для этого решения занимают ровно 30 байтов: 15 однозначных и 15 связанных «контрольных байтов».
Онлайн демо
Использование:
SYS49152
для начала.Прокомментировал разборку :
источник
JSR $FFD2 / DEY / BNE loop / LDA .control,X / RTS
вызовы как для новой строки, так и для пробелов? Я думаю, что это будет +10 байт в длину и сохранить -12 байт в основном коде.JSR $FFD2 / DEY / BPL loop / LDA .control,X / RTS
и точка входа являетсяDEY
. Таким образом, вам не нужно тестировать0
основной код.DEY / BPL / RTS
немедленно выйдет без обработкиJSR $FFD2
. (Обратите внимание, что при такой схеме точка входа в подпрограмму должна бытьDEY
.)Perl 6 ,
7674 байтаПопробуйте онлайн!
Ответ Порт-Арно, пока я не смогу придумать что-нибудь более короткое.
источник
R ,
7568 байтПопробуйте онлайн!
Сжатые цифры позиции. Сделал это, потратив много времени, пытаясь придумать тригонометрический ответ (см. Историю изменений).
Вдохновленный этим другим ответом R купить J. Doe - upvote!
Сохранено 7 байтов благодаря J. Doe.
источник
write
вызов, чтобы использовать разделитель по умолчанию.HTML + JavaScript (Canvas), 13 + 161 = 174 байта
Произвольное позиционирование холста использует 6 байтов.
С сеткой для сравнения:
Пояснение формулы позиционирования
Смотрите мой JavaScript с ответом SVG .
источник
Java
811,141138 байтПопробуйте это онлайн (ПРИМЕЧАНИЕ:
String.repeat(int)
эмулируется какrepeat(String,int)
для того же подсчета байтов, потому что Java 11 еще не на TIO.)Объяснение аналогично приведенному ниже, но оно использует
" ".repeat(x-48)
пробелы вместо формата с"%"+(x-48)+"s"
.Java 8, 141 байт
Попробуйте онлайн.
Объяснение:
Дальнейшее объяснение
92BCN5BB92BNN1BA991CNNNJ995DNNN2I991ENN6H92FN93G
:92
.)источник
R
168159125 байтНаивное решение записать числа в заданных точках в текстовой матрице. Точки хранятся в виде букв UTF-8, расшифрованных с помощью
utf8ToInt
Отбросил 9 байтов с предложением JayCe использовать
write
и избегать определения матрицы.Отбросил еще 34 байта с предложением хранения JayCe.
источник
m
и не используяwrite
: TIO . PS: вы не обязаны включать ссылку TIO в свой ответ, но она хорошо форматирует ответ, см. Значок ссылки в верхней части страницы TIO.!
оператора, чтобы получить до 125 символов . Действительно хорошее решение!Haskell,
8887 байтМетод кодирования пробелов в виде букв (впервые увиденный в ответе @ Arnauld ) в Haskell. Использование
{
и расширение его на\n
один байт короче, чем использование\n
напрямую.Попробуйте онлайн!
источник
Ржавчина , 96 байт
Попробуйте онлайн!
источник
бред ,
240235 байтПопробуйте онлайн!
Код комментария
Редкий пример, когда текст достаточно повторяющийся, чтобы программа для мозгового отрыва была
вдвоеменьше, чем длина вывода в 1,6 раза!2 байта сохранены по предложению Джо Кинга:
>>>>>>-
->[<]>-
3 байта сохраняются путем перемещения третьего 20-значного downcounter от крайнего правого кода ascii
10 30 50
к левому из них. Сохраняет<<>>
при заполнении пробела между8
и,4
но добавляет 1 байт к строке>>>++
.Оригинальная версия
источник
Python 2 , 97 байт
Попробуйте онлайн!
Вычисляет все интервалы и новые строки в цикле
источник
Желе , 32 байта
Полная программа, которая печатает результат.
Попробуйте онлайн!
Как?
(Я еще не подумал / не нашел ничего более короткого, чем
“¿×¿ Œ4ç4Œ!¿Ø‘
кажется мне длинным для этой части - подпрыгивание / базовая декомпрессия / приращение, кажется, ничего не спасает!)источник
C (gcc) ,
145137125 байтовТолько позиции вкладок жестко закодированы: все межстрочные интервалы и значения часов генерируются в цикле.
Еще раз спасибо потолку за предложения.
Попробуйте онлайн!
источник
"\r\7\3"[j]
вместо"NHDA"[j]-65
PHP , 97 байт
Попробуйте онлайн!
Это жестко закодированная сжатая строка. Я не мог найти решение короче, чем это!
источник
file_put_contents($path, '<?=gzinflate("'.gzdeflate($clockString,9).'");');
, но я не уверен, как разместить код с двоичными данными внутри него. Файл размером 70 байт.Пайк , 37 байт
Попробуй это здесь! (необработанные байты)
Попробуй это здесь! (Человек читаемый)
источник
бред ,
315313 байтсэкономили 2 байта благодаря ovs !
Попробуйте онлайн!
все в одном блоке кода:
источник
++++[>++++<-]>
для 16 в начале.><
в кодеPowershell,
948882 байтаПрямой оператор формата Powershell .
{i,w}
означает заполнитель для параметра с индексомi
, ширина заполнителяw
с выравниванием по правому краю.Powershell, 88 байт
Порт Арнаулда Javascript ответ
-6 байт благодаря @AdmBorkBork
Чтобы лучше видеть сетку, используйте
'.'
вместо этого' '
.источник
.PadLeft
88 байтов - попробуйте онлайн!-f
. Почему бы вам не включить ссылки, чтобы попробовать это онлайн! чтобы другие могли видеть, как работает ваш код?This site can’t be reached
только ошибка . Сожалею.C (gcc) ,
125109105 байтовsizeof(wchar_t) == sizeof(int)
- не будет работать на windows :) Спасибо ErikF за идею.Попробуйте онлайн!
Это порт моей общей идеи от 6502 раствора до C. Это немного модифицирована: Вместо того , чтобы иметь флаг для ведущей
1
, символ печатается в виде десятичной дроби, вычитая 48, так что 10 - 12 кодируются как:
для<
.источник
Атташе , 69 байт
Попробуйте онлайн!
Это кодирует каждый цикл пробелов как
NTS[count of spaces]
:;NTS
это встроенная функция от числового до короткого, которая позволяет выражать числа в виде строк. Например,NTS[95] = $R1
иNTS[170297] = $XQO
.STN
является инверсией этого встроенного.Этот ответ заменяет (
ReplaceF
) все вхождения букв (/\l/
) во входных данных на результат функцииsp&`*@STN
, которая сначала декодирует букву, а затем повторяетсяsp
(пробел) столько раз.источник
Swift ,
178165 байтvar b="";for c in"L12nF11L1nnB10T2nnn9X3nnnC8T4nnG7L5nM6"{let i=c.unicodeScalars.first!.value;if c=="n"{b+="\n"}else if i>64{for _ in 0..<(i-65){b+=" "}}else{b+="(c)"}};print(b)
Исходя из того, что опубликовал Downgoat, я сократил это до 165 байт:
print("L12nF11L1nnB10T2nnn9X3nnnC8T4nnG7L5nM6".unicodeScalars.map{let x=Int($0.value);return x==110 ?"\n":(x>64 ?String(repeating:" ",count:x-65):"($0)")}.joined())
Расширены,
$0
преобразованы в именованные переменные:print("L12nF11L1nnB10T2nnn9X3nnnC8T4nnG7L5nM6".unicodeScalars.map { c in let x = Int(c.value) return x == 110 ? "\n" : (x>64 ? String(repeating:" ", count: x-65) : "(c)") }.joined())
Входная строка кодируется следующим образом: Прописные буквы (
A-Z
) представляют блоки пробелов, смещенные на 65. Таким образом,A
означает 0 пробелов,B
означает 1 пробел, первоеL
означает 11 пробелов и т. Д.n
S преобразуются в новые строки. Все остальные символы печатаются как есть.Запустите его онлайн здесь (спасибо, mbomb007)
источник
{"L12NF11L1NNB10T2NNN9X3NNNC8T4NNG7L5NM6".unicodeScalars.map({(c)->String in let x=c.value;return x==78 ? "\n" : x>64 ?String(repeating:" ",count:x-65) : "\(c)"}).joined()}
(swift 3 (-swift-version 3
на repl), потому что swift 4 отбрасывает вычитание, на что это похоже)Чистый Баш , 123
printf
делает тяжелую работу здесь:Попробуйте онлайн!
источник
Красный , 151 байт
Попробуйте онлайн!
источник
JavaScript с SVG, 188 байт
Произвольная высота строки 120% использует 4 байта.
С сеткой для сравнения:
Пояснение формулы позиционирования
Пусть
f(x) = round(sin(x * π/6) * 6)
.Предполагая, что источником является центр часов, координаты сетки самой правой цифры любого заданного номера часов
x
- [f(x) * 2
,f(9 - x)
].источник
Баш, 225 байт
Досадно, что это дольше, чем наивное решение простой печати каждой строки в цикле (132 символа при использовании табуляции).
источник
tr -d \<space>
(где<space>
символ пробела) работать вместо замены sed?tr -d\
было бы эквивалентноsed 's/ //g'
Python 3 ,
1128887 байтРешение с использованием строковой интерполяции.
Попробуйте онлайн!
-25 байт благодаря овсу и герману л.
источник
{11:7}
.C (gcc) ,
135123110 байтовПри этом используется простая кодировка, где любое
c
между'a'
и'z'
представляетc-'a'+1
повторяющиеся пробелы,'`'
представляет новую строку, а все остальные символы остаются без изменений.Попробуйте онлайн!
источник
*s=L"...";f(i){
вместоf(i){char*s="...";
T-SQL, 132 байта
Только на 12 байтов короче, чем тривиальное решение (
PRINT
всей строки как есть).Нашел вариант, который мне нравится, намного длиннее (
235226 байт), но гораздо более похож на SQL:STRING_SPLIT
разбивает его на строки в запятых иPARSENAME
разбивает каждый ряд на точки. 1-й и 3-й используются для того, сколько пробелов печатать, 2-й и 4-й используются для того, что отображать.(разрывы строк в этом просто для удобства чтения)
источник
Perl 6 , 116 байт
Попробуйте онлайн!
(Ta @JoKing за сохранение 26 байтов)
Perl 6 , 142 байта
Попробуйте онлайн!
Я хотел сделать что-то ... другое. Таким образом, этот вычисляет позиции всех цифр через пары символов, удаляет начальное пространство и печатает строки.
Легко модифицируется для различных параметров, например, версия из 45 символов с 17 цифрами .
источник