Входные данные:
Две строки (ПРИМЕЧАНИЕ: важен порядок ввода).
Выход:
Оба слова / предложения начинаются со строк с одной пустой строкой между ними. Они «ходят» горизонтально «рядом друг с другом». Но когда у них одинаковый персонаж в одной и той же позиции, они пересекают друг друга, а затем продолжают идти «рядом друг с другом».
Смущаете, говорите? Давайте приведем пример:
Вход: Words crossing over
& Ducks quacking
:
Word quack n
s i g
Duck cross n over
Извините за плохую краску MS ..
Правила соревнований:
- Сначала мы всегда возвращаемся по прямой линии после того, как мы «перешли», прежде чем мы сможем снова пересечь (см. Тестовый пример выше {1} - где
ing
равен, но после того, как мы перешлиi
, мы сначала должны вернуться идти прямо (таким образом, игнорируяn
), прежде чем мы сможем снова перейтиg
). - Входные данные могут быть разной длины, и в этом случае более длинный продолжает идти по прямой линии (см. Контрольные примеры 1, 2, 4 и 6).
- Оба входа могут быть одинаковыми (см. Контрольный пример 3).
- Входные данные не содержат ни вкладок, ни новых строк.
- Пробелы игнорируются как символы, которые являются одинаковыми (как крайний регистр) , и в этом случае следующий (не пробел) символ после этого - если таковой имеется - вместо этого пересекается (см. Контрольные примеры 3, 5 и 6).
- Входные данные могут не иметь соседних (не пробельных) символов в одной и той же позиции, в этом случае оба они просто идут по прямой линии по горизонтали (см. Контрольные примеры 2).
- Даже если первый символ равен, мы всегда начинаем две строки друг от друга (см. Контрольные примеры 3 и 6).
- Завершающие пробелы и одна завершающая новая строка необязательны.
- Можно предположить, что входные данные будут содержать только печатные символы ASCII (исключая новые строки и вкладки).
- Входы чувствительны к регистру, так
A
иa
не равны, и не будут пересекать (см тестового примера 7). - Обе длины входов всегда будут как минимум 2.
- Ввод и вывод может быть в любом разумном формате. Может быть одной строкой с новыми строками; String-массив / список; напечатано в STDOUT; 2D массив символов; и т.п.
Основные правила:
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Не позволяйте языкам кода-гольфа отговаривать вас от публикации ответов на языках, не относящихся к кодексу. Попробуйте придумать как можно более короткий ответ для «любого» языка программирования. - К вашему ответу применяются стандартные правила , поэтому вы можете использовать STDIN / STDOUT, функции / метод с правильными параметрами и типом возврата, полные программы. Ваш звонок.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода.
- Также, пожалуйста, добавьте объяснение, если это необходимо.
Тестовые случаи:
1. Input: "Words crossing over" & "Ducks quacking"
1. Output:
Word quack n
s i g
Duck cross n over
2. Input: "bananas" & "ananas"
2. Output:
bananas
ananas
3. Input: "I see my twin!" & "I see my twin!"
3. Output:
I e y w n
s e m t i !
I e y w n
4. Input: "Is the weather nice?" & "Not really, no.."
4. Output:
Is th ally, no..
e
Not r weather nice?
5. Input: "Codegolf & Programming Puzzles" & "The golfer might solve puzzles"
5. Output:
Code o f & Programming P z l s
g l u z e
The o fer might solve p z l s
6. Input: "Can you turn the lights off?" & "Can you try to solve this?"
6. Output:
C n o urn the ve s off?
a y u t l t
C n o ry to so igh his?
7. Input: "one Ampere" & "two apples"
7. Output:
one Am les
p
two ap ere
8. Input: "Words crossing" & "Words Quacking"
8. Output:
W r s cross n
o d i g
W r s Quack n
Древесный уголь , 69 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
источник
Python 2 ,
217210 байт-1 байт благодаря officialaimm
Попробуйте онлайн!
источник
s=' '
Haskell,
142138 байтПопробуйте онлайн!
Как это работает:
источник
g 0
. Что касается пропущенного слова: «а» как в «переменной с именем а», но это действительно сбивает с толку, поэтому я перефразировал его.a
. :) Я лично используюa
в своих объяснениях при указании переменных, хотя обычно это достаточно ясно без. Спасибо за разъяснения, и я действительно ожидал довольно легкого исправления ошибки.'
заменой на обратный тик) в комментарии, что я и хотел сказать… (поэтому я использую обратные тики вокруг переменных внутри моих кодовых блоков.)JavaScript (ES6), 112 байт
Ungolfed:
Тестовые случаи:
Показать фрагмент кода
источник
APL (Dyalog) , 50 байтов
Попробуйте онлайн!
⍵⍀⍨¯1*⍳4
дает матрицу:(точки представляют собой пробелы). Его столбцы будут поворачиваться на разные величины, поэтому первые три строки будут выглядеть как желаемый результат - отсюда
3↑
и начало. Остальная часть алгоритма вычисляет суммы вращения.В пределах Parens:
3↑⍵
создает матрицу каки
2=⌿
сравнивает его строки попарно, то есть первая строка против второй строки и вторая строка против строки всех пробелов.Нас интересует, где первое - true (1), а второе - false (0), поэтому мы уменьшаем,
>⌿
чтобы получить логический вектор с именемa
.Теперь, на каждом отрезке 1 с мы должны обнулить четные вхождения, потому что никакие два поворота не могут произойти рядом друг с другом. Сначала мы получаем нумерацию:
по сути, заменяя
a[i]
на,a[i]*max(a[i-1]+1, a[i])
пока результат не стабилизируется:,{⍵⌈a×1+1,¯1↓⍵}⍣≡
и мы возьмем этот мод 2:2|
Теперь мы знаем, где будут происходить повороты. Мы копируем каждый
1
слева -2∨/
(попарно "или"):и вычислить частичные суммы -
+\
Это дает нам количество вращения столбца, которое нам было нужно в начале. По модулю 4 подразумевается.
источник
Perl 5 , 211 байт
Попробуйте онлайн!
# Perl 5 , 234 байтаисправил ошибку, на которую указал Кевин
Попробуйте онлайн!
источник
"Can you turn the lights off?" & "Can you try to solve this?"
я получаю сообщение об ошибке:Modification of non-creatable array value attempted, subscript -1 at .code.tio line 1, <> line 2.
это ошибка, или я делаю что-то неправильно? Вот ТИО.05AB1E , 31 байт
Порт ответа @ETHproductions на Japt , но с двумя незначительными отличиями:
1) Я воспринимаю ввод как двумерный список символов вместо списка строк.
2) Значение
counter_variable
in 05AB1E по умолчанию равно 0, а не 11 (или 3), какB
в Japt, поэтомуNĀ
добавляется в качестве дополнительной проверки внутри карты (и я поворачиваюсь вправо, а не влево).Попробуйте онлайн или проверьте все контрольные примеры .
Объяснение:
источник