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.Consumery enaccept(...)lugar deFunctionyapply(...)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,
uy la misma longitud del frente de la cadena,t(usando un cortet[:len(u)]) si son iguales y luegoTruese devuelve, de lo contrario sitaún es verdadero (no está vacío) se repite con un dequeuedt(usando un cortet[1:]) . Sitse vacía,andno se ejecuta ytse 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
slugar de}1.Mathematica,
5550 bytes-5 bytes del usuario202729
Devuelve
Falsesi una permutación de la primera entrada está en la segunda cadena. DevuelveTruesi 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
ayabc?W>.le!lf{\#)}:+consideraría una solución válida? Debería salir0si 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"
Trueen un contexto booleano. Es decir, las uniones son valores verdaderos.fuente
PHP> = 7.1, 91 bytes
Casos de prueba
fuente
~$plugar 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
TRUEpor veracidad yNApor falsey.fuente
APL (Dyalog) , 18 bytes
Pruébalo en línea!
fuente
MATL, 10 bytes
Pruébalo en MATL Online
fuente