Le défi
Vous êtes donné:
- une liste non vide et non triée h d'entiers positifs (la botte de foin)
- un entier positif n (l'aiguille)
Votre tâche consiste à renvoyer la liste de toutes les concaténations décimales uniques des permutations de h dont la représentation binaire contient la représentation binaire de n .
Exemples
h = [1, 2, 3]
n = 65Il n'y a qu'une concaténation correspondante, donc le résultat attendu est
[321]
.h = [1, 2, 3]
n = 7Cette fois-ci, trois concaténations contiennent le motif binaire 111 . La sortie attendue est
[123, 231, 312]
.h = [12, 3]
n = 7Seules deux permutations sont disponibles et les deux correspondent. La sortie attendue est
[123, 312]
.h = [1, 2, 2]
n = 15La seule concaténation correspondante est 122 ( 1111010 en binaire, qui contient 1111 ), donc le résultat attendu est
[122]
. Notez que deux permutations conduisent à 122 mais que vous n'êtes pas autorisé à sortir[122, 122]
.
Clarifications et règles
- Vous pouvez prendre l’aiguille comme un entier (
65
), une chaîne représentant une valeur décimale ("65"
) ou une chaîne représentant une valeur binaire ("1000001"
). - Vous pouvez prendre la pile de foin comme un tableau / objet / ensemble d'entiers
[11,12,13]
natif ( ), un tableau / objet / un ensemble de chaînes représentant des valeurs décimales (["11","12","13"]
) ou une chaîne délimitée de valeurs décimales ("11 12 13"
ou"11,12,13"
). Vous pouvez également opter pour une variante utilisant des tableaux de chiffres (comme[[1,1],[1,2],[1,3]]
). - La sortie doit suivre l’un des formats décrits ci-dessus pour la meule de foin, mais pas nécessairement le même.
- Vous n'êtes pas censé gérer des meules de foin dont la concaténation décimale la plus élevée est supérieure au nombre entier non signé représentable le plus élevé dans votre langue.
- En dehors de cela, votre code devrait théoriquement prendre en charge toute entrée, en supposant qu'il dispose de suffisamment de temps et de mémoire.
- C'est
SPARTA!code-golf , donc la réponse la plus courte en octets est gagnante!
Cas de test
Haystack | Needle | Output
---------------------+----------+-----------------------------------
[ 1, 2, 3 ] | 65 | [ 321 ]
[ 1, 2, 3 ] | 7 | [ 123, 231, 312 ]
[ 12, 3 ] | 7 | [ 123, 312 ]
[ 1, 2, 2 ] | 15 | [ 122 ]
[ 1, 2 ] | 7 | []
[ 12, 34, 56 ] | 21 | [ 125634, 341256, 345612, 563412 ]
[ 1, 2, 3, 4, 5 ] | 511 | [ 53241 ]
[ 1, 3, 5, 7, 9 ] | 593 | [ 37519, 51793, 75913, 75931 ]
[ 11, 12, 13, 14 ] | 12141311 | [ 12141311 ]
[ 1, 2, 1, 2, 1, 2 ] | 1015 | [ 221112 ]
la source
set([(1, 2, 2)])
. Est-ce valide ou devrais-je m'en débarrasserset
?["12","3"]
il["1","23"]
y a deux meules de foin distinctes.Réponses:
05AB1E ,
10 à8 octetsPrend l'aiguille en binaire pour enregistrer 1 octet.
-2 octets grâce à Emigna
Essayez-le en ligne!
la source
Python 2, 90 octets
-3 octets grâce à @ Gábor Fekete
Essayez-le en ligne
Prend en tant que tableau d'entrée de chaînes, représentant les entrées de foin et de chaînes, représentant l'aiguille en binaire
la source
{...}
au lieu deset(...)
sauver 3 octets.H=['1'], N='0'
.Java 10,
320312305297292 octetsEntrée en tant que liste et chaîne binaire, sortie en tant que chaînes sur les nouvelles lignes.
Explication:
Essayez ici.
la source
l->n->{...
aprèsvoid p(...
car le lambda est la réponse à l'invite et la fonction est requise pour que le lambda fonctionne. Un consensus sur les "expressions de fonction" est quelque chose comme "la dernière" expression "de votre soumission peut être une" expression de fonction "si, lorsqu'elle est stockée dans une variable, elle répond aux exigences d'une réponse de fonction" IIRC. Mais ce n’est qu’un problème de formatage, et subjectif en plus.void
c'était plus court qu'un deuxième lambda et le multiple.apply
. Je n'ai pas vérifié pour cette réponse (c'est-à-direvoid p(List l,int k)
& 2xp(l,0)
contre(l,k)->
& 2xp.apply(l,0)
). Hmm .. le second semble être plus court d'un octet dans ce cas. Mais vous dites que les règles stipulent que vous n'êtes autorisé à avoir qu'une méthode lambda? Encore un peu confus pourquoi cela doit être le dernier. Personnellement , je posterai toujours mes réponses dans cet ordre:imports; class-fields; main-method/lambda; other methods
.imports;helper methods;lambda
void p(List l,int k)
& 2xf(l,0);
contref=(l,p)->
& 2x à lap.apply(l,0);
place (ce qui signifie que la version actuelle est plus courte de 1 octet). En ce qui concerne la commande, je m'en tiendrai à cela puisque je l'ai fait avec toutes mes réponses, et il est également logique pour moi personnellement de commencer par la méthode principale de l'explication, puis la (les) méthode (s) d'aide si il y en a.f=(lambda)
à Java, c'estjava.util.function.BiConsumer<List,Integer>f=(l,p)->{...}
Japt ,
1514131210 octetsPrend la botte de foin comme un tableau d’entiers et l’aiguille comme une chaîne binaire. Sort un tableau de chaînes entières.
L'essayer
Explication
la source
®¬nÃ
enregistre un octet sur le mappage. (Je passerais égalementâ
au milieu du programme pour me débarrasser du deuxièmeÃ
; ne garde aucun octet, mais il est un peu plus efficace et semble un peu mieux)â
était une solution rapide clouée sur la fin quand Arnauld a que j'avais oublié de supprimer les doublons du tableau final , mais, vous avez raison, en supprimant les doublons avant d' exécuter le filtre serait plus efficace.Ruby ,
6159 octetsEssayez-le en ligne!
Fonctionnalité intéressante du jour: je ne savais pas que je pouvais sortir la représentation binaire d'une chaîne contenant un nombre.
Exemple:
la source
JavaScript (ES6), 140 octets
Prend l'aiguille comme une chaîne binaire.
Afficher l'extrait de code
la source
Brachylog , 15 octets
Essayez-le en ligne!
Explication
la source
Mathematica,
170156 octetscontribution
sortie
la source
v[#2, 2]
.CJam,
23222119 octetsC'est un bloc qui prend des entrées
n h
sur la pile et laisse la sortie sous forme de tableau sur la pile.Explication:
la source
R, 114 octets
Utilise un tas de paquets.
pryr::f()
crée automatiquement une fonction, en prenantp
, une chaîne du motif binaire à rechercher, etx
un vecteur avec l'autre entrée en entrée.combinat::permn
crée toutes les permutations dex
.R.utils::intToBin
est une version agréable et verbeuse permettant de convertir une représentation numérique (ou la représentation d’un caractère numérique) en un nombre binaire, déjà stocké de manière pratique sous forme de caractère. Donc, appliquez ceci sur toutes les permutations et affichez-les si la chaîne binairep
est contenue dans la version binaire de la concaténation. Une nouvelle ligne explicite est imprimée, sinon le résultat serait12 56 3456 34 1234 56 1234 12 56
.plyr
'sl_ply
est utilisé pour surpresser la sortie d'une liste null, en plus de la sortie normale. Si une sortie comme celle-ci est autorisée:Ensuite, nous pouvons économiser quelques octets en utilisant
lapply
place:108 octets:
Si une sortie comme celle-ci est autorisée:Ensuite, nous pouvons le faire encore plus court:
101 octets:
Interdit.la source
Perl 6 , 69 octets
la source