Предположим, бесконечный лист шестиугольников состоит из |/\
символов.
/ \ / \ / \ / \
| | | | |
\ / \ / \ / \ / etc.
| | | |
\ / \ / \ /
При заданном вводе n > 0
выведите треугольную часть этой плитки, как показано в приведенных ниже примерах, с якорем _
в середине шестиугольника:
n=1
\_/
n=2
\/ \/
\_/
n=3
\ | /
\/ \/
\_/
n=4
\/ \ / \/
\ | /
\/ \/
\_/
n=5
\ | | /
\/ \ / \/
\ | /
\/ \/
\_/
n=6
\/ \ / \ / \/
\ | | /
\/ \ / \/
\ | /
\/ \/
\_/
n=7
\ | | | /
\/ \ / \ / \/
\ | | /
\/ \ / \/
\ | /
\/ \/
\_/
n=8
\/ \ / \ / \ / \/
\ | | | /
\/ \ / \ / \/
\ | | /
\/ \ / \/
\ | /
\/ \/
\_/
and so on
правила
- Лидирующие / завершающие символы новой строки или другие пробелы являются необязательными, при условии, что символы выстраиваются соответствующим образом.
- Допустимы либо полная программа, либо функция. Если функция, вы можете вернуть вывод, а не распечатать его.
- Вывод может быть в консоль, сохранен как изображение, возвращен в виде списка строк и т. Д.
- Стандартные лазейки запрещены.
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
Ответы:
Python 2 , 86 байт
Попробуйте онлайн!
Один из приемов Эрика позволил мне сыграть в гольф 3 байта! Сохранено 3 байта благодаря Джонатану Аллану.
Как это работает
Во-первых, он получает входные данные из STDIN и назначает их двум отдельным переменным
i
иk
. Затем, пока переменнаяi
истинна, мы уменьшаем ее и генерируем строки соответственно; это сокращение для цикла от входа - 1 до 0.Генерация строк
Я разделю это на несколько частей:
Прежде всего, получить ведущий интервал достигается с
" "*(k+~i)
. Такi
как отображается через диапазон (input, 0] , мы должны вычесть его изk
(нашего надежно сохраненного исходного ввода), уменьшить и повторить пробел много раз.+"\\"
- Добавляет символ"\"
к пробелам выше.' / |\ '[i%2::2]
- Создает две наши строки, а именно,"/ \ "
и" | "
, следующим образом:Если
i
нечетно, i% 2 равно 1 , таким образом,[i%2::2]
возвращает каждые 2 символа нашей большей строки, начиная с индекса 1 (с индексом 0).Если
i
четное число, i% 2 равно 1 , таким образом, механизм выше делает то же самое, за исключением того, что он начинается с индекса 0 .+~-i*
- Повтор генерируется выше строка, либо"/ \ "
или" | "
, I-1 раз, и присоединяет его к другим строкам. Преимущество побитового оператора (~
- Bitwise Complement, эквивалентного i, вычтенного из -1 ) состоит в том, что в этом контексте он не требует скобок.[:k-~i]
- Получает все символы строк, объединенных выше, пока индекс k- ~ i = k - (-1 - i) = k + 1 + i .+"_/"[i>0:]
- Это только добавляет,"/"
если я ≥ 1 , иначе это добавляет_/
.Полный пример / подробности исполнения
Давайте возьмем пример того, как все работает для ввода 4 :
источник
i-=1
к началу цикла и используйте немного другую правую форму, чтобы уменьшить его до 87 байт .Python 2 , 90 байт
Попробуйте онлайн!
источник
05AB1E , 33 байта
Попробуйте онлайн!
источник
Mathematica, 131 байт
возвращает список строк
Попробуйте онлайн!
источник
Сетчатка ,
129119112 байтПопробуйте онлайн!
источник
Древесный уголь , 26 байт
Попробуйте онлайн! Ссылка на подробную версию кода.
источник
Python 2 ,
1231121101091009896 байтПопробуйте онлайн!
источник
-1-a
с~a
(как я сделал в моем ответе).Python 2 , 103 байта
Попробуйте онлайн!
источник
APL (Dyalog) ,
9793 байтаПопробуйте онлайн!
источник
SOGL V0.12 ,
2827 байтовПопробуй здесь!
источник
Haskell ,
9695 байтПопробуйте онлайн!
0 индексируется и возвращает список строк.
источник
Haskell,
10199 байтВозвращает список строк.
Попробуйте онлайн!
Как это устроено:
Редактировать: @Laikoni сохранил два байта. Благодарность!
источник
([1,3..n-1]>>)
можно использовать вместо([1..div n 2]>>)
.Java (OpenJDK 8) ,
315306 байтПопробуйте онлайн!
источник
Java (OpenJDK 8) , 198 байт
Наконец получил его ниже 200 байт. Возможно выложу объяснение позже.
Попробуйте онлайн!
источник
JavaScript (ES6),
8985 байтдемонстрация
Показать фрагмент кода
источник
CJam, 43
Попробуйте онлайн
источник
PHP, 89 + 1 байт
Запустите как трубу с
-nR
или попробуйте онлайн .источник
Pyth ,
4644 байтаПопробуй это здесь!
источник