Défi
Considérez l'arc-en-ciel comme sept couleurs, représentées par des chaînes comme Red Orange Yellow Green Blue Indigo Violet
.
Votre tâche consiste à créer un programme qui reçoit l'une de ces couleurs en entrée et qui sort ensuite dans l'ordre couleur arc-en-ciel. Cela inclut le chevauchementViolet -> Red
Contribution
Une chaîne contenant l'une des couleurs de l'arc-en-ciel.
Production
Le suivant dans l'ordre couleur de l'arc-en-ciel.
Règles
- Les noms de couleur sont sensibles à la casse. Ils doivent correspondre à l'étui inclus dans cet article.
- L'entrée sera toujours valide. Tout comportement est autorisé pour une entrée non valide.
- C'est le golf de code, donc le plus petit nombre d'octets gagne!
Exemple d'entrée et de sortie
Input -> Output
Red -> Orange
Orange -> Yellow
Yellow -> Green
Green -> Blue
Blue -> Indigo
Indigo -> Violet
Violet -> Red
Provide at least one example input and output. Make sure they match your own description of what the input should look like.
Réponses:
SOGL V0.12 , 23 octets
Essayez-le ici!
Explication:
la source
JavaScript, 68 octets
Pour l'entrée
"Red"
, cette fonction construit d'abord un RegExp/Red(.[a-z]*)/
pour correspondre à la chaîne'RedOrangeYellowGreenBlueIndigoVioletRed'
, puis renvoie le premier résultat de capture.Afficher l'extrait de code
la source
'RedOrangeYellowGreenBlueIndigoVioletRed'
ou quelque chosePerl 5
-p
,5857 octetsEssayez-le en ligne!
Maintenant que le défi a été changé pour être cyclique, la solution d'expression régulière
n'est plus optimal (en raison du double
Red
)Aussi 57 octets:
Essayez-le en ligne!
la source
Python , 79 octets
Essayez-le en ligne!
Poignées
Violet -> Red
. La fonction souhaitée est donnée de manière anonyme dans la deuxième ligne.80 octets
Essayez-le en ligne!
la source
Perl 6 , 56 octets
Essayez-le en ligne!
Exploite le fait que les bits 2-4 des codes ASCII de la première lettre de chaque couleur correspondent à 0-6.
Voici une belle solution non concurrente qui utilise "violet" au lieu de "indigo" et "violet" (38 caractères, 59 octets):
Essayez-le en ligne!
la source
%12
solution pour la noix de coco, mais bien sûr, c'est plus propre.Rubis
-n
,6260 octets-2 par Asone Tuhid.
Essayez-le en ligne!
L'approche Regex semble également prometteuse pour Ruby. Cependant, je suis arrivé à une solution plus courte en utilisant une anticipation et en imprimant directement le match, plutôt que de jouer avec des groupes de capture. La liste des couleurs est en sens inverse car l'anticipation est 1 octet moins chère que l'anticipation.
la source
/#$_/
interpole)rouge , 87 octets
Essayez-le en ligne!
la source
05AB1E , 30 octets
Essayez-le en ligne!
Explication
la source
Excel, 85 octets
Utilise des noms en minuscules.
Même approche, avec des lettres majuscules 86 octets:
la source
Haskell ,
80 7175 octetsMerci à Laikoni d'avoir raccourci 9 octets!
Essayez-le en ligne!
Une autre solution, un peu plus idiomatique, mais je n'ai pas pu la raccourcir:
Il doit dériver en
Read
raison de l'exigence que l'entrée soit une chaîne et au moinsEq
ouShow
afin de tester l'égalité ou d'afficher le résultat.la source
span
: Essayez-le en ligne!span
...Violet
devrait se terminerRed
, vous devez donc ajouter àRed
nouveau à la fin de la chaîne.succ Violet
ne fonctionnera pas pourEnum
s ne bouclent pas :(Rétine ,
6558 octetsEssayez-le en ligne!
Explication
Nous commençons par ajouter
(.[a-z]+)
à l'entrée, la transformant ainsi en une expression régulière qui correspond à la couleur d'entrée, immédiatement suivie par exactement une autre couleur (capturant cette dernière).Maintenant, les
:
échanges de l'entrée de la scène avec son propre regex. Ainsi, le résultat précédent devient l'expression régulière et il est comparé à la liste des couleurs. La correspondance (unique) est remplacée par son premier groupe de capture (c'est-à-dire la couleur suivante du cycle) et renvoyée. La sortie à la fin du programme se produit automatiquement.la source
\1
et le saut vers la cible gaspillent de nombreux octets: :-)Vim,
59565352 octets-1 octet grâce à tsh
la source
Java (JDK 10) , 77 octets
Essayez-le en ligne!
Crédits
la source
s->"RedOrangeYellowGreenBlueIndigoVioletRed".split(s)[1].split("(?=[A-Z])")[0]
s->"Red Orange Yellow Green Blue Indigo Violet Red".split(s)[1].split(" ")[1]
Noix de coco , 79 octets
Essayez-le en ligne!
la source
s->"# green indigo yellow # # orange blue # violet red".split()[ord(s[0])%12]
Husk , 28 octets
Essayez-le en ligne!
Il y a peut-être de meilleures options pour gérer les arguments, mais c'est la meilleure que j'ai pu trouver
Explication
la source
Stax ,
313029 octetsExécuter et déboguer
Cela utilise l'instruction de traduction en anneau. Il remplace chaque élément d'un tableau par le suivant de "l'anneau du décodeur". Habituellement, il est utilisé pour remplacer les caractères dans une chaîne, mais il peut également être utilisé sur une chaîne entière, s'il est enveloppé dans un tableau singleton.
Voici la représentation ascii non emballée, non golfée et commentée du même programme.
Exécutez celui-ci
la source
J ,
67 6462 octets-2 octets merci à FrownyFrog
Essayez-le en ligne!
la source
&.
fonctionne réellement pour cela. Essayez-le en ligneR ,
10993 octetsEssayez-le en ligne!
-16 merci à Giuseppe pour l'utilisation des
match
conseilsla source
match(y,x)%%7+1
que l'indexation est plus courte que votreif
déclaration. De plus, le builtincolors()
contient beaucoup de noms de couleurs, si vous trouvez les indices :)colors()
ça ne contient pasindigo
! Ah bien, toujours, +1!match
c'est mieux icicolors()
: /Lot, 97 octets
Explication: Le
call
sur la deuxième ligne a pour effet de remplacer le paramètre dans la commande et de l'évaluer, en le transformant par exempleset s=%s:Red =%
en ce qui supprime le préfixe de la chaîne qui inclut le paramètre. La substitution sur la troisième ligne remplace alors tous les espaces par des séparateurs d'instructions et des commentaires. Cela fonctionne car la substitution de chaîne se produit avant l'analyse.la source
Rubis
-n
,7569 octetsEssayez-le en ligne!
la source
i&&
chose? Pas besoin de vérifiernil
, car "Ignorez les erreurs si ce n'est pas une couleur".Julia 0,6 , 76 octets
Essayez-le en ligne!
Cela gère le Violet-> Rouge en recyclant la chaîne avec l'
^
opérateur de puissance .Voici une solution légèrement plus longue sans regex:
la source
PowerShell , 74 octets
Essayez-le en ligne!
Prend la chaîne
"Red ... Violet "
et la multiplie par deux pour gérer correctement leViolet -> Red
cas de test. Nous avons ensuite-split
cette chaîne en entrée$args
pour nous donner un tableau de deux chaînes. Nous prenons la deuxième chaîne de celui[1]
- ci , puis-split
celle sur les espaces blancs pour nous donner un tableau de chaînes et prendre la première[0]
.Par exemple, pour la saisie
"Yellow"
, la première étape se traduira par@("Red Orange ", " Green Blue Indigo ... Indigo Violet ")
. Nous prenons le second de celui-ci, le divisons sur un espace blanc (qui supprime l'espace blanc), ce qui entraîne@("Green", "Blue", ... "Violet")
, donc la prise de[0]
celui-ci entraîne la chaîne suivante appropriée.la source
Langage de formule IBM / Lotus Notes,
7974 octetsVersion précédente pour 79:
Prend la saisie d'un champ de texte modifiable appelé
a
.Il n'y a pas de TIO pour le langage des formules, voici donc quelques captures d'écran.
la source
PHP, 92 octets
Essayez-le en ligne!
la source
Kotlin , 73 octets
Essayez-le en ligne!
Profitant du fait que de nombreuses couleurs sont à 6 caractères, celles qui ne le sont pas sont préfixées par des espaces pour leur faire 6 caractères. J'espère qu'il est acceptable que certaines des couleurs soient sorties avec des espaces devant elles.
Par exemple, le rouge est
" Red"
, le bleu est" Blue"
la source
SmileBASIC,
9484 octetsla source
Gema , 67 caractères
Exemple d'exécution:
Gema , 59 personnages
Un ennuyeux. Approche la plus stupide jamais, mais assez courte.
Exemple d'exécution:
la source
q / kdb + ,
5955 octetsSolution:
Exemples:
Explication:
Créez un dictionnaire de couleur => couleur suivante, l'entrée est la clé du dictionnaire:
Prime:
C'est 53 octets en K4:
la source
Japt ,
4543 octets-2 octets grâce à Shaggy
Essayez-le en ligne!
la source
N
sed, 72 octets
Essayez-le en ligne
Exemple 1:
Contribution:
Production:
Exemple 2:
Contribution:
Production:
la source