Вызов:
Входные данные:
Вы берете два ввода:
- Строка, содержащая только печатаемый ASCII (исключая пробелы, символы табуляции или новые строки)
- Печатный символ ASCII
Выход:
Первая строка будет содержать строку ввода. Каждое i
первое появление -modulo-3 этого персонажа будет двигаться в юго-восточном направлении; каждое i
появление -модуло-3 секунды будет двигаться в южном направлении; и каждое i
третье вхождение -модуло-3 будет двигаться в юго-западном направлении. Вы будете продолжать до тех пор, пока символы снова не окажутся в своей начальной начальной позиции (что означает, что при необходимости они будут переворачиваться с одной стороны на другую), а затем вы снова напечатаете последнюю строку со строковым вводом, чтобы закончи это. (Обратите внимание, что все тестовые случаи будут заканчиваться на своем начальном вводе после не более чем length(input)
строк, включая строку, содержащую завершающий ввод. Это может быть быстрее, хотя, как показано в этом первом тестовом примере ниже, с длиной 14, но заканчивается после 9.)
Это может быть довольно расплывчато, так что вот пример:
Тестовый пример 1:
String-input: "This_is_a_test"
Символьный ввод:'s'
Выход:
This_is_a_test
s s s
ss s
s s
sss
sss
s s
ss s
s s s
This_is_a_test
Вот тот же тестовый пример с цветными контурами трех s
:
где первая 's'
следует по зеленой тропе в юго-восточном направлении; вторая 's'
следует по желтому пути в южном направлении; и третий 's'
следует по светло-синему пути в юго-западном направлении. (Если будет четвертый, 's'
он снова пойдет в юго-восточном направлении, что можно увидеть в некоторых других тестовых примерах ниже.)
Правила соревнований:
- Входные данные будут содержать только печатные ASCII (исключая пробелы, табуляции и новые строки)
- Форматы ввода / вывода являются гибкими. Может быть строка с разделителями новой строки, символьная матрица и т. Д. Ваш вызов.
- Возможно, что данный символ отсутствует в строке, и в этом случае вам разрешается либо выводить строку ввода один или два раза (т.е.
"test", 'a'
может иметь любой из них в качестве возможного вывода:"test\ntest"
/"test"
). - Ведущие пробелы обязательны; завершающие пробелы не являются обязательными. Разрешены один или несколько ведущих / конечных новых строк.
Основные правила:
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Не позволяйте языкам кода-гольфа отговаривать вас от публикации ответов на языках, не относящихся к кодексу. Попробуйте придумать как можно более короткий ответ для «любого» языка программирования. - К вашему ответу применяются стандартные правила , поэтому вы можете использовать STDIN / STDOUT, функции / метод с правильными параметрами и типом возврата, полные программы. Ваш звонок.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода.
- Также, пожалуйста, добавьте объяснение, если это необходимо.
Тестовые случаи / больше примеров:
Контрольный пример 2:
String-input: "abcabcabcabcabc"
Символьный ввод:'b'
Выход:
abcabcabcabcabc
b b b b b
bbb bb
b b
bbb bb
b b b b b
b b b b
b b b b b
bb b bb
b b b
bb bbb
b b bbb
b b b b
b bb bb
b b bb b
abcabcabcabcabc
Вот тот же тестовый пример с цветными дорожками из пяти a
:
Тестовый пример 3:
String-input: "only_two_paths?"
Символьный ввод:'o'
Выход:
only_two_paths?
o o
o o
o o
o o
o o
oo
o
oo
o o
o o
o o
o o
o o
o o
only_two_paths?
Вот тот же тестовый пример с цветными контурами двух o
:
Контрольный пример 4:
Строковый ввод: "lollollollollol"
ввод символов:'l'
Выход:
lollollollollol
lll ll ll
ll ll ll
l ll ll ll ll
lll l ll l ll
llllll ll ll
l l ll ll
ll lll ll
l l l lll ll l
ll l ll l l
l l l l llll l
ll lll lll
l l l ll
ll lll lllll
l l l ll l ll
lollollollollol
Вот тот же тестовый пример с цветными дорожками из десяти l
:
Тестовый пример 5:
Строковый ввод: "AbCdEeDcBaAbCdEeDcBa_CCCCC"
ввод символов:'C'
Выход:
AbCdEeDcBaAbCdEeDcBa_CCCCC
C C C C C
C C C C CCC
C C C C C C C
C C C C C C C
C C C C C C C
C C C C C C C
C C C C C C C
C C C CC C C
C C CC C C
C C CC C C
C C CC C
CC CC C C
CC CC C C
C C CC C C
C C CC C C C
C C C C C C
C C CC C C C
C C C C C C C
C C C C C C C
C C C C C CC
C C C C C C
C C C C CCC
C C C CCCC
C C C C
C C CCCCC
AbCdEeDcBaAbCdEeDcBa_CCCCC
Вот тот же тестовый пример с цветными дорожками семи C
:
Контрольный пример 6:
Строковый ввод: "XyX"
ввод символов:'X'
Выход:
XyX
XX
X
XyX
Вот тот же тестовый пример с цветными контурами двух X
:
Тестовый пример 7:
Строковый ввод: "aaaa"
ввод символов:'a'
Выход:
aaaa
aa
aaa
aaa
aaaa
Вот тот же тестовый пример с цветными контурами четырех a
:
length(input)
все снова совпадает, но это может произойти раньше, как доказывает первый тестовый пример. Но, похоже, вы действительно правы относительно кратности 3 части (хотя я не уверен на 100%).