Специальный день независимости (США) - тематическая задача для вас сегодня. Вы должны написать программу, которая печатает это ascii-art представление американского флага.
0
|---------------------------------------------------------
| * * * * * * #################################|
| * * * * * |
| * * * * * * |
| * * * * * #################################|
| * * * * * * |
| * * * * * |
| * * * * * * #################################|
| * * * * * |
| * * * * * * |
|########################################################|
| |
| |
|########################################################|
| |
| |
|########################################################|
| |
| |
|########################################################|
|---------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Допускаются завершающие пробелы в каждой строке, а также один завершающий символ новой строки.
Обратите внимание, что это не совсем то, как должен выглядеть флаг, но это самое близкое, что я мог получить с ASCII.
Как обычно, это код-гольф, поэтому применяются стандартные лазейки и выигрывает самый короткий ответ в байтах!
code-golf
ascii-art
kolmogorov-complexity
DJMcMayhem
источник
источник
Ответы:
CJam,
18412010910176746967646258 байтПопробуйте онлайн в интерпретаторе CJam .
идея
Самая интересная часть флага - рисунок звезд и полос.
Если мы повторим два пробела и знак числа 56 раз и добавим вертикальную черту к каждому, мы получим
Повторяя эту схему 7 раз и отбрасывая первые две строки, мы получаем полосы:
Теперь, если мы повторим строку
" * "
50 раз и разделим результат на куски длиной 22, мы получим звезды:Незначительные пробелы немного удалены, но мы можем это исправить, удалив последний кусок и добавив пробел к оставшимся.
Теперь, если мы накладываем полосы и звезды, мы получаем
Все, что осталось сделать, это добавить две строки по 57 штрихов, добавить столбец из 37 вертикальных полос и поместить вишню сверху.
Код
источник
Python 2, 113 байт
Нарезка строк и проверка по модулю в изобилии.
источник
i=0
печатается.Brainf ** k,
3355311315981178782 байтаЧто это за язык?
Вот оптимизированная для рук версия с 28 циклами. Я думаю, что дошел до этого.
Вот бег на ideone.com :
Как это работает?
Эта программа использует 10 ячеек памяти:
Линия 1
+++[>++++<-]
. Тогда конечным результатом является то, что регистр 0 равен 0, а регистр 1 равен 12."0"
вверху флага!Линия 2
"|"
(ASCII 124) и выводит его."0"
(ASCII 48) на"-"
(ASCII 45) и выводя его.Линия 3
" * "
5 раз." * "
написано"#"
всего 32."#"
,"|"
и"\n"
написано.Строки 4 - 11
Линия 12
Строка 13
"#"
8 раз каждый раз через цикл.Линия 14
Строка 15
" "
8 раз каждый раз через цикл.Строка 16
Строка 17
Линия 18
Линия 19
Линия 20
"|"
и перевод строки дважды каждый раз через цикл.источник
/// : 225 символов
источник
JavaScript ( ES6 ), 153
156Используя строку шаблона, есть 1 новая строка, которая является значимой и считается
Тестовый запуск фрагмента ниже (будь то EcmaScript 6, только Firefox)
Чтобы быть еще более патриотичным, вот версия EcmaScript 5
источник
Рубин,
104102 байтаИспользуя идеи из Ruby ManAtWork, отвечайте с разрешения.
Рубин,
127 121112 байтИзменены кавычки на
?
используемый массив вместо условных для цвета полосы. вместо условной длины используется условная формула.Хитрость здесь в том, чтобы нарисовать полосы (как красные, так
#
и белыеspace
) до правильной длины, а затем выровнять их по правому краю, добавив звездочки. Ruby'srjust
позволяет нам указать строку дополнения, которая чередуется между" * "
и" *"
.Оригинальная версия, 127 байт
источник
map
в середине ,puts
но я не могу использовать его самостоятельно, даже если я его окружают со скобками:puts((0.18).map{})
. Если вы заметите какие-либо дальнейшие улучшения, дайте мне знать или удалите свой собственный ответ и опубликуйте его там.rjust
может взять строку, а не просто символ. Жаль, что Питон не может этого сделать ...SWI-Пролог, 275 байт
На языке французского происхождения, который является своего рода подходящим
Смотрите результат здесь
источник
С
235211208205203198197186 байтовредактировать: добавил некоторые из предложений крутого парня и использовал?: заменить некоторые заявления if.
edit: устранено предотвращение переполнения \ 0 и используется ограничитель длины строки в printf.
edit: переработаны оба условия memset.
edit: перемещены ставит ("0") внутри заголовка для удаления его точки с запятой.
изменить: небольшой рефакторинг, чтобы получить еще 11 байтов.
источник
|
в начале каждой строки ...i;c(){puts("0");for(;i<37;i++){char b[58]="|";if(i<21){memset(b,!((i-1)%3)?35:32,56);if(i<10)memcpy(b," * * * * * * "+((i%2)?0:2),23);b[56]='|';}if(!i||i==20){memset(b,45,57);}puts(b);}}
45
вместо'-'
и35
вместо'#'
и32
вместо' '