Défi
Robin aime avoir sa déclaration de variables sous la forme d'une flèche. Voici comment il le fait:
- Saisissez un nombre quelconque de chaînes
- Commandez-les par longueur croissante
Sortez-les classés par le milieu pour former à peu près une pointe de flèche négative, comme ceci (selon l'ordre de golf le meilleur):
5 or 4 3 2 1 1 2 3 4 5
Cas de test
Contribution:
bow
arrows
sheriffOfNottingham
kingRichard
maidMarian
princeJohn
sherwoodForest
Sortie:
sheriffOfNottingham
kingRichard
maidMarian
bow
arrows
princeJohn
sherwoodForest
Contribution:
a
bb
cc
Sortie (les deux sont valides):
bb
a
cc
cc
a
bb
Contribution:
one
four
seven
fifteen
Sortie possible (la seule autre sortie valide est son miroir vertical):
seven
one
four
fifteen
Remarques
Les chaînes sont en camelCase et n'ont pas de chiffres ou de caractères spéciaux, seulement des lettres minuscules et majuscules.
L'entrée peut être ce que vous voulez: séparée par des virgules comme une chaîne, un tableau, ... Tout format d'E / S est autorisé.
- Entre les chaînes de même longueur, toute commande est acceptée.
Réponses:
Python 2 , 47 octets
Essayez-le en ligne!
la source
[::-2]
directement pour économiser 5 octets.R ,
6348 octetsEssayez-le en ligne!
Trier par longueur de chaîne, puis combiner la liste inversée avec la liste triée, enfin, prendre tous les 2 éléments, en commençant à l'index 1 basé sur 1.
la source
o<-L[...
L'autre façon de «variables fléchées». Un côté moins important,pryr::f(...)
fonctionne ici pour 46. Essayez-le en ligne!R + pryr
c'est pourquoi j'évite généralement de le faire à moins qu'il n'y ait une bonne raison - comme pour les questions de théorie des nombres,numbers
est indispensable.Javascript 77 octets
Prend l'entrée comme un tableau de chaînes, génère un tableau de chaînes triées par flèche.
Explication
la source
f=
. 77f=x=>x?f(x-1)
. Si c'est le cas, vous devez l'incluref
puisque vous l'appelez dans votre fonction. Cependant, puisque vous n'utilisez pas la récursivité, vous ne devriez pas avoir à l'incluref
. Il y a plusieurs postes dans Meta, celui-ci semble l'expliquer un peu mieux. codegolf.meta.stackexchange.com/a/9032/8340C # (Visual C # Interactive Compiler) , 89 octets
Essayez-le en ligne!
la source
K (oK) , 24 octets
Solution:
Essayez-le en ligne!
Explication:
Générez la
6 4 2 0 1 3 5
séquence, utilisez-la pour indexer les longueurs d'entrée croissantes et utilisez-la pour indexer dans le tableau d'origine:la source
Gelée ,
98 octetsEssayez-le en ligne!
est également de 8 octets.
Merci à @EriktheOutgolfer et @JonathanAllan d'avoir tous deux proposé des golfs pour économiser un octet.
la source
Ṛ€1¦
peut devenirm"-
.LÞŒœṚ;¥/
Rubis , 51 octets
Essayez-le en ligne!
la source
05AB1E ,
65 octets1 octet enregistré grâce à Kevin Cruijssen
I / O est une liste de chaînes.
Le lien est modifié pour les E / S séparées par des sauts de ligne pour un test plus facile.
Essayez-le en ligne!
Explication
la source
R
et remplacer«
pari
pour enregistrer un octet, car la troisième règle à puces autorise les deux versions de l'imbrication.J , 11 octets
Essayez-le en ligne!
Nous trions d'abord.
Ensuite, nous réduisons le formulaire de liste de droite à gauche, mais en alternant de quel côté nous mettons le nouvel élément. Terminé.
la source
PowerShell , 66 octets
Essayez-le en ligne!
Prend l'entrée via l'éclaboussement, qui se manifeste sur TIO en tant qu'arguments de ligne de commande distincts.
sort
S sur lal
ongueur, les magasins qui en$a
, et construit une gamme allant1
jusqu'à lacount
des chaînes d'entrée. Nous retirons ensuite uniquement les impairs?{$_%2}
et les alimentons en boucle|%{...}
. A chaque itération, nous mettons le "dernier", puis le "troisième du dernier", et ainsi de suite sur le pipeline avec$a[-$_]
. Par ailleurs, nous accumulons également dans$x
la « deuxième de la dernière », « quatrième de la dernière », etc. Sur la boucle et la canalisation est rincée ( de sorte que ces éléments sont émis) puis nous affichons$x
. Dans les deux cas, la sortie par défaut nous donne automatiquement des sauts de ligne entre les éléments.la source
PHP ,
144141 octetsEssayez-le en ligne!
-3 octets grâce à @Ismael Miguel !
la source
[array_unshift,array_push][++$i%2]($e,$d)
?['array_push','array_unshift']
avec[++$i%2]
comme index du tableau alternant entre une0
ou1
deux évaluations à l'autre fonction à chaque fois. Les "fonctions variables" de PHP vous permettent d'affecter une variable à une fonction et de l'exécuter en appelant entre parenthèses (ex:$f='array_push'; $f($e,$d);
==array_push($e,$d)
) de sorte que l'($e,$d)
appelle ensuite l'élément évalué du tableau. Juste un moyen plus court de le faireif (++$i%2) array_push($e,$d); else array_unshift($e,$e);
. Je suppose qu'il y avait du sucre syntaxique PHP après tout![array_unshift,array_push][++$i%2]($e,$d)
par(array_.[unshift,push][++$i%2])($e,$d)
. Ce que j'ai fait a été de supprimer les répétitionsarray_
, de les concaténer, puis le résultat est transmis à l'appel.MATLAB, 87 octets
Prend l'entrée comme tableau de cellules de chaînes, affiche la colonne de chaînes (je ne sais pas si c'est légal)
PS: Merci Sanchises pour avoir signalé un bug avec des entrées de longueur impaire
la source
f({'loooooooong','medium','short'})
end
est facultatif pour afunction
. L'utilisationfunction x=f(y);x={...}'
est plus courte quefunction f(y);disp({...}')
.disp
est que je ne suis pas sûr des règles de sortie. Doit-il s'agir de texte pur ou non? oudisp({...})
va bien ou mêmex={...}
comme vous le suggérezAPL (Dyalog Unicode) , 18 octets SBCS
Essayez-le en ligne!
Correction du bug grâce à @ngn.
Explication:
¹
la source
≢¨×¯1*⍳∘⍴
->(⊢∘-\≢¨)
et il devient encore plus court si vous le transformez en dfnAPL + WIN,
3138 octetsVoir le commentaire d'Adams
Essayez-le en ligne avec l'aimable autorisation de Dyalog Classic!
Demande un vecteur de chaînes imbriqué
la source
≢
"décompte" monadique à remplacer∊⍴
?'12' '1234' '1234' '1234' '1234' '12345678' '12345678' '12345678' '12345678'
. De toute évidence, le résultat aurait dû être'12345678' '12345678' '1234' '1234' '12' '1234' '1234' '12345678' '12345678'
Rétine , 26 octets
Essayez-le en ligne! Explication:
Triez les lignes par ordre croissant de longueur (
$.&
renvoie la longueur de la ligne).Supprimez temporairement les lignes alternatives et sortez les lignes restantes dans l'ordre inverse.
Conservez les seules lignes qui ont été temporairement supprimées et sortez-les.
la source
Gaia , 10 octets
Essayez-le en ligne!
la source
Japt, 8 octets
-3 octets grâce à Shaggy!
Essayez-le
la source
A.ë()
mais je ne sais pas si cela mènera à une solution plus courte.PowerShell , 49 octets
Essayez-le en ligne!
La double distillation .
la source
T-SQL, 84 octets
L'entrée est une variable de table
Essayez-le en ligne
la source
Perl 6 , 31 octets
Essayez-le en ligne!
Trier par longueur de chaîne, puis par séquence statique 0, -1, 0, -3, 0, -5, ...
la source
Javascript 95 octets
la source
s.sort()
trie les chaînes lexicographiquement, pas par longueur de chaîne.Rouge ,
116101 octetsEssayez-le en ligne!
la source
perl 5 (
-p0777F/\n/ -M5.01
), 59 octetsTIO
la source
C (gcc) ,
136128 octetsEssayez-le en ligne!
-8 octets grâce au plafond.
La fonction
f
est la solution. Il prend le nombre de chaînes, les chaînes elles-mêmes et le tampon de sortie comme arguments (plus quatre autres utilisés en interne).la source
./.bin.tio
dans la sortie ?argv
, ce qui inclut le nom de fichiert
et le conservez même lorsque vous n'en avez pas besoin!Japt , 8 octets
Entrée sous forme de tableau de lignes, sortie sous forme de tableau de 2 tableaux de lignes, un pour chaque moitié de la liste.
Essayez-le (code supplémentaire pour autoriser les E / S en tant que chaîne séparée par la nouvelle ligne)
la source
Haskell ,
10496 octetsEssayez-le en ligne!
la source