Grâce à la communauté PPCG, le Père Noël a réussi à reconditionner tous ses cadeaux et après la chaîne de montage, les cadeaux sont maintenant prêts à être déplacés sur les quais de transport!
Chacun des quais de transport du Père Noël ne contient qu'une gamme de tailles actuelles parce que les traîneaux de transport sont spécialisés pour une taille spécifique (tout plus léger et ce serait du gaspillage, plus lourd et le traîneau ne serait pas en mesure de gérer la charge). Ainsi, il a besoin de vous pour l'aider à prendre ses cadeaux et à les trier dans les bons quais de transport.
Défi
Compte tenu d'une liste et des gammes de quais de transport, organisez de manière stable les cadeaux dans le bon ordre.
Prenons ceci par exemple: les cadeaux sont [5, 3, 8, 6, 2, 7]
et les gammes de dock sont [[1, 5] and [6, 10]]
.
Les présents 5
, 3
et 2
vont dans le premier quai et les cadeaux 8
, 6
et 7
vont dans le deuxième quai. Cela peut être montré comme [[5, 3, 2], [8, 6, 7]]
. Cette liste sera plus proche d'être triée que l'entrée, mais stably
signifie que dans chaque dock, l'ordre des cadeaux doit être le même que l'ordre de l'entrée (sinon vous pouvez simplement trier la liste entière).
Votre sortie finale pour ce cas serait [5, 3, 2, 8, 6, 7]
(sous forme de liste plate).
Spécifications de formatage
Vous recevrez entrée comme une liste plate des entiers et une liste des plages dans un format raisonnable (par exemple, la plage pour le cas ci - dessus pourrait être donnée [[1, 5], [6, 10]]
, [1, 5, 6, 10]
ou [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]
). Votre sortie doit être une liste plate d'entiers dans n'importe quel format raisonnable.
L'entrée peut contenir des valeurs en double; dans ce cas, vous devez en renvoyer toutes les instances. Toutes les tailles actuelles seront dans une seule plage de tailles, et vous pouvez supposer que les plages ne se chevaucheront jamais. Il peut y avoir des écarts dans les plages tant que toutes les tailles actuelles sont couvertes.
Règles
- Les échappatoires standard s'appliquent
- Il s'agit de code-golf , donc la réponse la plus courte en octets l'emporte
- Aucune réponse ne sera acceptée
- Vous pouvez supposer qu'il n'y aura pas de plages vides (
[7, 4]
serait invalide car les plages augmentent)
Cas de test
[1, 2, 3, 4, 5, 6, 7] ; [[1, 3], [4, 7]] => [1, 2, 3, 4, 5, 6, 7]
[1, 2, 3, 4, 5, 6, 7] ; [[4, 7], [1, 3]] => [4, 5, 6, 7, 1, 2, 3]
[7, 3, 5, 4, 6, 1, 2] ; [[1, 3], [4, 5], [6, 7]] => [3, 1, 2, 5, 4, 7, 6]
[4, 7, 6, 3, 5, 2, 1] ; [[1, 4], [5, 7]] => [4, 3, 2, 1, 7, 6, 5]
[1, 1, 3, 3, 6, 4, 7] ; [[1, 4], [6, 7]] => [1, 1, 3, 3, 4, 6, 7]
Remarque: je me suis inspiré de cette série de défis d' Advent Of Code . Je n'ai aucune affiliation avec ce site
Vous pouvez voir une liste de tous les défis de la série en consultant la section 'Linked' du premier défi ici .
la source
Réponses:
Haskell , 26 octets
Essayez-le en ligne! Exemple d'utilisation:
[1,2,3,4,5,6,7] # [[1,2,3],[4,5,6,7]]
rendements[1,2,3,4,5,6,7]
.la source
Gelée , 4 octets
Essayez-le en ligne!
Prend l'entrée comme liste actuelle, plages complètes.
la source
fþF
fonctionne aussi dans Jelly, pour 3 octets . Le mérite revient à Adnan .Mathematica, 39 octets
-22 octets de JungHwan Min
-4 octets de Martin
Essayez-le en ligne!
la source
Range
en prenant simplement les plages étendues en entrée.Pyth , 5 octets
Essayez-le ici!
Pyth , 10 octets
Essayez-le ici!
Comment ils travaillent
Prend d'abord les quais, avec tous les entiers dans les plages, puis les cadeaux sur une nouvelle ligne.
la source
Python 2 ,
4946 octetsmerci à @HyperNeutrino pour -3 octets
Essayez-le en ligne!
Non golfé
Essayez-le en ligne!
la source
05AB1E , 3 octets
Essayez-le en ligne! (merci à Adnan de m'avoir fait savoir qu'il
δ
existe, -1 octet)Comment ça fonctionne
la source
€Ã˜
cela ne semble pas fonctionner.€Ã˜
échec est parce queÃ
prend deux arguments et€
attend une fonction avec un argument, donc elle retourne à la[[]]
place (je pense que c'est un bug), donc˜
elle s'aplatira, revenant[]
.ε
, cependant, fonctionne différemment. Pour chaque élément de l'élément supérieur, il crée une nouvelle pile, puis renvoie le haut de chaque nouvelle pile, donc lorsqu'il n'y a pas suffisamment d'éléments pour une fonction, il prend à la place une entrée implicite.δØ
que recherchez-vous?Rétine ,
3736 octetsEssayez-le en ligne! Prend l'entrée comme une liste de cadeaux sur la première ligne et une liste de plages sur la deuxième ligne; le lien comprend un en-tête pour diviser les cas de test dans le format souhaité. Edit: 1 octet enregistré grâce à @MartinEnder. Explication: La première étape correspond aux cadeaux et trouve le quai correspondant. Les cadeaux sont triés par sous-chaîne du début de la ligne à la
[
, regroupant ainsi les cadeaux par dock. La deuxième étape supprime ensuite les quais.la source
Inscrire , 3 octets
Essayez-le en ligne!
Comment ça fonctionne
la source
APL + WIN, 29 octets
Demande une saisie d'écran pour les nombres entiers et les plages. Les entiers sous forme de liste plate et les plages sous forme de vecteur imbriqué, par exemple le cas 3:
Explication:
la source
C ++, 127 octets
Prenez l'entrée comme deux tableaux représentés par des paires de pointeurs
[start, end)
.Essayez-le en ligne!
la source
[&](int a)->int{a=a>=
au lieu de[&](int a){return a>=
n'enregistre aucun octet. /#import<algorithm>
peut être#import<regex>
, au moins sur TIO. J'ai trouvé qu'après une recherche exhaustive ("recherche binaire manuelle") tous les en-têtes répertoriés dans cette page et celui-ci est le plus court. / Aussi, +1 de ma part.J, 15 octets
Prend l'entrée comme argument de gauche et les plages comme argument de droite . Les plages sont des listes encadrées des plages complètes.
par exemple pour la première gamme:
Essayez-le en ligne!
Explication
la source
J ,
2624 octets2 octets grâce au cole
Comment ça fonctionne:
L'argument de gauche contient les plages.
-&1 0"1@[
diminue la limite inférieure de chaque plage de 1I."1]
vérifie dans quelle gamme s'adapte chaque cadeau1=
est-ce dans la bonne plage]<@#~
copie et encadre les cadeaux qui se trouvent dans la gamme actuelle;
- raze (déballage)Essayez-le en ligne!
la source
(0 4,:_3 _1) f _2 _1 0 1 2
)R ,
113485541 octetsUne version précédente ne triait pas correctement les objets lorsque les quais n'étaient pas dans l'ordre croissant.
Essayez-le en ligne!
Prend
D
comme une liste de vecteurs de plages, c'est-à-dire,list(4:7,1:3)
serait[[4, 7], [1, 3]]
.Probablement la réponse naïve à laquelle j'aurais dû arriver il y a très longtemps; imprime sur stdout.
la source
Japt , 6 octets
Essayez-le
Explication
Entrée implicite du tableau
U
(présents) et du tableau 2DV
(plages complètes). Trier (ñ
) les cadeaux en les passant par une fonction (@
) qui obtient l'index du premier élément (b
)V
qui contient (ø
) le présent actuel (X
).la source
Python 2,
9785 octets-11 octets de ovs
-1 octet de M. Xcoder
Essayez-le en ligne!
Trie la liste en utilisant un lambda récursif comme clé. Explication à
venir ™ci-dessous.Explication:
la source
Javascript ES6,
534745 octetsEssayez-le en ligne!
la source
PowerShell , 37 octets
Essayez-le en ligne!
Prend
$a
comme un tableau littéral des présents et$b
comme un tableau de tableaux, dont chacun est la gamme complète (par exemple,@(1,2,3,4,5)
au lieu de@(1,5)
). Nous bouclons ensuite chaque élément$b
avec|%{...}
. À l'intérieur, nous devons définir un assistant$i
pour être l'élément actuel, puis utiliser uneWhere-Object
clause contre$a
pour extraire uniquement les éléments qui constituent-in
le$b
tableau actuel .Ceux-ci sont laissés sur le pipeline et la sortie est implicite. Puisque le comportement par défaut de
Write-Output
insère une nouvelle ligne entre les éléments du tableau, c'est ce que nous obtenons. Voici une version légèrement modifiée qui est-join
éditée ensemble via des virgules au lieu d'une nouvelle ligne, juste pour montrer les différences.la source
Rouge , 73 octets
Essayez-le en ligne!
la source
C # (.NET Core) , 50 + 18 octets
+18 octets de
Il faut une collection de cadeaux et une collection de tableaux pour les quais.
Essayez-le en ligne!
la source
Windows Batch (CMD),
9079 octetsUtilisez le format de fin de ligne LF. Chaque caractère de fin de ligne peut être compté comme 1 octet.
Pas de TIO (car TIO utilise Linux)
Prenez la liste à partir des arguments de ligne de commande et s'étend de
stdin
.Par exemple, si le programme est exécuté (supposez que le fichier est nommé
r1.cmd
)et avec
stdin
entrée, le programme sortira au
stderr
format(correspond à la séquence de sortie
3 1 2 5 4 7 6
)Explication:
Code non golfé (avec l'interaction activée si
true
est passé comme argument 1; demander la liste à partir destdin
, utilisergoto
pour éviter le débordement de pile - en fait, j'ai juste essayé d'exécuter un script qui s'appelle plus de 70000 fois sans voir aucun problème, donc je suppose qu'il devrait être assez sûr):la source
(%*)
. Cela fait, vous pouvez ensuite utiliser%0 %*
pour redémarrer le script après avoir traité chaque plage. ( En fait , je fini avec un plus grand nombre d'octets , car je votre version interactive avec les gentilles petites attentions&&
,exit/b
etecho
comme point de départ.)%1
mais les guillemets"
font que l'espace ne fonctionne pas comme séparateurs, donc j'ai fini par utiliserset /p
.$~1
...Nettoyer , 59 octets
Essayez-le en ligne!
Prend deux listes, renvoie une liste.
la source
Wolfram Language (Mathematica) , 34 octets
Essayez-le en ligne!
est l'Function
opérateur.Il s'agit d'une fonction au curry sans nom qui doit être appelée d'abord avec la liste des plages de dock (étendues), puis avec la liste des cadeaux. Par exemple, si vous affectez la fonction à
f
:La liste des cadeaux est simplement triée par la position de premier niveau de la valeur dans la liste des plages de quais. Nous devons encapsuler la
SortBy
fonction dans une liste pour rendre le tri stable.la source
Julia 0,6 ,
3130 octetsEssayez-le en ligne!
Redéfinit l'
%
opérateur et cartographie l'intersection définie∩()
sur les quais end
maintenant l'ordre et la multiplicité du premier imput, la liste des cadeauxp
.vcat
avec l'entrée étendue à plusieurs arguments via...
aplatit le tableau imbriqué résultant.Modifier, -1 octet: liste la compréhension au lieu de
map()
.la source