Mes deux enfants aiment jouer avec le jouet suivant:
Les zones colorées avec les formes à l'intérieur peuvent être touchées et la tortue éclaire alors la zone et émet un son ou dit le nom de la couleur ou de la forme à l'intérieur. Le bouton du milieu change le mode. Il existe un mode dans lequel les zones jouent différentes notes musicales au toucher, avec une torsion: si l'enfant touche trois zones consécutives dans le sens des aiguilles d'une montre, une mélodie spéciale 1 est jouée. Si les trois zones consécutives touchées sont placées dans le sens antihoraire, une mélodie spéciale 2 est jouée.
Le défi
Simulons la logique interne du jouet. Étant donné une chaîne avec 3 pressions de l'enfant, renvoyez deux valeurs distinctes et cohérentes si les trois pressions concernent des zones consécutives (dans le sens horaire ou antihoraire) et une troisième valeur distincte dans le cas contraire.
Détails
- Les zones de saisie seront nommées avec un caractère chacune, qui peut être leur couleur:
ROYGB
pour le rouge, l'orange, le jaune, le vert et le bleu; ou leur forme:HSRTC
pour coeur, carré, étoile (R
), triangle et cercle. La casse n'a pas d'importance, vous pouvez choisir de travailler avec l'entrée et la sortie uniquement en majuscules ou en minuscules. - Le programme recevra une chaîne (ou un tableau de caractères ou quelque chose d'équivalent) avec trois pressions. Des exemples ( en utilisant les couleurs):
RBO
,GYO
,BBR
,YRG
,YGB
,ORB
... - Le programme affichera trois valeurs distinctes et cohérentes pour représenter les trois résultats possibles: une première valeur si la combinaison ne déclenche pas une mélodie spéciale, une deuxième valeur si la combinaison déclenche la mélodie spéciale dans le sens des aiguilles d'une montre et une troisième valeur si la combinaison déclenche la mélodie spéciale anti-horaire. Exemple:
0
pour aucune combinaison spéciale,1
pour la mélodie déclenchée par une combinaison dans le sens horaire et-1
pour la mélodie déclenchée par une combinaison dans le sens antihoraire. - Vous n'avez pas à vous soucier de la gestion d'une entrée incorrecte.
Cas de test
Input Output // Input based on colors
--------------
RBO 0 // No special combination
GYO -1 // Counterclockwise melody triggered
BBR 0 // No special combination
YRG 0 // No special combination
YGB 1 // Clockwise melody triggered
ORB -1 // Counterclockwise melody triggered
OOO 0 // No special combination
BRO 1 // Clockwise melody triggered
C'est du code-golf , alors le code le plus court pour chaque langue peut gagner!
[0,0]
,[1,0]
,[0,1]
autorisé en sortie? Je vois la réponse Mathematica faire cela, et cela économiserait 3 octets dans la réponse 05AB1E.Réponses:
Java 8,
483933 octets-6 octets grâce à @RickHitchcock , alors assurez-vous de lui aussi voter positivement !
Prend la couleur en majuscule comme chaîne d'entrée. Sorties
-1
pour aucun,7
dans le sens horaire et15
dans le sens antihoraire.Essayez-le en ligne.
Explication:
Ancienne réponse de 39 octets:
Prend la couleur en majuscule comme chaîne d'entrée. Sorties
9362
pour aucun,0
dans le sens horaire et1
dans le sens antihoraire.Essayez-le en ligne.
Explication:
la source
10922
(division entière par/6
) ou8191
(division entière par/8
), mais je choisis/7
parce que c'est l'index de l'espace dans la chaîne. :)JavaScript (ES6), 41 octets
Prend les initiales de couleur comme entrée. Renvoie
2
pour aucun,true
dans le sens horaire oufalse
antihoraire.Essayez-le en ligne!
la source
s=>('ROYGBRO_ORBGYOR'.search(s)+8)/8|0
Python 2 , 36 octets
-1
- Aucun0
- Dans le sens horaire1
- Dans le sens antihoraireEssayez-le en ligne!
la source
Excel, 29 octets
Couleurs majuscules en entrée.
Renvoie
#VALUE!
sans motif,TRUE
dans le sens horaire, dans le sensFALSE
anti-horaire.Peut encapsuler
IFERROR( ,0)
pour+11 bytes
gérer l'exception et retourner à la place «0» pour les cas sans modèle.la source
05AB1E ,
1511 octetsEnregistré 4 octets grâce à Kevin Cruijssen et Magic Octopus Urn .
Utilise des formes.
Sortie
[0, 0]
pour rien ,[1, 0]
pour le sens horaire et[0, 1]
pour le sens antihoraireEssayez-le en ligne! ou comme suite de tests
Explication
la source
.•1´₃éC•Â‚εXå}¥
entraînant[0]
,[1]
ou[-1]
, si +1 de moi. BTW, je pense (pas sûr) , vous pouvez enregistrer trois octets en supprimant les trois derniers, la sortie[0, 0]
,[1, 0]
et en[0, 1]
tant que valeurs distinctes. Je vois que la réponse Mathematica fait de même. Demander à OP de vérifier.‚.•ÌöJη•så
est de 11 octets si[1,0], [0,1] and [0,0]
sont considérés comme uniques (sauf si je manque quelque chose d'évident ici, ajouterƶO
à la fin de ce 11 octets est toujours de 13 pour la même réponse 0, 1, 2 que vous avez maintenant). Cas de test . Cas de test 2 . L'inversion de l'ordre supprime le besoin de la boucle.JavaScript (ES6), 32 octets
Renvoie -1 si aucune combinaison, 15 si dans le sens antihoraire, 7 si dans le sens horaire.
Afficher l'extrait de code
la source
Wolfram Language (Mathematica) ,
4236 octetsEssayez-le en ligne!
Compte le nombre de fois où l'entrée apparaît dans les deux
"ROYGBRO"
et"ORBGYOR"
. Renvoie{1,0}
pour dans le sens horaire,{0,1}
dans le sens antihoraire et{0,0}
pour aucune combinaison spéciale.Au prix d'un seul octet de plus, nous pouvons obtenir des sorties de
0
pour rien,1
dans le sens horaire et2
dans le sens antihoraire avec"ROYGBRO.ORBGYORBGYOR"~StringCount~#&
.la source
code machine x86,
3936 octetsAssemblée:
Essayez-le en ligne!
La sortie est
23
pour aucun,7
dans le sens horaire et15
anti-horaire. Basé sur la réponse de @RickHitchcock.Enregistré 3 octets en utilisant une instruction de comparaison de chaînes SSE au lieu d'utiliser libc.
la source
strstr
sera toujours une adresse 32 bits (4 octets). Le code machine de mon message n'est pas lié.Perl 5
-p
, 30 octetsEssayez-le en ligne!
la source
APL (Dyalog),
2218 octets-4 octets grâce à @ngn
Prend une chaîne d'initiales de couleur. Sorties 0 pour aucun motif spécial, -1 pour le sens antihoraire, 1 pour le sens horaire.
Essayez-le en ligne!
la source
Python 2 ,
4543 octetsEssayez-le en ligne!
Avec des idées et un sérieux crédit à @DeadPossum
-2 avec merci à @JoKing. Affiche maintenant -1 = dans le sens antihoraire, 0 = aucun, 1 = dans le sens horaire.
Mon effort d'origine est ci-dessous à des fins historiques.
Python 2 ,
5251 octetsEssayez-le en ligne!
0 = aucun, 1 = dans le sens antihoraire, 2 = dans le sens horaire
la source
Python 2 ,
3536 octets+1 - pour une raison quelconque, je pensais que tous les boutons seraient distincts> _ <
Développé indépendamment de ce que je viens de voir (et maintenant sur-voté) par Dead Possum
Essayez-le en ligne!
la source
Stax ,
1413 octetsExécuter et déboguer
La sortie est
la source
Pip , 19 octets
Sorties
10
pour dans le sens horaire,01
dans le sens antihoraire,00
pour aucun. Essayez-le en ligne!Explication
la source
J , 21 octets
Essayez-le en ligne!
Comment ça fonctionne
Permet une réutilisation maximale des fonctions.
la source
Gelée , 12 octets
Essayez-le en ligne!
-4 merci à Jonathan Allan .
Dans le sens horaire: Dans le
[1, 0]
sens antihoraire:
[0, 1]
Autre:
[0, 0]
la source
R , 38 octets
Essayez-le en ligne!
Retour :
integer(0)
2
1
la source
Fusain , 18 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
la source
Lisp commun , 68 octets
Essayez-le en ligne!
la source
Nettoyer , 63 octets
Essayez-le en ligne!
[True, True]
pour pas de bruits spéciaux,[True, False]
pour dans le sens antihoraire,[False, True]
pour dans le sens horaire.la source
Japt,
1714 octetsPrend les couleurs en entrée, en minuscules. Retourne
0
dans le sens horaire,1
dans le sens antihoraire ou-1
s'il n'y a pas de combo.Essayez-le
Expansion
la source
Rubis ,
5336 octetsEssayez-le en ligne!
Entrée: un entier à 3 chiffres, où les chiffres représentent les couleurs:
Sortie: 0 pour le sens horaire, 1 pour le sens anti-horaire,
nil
sinon.la source
C (gcc) , 55 octets
Renvoie 0 pour aucun, -1 pour CCW et 1 pour CW.
Essayez-le en ligne!
la source