Dadas dos cadenas, una cadena principal y una cadena de consulta, respectivamente, su tarea es determinar cuántas veces la cadena de consulta o un anagrama de la cadena de consulta ; aparece en la cadena principal, en una búsqueda que distingue entre mayúsculas y minúsculas.
Ejemplos de comportamiento
Entrada 1
AdnBndAndBdaBn
dAn
Salida 1
4
Explicación Las subcadenas se resaltan en negrita a continuación:
Adn BndAndBdaBn
AdnB ndA ndBdaBn
AdnBn dAn dBdaBn
AdnBnd y BdaBn
Tenga en cuenta que la búsqueda DEBE ser sensible a mayúsculas y minúsculas para todas las búsquedas.
Entrada 2
AbrAcadAbRa
cAda
Salida 2
2
Esto debe funcionar solo para ASCII estándar. Este es el código de golf, por lo que el menor número de caracteres obtendrá la aprobación. También publique una versión de su código que no sea de golf junto con la versión de golf.
fuente
abacacaba
aac
Respuestas:
Pyth,
1110 bytes1 byte de golf gracias a @Jakube.
Demostración.
Toma la cadena de consulta, seguida de la cadena principal en una nueva línea.
Sin golf:
fuente
CJam, 13 bytes
(12 bytes, si se permite la superposición)
La entrada es como:
es decir
Gracias a Dennis por guardar 3 bytes en el escenario superpuesto
Pruébalo en línea aquí
fuente
ll1$,ew:$\$e=
l$_,lew:$\e=
Pero no estoy seguro de si esto sería válido ahora que OP ha dicho que no se permite la superposición. Déjame ver si puedo reducir mi actual.JavaScript ES6, 95 bytes
Esta es una función que toma dos argumentos como este:
f(parent,query)
.Atraviesa todas las subcadenas de la cadena principal de la longitud de la cadena de consulta y las ordena. Si son iguales a la cadena de consulta ordenada, se incrementa
n
. La cadena de clasificación es molesta porque debe convertirse en una matriz, ordenarse y volverse a convertir en una cadena. Código sin golf y comprobable a continuación.fuente
Haskell,
7768 bytesUso:
Cómo funciona: la cadena principal es
p
, la cadena de consulta ess
.tails
crea una lista de sus parámetros con la eliminación sucesiva del primer elemento, por ejemplotails "abcd" -> ["abcd","bcd","cd","d",""]
. Para cada elementox
de esta lista, tome un1
si los primerosn
elementos ordenados (donden
es la longitud des
) son iguales a los ordenadoss
. Suma el1
s.Editar: en
tails
lugar de recurrencia explícitafuente
Python, 61 bytes
Este es un algoritmo recursivo. Comprueba si los caracteres iniciales de la cadena principal, una vez ordenados, son los mismos que los de la cadena de consulta, ordenados. Luego, es recursivo en la cadena principal con su primer carácter eliminado. Termina cuando la cadena principal está vacía.
fuente
Python 2,
7670 bytesEsta función lambda compara iterativamente cada subcadena ordenada con la subcadena de destino. Los partidos se cuentan y se devuelven.
El código sin golf:
y la salida de prueba:
fuente
Python 2,
124118 bytesPruébalo aquí
Esta es una función lambda anónima. Probablemente todavía se pueda jugar más al golf.
Sin golf:
fuente
f('aaa','aa')
.import re,itertools as i
ahorra 6 caracteres. (No sabía antes que funciona).