输入:
两个没有换行符或空格的字符串。
输出:
两个输入字符串都在单独的行上,两个字符串之一之间在必要时加空格†。并以字符的第三线A
,R
,M
和,代表添加,删除,修改,和改变。
†我们在顶部或底部输入字符串中添加空格(如果需要)。这项挑战的目标是输出ARM
尽可能少的变化量(),也称为Levenshtein距离。
例:
假设输入字符串为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字符。
- 输入和输出格式灵活。您可以具有三个单独的字符串,一个字符串数组,带有换行符的单个字符串,2D字符数组等。
- 您可以使用而不是来使用其他内容
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