Voici le défi. Écrivez du code pour sortir tous les entiers d'une plage. Cela semble facile, mais voici la partie délicate. Il commencera par le nombre le plus bas, puis le plus élevé. Ensuite, le nombre le plus bas qui n'est pas encore dans le tableau. Puis le plus haut qui n'y est pas encore.
Exemple:
Prenons 1 à 5 comme point de départ
Les nombres sont [1, 2, 3, 4, 5].
Nous prenons le premier, donc [1]. Les nombres restants sont [2, 3, 4, 5]. Nous prenons le dernier, le nouveau tableau est [1, 5]. Les nombres restants sont [2, 3, 4]. Nous prenons le premier, le nouveau tableau est [1, 5, 2]. Les nombres restants sont [3, 4]. Nous prenons le dernier, le nouveau tableau est [1, 5, 2, 4]. Les nombres restants sont [3]. Nous prenons le premier, le nouveau tableau est [1, 5, 2, 4, 3]. Il ne reste plus de chiffres, nous avons terminé. Sortie [1, 5, 2, 4, 3]
Règles:
- Il s'agit de code golf, écrivez-le dans le moins d'octets, dans n'importe quelle langue.
- Pas de failles standard.
- Liens vers un interprète en ligne, s'il vous plaît? (Par exemple https://tio.run/ )
- Deux entrées, les deux entiers. Bas de gamme et haut de gamme.
- Peu m'importe le type de données de la sortie, mais il doit afficher les nombres dans le bon ordre.
Exemples
Faible: 4 Élevé: 6 Résultat: 4 6 5
Faible: 1 Élevé: 5 Résultat: 1 5 2 4 3
Faible: -1 Élevé: 1 Résultat: -1 1 0
Bas: -1 haut: 2 Résultat: -1 2 0 1
Bas: -50 Haut: 50 Résultat: -50 50-49 49-48 48-47 47-46 46-45 45-44 44-43 43-42 42-41 41-40 40-39 39-38 38-37 37-36 36-35 35-34 34-33 33-32 32-31 31-30 30-29 29-28 28-27 27-26 26-25 25-24 24-23 23-22 22-21 21 - 20 20-19 19-18 18-17 17-16 16-15 15-14 14-13 13-12 12-11 11-10 10-9 9-8 8 -7 7 -6 6 -5 5 -4 4 -3 3 -2 2 -1 1 0
Bon golf!
Réponses:
R ,
383736 octetsEssayez-le en ligne!
Exploiter le fait que R stocke les matrices colonne par colonne
la source
rbind
est bien meilleure que mon approche, mais vous pouvez économiser 1 octet en utilisant[seq(a:b)]
au lieu deunique
.seq(a:b)
Haskell , 30 octets
Essayez-le en ligne!
la source
R ,
65646160 octets-1 octet grâce à Robert S.
-4 de plus grâce à digEmAll
Essayez-le en ligne!
la source
length(z)
parsum(z|1)
pour économiser 1 octet :)|
édité par 1. Ce qui est toujours égal à 1. Lorsque vous prenez la somme, vous avez un vecteur rempli deTRUE
s donc le résultat est égal à la longueur du vecteur. Si le vecteur est vide, vous n'avez rien à voir|
avec le vecteur de sortielogical(0)
. Quand vous prenez cette somme, c'est 0Haskell , 39 octets
Essayez-le en ligne!
la source
Python 2 , 44 octets
Essayez-le en ligne!
la source
PowerShell ,
5948 octetsEssayez-le en ligne!
(Semble long ...)Prend des entrées
$a
et$b
construit la plage0 .. ($b-$a)
, les stocke dans$z
, puis parcourt cette plage. Le bouclage à travers cette plage est juste utilisé comme compteur pour garantir que nous obtenons suffisamment d'itérations. Chaque itération, nous mettons$a
et$b
sur le pipeline avec addition / soustraction. Cela nous donne quelque chose comme1,5,2,4,3,3,4,2,5,1
ça, nous devons donc le découper0
jusqu'au$b-$a
(c'est-à-dire le nombre) du tableau d'origine, de sorte qu'il ne nous reste que les éléments appropriés. Cela reste sur le pipeline et la sortie est implicite.-11 octets grâce à mazzy.
la source
$b-$a
astuce - c'est intelligent!05AB1E , 6 octets
Essayez-le en ligne!
Explication
la source
.ι
;)Japt , 14 octets
Essayez-le en ligne!
la source
Stax , 7 octets
Exécuter et déboguer
la source
R , 51 octets
Essayez-le en ligne!
Explication: pour une séquence
x:y
de longueurN
, créez une matrice deux par N composée de la séquence x: y dans la ligne supérieure et y: x dans la ligne inférieurematrix(c(z,rev(z)),2,,T)
. Si nous sélectionnons les premiersN
éléments de la matrice[seq(z)]
, ils seront choisis par colonne, donnant la sortie requise.Outgolfed par digEmAll
la source
cQuents , 19 octets
Essayez-le en ligne!
Notez qu'il ne fonctionne pas sur TIO pour le moment car l'interpréteur de TIO n'est pas à jour.
Explication
la source
Haskell, 39 octets
Essayez-le en ligne!
la source
C # (Visual C # Interactive Compiler) , 46 octets
4 octets enregistrés grâce à dana!
Essayez-le en ligne!
C # (Visual C # Interactive Compiler) , 65 octets
Essayez-le en ligne!
la source
Bytecode JVM (OpenJDK asmtools JASM), 449 octets
Non golfée (et légèrement plus propre)
Fonction autonome, doit être appelée à partir de Java en tant que
b.a(num1,num2)
.Explication
Ce code utilise les paramètres de la méthode comme variables, ainsi qu'un booléen dans le local # 3 pour décider du nombre à afficher. Chaque itération de boucle à gauche ou à droite est sortie, et ce nombre est incrémenté pour la gauche ou décrémenté pour la droite. La boucle continue jusqu'à ce que les deux nombres soient égaux, puis ce nombre est sorti.
... J'ai un sentiment distinct que je suis massivement dépassé par le nombre d'octets
la source
Wolfram Language (Mathematica) ,
5654 octetsC'est ma première fois au golf!
Essayez-le en ligne!
Enregistré 2 octets en utilisant la notation infixe.
Explication:
Alternativement, nous pourrions utiliser
Take[...,b-a+1]
pour le même résultat.Tests:
Sortie:
la source
APL (dzaima / APL) , 21 octets
Essayez-le en ligne!
la source
Japt, 7 octets
Prend l'entrée comme un tableau.
Essayez-le ou exécutez tous les cas de test
la source
MATL , 8 octets
Essayez-le en ligne!
Explication
la source
JavaScript, 40 octets
Essayez-le en ligne!
la source
Forth (gforth) , 52 octets
Essayez-le en ligne!
Explication
Boucle de 0 à (Fin - Début). Placez End et Start sur le dessus de la pile.
Chaque itération:
Explication du code
la source
Julia 0,7 , 29 octets
Essayez-le en ligne!
la source
Haskell, 30 octets
Utilisation:
3%7
donne `[3,7,4,6,5]Pour les entrées,
l, h
la fonction appelle récursivement avec les entréesl+1, h-1
et ajoutel,h
au début. Au lieu de toute condition d'arrêt, le code utilisetake(h-l)
pour raccourcir la séquence à la bonne longueur (qui serait sinon une séquence infinie de nombres croissants et décroissants).la source
Brachylog , 15 octets
L'entrée est une liste à 2 éléments [lo, hi]. Notez que le soulignement est utilisé pour les nombres négatifs. Essayez-le en ligne!
Explication
la source
MathGolf , 6 octets
Essayez-le en ligne!
Explication avec
(1, 5)
La raison pour laquelle cela fonctionne est due au fait que tous les éléments de la sortie doivent être uniques, de sorte que l'opérateur des éléments uniques filtrera la seconde moitié du tableau, produisant la sortie correcte.
la source
Perl 5
-ln
, 37 octetsEssayez-le en ligne!
la source
Java (JDK) , 52 octets
Essayez-le en ligne!
la source
Nettoyer , 48 octets
Essayez-le en ligne!
la source
Rubis ,
373633 octetsEssayez-le en ligne!
Version récursive avec 3 octets enregistrés par G B.
Rubis , 38 octets
Essayez-le en ligne!
Version non récursive.
la source
Cubix, 16 octets
Essayez-le ici
Cubifié
Explication
Fondamentalement, cela rapproche les deux limites l'une après l'autre jusqu'à ce qu'elles se rencontrent. Chaque fois que nous parcourons la boucle, nous
s
inversons les limites,O
saisissons, prenons la différence et incrémentons)
ou décrémentons avec en(
fonction du signe.la source
Pyth,
108 octetsEssayez-le ici
Explication
la source