Dadas duas seqüências, uma sequência pai e uma sequência de consulta, respectivamente, sua tarefa é determinar quantas vezes a sequência de consultas ou um anagrama da sequência de consultas ; aparece na sequência pai, em uma pesquisa que diferencia maiúsculas de minúsculas.
Exemplos de comportamento
Entrada 1
AdnBndAndBdaBn
dAn
Saída 1
4
Explicação As substrings estão destacadas em negrito abaixo:
Adn BndAndBdaBn
AdnB ndA ndBdaBn
AdnBn e dBdaBn
AdnBnd And BdaBn
Observe que a pesquisa DEVE fazer distinção entre maiúsculas e minúsculas para todas as pesquisas.
Entrada 2
AbrAcadAbRa
cAda
Saída 2
2
Isso deve funcionar apenas para ASCII padrão. Isso é código-golfe, portanto, o menor número de caracteres receberá o visto de aprovação. Publique também uma versão sem código do seu código junto com a versão com código.
fonte
abacacaba
aac
Respostas:
Pitão,
1110 bytes1 byte de golfe graças a @Jakube.
Demonstração.
Leva a string de consulta, seguida pela string pai em uma nova linha.
Ungolfed:
fonte
CJam, 13 bytes
(12 bytes, se a sobreposição for permitida)
A entrada é como:
ie
Agradecimentos a Dennis por salvar 3 bytes no cenário sobreposto
Experimente online aqui
fonte
ll1$,ew:$\$e=
l$_,lew:$\e=
mas não tenho certeza se isso seria válido agora que o OP disse que a sobreposição não é permitida. Deixe-me ver se posso reduzir o meu atual.JavaScript ES6, 95 bytes
Esta é uma função que aceita dois argumentos como este:
f(parent,query)
.Ele percorre todas as substrings da string pai do comprimento da string de consulta e as classifica. Se forem iguais à sequência de consulta classificada, ela será incrementada
n
. A classificação da sequência é irritante porque deve ser convertida em uma matriz, classificada e convertida novamente em uma sequência. Código não testado e testável abaixo.fonte
Haskell,
7768 bytesUso:
Como funciona: a string pai é
p
, a string de consulta és
.tails
cria uma lista de seus parâmetros com a remoção sucessiva do primeiro elemento, por exemplotails "abcd" -> ["abcd","bcd","cd","d",""]
. Para cada elementox
desta lista, faça um1
se os primeirosn
elementos classificados (onden
está o comprimento des
) forem iguais aos classificadoss
. Soma os1
s.Editar: em
tails
vez de recursão explícitafonte
Python, 61 bytes
Este é um algoritmo recursivo. Ele verifica se os caracteres iniciais da sequência pai, uma vez ordenados, são os mesmos que a sequência de consultas ordenada. Em seguida, recursiva na cadeia pai com seu primeiro caractere removido. Ele termina quando a sequência pai está vazia.
fonte
Python 2,
7670 bytesEssa função lambda compara iterativamente cada substring classificada com a substring de destino. As correspondências são contadas e retornadas.
O código não destruído:
e a saída de teste:
fonte
Python 2,
124118 bytesExperimente aqui
Esta é uma função lambda anônima. Provavelmente ainda pode ser ainda mais jogado.
Ungolfed:
fonte
f('aaa','aa')
.import re,itertools as i
salva 6 caracteres. (Eu não ter sabido antes que ele funciona.)