В детстве мне очень нравилось играть с этими игрушками:
Вероятно, они предназначались для их использования в искусстве, но я всегда использовал их для математики! Фракталы, узоры и т. Д. Однажды мне дали этот вызов:
Постройте треугольник без использования какой-либо из зеленых плиток треугольника.
Это испытание дало мне о себе знать очень долго, пока я не наткнулся на действительно красивый и простой способ сделать это всего с 3 трапециями:
/\
/_/\
/__\_\
Теперь возьмите этот треугольник и поверните его:
______
\ \__/
\/ /
\/
Используя эти два треугольника, мы можем построить из них более крупные треугольники. Вот треугольник высотой 2:
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
А вот и треугольники высотой 3-7:
#3
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
/\ \__/\ \__/\
/_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\
#4
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
/\ \__/\ \__/\
/_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\
#5
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
/\ \__/\ \__/\
/_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\
#6
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
/\ \__/\ \__/\
/_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\/__\_\
#7
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
/\ \__/\ \__/\
/_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\/__\_\/__\_\
Соревнование
Напишите программу или функцию, которая принимает число n и печатает треугольник без треугольника высотой n . Конечные пробелы в каждой строке приемлемы, и допускается до одного завершающего или ведущего символа новой строки. IO может быть в любом разумном формате. Гарантируется, что ввод будет положительным целым числом, поэтому вам не нужно беспокоиться о отрицательных числах, десятичных числах, не числах и т. Д.
Кратчайший ответ в байтах побеждает!
источник
Ответы:
CJam, 47
Объяснение:
Попробуйте онлайн
источник
Руби, 79
A. (-4 байта,
-1
+1
) изменено с 0-indexed (.times
) на 1-indexed (1.upto
)B. (-5 байт) изменен с массива из трех 6-символьных строк на выделение 6-символьной подстроки из 18-символьной строки.
C (-1 байт)
m=n*3
->n*=3
D. (-5 байт) уменьшил все пять двойных обратных слешей до одиночных обратных слешей (частично это стало возможным благодаря переупорядочению строки, необходимому для точки A)
Руби, 94
объяснение
Базовая единица представляет собой бриллиант 3х6 следующим образом (последний символ в каждой строке продублирован для ясности :)
Все, что нам нужно сделать, это отобразить подходящее окно этого шаблона. Ruby's
ljust
позволяет дополнять любую строку, а не только пробелами. Обычноljust
используется для заполнения строки печатаемых символов путем добавления пробелов в конце, но здесь мы используем это в обратном порядке: для заполнения строки пробелов путем добавления печатных символов в конце.разряженный в тестовой программе
источник
Сетчатка ,
150122118 байтКстати, результат этой задачи выглядит потрясающе!
Ввод одинарный. Вывод содержит завершающий перевод строки. Код использует кодировку ISO 8859-1. Обратите внимание на пробел на предпоследней строке.
Попробуйте онлайн
объяснение
Если вы хотите более подробное объяснение, прокомментируйте или напишите мне в чате.
Спасибо Мартину за игру в гольф на 32 байта.
источник
Язык печати Tarmo's ascii, 46 байтов. (Не конкурирующий)
Просто глядя на такие странные языки программирования, как CJam, у меня возникает головокружение, какой сложный, неестественный и загадочный язык может быть, что я хотел «смело идти туда, где раньше не было никого», и придумывать свой собственный язык. В результате я создал свой собственный язык для печати шаблонов ascii.
Основная идея заключается в том, что вы можете определить сначала шаблон, а затем печатать - используя один и тот же тип символа «1» или «2» или любое другое число - вы можете определить свой собственный шаблон печати.
Как только шаблон определен (начинается с номера до конца номера) - последующие числа будут выполнять печать шаблона.
Например
Выходы как это:
Определим шаблон 1, а затем распечатаем его сразу. Шаблон определяется все, разделенные '|' персонаж. 0 в конце - действует как завершение шаблона.
Специальные символы, такие как '$', зарезервированы в качестве перевода строки, а '~' зарезервировано для интервала - половины - конкретного шаблона.
Будет выводить текст так:
Далее идут петли-петли. Это должно быть легко видно - поэтому я сохранил {} скобки для циклов for, но имена переменных имеют автоматическое имя - поэтому первая скобка будет использовать переменную 'a', вторая 'b' и так далее. Итерация всегда будет идти от 0 до определенного числа - и это число определяется в скобках {}.
'n' является зарезервированной переменной для ввода всей функции.
Итак, код:
Будут ли выходы (с n == 4):
А '#' - это специальный модификатор для пробелов в обрезке.
И, наконец, все решение:
DrawPatterns.cs:
С такими аргументами командной строки: -d "1 / \ | / _ / \ | / ___ \ 2 __ | / 0n {na-1 {½} 1a {2 # 1} $}" 3
Будем выводить это:
источник
JavaScript (ES6), 119 байт
Где
\n
представляет буквальный символ новой строки. Еслиn*3
допускается начальная строка с пробелами и символом новой строки, ее.slice(1)
можно удалить для экономии 9 байтов.источник
Python 2, 118 байт
Аналогичный подход к ответу Рубин Ривер Сент-Ривер .
Попробуйте онлайн
источник
Python 2, 142 байта
Принцип очень похож на другие ответы: возьмите три повторяющихся строки, а затем наложите их таким образом, что вам нужно только обрезать некоторые из них, чтобы получить треугольник, а затем дополнить их слева.
источник
C ++, 395 байт
Первый раз код гольф с великолепным размером 395 байт в C ++. В моем случае это немного похоже на конкурс на запутывание: D
источник
Pyth, 66 байт
Попробуйте онлайн!
источник