Introdução
Há um tempo atrás, um usuário de SO perdido postou uma pergunta aqui e agora foi excluída, mas acho que seria um bom desafio, então aqui vai ...
Desafio
Escreva um programa ou função completo que use duas cadeias e verifique se alguma permutação da primeira cadeia é uma sub-cadeia da segunda cadeia.
Entrada
Duas strings, uma string e uma sub-string para testar (você pode escolher a ordem).
Saída:
Um valor verdadeiro se a sequência contiver alguma permutação da sub-sequência.
Um valor falsey se a sequência não contiver permutações da sub-sequência.
O teste diferencia maiúsculas de minúsculas.
Exemplos / casos de teste
sub-string string
input d!rl Hello World!
output truthy
input Pog Programming Puzzles & Code Golf
output falsey
input ghjuyt asdfhytgju1234
output truthy
Respostas:
Braquilog , 2 bytes
Experimente online!
Explicação
fonte
JavaScript (ES6), 77 bytes
Retorna 1 ou 0.
Snippet
fonte
Python 2,
6766 bytesRecebe entrada como duas seqüências, primeiro a substring.
fonte
sorted
.05AB1E , 3 bytes
Experimente online!
-1 byte graças a Emigna .
Explicação:
fonte
.
Java 8,
266244 bytesExplicação:
Experimente aqui.
fonte
Action<params>
vez deFunc<params, returnVal>
. Suponho que seria algo semelhante.Consumer
e emaccept(...)
vez deFunction
eapply(...)
quando eu quero ter um lambda com um parâmetro e nenhum tipo de retorno. Atualmente, estou aprendendo Java 8. :) Mas como terei que mudarvoid p(String p,String q)
,p("",p);
ep(p+q.ch...,q.sub...)
parap->q->
,p.apply("").accept(p);
ep.apply(p+q.ch...).accept(q.sub...)
é mais curto usar uma combinação de lambda para o método principal e apenas umvoid p(String p,String q)
método Java 7 para o método recursivo.Function<String, Predicate<String>>
no meu.Geléia , 5 bytes
Experimente online!
-1 obrigado a Emigna por me encorajar a tentar jogar golfe novamente.
Explicação:
fonte
Japonês,
107 bytesExperimente online
Explicação
fonte
Python , 60 bytes
Uma forma alterada da resposta do TFeld - vá dar algum crédito!
Função recursiva retornando o booleano
True
(truthy) ou uma string vazia (falsy).Experimente online!
classifica a subcadeia,
u
e o mesmo comprimento da frente da cadeia,t
(usando uma fatiat[:len(u)]
) se forem iguais, entãoTrue
é retornado; caso contrário, set
ainda é verdade (não está vazio), retorna com uma desenfileiradat
(usando uma fatiat[1:]
) . Set
ficar vazio, eleand
não será executado e esse vaziot
será retornado.fonte
lambda u,t,s=sorted:
para um one-liner, nenhum byte salvo emboraPitão,
98 bytes-1 byte graças a @Erik_the_Outgolfer
Leva duas seqüências de caracteres entre aspas, a segunda das quais é a substring.
Tente!
fonte
s
vez de}1
.Mathematica,
5550 bytes-5 bytes do usuário202729
Retorna
False
se uma permutação da primeira entrada estiver na segunda sequência. RetornaTrue
se uma permutação da primeira entrada não estiver na segunda sequência.Explicação:
fonte
True
/False
.Characters
.CJam ,
1312 bytesExperimente online!
Sinto que o CJam é realmente limitado em comparação com outras línguas do golfe, mas talvez seja apenas eu sendo ruim ...
Estou pensando em mudar para outro. 05AB1E parece divertido.
Corrigido um pequeno erro graças a Erik, o Outgolfer.
Corte uma mordida porque números diferentes de zero são verdadeiros
Explicação:
fonte
a
eabc
?W>
.le!lf{\#)}:+
considerado uma solução válida? Deverá produzir0
se a string não for encontrada e algum número positivo, caso contrário. Um número diferente de zero é válidotruthy
?)
vez deW>
, conforme o esclarecimento do OP.Java 9 JShell , 160 bytes
(novas linhas inseridas para facilitar a leitura)
Experimente online!
Nota: O JShell inclui várias importações por padrão. Como uma solução Java 8 ou Java 9, seria necessário importar:
Para 45 bytes extras ou 205 bytes no total. O link do TIO acima é para um programa Java 9, já que o TIO atualmente não possui o JShell (e não está claro para mim como o JShell funcionaria no TIO).
fonte
C #, 320 bytes
Tenho certeza de que o cálculo das permutações pode ser muito menor, mas não vejo como no momento.
Versão formatada / completa:
fonte
Ruby , 69 bytes
Experimente online!
fonte
Perl 6 , 48 bytes
Retorna uma junção ou da presença de cada permutação como uma substring. Por exemplo, com argumentos
"Hello World!"
e"d!l"
, retorna:... que "é recolhido"
True
em um contexto booleano. Ou seja, junções são valores verdadeiros.fonte
PHP> = 7.1, 91 bytes
Casos de teste
fonte
~$p
vez dea&$p
.,
Haskell, 54 bytes
Usando o poder do Data.List para ambos
isInfixOf
, bem comopermutations
.fonte
R , 103 bytes
Experimente online!
Retorna
TRUE
para verdade eNA
para falsey.fonte
APL (Dyalog) , 18 bytes
Experimente online!
fonte
MATL, 10 bytes
Experimente no MATL Online
fonte