Desafio
Dada uma string que descreve uma regra de corte e outra, corte as peças da segunda string usando a regra descrita pela primeira string.
Ambas as strings consistirão em letras a-z
ou A-Z
, qualquer que você escolher (elas não precisam ser representadas da mesma maneira). A maneira como a segunda string deve ser modificada é descrita abaixo:
Algoritmo
Pegue a primeira corda e imagine preencher as lacunas entre letras não adjacentes (crescentes) com =
; por exemplo, abcfg
=> abc==fg
. Em seguida, alinhe as duas cadeias e retorne todos os caracteres da primeira cadeia que não estejam acima de um sinal de igual. Por exemplo, dados abcfg
e qrstuvw
como entradas:
qrstuvw - Modify
abc==fg - Modifier
qrs--vw -> qrsvw
Se o modificador for mais curto após o preenchimento com sinais de igual, todos os caracteres finais na segunda sequência deverão ser incluídos. Se o modificador for mais longo, os caracteres finais serão ignorados.
Não é garantido que o modificador seja classificado.
Casos de teste
abcfg, qrstuvw -> qrsvw
abqrs, qwertyuiopasdfghjklzxcvbnm -> qwjklzxcvbnm
za, qr -> qr
azazaz, qwertyuioplkjhgfdsazxcvbnmnbvcxzasdfghjklpoiuytrewq -> qmn
Implementação de referência (usada para gerar casos de teste) -> TIO
Regras
- As brechas padrão se aplicam
- Você pode receber a entrada como duas strings, duas listas de caracteres, uma matriz de caracteres etc. (qualquer outro formato razoável é aceitável)
- Você pode imprimir como uma string ou uma lista de caracteres (ou algum outro formato padrão para strings)
- Como código é golfe , a resposta mais curta em bytes em cada idioma é declarada a vencedora do seu idioma. Nenhuma resposta será aceita.
- Qualquer uma das seqüências pode estar vazia.
Golfe feliz!
Inspirado pelos dois desafios recentes de Kevin Cruijssen, "Pronto, consertei (com fita / corda )"
There, I blew it up (with a segfault)