Introducción
Hace un tiempo, un usuario SO perdido publicó una pregunta aquí y ahora se ha eliminado, pero creo que sería un buen desafío, así que aquí va ...
Reto
Escriba un programa o función completa que tome dos cadenas y verifique si alguna permutación de la primera cadena es una subcadena de la segunda cadena.
Entrada
Dos cadenas, una cadena y una subcadena para probar (puede elegir el orden).
Salida:
Un valor verdadero si la cadena contiene alguna permutación de la subcadena.
Un valor falso si la cadena no contiene permutaciones de la subcadena.
La prueba distingue entre mayúsculas y minúsculas.
Ejemplos / casos de prueba
sub-string string
input d!rl Hello World!
output truthy
input Pog Programming Puzzles & Code Golf
output falsey
input ghjuyt asdfhytgju1234
output truthy
Respuestas:
Brachylog , 2 bytes
Pruébalo en línea!
Explicación
fuente
JavaScript (ES6), 77 bytes
Devuelve 1 o 0.
Retazo
fuente
Python 2,
6766 bytesToma la entrada como dos cadenas, la subcadena primero.
fuente
sorted
.05AB1E , 3 bytes
Pruébalo en línea!
-1 byte gracias a Emigna .
Explicación:
fuente
.
Java 8,
266244 bytesExplicación:
Pruébalo aquí
fuente
Action<params>
lugar deFunc<params, returnVal>
. Supongo que sería algo similar.Consumer
y enaccept(...)
lugar deFunction
yapply(...)
cuando quiero tener una lambda con un parámetro y sin tipo de retorno. Actualmente estoy aprendiendo Java 8. :) Pero como tendré que cambiarvoid p(String p,String q)
,p("",p);
yp(p+q.ch...,q.sub...)
parap->q->
,p.apply("").accept(p);
yp.apply(p+q.ch...).accept(q.sub...)
es más corto usar una combinación de lambda para el método principal, y solo unvoid p(String p,String q)
método Java 7 para el método recursivo.Function<String, Predicate<String>>
en el mío.Jalea , 5 bytes
Pruébalo en línea!
-1 gracias a Emigna por animarme a reintentar el golf.
Explicación:
fuente
Japt,
107 bytesPruébalo en línea
Explicación
fuente
Python , 60 bytes
Una forma alterada de la respuesta de TFeld : ¡ve a dar algo de crédito!
Función recursiva que devuelve el booleano
True
(verdadero) o una cadena vacía (falso).Pruébalo en línea!
clasifica la subcadena,
u
y la misma longitud del frente de la cadena,t
(usando un cortet[:len(u)]
) si son iguales y luegoTrue
se devuelve, de lo contrario sit
aún es verdadero (no está vacío) se repite con un dequeuedt
(usando un cortet[1:]
) . Sit
se vacía,and
no se ejecuta yt
se devuelve este vacío .fuente
lambda u,t,s=sorted:
para una línea, sin embargo, no se guarda ningún bytePyth,
98 bytes-1 byte gracias a @Erik_the_Outgolfer
Toma dos cadenas citadas, la segunda de las cuales es la subcadena.
¡Intentalo!
fuente
s
lugar de}1
.Mathematica,
5550 bytes-5 bytes del usuario202729
Devuelve
False
si una permutación de la primera entrada está en la segunda cadena. DevuelveTrue
si una permutación de la primera entrada no está en la segunda cadena.Explicación:
fuente
True
/False
.Characters
.CJam ,
1312 bytesPruébalo en línea!
Siento que CJam es realmente limitado en comparación con otros idiomas de golf, pero tal vez solo soy yo siendo malo ...
Estoy pensando en mudarme a otro. 05AB1E parece divertido.
Se corrigió un pequeño error gracias a Erik the Outgolfer.
Cortó una mordida porque los números que no son cero son verdaderos
Explicación:
fuente
a
yabc
?W>
.le!lf{\#)}:+
consideraría una solución válida? Debería salir0
si la cadena no se encuentra y algún número positivo de lo contrario. ¿Es válido un número distinto de cerotruthy
?)
lugar deW>
, según la aclaración de OP.Java 9 JShell , 160 bytes
(líneas nuevas insertadas para facilitar la lectura)
Pruébalo en línea!
Nota: JShell incluye varias importaciones por defecto. Como una solución Java 8 o Java 9, sería necesario importar:
Para 45 bytes adicionales, o 205 bytes en total. El enlace TIO anterior es a un programa Java 9 ya que TIO actualmente no tiene JShell (y no tengo claro cómo JShell funcionaría en TIO).
fuente
C #, 320 bytes
Estoy seguro de que calcular las permutaciones puede ser mucho más corto, pero no puedo ver cómo en este momento.
Versión formateada / completa:
fuente
Ruby , 69 bytes
Pruébalo en línea!
fuente
Perl 6 , 48 bytes
Devuelve una unión o de la presencia de cada permutación como una subcadena. Por ejemplo, con argumentos
"Hello World!"
y"d!l"
, devuelve:... que "colapsa"
True
en un contexto booleano. Es decir, las uniones son valores verdaderos.fuente
PHP> = 7.1, 91 bytes
Casos de prueba
fuente
~$p
lugar dea&$p
.,
Haskell, 54 bytes
Usando el poder de Data.List para ambos
isInfixOf
, así comopermutations
.fuente
R , 103 bytes
Pruébalo en línea!
Vuelve
TRUE
por veracidad yNA
por falsey.fuente
APL (Dyalog) , 18 bytes
Pruébalo en línea!
fuente
MATL, 10 bytes
Pruébalo en MATL Online
fuente