Существует множество вопросов, связанных с рисованием фигур с использованием звездочек - поэтому я подумал, что с таким количеством звездочек мы должны нарисовать один с использованием таблицы ASCII.
Вызов
Ваша задача - написать программу или функцию, которая не требует ввода и выводит точный текст:
!
"#
$%
&'
()
*+
,-
./
01
23456789:;<=>?@ABCDEF
GHIJKLMNOPQRSTUVWXYZ[
\]^_
`a bc
de fg
hi jk
lm no
pq rs
tu vw
xy z{
|} ~
Для справки, этот сайт перечисляет полную таблицу ASCII.
правила
- Вывод должен быть точным текстом, как показано выше. Пробелы в начале / конце разрешены.
- Применяются стандартные лазейки для игры в гольф - не читайте этот ASCIIrisk из интернета и т. Д.
- Это код-гольф , поэтому выигрывает самое короткое решение (в байтах).
Ответы:
05AB1E ,
4038373635 байтПопробуйте онлайн!
объяснение
источник
žQ2ôÐ9£s30£R21£RøsrR18£R2ôvyN·ð×ý})˜.C»
У меня есть 39, но я думаю, что вы можете побриться с помощью ZIP.Python 3 , 110 байт
Создает шаблон
с
%c
дляx
, затем использует строковую интерполяциюrange(32,128)
для вставки значений ASCII в шаблон.Попробуйте онлайн!
Python 2 длиннее на один байт, распаковка длиннее, но короче
print
.источник
V ,
54, 50 байтовПопробуйте онлайн!
В отличие от обычной, эта программа не содержит непечатаемых символов.
Объяснение:
Теперь буфер выглядит так:
Теперь мы строим середину:
Вот где это становится немного странным.
Вот важная заметка. Команда на
>
самом деле является оператором , что означает, что она ничего не делает без аргумента, текста, с которым нужно работать. Например,Но поскольку эта команда находится в цикле, мы можем сохранить символ, не задавая оператора. В конце цикла, если какой-либо оператор находится в состоянии ожидания, он заполнит
_
неявно (текущая строка) как аргумент.Теперь я признаю, что этот цикл немного странный, и может быть трудно отследить, как должен выглядеть весь текст в любой данный момент. Таким образом, вы можете использовать эту более простую программу, чтобы увидеть, как она будет выглядеть после N циклов.
Если вы установите значение 9, вы увидите, что у нас есть немного лишнего текста, от которого нужно избавиться. (Просто текущая строка).
Таким образом, мы удаляем текущую строку с
dd
. Но ждать! Вы знаете, как я сказал, что операторы должны принимать аргумент, который иногда неявно заполняется? Аргументы также неявно заполняются в конце программы. Таким образом, вместоdd
илиd_
(которые эквивалентны), мы можем простоd
позволить и позволить V заполнить_
для нас.источник
ÿ
:)Python 3
170165155147 байтЯ так много играл в гольф, я забыл, как это работает ...
Попробуйте онлайн!
источник
JavaScript (ES6),
156…115114 байтК сожалению, печально известный
String.fromCharCode()
стоит 19 байтов.Отформатировано и прокомментировано
источник
String.fromCharCode(...[...Array(n)].map(_=>k++))
чтобы сохранить 4 байта.String.fromCharCode()
массива, но я выбрал другой подход. Спасибо, в любом случае!QBIC ,
153151 байтНа самом деле это просто серия циклов FOR и приведение int к персонажу (
chr$()
).Образец вывода:
источник
Perl , 113 байт
112 байтов кода +
-l
флаг.Попробуйте онлайн!
источник
PHP,
1101051039391 байтпечатает ведущий символ новой строки. Запустите
-nr
или протестируйте его онлайн .Основной принцип принят от Арно, но это повторяется.
И он использует хорошие преимущества от неявных типов PHP:
NULL для int для строкового индекса, float для int для
%
, логическое для int для&
и для+=
.объяснение с псевдокодом
источник
Pyth , 53 байта
Программа, которая печатает результат.
Попробуйте онлайн!
Как это работает
srdC127
создает список печатаемых символов ASCII и объединяет его в строку.c....,18 60
разбивает эту строку на индексы18
и60
, давая список из трех строк, соответствующих различным частям вывода: верхняя, средняя и нижняя..e
начинает нумерованную карту над строками со строками asb
и их индексами какk
.[...)
создает список, содержащий желаемое действие для каждой части диаграммы. Правильное действие выбирается путем индексации в списке с текущим индексом, используя@...k
.верхний
cb2
разбивает строку на пары символов и+L*9;
добавляет9
пробелы к каждой паре.средний
c2b
разбивает строку на две строки одинаковой длины.Дно
cL2cb4
разбивает строку на группы по четыре символа, а каждая группа на пары..e
начинает нумерованную карту с парами строк какZ
и их индексами какY
.j*yYdZ
объединяет пары в2*Y
пространствах и+*-8Yd
добавляет8-Y
пробелы.js
объединяет все результаты и присоединяет результирующий список к новым строкам. Это тогда неявно напечатано.источник
Haskell , 144 байта
Попробуйте онлайн!
Объяснение:
b!n=[1..n]>>b
определяет функцию,!
которая повторяет список или строковоеb
n
время.unlines([" "!9++p]!9++["*"!21]!2++[" "!(8-n)++p++" "!(2*n)++p|n<-[0..8]])
использует эту функцию, чтобы нарисовать звездочку (О, ирония!):#
определяется как функция, которая последовательно заменяет*
в строке символы из данного списка. Он[' '..]
вызывается с указанными звездочками и представляет собой бесконечный список всех символов, начинающихся с пробела' '
.источник
" "!(2*n)
может быть"(TWO SPACES)"!n
.Древесный уголь , 39 байт (неконкурентный)
Попробуйте онлайн! AST предоставил объяснение,
χ
являясь преинициализированной переменной для10
.источник
J, 63
(не конкурирует)выражение оценивается справа налево таким образом:
i: 10
рассчитывает от -10 до +10|
возьмите пресс, чтобы получить +10 к 0 обратно к +10=
самостоятельно классифицировать, чтобы получить V форму 1 в блоке 0|.
обратный порядок строк, чтобы получить / \ shape( +. 1&|."1 )
выражение хука сдвигает каждую строку вправо на одну и ИЛИ с оригиналом( 9 21&$@{. , 1: , 1: , }. )
вложенные вилки, чтобы положить горизонтально и растянуть верх,
разложить блок в линейную последовательность для кумуляции( * +/\ )
накопить и умножить с собой20 21 $
вернуть форму в блок 20 рядов из 21 элемента31 +
добавить 31, потому что первая 1 должна быть пробелом код 3232 >.
пол на 32a. {~
выбрать символы из встроенного ASCIIисточник
smoutput
команды или эквивалентРубин, 91 байт
Ungolfed
источник
Я пропустил ответ в C #, так что ...
C # (.NET Core) ,
175174 байтаПопробуйте онлайн!
источник
int
s в цикл for:for(int i=0,j,d=32,s=1;i<54;i++)for(j=0
Tcl , 209 байт
Попробуйте онлайн!
Tcl , 212 байт
Попробуйте онлайн!
tcl, 213
демонстрацияtcl, 214
демонстрация
tcl, 227
демонстрация
ткл, 236
демонстрация
ткл, 237
демонстрация
Альтернативный подход с таким же размером:
демонстрация
Tcl, 288
демонстрацияtcl, 297 байт (наивная попытка)
демонстрация
источник
Поэтический , 899 байтов
Попробуйте онлайн!
Poetic - это esolang, который я сделал в 2018 году для классного проекта. Это в основном бред с длинами слов вместо символов.
Это стихотворение ... удручает. 😟
источник
Python 2,7,
194188 байтисточник
map(chr
вmap(c
качествеc
уже определена какchr
Jq 1,5 , 180 байт
расширенный
Попробуйте онлайн!
источник
Косая черта ( /// ), 324 байта
Первое (по умолчанию) действие в Slashes - это «печать», поэтому строка печатается.
/
И\
должны быть экранированы от производства\
s.источник
Java 8,
176173 байтаПорт ответа @Charlie 's C # .NET , поэтому обязательно проголосуйте за него.
-3 байта благодаря @ceilingcat .
Попробуйте онлайн.
источник