Сценарий
Учитывая ввод строчных букв и пробелов ASCII, нарисуйте спираль символов, которая отслеживает исходный ввод символов, исключая пробелы.
Правила
1) Персонажи должны вращаться наружу против часовой стрелки влево. Если поворот налево невозможен, двигайтесь прямо.
Given: abcdefg
Output:
g
baf
cde
2) Символы могут переходить в предыдущие символы, если правило № 1 не нарушено. Кроме того, если этот символ находится в спирали, то этот символ в верхнем регистре. После того, как символ в верхнем регистре, он останется в верхнем регистре, независимо от того, сколько раз он используется повторно.
Given: apples appeal
Output:
PAs
PLe
ea
abcdefghab
?Ответы:
JavaScript,
225221212 байт-9 байтов благодаря Конору О'Брайену
Обратите внимание, что ваши текстовые случаи конфликтуют друг с другом. Ваш первый контрольный пример начинается с середины спирали. Ваш второй контрольный пример начинается с верхней середины спирали. Я пошел с твоим первым тестовым примером, потому что это был первый, который я видел. Вы не редактировали свой вопрос более года, поэтому извините за презумпцию.
Первый тестовый пример:
Второй контрольный пример:
Без лишних слов, вот код для игры в гольф. Я на 100% уверен, что если сообщество сделает это, это может быть значительно сокращено. Это возвращает многострочный массив.
Фрагмент преттификации (выводит многострочную строку на консоль). Обратите внимание на различия в моем тестовом примере № 2 и тестовом сценарии № 2 OP (см. Выше, если вы этого еще не сделали):
(если кто-то с большим опытом работы с фрагментами кода хочет исправить это в HTML-вводе, не стесняйтесь редактировать это, мне нужно идти спать).
Ungolfed и объяснение
источник
a.split("")
эквивалентно[...a]
;s=>{...;return a;}
эквивалентноs=>eval("...;a")
(и;
является необязательным в менее гольфовой версии); все точки с запятой, за которыми следует знак «а»}
, необязательныapples appeal
? Я вижуppa
eas
aLe
, что, безусловно, не правильно, потому что нетl
рядом сp
с.eppa
apas
lple
s
.