В прошлый четверг пользователь @SpookyGengar порадовал нас своим первым испытанием о создании слов в квадрате . Что если мы удвоим количество сторон?
Соревнование
Возьмите строку в качестве ввода в любом подходящем формате, который вам нужен ( string
, char
массив ...) и выведите восьмиугольное представление ввода (также в любом приемлемом формате:, string
список string
s, char
матрица ...), как в следующих примерах:
Input: golf
Output:
golf
o l
l o
f g
l o
o l
g f
o l
l o
flog
Input: HelloWorld
Output:
HelloWorld
e l
l r
l o
o W
W o
o l
r l
l e
d H
l e
r l
o l
W o
o W
l o
l r
e l
H d
e l
l r
l o
o W
W o
o l
r l
l e
dlroWolleH
Input: a
Output:
a
Input: ab
Output:
ab
b a
a b
ba
Input: code golf
Output:
code golf
o l
d o
e g
g e
o d
l o
f c
l o
o d
g e
e g
d o
o l
c f
o l
d o
e g
g e
o d
l o
flog edoc
Примечания
- Ввод будет состоять только из печатных символов ASCII.
- Допускаются начальные и / или конечные пробелы и переводы строк, если поддерживается восьмиугольная форма.
- Это код-гольф , поэтому победит самая крутая программа / функция для каждого языка!
code golf
<Space>
считается для печати?Ответы:
Древесный уголь , 16 байт (10 байт неконкурентоспособны)
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Исправлена альтернатива длины 1, также 16 байтов: подробная версия.
Исправление Charcoal означает, что теперь работает следующий 10-байтовый код: Подробная версия.
источник
⟲
Похоже, он должен просто сделать это. Lolcode golf
работает, не так ли?θθθ
наθθ»θ
).code golf
? Я думаю, что это связано с тем, как древесный уголь получает информацию, которая, к сожалению, полностью исключает его из этой проблемы, поскольку ее нельзя обойти.JavaScript (ES6), 156 байт
Возвращает массив символов.
источник
?:
с!Mathematica, 247 байтов
источник
Alignment
и вы бы сохранили байты с помощью delayedset (:=
), чтобы уменьшить количество повторенийs[[i]]
и.s[[-i]]
Вы получите 224 байта с этими идеями: (T = Таблица; q: = s [[i]]; r: = s [[- i]]; k = длина [s = символы @ #]; если [k == 1, #, столбец [Flatten @ {#, T ["" <> {q, T ["", k / 2-2 + i], r}, {i, 2, k}], T ["" <> {r, T ["", k + k / 2-2], q}, {i, 2, k}], T ["" <> {q, T ["", 3k / 2-1-i], r}, {i, 2, k-1}], StringReverse @ #}, центр] ]) & Кроме того, у меня есть альтернативное решение, которое на момент написания этого комментария составляло всего 145 байт.Pyth ,
796965 байтТестовый пакет .
источник
Japt ,
8479 байт-5 байт благодаря @ETHproductions.
Ведущий перевод строки является частью программы. Принимает строку в качестве входных данных и возвращает массив строк.
Попробуйте онлайн! с
-R
флагом, чтобы присоединить полученный массив с символами новой строки.Не самая лучшая работа, но я сократил ее, по крайней мере, с ~ 100 байт. Моя идея заключалась в том, чтобы создать верхнюю и среднюю части, а затем добавить верхнюю часть, повернутую на 180 °.
источник
Ul É
наUÅl
и переключить V и W, чтобы сохранить еще 2 байта: codepen.io/justinm53/full/…AnV ?
->V-A?
, иUq £
->U£
¬
.Python 2 ,
220213 байтПопробуйте онлайн!
источник
PHP 7.1,
230 156155 байтЗапустите как трубу с
-nR
или попробуйте онлайн .сломать
источник
Mathematica,
168166147127 байтовЭто берет список односимвольных строк и выводит матрицу односимвольных строк.
Я спас 18 байт, эксплуатируя симметрию использовать
-l
иCross/@l
которая принимает что - то вроде перекрестного продукта каждой из двух отдельных 2D векторов взять{x,y}
на{-y,x}
. В основном, два начальных направления - восток (верхний край) и юго-запад (верхний правый край). Затем мы добавляем их поворот на 90 градусов против часовой стрелкиCross
: север для левого края и юго-восток для нижнего левого края. Затем мы добавляем остальные четыре части, используя,-l
чтобы перевернуть четыре, которые мы рассмотрели.Вы можете проверить это в песочнице с чем-то вроде:
источник