Actuellement, à mon travail, nous avons déménagé dans un nouveau bâtiment. Il est censé être à la pointe de la technologie et possède des lumières automatiques, des volets roulants automatiques et est maintenant connu comme le bâtiment le plus écologique de cette ville.
Cependant, cela ne fonctionne pas vraiment bien. Les volets roulants descendent parfois les jours nuageux et se lèvent lorsque le soleil commence à briller, et les lumières provoquent parfois des effets disco en allumant et éteignant alternativement tous les 5-10 minutes. De plus, nous n'avons aucun moyen manuel de contrôler ces volets roulants, ni la température, MAIS nous avons une télécommande pour les lumières.
Ces télécommandes sont toutefois venues sans manuel d'instructions et contiennent un peu plus de 20 boutons faisant toutes sortes de choses à l'exception de ce que vous semblez vouloir ..
PS: J'ai écrit ce défi il y a 1,5 mois dans le Sandbox. Actuellement, nous savons, en quelque sorte, comment fonctionnent les télécommandes.
Un gros avantage de ce bâtiment, il fait plus de 30 degrés Celsius à l'extérieur, mais à l'intérieur, il reste la même température ambiante de 21 à tout moment.
C'était donc l'intro et la télécommande des lumières a inspiré ce défi.
Défi:
Disons que nous avons initialement une lampe éteinte:
L
Ensuite, nous poussons toutes sortes de boutons et émettons l'état de la lampe par la suite.
Nous utilisons les numéros suivants pour les différentes fonctions de la télécommande de la lampe. Quand un symbole moins est devant ce nombre, nous faisons le contraire.
1
= ON;-1
= OFF.2
= Augmenter la force de 25%;-2
= Diminue (dim) la force de 25%.3
= Augmentation de l'écart de 50%;-3
= Diminuer l'écart de 50%.4
= Changer le type de lumière.
Donc, tout cela est assez vague, alors allons un peu plus en profondeur ce que chaque chose signifie:
Donc, -1
(OFF) est assez évident et 1
passera à l'état ON initial (50% pour 2
et 50% pour 3
):
//
//
L ====
\\
\\
2
et -2
est la distance parcourue par la lumière ( ==
est ajoutée pour chaque 25%):
0% (equal to a light bulb that is OFF)
L
25%
L ==
50%
L ====
75%
L ======
100%
L ========
3
et dans -3
quelle mesure la lumière se propage:
0%:
L ====
50%:
//
//
L ====
\\
\\
100%:
|| //
||//
L ====
||\\
|| \\
(REMARQUE: lorsque 2
et 3
sont tous les deux à 100%, vous aurez cet état:
|| //
|| //
|| //
||//
L ========
||\\
|| \\
|| \\
|| \\
4
est de basculer le type de lumière.
Default:
//
L ==
\\
After toggling (note the single space before '/' instead of two):
/
L --
\
Contribution:
Vous recevrez une entrée contenant les pressions de bouton possibles. Par exemple:
12-34
Production:
L'état de la lampe lumineuse après avoir appuyé sur tous les boutons de l'entrée est sous-séquentiel. Donc, avec l'exemple d'entrée ci-dessus, nous avons la sortie suivante:
L ------
Règles du défi:
- L'entrée contient uniquement
1234-
(et jamais un-
avant le4
). - Vous ne pouvez jamais descendre en dessous de 0% ou au-dessus de 100%. Si un nombre augmente / diminue au-delà de ces limites, vous pouvez l'ignorer.
- Lorsque la lampe est éteinte, vous pouvez ignorer toutes les actions et lorsqu'elle est rallumée, elle revient à l'état ON initial (50% pour les deux
2
et3
, et par défaut4
). Par exemple:12-1-341
imprime simplement l'état ON initial mentionné ci-dessus. (CONSEIL: Vous pouvez ignorer tout avant la finale1
de l'entrée - à l'exclusion-1
.) - Les espaces de fuite égaux à la longueur de la lumière ou une seule nouvelle ligne de fuite n'est pas inhibé. Cependant, l'ajout de nouvelles lignes inutiles supplémentaires n'est pas.
- Vous êtes autorisé à prendre l'entrée comme une liste d'entiers au lieu d'une seule chaîne. Donc, au lieu de
12-34
, vous pouvez avoir[1,2,-3,4]
en entrée.
Règles générales:
- C'est le code-golf , donc la réponse la plus courte en octets l'emporte.
Ne laissez pas les langues de golf de code vous décourager de publier des réponses avec des langues non-golfeur de code. Essayez de trouver une réponse aussi courte que possible pour «n'importe quel» langage de programmation. - Des règles standard s'appliquent à votre réponse, vous êtes donc autorisé à utiliser STDIN / STDOUT, des fonctions / méthodes avec les paramètres appropriés, des programmes complets. Ton appel.
- Les failles par défaut sont interdites.
- Si possible, veuillez ajouter un lien avec un test pour votre code.
- Veuillez également ajouter une explication si nécessaire.
Cas de test:
12-34
L ------
12-1-341
//
//
L ====
\\
\\
14-3224333-2
|| //
|| //
||//
L ======
||\\
|| \\
|| \\
142-1-314-3-322
L --------
1324-2-3
/
/
L ----
\
\
134
| /
|/
L ----
|\
| \
1-2-2-214-3-3-3
L ----
134
?4
). Merci d'avoir posé la question.1
appuyée, les paramètres sont-ils réinitialisés?Réponses:
Python 2, 221 octets
Cela s'est avéré plus long que prévu. La première ligne calcule l'état de la lampe, les autres implémentent l'impression.
L'entrée est donnée via STDIN sous la forme d'un tableau.
Voir les cas de test sur ideone
la source
R,
323320 octetsNon golfé:
lit une ligne d'entrée (entiers séparés par des espaces)
initialise les variables a (on-ness), b (luminosité), c (largeur), d (type de faisceau).
d
est soit zéro soit deux, ce qui signifie que nous pouvons appeler if (d) plus tard que if plus (d> 1) ou similaire et enregistrer quelques octets.Une manière d'écrire golf-y
while(length(z))
où z est un vecteur entier.Le reste de la première ligne gère l'entrée via un
switch
instruction. La deuxième ligne s'imprime.Il est possible que certains des
<-
peuvent être remplacés par=
, mais je pense que vous êtes dévoré vivant par la portée lexicale ...Notez également que dans R, les barres obliques inverses doivent être échappées.
c*(c>0)
est une manière d'écrire au golfmax(c,0)
qui sauve un personnage.Si la lumière n'est pas allumée, alors depuis
*
a une priorité inférieure à:
, lafor(i in a*b:-b)
boucle ne fait qu'itérer sur0:0
.Mettre à jour; économisé 3 octets en remplaçant la boucle de la première ligne par un for (plutôt que while). Notez que
1:sum(1|z)
c'est moins de caractères que1:length(z)
ouseq_along(z)
.seq(z)
fonctionnerait dans la plupart des cas, mais pas lorsqu'ilz
est de longueur un. La solution proposée ne fonctionnera pas pour une entrée de longueur nulle mais j'espère que cela sort du cadre du concours.la source
Kotlin , 445 octets
Mon premier golf Kotlin, 38 octets de moins que Java :)
Avec espace blanc et tests:
Fait intéressant, plutôt que de définir la fonction normalement et /
print
oureturn
la chaîne créée, il était plus court d'utiliser l'attribution de fonction (cellefun f() =
d'un lambda évalué. (Cette description a-t-elle un sens?)Je souhaite juste que SE ait une mise en évidence de la syntaxe Kotlin appropriée
la source
Java 8,
484483452446440 octetsEnfin .. Ok, mon propre défi est un peu plus difficile que ce à quoi je m'attendais ..; P
Cela peut sans aucun doute être joué en utilisant une approche complètement différente. Je détermine d'abord ce que je dois faire, puis je l'imprime. L'impression est en fait la plus difficile de ce défi, à mon humble avis.
-6 octets grâce à @ceilingcat .
Explication:
Essayez-le ici.
la source
Lot, 552 octets
Remarque:
set v=
contient un espace de fin et enset s=
contient trois. C'était vraiment gênant, car vous ne pouvez pas facilement imprimer un nombre variable de|
s dans Batch, vous devez donc utiliser un espace réservé et le remplacer dans l'instruction echo.la source
05AB1E , 106 octets
Entrée sous forme de liste d'entiers.
Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
Nous avons maintenant la chaîne:
Alors bien:
Voir cette astuce de mes 05AB1E (sections Comment compresser les grands entiers? Et comment les listes entières Compresser? ) Pour comprendre pourquoi
•Wθ¨S9ƒTª»þúÙ•6в
est[5,3,2,2,2,2,2,2,2,2,4,1,1,0,0,4,1,1,3,0,0,4,1,1,3,3,0,0,4,1,1,3,3,3,0,0]
; etŽ8Ã
est2234
.la source