Imaginez l'horloge de 24 heures suivante qui peut être contrôlée par les touches fléchées:
╔══╗ ┌──┐
║00║:│00│
╚══╝ └──┘
HH mm
Appuyez deux fois sur la flèche vers le haut ( ↑↑
) pour augmenter l'entrée d'heure actuellement focalisée:
╔══╗ ┌──┐
║02║:│00│
╚══╝ └──┘
HH mm
Appuyez sur la flèche droite ( →
) pour focaliser l'autre entrée.
┌──┐ ╔══╗
│02│:║00║
└──┘ ╚══╝
HH mm
Appuyez trois fois sur la flèche vers le bas ( ↓↓↓
) pour diminuer cette entrée.
┌──┐ ╔══╗
│02│:║57║
└──┘ ╚══╝
HH mm
En bref:
- La flèche vers le haut (
↑
) augmentera l'entrée actuellement active. - La flèche vers le bas (
↓
) diminue l'entrée active. - La flèche droite (
→
) déplace le focus vers l'entrée droite. - La flèche gauche (
←
) déplace le focus vers l'entrée gauche. - Les mouvements de haut en bas boucleront comme prévu pour une entrée de temps.
- Les mouvements gauche et droit ne tournent pas autour.
Le défi
L'horloge démarre à 00:00
avec l'entrée heure active (voir premier schéma). Étant donné une liste de commandes d'entrée, affichez l'heure résultante au HH:mm
format.
L'entrée peut être une chaîne ou une liste (ou votre équivalent de langue), où les différentes directions d'entrée peuvent être l'une des options ci-dessous:
↑↓←→
udlr
^v<>
- la touche fléchée réelle appuie si votre programme a une interface graphique
Des échappatoires standard s'appliquent.
Cas de test
↑↑→↓↓↓ = 02:57
↓→↑←↑→↓ = 00:00
↓→→↓ = 23:59
←←←←→↑ = 00:01
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓→↓ = 23:59
0123
) rendrait le défi beaucoup plus facile dans certaines langues tout en ne bénéficiant pas à d'autres.Réponses:
HTML sur Google Chrome 67 en chinois (simplifié), 39 octets
Chrome affiche différents composants d'interface utilisateur dans une langue différente. Même une simple saisie de l'heure: AM / PM sera affiché si vous utilisez l'anglais (US). Si vous voulez tester cela en changeant la langue de votre Chrome. Ne groupez pas comment le changer en arrière.
la source
AM/PM
me revientC (gcc) ,
117107 octetsEssayez-le en ligne!
la source
t,i,m[8];e(char*_){for(*m=i=2[m]=0;t=*_++;t<63?i=t%4:(i[m]+=t&8?1:119));printf("%02d:%02d",*m%24,2[m]%60);}
Essayez-le en ligne!Stax ,
36353332 octetsExécuter et déboguer
Utilise
lrud
.Explication:
la source
Python 2 , 105 octets
Essayez-le en ligne!
la source
JavaScript (Node.js) , 103 octets
Prend l'entrée sous forme de chaîne, en utilisant
udlr
.Essayez-le en ligne!
la source
C # (.NET Core) ,
149132 octetsEssayez-le en ligne!
Utilisation
^v<>
.Celui-ci m'a fait réaliser que l'opérateur modulo en C # ne fonctionne pas comme prévu, car en C #
-1 % 60 = -1
, j'ai donc besoin de faire cette opération étrange à la fin.la source
Lua (framework love2d),
311308 octetsVersion sans fil:
Probablement toujours pas 100% facile à lire car tous les ifs sont échangés avec une instruction trinaire (..et ..or) :)
s'il a commencé dans un main.lua avec amour, une fenêtre apparaîtra et vous pouvez appuyer sur les touches fléchées pour modifier les chiffres
la source
MATL ,
575655 octetsEssayez-le en ligne!
Représente l'heure et les minutes en utilisant des nombres complexes, la partie réelle étant les heures et la partie imaginaire minutes.
Avec commentaires:
la source
PHP ,
145134133 octets(-11 octets par plus de golf)
(-1 octet en utilisant la méthode de boucle de David )
Pour l'exécuter:
Exemple:
Ou essayez-le en ligne!
Remarques:
error_reporting=0
option est utilisée pour ne pas générer d'avertissements.u d l r
la source
JavaScript,
104103 octetsPrend l'entrée comme un tableau de caractères, en utilisant
<>^v
.Essayez-le en ligne
la source
Haskell, 236 octets
f
est la fonction principale et a le typeString -> String
:Essentiellement
u
etv
sont des fonctions de type mutuellement récursivesInteger -> Integer -> String -> String
. Ils prennent l'heure, la minute et une liste de caractères sur l'ensemble{v,^,<,>}
, et renvoient la chaîne de temps.u
agit comme si le cadran de l' heure est en surbrillance, appelant récursiveu
si la tête de la liste est{v,^}
, etv
si la tête de la liste est en{<,>}
.v
est similaire mais pour le cadran des minutes.Tout le reste ne fait que sauver des personnages.
la source
Lua , 132 octets
Essayez-le en ligne!
Explication
Il s'agit d'une fonction anonyme (une manière de l'utiliser est indiquée sur le lien).
la source
HH:mm
format, plutôt qu'une tableJava 8, 121 octets
Port de Réponse C Jonathan Frech . Accepte
^v<>
. Essayez-le en ligne ici .la source
Gelée , 36 octets
Je pense que cela
O%5;4ṣ3œṡ€4Z%3’§§%"“ð<‘DŻ€ṫ€-j”:
devrait fonctionner pour 32, maisœṡ
semble avoir actuellement un bug .Un programme complet imprimant le résultat sur STDOUT (en tant que lien monadique, il retourne en fait une liste mixte d'entiers (quoique à un chiffre) et de caractères (le
:
).Utilise le
udlr
option d'entrée.Essayez-le en ligne!Ou consultez une suite de tests .
Comment?
la source
APL (Dyalog Classic) ,
9784 octetsEssayez-le en ligne!
A besoin
⎕IO←1
la source
QBasic , 229 octets
Un script qui prend les entrées sous forme de touches et les sorties vers la console.
Remarque: les terminaux
"
sont inclus uniquement pour la coloration syntaxique et ne contribuent pas au décompte.Commenté
la source
(m+y)
?m
c'était pour des minutes pour une raison quelconque ... Je vois que votre version commentée est plus lisible.PowerShell,
109103 octets-6 octets merci AdmBorkBork
Script de test:
Sortie:
Explication
L'idée de base est d'utiliser un
[hashtable]
, quikeys
sont des commandes de contrôle et desvalues
blocs de script. Le code exécute le bloc de script pour chaque commande à partir d'arguments.la source
$i=0
en castant votre index de tableau comme$t[+$i]
pour économiser quelques octets. Essayez-le en ligne!Perl 6 ,
101 91 8986 octetsEssayez-le en ligne!
Bloc de code anonyme qui prend une chaîne de
uldr
caractères et retourne dans le format donnéla source
perl -F // -E, 72 octets
la source
Python, 120 octets
la source
ld
ourru
faiti
quitter la plage (0,1) eto[i]
est accessible après?unput()
. D'après les exigences, j'ai pensé que les actions L et R ne tourneraient jamais (c'est-à-dire nonLL
)lll
n'est différent der
. Avoirll
ourr
est une entrée valide, c'est aussi dans les cas de test, voir le troisième par exemple.23:59
. Essayez-le en ligne!Haskell , 186 octets
Essayez-le en ligne!
la source
R,
368355 octetsCertainement pas la meilleure approche, mais ça marche.
Fonctionnalité: Exécuter la fonction, taper chaque lettre pour (in / de) plier ou déplacer vers la gauche / droite, en tapant "s" termine le "jeu". Le hic, c'est qu'il acceptera une et une seule lettre à la fois.
-13 octets Consolidé certaines valeurs sur une seule ligne, remplacé T par F au lieu d'utiliser break, trouvé plusieurs espaces à éliminer et une chaîne stockée dans une variable à la place
Je modifie également un autre format pour accepter une chaîne R et / ou un vecteur, qui sera publié la semaine prochaine.
la source
SmileBASIC, 123 octets
BUTTON()
renvoie un entier où chaque bit représente un boutonBUTTON(2)
renvoie uniquement les boutons qui venaient d'être enfoncés (non maintenus)WAIT
est requis carBUTTON
ne se met à jour qu'une fois par image (1/60 de seconde). Sinon, la même pression sur un bouton serait détectée plusieurs fois.Cela peut certainement être plus court
la source
05AB1E ,
3837 octetsUtilise
udlr
pour les directions, mais peut également être utilisé^v<>
pour le même nombre d'octets (les caractères↑↓←→
ne font pas partie de la page de codes de 05AB1E, donc leur utilisation augmenterait considérablement le nombre d'octets, car l'encodage devrait être changé en ASCII).Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
Voir cette astuce de mes 05AB1E (section Comment compresser les grands entiers? ) Pour comprendre pourquoi
Ž9¦
est2460
.la source