introduction
Il y a quelque temps, un utilisateur perdu de SO a posté une question ici et elle a maintenant été supprimée, mais je pense que ce serait un bon défi, alors c'est parti ...
Défi
Écrivez un programme ou une fonction complète qui prend deux chaînes et vérifie si une permutation de la première chaîne est une sous-chaîne de la deuxième chaîne.
Contribution
Deux chaînes, une chaîne et une sous-chaîne à tester (vous pouvez choisir l'ordre).
Sortie:
Une valeur vraie si la chaîne contient une permutation de la sous-chaîne.
Une valeur de falsey si la chaîne ne contient aucune permutation de la sous-chaîne.
Le test est sensible à la casse.
Exemples / cas de test
sub-string string
input d!rl Hello World!
output truthy
input Pog Programming Puzzles & Code Golf
output falsey
input ghjuyt asdfhytgju1234
output truthy
Réponses:
Brachylog , 2 octets
Essayez-le en ligne!
Explication
la source
JavaScript (ES6), 77 octets
Renvoie 1 ou 0.
Fragment
la source
Python 2,
6766 octetsPrend l'entrée sous forme de deux chaînes, la sous-chaîne en premier.
la source
sorted
.05AB1E , 3 octets
Essayez-le en ligne!
-1 octet grâce à Emigna .
Explication:
la source
.
Java 8,
266244 octetsExplication:
Essayez-le ici.
la source
Action<params>
place deFunc<params, returnVal>
. Je suppose que ce serait quelque chose de similaire.Consumer
etaccept(...)
au lieu deFunction
etapply(...)
quand je veux avoir un lambda avec un paramètre et pas de type de retour. Je suis actuellement apprendre Java 8. :) Mais depuis que je vais devoir changervoid p(String p,String q)
,p("",p);
etp(p+q.ch...,q.sub...)
àp->q->
,p.apply("").accept(p);
etp.apply(p+q.ch...).accept(q.sub...)
il est plus court d'utiliser une combinaison de lambda pour la méthode principale, et juste un Java 7void p(String p,String q)
méthode pour la méthode récursive.Function<String, Predicate<String>>
dans le mien.Gelée , 5 octets
Essayez-le en ligne!
-1 merci à Emigna de m'avoir encouragé à réessayer le golf.
Explication:
la source
Japt,
107 octetsEssayez-le en ligne
Explication
la source
Python , 60 octets
Une forme modifiée de la réponse de TFeld - allez donner un crédit!
Fonction récursive renvoyant le booléen
True
(vérité) ou une chaîne vide (fausse).Essayez-le en ligne!
trie la sous-chaîne,,
u
et la même longueur de l'avant de la chaîne ,, (ent
utilisant une tranchet[:len(u)]
) si elles sont les mêmes, puisTrue
est renvoyée, sinon si ellet
est toujours véridique (non vide) revient avec une mise en file d'attentet
(en utilisant une tranche,t[1:]
) . Sit
devient vide, leand
n'est pas exécuté et ce videt
est renvoyé.la source
lambda u,t,s=sorted:
pour unPyth,
98 octets-1 octet grâce à @Erik_the_Outgolfer
Prend deux chaînes entre guillemets, dont la seconde est la sous-chaîne.
Essayez!
la source
s
place de}1
.Mathematica,
5550 octets-5 octets de user202729
Résultats
False
si une permutation de la première entrée se trouve dans la deuxième chaîne. RenvoieTrue
si une permutation de la première entrée n'est pas dans la deuxième chaîne.Explication:
la source
True
/False
.Characters
.CJam ,
1312 octetsEssayez-le en ligne!
J'ai l'impression que CJam est vraiment limité par rapport aux autres langues de golf, mais c'est peut-être juste moi qui suis mauvais ...
Je pense à passer à un autre. 05AB1E semble amusant.
Correction d'un petit bug grâce à Erik l'Outgolfer
Coupez une bouchée car les nombres non nuls sont véridiques
Explication:
la source
a
etabc
?W>
.le!lf{\#)}:+
considéré comme une solution valable? Il devrait sortir0
si la chaîne n'est pas trouvée et un certain nombre positif sinon. Un nombre non nul est-il validetruthy
?)
place deW>
, selon la clarification du PO.Java 9 JShell , 160 octets
(nouvelles lignes insérées pour plus de lisibilité)
Essayez-le en ligne!
Remarque: JShell inclut un certain nombre d'importations par défaut. En tant que solution Java 8 ou Java 9, il serait nécessaire d'importer:
Pour 45 octets supplémentaires, soit 205 octets au total. Le lien TIO ci-dessus est vers un programme Java 9 car TIO n'a pas actuellement JShell (et je ne sais pas comment JShell fonctionnerait sur TIO).
la source
C #, 320 octets
Je suis sûr que le calcul des permutations peut être beaucoup plus court mais je ne vois pas comment pour le moment.
Version formatée / complète:
la source
Rubis , 69 octets
Essayez-le en ligne!
la source
Perl 6 , 48 octets
Renvoie une jonction or de la présence de chaque permutation en tant que sous-chaîne. Par exemple, avec les arguments
"Hello World!"
et"d!l"
, renvoie:... qui "s'effondre"
True
dans un contexte booléen. Autrement dit, les jonctions sont des valeurs véridiques.la source
PHP> = 7.1, 91 octets
Cas de test
la source
~$p
au lieu dea&$p
.,
Haskell, 54 octets
Utiliser la puissance de Data.List pour les deux
isInfixOf
ainsi quepermutations
.la source
R , 103 octets
Essayez-le en ligne!
Retourne
TRUE
pour véridique etNA
pour falsey.la source
APL (Dyalog) , 18 octets
Essayez-le en ligne!
la source
MATL, 10 octets
Essayez-le sur MATL Online
la source