Entrada:
Duas strings sem novas linhas ou espaços em branco.
Resultado:
Ambas as strings de entrada em linhas separadas, com espaços onde necessário † para uma das duas strings. E uma terceira linha com os caracteres A
, R
, M
e , representando adicionados , removidos , modificados , e inalterada .
† Adicionamos espaços à sequência de entrada superior ou inferior (se for necessário). O objetivo desse desafio é gerar a menor quantidade possível de alterações ( ARM
), também conhecida como distância de Levenshtein .
Exemplo:
Digamos que as seqüências de entrada sejam ABCDEF
e AFBECD
, então a saída seria esta:
A B CDEF
AFBECD
A A RR
Aqui estão algumas outras saídas inválidas possíveis, como exemplo (e há muito mais):
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
No entanto, nenhuma dessas mudanças possui apenas quatro alterações; portanto, apenas A B CDEF\nAFBECD \n A A RR
uma saída válida para esse desafio.
Regras do desafio:
- Você pode assumir que as seqüências de entrada não conterão novas linhas ou espaços.
- As duas cadeias de entrada podem ter comprimentos diferentes.
- Uma das duas seqüências de entrada deve permanecer como está, exceto nos espaços iniciais / finais opcionais.
- Se seus idiomas não suportam nada além de ASCII, você pode assumir que a entrada conterá apenas caracteres ASCII imprimíveis.
- O formato de entrada e saída é flexível. Você pode ter três Strings separadas, uma matriz de String, uma única String com novas linhas, matriz de caracteres 2D, etc.
- Você tem permissão para usar outra coisa em vez de
ARM
, mas indique o que usou (ou seja123
, ouabc.
etc.) - Se mais de uma saída válida for possível com a mesma quantidade de alterações (
ARM
), você poderá escolher se deseja gerar uma das saídas possíveis ou todas elas. Os espaços à esquerda e à direita são opcionais:
A B CDEF AFBECD A A RR
ou
"A B CDEF\nAFBECD\n A A RR" ^ Note there are no spaces here
Regras gerais:
- Isso é código-golfe , então a resposta mais curta em bytes vence.
Não permita que idiomas com código de golfe o desencorajem a postar respostas com idiomas que não sejam codegolf. Tente encontrar uma resposta o mais curta possível para 'qualquer' linguagem de programação. - As regras padrão se aplicam à sua resposta, para que você possa usar STDIN / STDOUT, funções / método com os parâmetros adequados, programas completos. Sua chamada.
- As brechas padrão são proibidas.
- Se possível, adicione um link com um teste para o seu código.
- Além disso, adicione uma explicação, se necessário.
Casos de teste:
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