Входные данные:
Две строки без перевода строки или пробелов.
Выход:
Обе входные строки в отдельных строках с пробелами, где это необходимо † для одной из двух строк. И третья строка с символами A
, R
, M
и , представляющий собой добавлена , удалена , изменена , и без изменений .
† Мы добавляем пробелы в верхнюю или нижнюю строку ввода (если нужно). Цель этой задачи - вывести с наименьшим количеством возможных изменений ( ARM
), также известных как расстояние Левенштейна .
Пример:
Допустим, входные строки имеют вид ABCDEF
и AFBECD
, тогда результат будет таким:
A B CDEF
AFBECD
A A RR
Вот несколько других возможных неправильных выводов в качестве примера (и их намного больше):
ABCDEF
AFBECD
MMMMM
A BCDEF
AFBECD
A MMMR
AB CDEF
AFBECD
MAMMMR
ABC DEF
AFBECD
MMAMMR
ABC DEF
AFBECD
MMAA RR
ABCDEF
AFB ECD
MMR MA
AB CDEF // This doesn't make much sense,
AFBECD // but it's to show leading spaces are also allowed
AM A RR
Однако ни одно из них не имеет только четырех изменений, поэтому только A B CDEF\nAFBECD \n A A RR
допустимый результат для этой задачи.
Правила соревнований:
- Вы можете предположить, что входные строки не будут содержать никаких новых строк или пробелов.
- Две входные строки могут быть разной длины.
- Одна из двух входных строк должна оставаться как есть, за исключением необязательных начальных / конечных пробелов.
- Если ваши языки не поддерживают ничего кроме ASCII, вы можете предположить, что ввод будет содержать только печатные символы ASCII.
- Формат ввода и вывода являются гибкими. Вы можете иметь три отдельных строки, массив строк, одну строку с новыми строками, двумерный массив символов и т. Д.
- Вам разрешено использовать что-то другое вместо
ARM
, но указать, что вы использовали (то есть123
, илиabc.
, и т. Д.) - Если с одним и тем же количеством изменений возможны несколько допустимых выходных данных (
ARM
), вы можете выбрать, выводить ли один из возможных выходных данных или все из них. Начальные и конечные пробелы являются необязательными:
A B CDEF AFBECD A A RR
или
"A B CDEF\nAFBECD\n A A RR" ^ Note there are no spaces here
Основные правила:
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Не позволяйте языкам кода-гольфа отговаривать вас от публикации ответов на языках, не относящихся к кодексу. Попробуйте придумать как можно более короткий ответ для «любого» языка программирования. - К вашему ответу применяются стандартные правила , поэтому вы можете использовать STDIN / STDOUT, функции / метод с правильными параметрами, полные программы. Ваш звонок.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода.
- Также, пожалуйста, добавьте объяснение, если это необходимо.
Тестовые случаи:
In: "ABCDEF" & "AFBECD"
Output (4 changes):
A B CDEF
AFBECD
A A RR
In: "This_is_an_example_text" & "This_is_a_test_as_example"
Possible output (13 changes):
This_is_an _example_text
This_is_a_test_as_example
MAAAAAAA RRRRR
In: "AaAaABBbBBcCcCc" & "abcABCabcABC"
Possible output (10 changes):
AaAaABBbBBcCcCc
abcABCab cABC
R MM MMMR MM R
In: "intf(){longr=java.util.concurrent.ThreadLocalRandom.current().nextLong(10000000000L);returnr>0?r%2:2;}" & "intf(){intr=(int)(Math.random()*10);returnr>0?r%2:2;}"
Possible output (60 changes):
intf(){longr=java.util.concurrent.ThreadLocalRandom.current().nextLong(10000000000L);returnr>0?r%2:2;}
intf(){i ntr=( i n t)(M ath.r andom ()* 10 );returnr>0?r%2:2;}
MR M MRRRRRR RRRR RRRRRR MMMRR MMMMRRR RRRRRRRR MRRRRRRRRR RRRRRRRRRR
In: "ABCDEF" & "XABCDF"
Output (2 changes):
ABCDEF
XABCD F
A R
In: "abC" & "ABC"
Output (2 changes):
abC
ABC
MM