De nombreux appareils électroniques, en particulier les plus anciens, clignotent 12:00
lorsque l’heure n’a pas été réglée. Le but de ce défi est de recréer cela.
Plus précisément, la tâche consiste à afficher 12:00
et --:--
alternativement dans une boucle infinie .
La période doit être d'une seconde divisée en deux périodes égales de 0,5 seconde. Ici, "1 seconde" et "uniformément" peuvent être interprétés librement. Par exemple, il est acceptable que le code marque une pause de 0,5 seconde entre l'affichage des chaînes, même si la période résultante sera alors légèrement supérieure à 1 seconde. Une pause initiale avant d'afficher la première chaîne est acceptable.
Chaque nouvelle chaîne peut être affichée en remplaçant la chaîne précédente ou dans une nouvelle ligne . Les espaces de fin sont autorisés, sauf que si chaque nouvelle chaîne est sur une ligne différente, il ne doit pas y avoir de lignes vides entre des chaînes consécutives.
Le code le plus court en octets gagne.
Réponses:
Gelée , 20 octets
Comment ça marche
la source
HTML / CSS,
131108106101 +1817 =149126125123118 octetsEdit: 23 octets enregistrés grâce à @insertusernamehere. Enregistré 1 octet en passant de
<pre>
à<tt>
. 2 octets sauvés grâce à @darrylyeo. 5 octets sauvegardés grâce à @DBS.la source
a{position:absolute}
mais j'ai complètement oublié lepre
...<tt>
.}}
complètement la finale .margin-left
àmargin
puisque vous travaillez à partir en haut à gauche de toute façonmargin:-5ch;
devrait avoir le même effet.Shell et
pv
26 octetsCet
yes
outil standard et l’pv
élément de pipeline Shell permettent de mesurer les données transitant parla source
-qlL2
pour créer 2 lignes par secondes au lieu de-qL12
: 12 caractères par seconde. La longueur du script est la mêmePython2,
807573696766 octetsJ'ai remarqué que ma magie de chaîne était un peu plus longue que de la sélectionner dans un tableau.Nevermind, compris.Explication :
Je mets un compteur n à 0, qui sera basculé entre 0 et 1.
Je boucle sans fin avec la boucle
while 1
.Je crée une chaîne
1-2-::0-0-
, qui contient la chaîne12:00
et--:--
entrelacé.En partant de l'index 0 avec un pas de 2, on obtient:
12:00
En partant de l'index 1 avec un pas de 2, on obtient:
--:--
J'utilise n pour faire la séquence répétée 0 , 1 , 0 , 1 , 0 ... qui sera l'index de départ de la chaîne.
n^=1
, dans chaque boucle, nous obtenons cette séquence.^
être l'opérateur XOR.n^=1
résulte en 1n^=1
résulte en 0.5
->0.5
) secondes.@ FlipTack a enregistré 4 octets! -> Mettez la boucle dans une ligne.
@Rod enregistré 2 octets! ->
n+=1
ton^=1
, doncn%2
ton
.@xnor a sauvegardé un octet! ->
while 1
->while[time.sleep(.5)]
.la source
n+=1
parn^=1
, puis utiliser[n::2]
, enregistre 2 octets et évite les gros nombres c:print"1-2-::0-0-"[n::2]
pourprint"\b"*6+"1-2-::0-0-"[n::2],
elle ajoutera quelques octets mais il clignote en place\r
au lieu de\b\b\b...
vous déplacer au début de la ligne. Quoi qu'il en soit, cela ne ferait qu'ajouter des octets à la solution actuelle.while[time.sleep(.5)]:
.Octave,
63626155 octetsSauvegardé deux octets grâce à Tom Carpenter! L'utilisation d'une seule chaîne au lieu de deux dans un tableau de cellules était plus courte.
Explication:
Quelques octets enregistrés car Octave ne nécessite pas de deux points ou de points-virgules entre
flip(c)
etdisp()
, et entrepause(.5)
etend
.la source
flip
place d'un compteur!JavaScript, 59 octets
Explication
setInterval('...',500)
définit un intervalle pour exécuter le code dans la chaîne toutes les 500 millisecondes, ou 1/2 par seconde.y=1
définit une variabley
, à 1 initialement. De cette façon, la première chose imprimée est12:00
parce qu’elley
est utilisée pour accéder au tableau.console.log(...)
connecte quoi que ce soit à la console, que ce soit12:00
ou--:--
.["12:00","--:--"][y^=1]
crée un tableau avec des chaînes contenant les deux états. Ensuite,y
est utilisé pour accéder à l'un des éléments. Enfin,^=
ou l'opérateur composé XOR le faity = y ^ 1
. Cela inverse simplement le bit car1 ^ 1
vaut 0 et0 ^ 1
vaut 1, comme ce que @TuukkaX a fait . De cette façon, la chaîne journalisée alterne entre les deux éléments du tableau et crée ainsi l'effet clignotant.la source
y=1;setInterval('console.log(y?"12:00":"--:--");y=!y',500)
You can save some bytes with setInterval(...,i=500) :-)
. En gros, nous avons la même réponse et cela fonctionne pour vous aussi.V ,
3130272524 octetsEnregistré 5 octets grâce à @ nmjcman101 en échangeant l'ordre
12:00
et de--:--
sorte quek
peut être retiré tout en retirantò
afin qu'il puisse être ajouté implicitement à la finEnregistrée 1 octet grâce à @DJMcMayhem en mettant à la fois
12:00
et--:--
dans une ligneAncienne solution:
<ESC>
est0x1b
Hexdump:
Explication
Gif (obsolète)
Remarque: j'ai mis en évidence activé
la source
ò
est donnée implicitement, vous pouvez donc la supprimer.ò
. Il ne fonctionne qu'une foisk
. Ensuite, au lieu depkdd
vous pouvez simplement utiliserVp
, commep
en mode de sélection visuel échange efficacement la sélection avec le registre par défaut.ò
, mais si cela fonctionne maintenant, je pense que vous devriez pouvoir le changer enòVp:sl500m
et laisser V l'ajouter^Mò
pour 2 octets.bash,
585645 octetssauvé 3 octets en supprimant--
aprèsset
comme 1er argument est un nombre.16 octets enregistrés en utilisant la syntaxe de @DigitalTrauma :
Puis perdre 5 octets à cause du commentaire de zeppelin .
Cela n'a pas pu être testé en ligne de commande. Lorsque nous impliquons
$0
, cela doit être écrit dans un script pour pouvoir être exécuté.Détourner
Avec un peu de préparation, cela pourrait devenir intéressant ( 412 octets ):
Ou même deux mêmes lignes mais avec:
la source
s(){ echo $1;sleep .5;};for((;;)){ s 12:00;s --:--;}
printf '%%\041\n/Helvetica findfont\n24 scalefont\nsetfont\nnewpath\n%s %s moveto\n(%s) show\nshowpage\n' -2.456 0.550003 12:00 | gs -sDEVICE=pnmraw -r600 -g470x146 -sOutputFile=- -q - | pnmscale -width 160 | ppmtopgm | pgmtopbm | pbmtoascii -2x4
;-)f()(echo $1;sleep .5);f 12:00;f --:--;$0
Perl, 49 octets
Perl ne
sleep
peut pas dormir pendant une durée inférieure à 1 seconde, d'où l'utilisation deselect undef, undef, undef, .5
(jouée en remplaçantundef
par$,
) pour dormir 0,5 seconde.Autre chose intéressante:
$|
ne peut que tenir0
ou1
. Donc,$|--
change simplement sa valeur, de0
à1
.Et finalement,
{... ;redo}
agit comme une boucle infinie.la source
*> <> ,
4342 octetsEssayez-le ici!
Je sens que je devrais être capable de raccourcir ça, j'ai quelques idées à essayer ... En gros, ça fait une pile de
:1200----
. Il isole le:
et retourne la pile en l'insérant:
au milieu de l'un----
ou de l'autre1200
(en fonction de la fin de la pile).Je dois également noter que la seule instruction *> <> utilisée est
S
(veille), sinon il s'agit d'un programme approprié> <>.Mise à jour: 1 octet enregistré en déplaçant le
:
vers la droite au lieu de le protéger avec un registre.Explication
Initialisation
Ici, nous construisons la pile que nous utiliserons pour la vie du programme.
Temps de sortie
C'est la section où le temps est réellement sorti. Le premier 5 est poussé vers la pile afin que la boucle ci-dessous sache s'exécuter 5 fois.
Récupérer et échanger
Ici, nous récupérons la
:
position qui en résulte après la sortie, et nous nous retrouvons avec une pile inversée. En fait, cela se termine bien dans "temps de sortie", provoquant une boucle infinie.Solution de 45 octets
Essayez-le ici!
Celui-ci est aussi fondamentalement un programme <>.
J'ai vraiment pensé qu'il serait possible d'économiser des octets avec cette approche. Ceci sort tout simplement
12:00
, alors--:--
. Je sauve des octets en réutilisant la routine de sortieo/!?l
(je réutilise même ce miroir comme entrée et comme sortie). J'utilise plusieurs piles pour stocker l'état (avec sortie12
ou--
) et sélectionne l'état avec lequel je devrais sortirv>]?v
.Explications à venir bientôt! (1/2)
la source
HTML / CSS (Chrome uniquement), 80 + 4 = 84 octets
Modifier : l'attribut "contenu" ne peut pas être animé par la spécification CSS , mais se trouve sur le navigateur Web de bureau Chrome.
la source
Noodel , non concurrent de 16 octets
Noodel est toujours un travail en cours. J'essaie juste de me mouiller avec quelques défis.
Essayez-le :)
Comment ça marche
Voici un extrait de code :)
la source
QBIC ,
3733 octetsQBasic ne peut malheureusement dormir que pendant des secondes entières. Je réfléchirai à la mise au point d'une méthode permettant plus de flexibilité bientôt. J'ai entré 1 comme
01
pour simuler.5
.Explication:
Dans les versions plus anciennes de QBIC,
$
et(espace) étaient des caractères réservés. L'appel d'une fonction QBasic qui nécessitait des espaces (comme
sleep x
) ou$
(left$(..)
) nécessitait un littéral de code:Le code dans un bloc littéral de code est passé directement à QBasic sans être analysé par QBIC. En déchargeant des fonctions de ces symboles (
$
devenus'
, et les nouvelles lignes sont maintenant┘
(alt-217) au lieu de), les symboles ne sont plus considérés par QBIC comme des caractères spéciaux, mais simplement transmis. La même chose est effectivement vraie pour l'alphabet minuscule: il est utilisé pour représenter les variables numériques à la fois dans QBIC et QBasic et reste inchangé. Utiliser une fonctionnalité QBasic qui n'est pas implémentée dans QBIC (comme
SLEEP
) consiste simplement à ne pas utiliser les caractères réservés à QBIC. Ceci est facilité par les modifications récentes des symboles de commande.la source
JavaScript,
777672 octetsMerci à Kritixi Lithos pour 1 octet et L. Serne pour 4 octets!
la source
1000
peut être raccourci à1e3
setInterval
etsetTimeout
acceptez une chaîne avec du code comme premier argument, vous pourrez donc en enregistrer un autre 4B:setInterval('l=console.log,l("12:00"),setTimeout("l(
-: -)",500)',1e3)
`
s signifient cela est maintenant ES6, alors que la réponse précédente que nécessaire ES5.Python 2,
88857371 octetsEssayez-le ici!
En empruntant l’idée de Stewie Griffin de retourner la liste, le programme est devenu possible. Version non-lisée avec explication:
Merci @ FlipTack pour la sauvegarde de 14 octets!
la source
PHP,
51 50471 octet enregistré en raison de manatwork et 3 autres enregistrés par insertusernamehere. Merci!
la source
usleep(5e5)
appel dufor
3ème paramètre de, le,
séparateur devient inutile, en enregistrant 1 caractère.while(1)
au début.echo
et$i
et remplacez-le\n
par une nouvelle ligne.Pyth, 23 octets
En pseudocode:
Utilise la variable pré-initialisée
Z
comme bascule et inverse son état à chaque foisif
pour vérifier l'état.la source
ruby,
4742 octetsPas encore de réponse, alors voici mon premier essai:
la source
GNU sed, 39 octets
EDITS:
Golfé
A expliqué
Essayez-le en ligne!
la source
dc (bash), 37 octets
Cela fonctionne en poussant les deux chaînes "12:00" et "-: -" sur la pile, puis en échangeant plusieurs fois les valeurs, en imprimant l'élément en haut de la pile et en dormant une demi-seconde.
Pour l'exécuter, vous pouvez l'enregistrer dans un fichier, puis taper
ou vous pouvez l'exécuter directement à partir de la ligne de commande bash en tapant
la source
Perl 6 ,
48 4134 octetsla source
for
boucle peut le rendre un peu plus court:for |<12:00 --:-->xx* {sleep .5;.say}
say
retourne 1:sleep .say/2 for |<12:00 --:-->xx*
Gelée, 22 octets
Ne fonctionne pas sur TIO. Faire fonctionner Jelly sur Android avec QPython3 était également une expérience amusante.
Explication
la source
Mathematica, 38 octets
Explication
Émet une variable d’horloge qui passe continuellement de 0 à 1 toutes les secondes.
Si la variable d'horloge est supérieure à 0,5, indiquez "12:00". Sinon, éditer "-: -".
Rendre le programme dynamique (mise à jour constante)
la source
Javascript,
57552 octets économisés grâce aux ETHproductions
la source
setInterval(...,i=500)
:-)Postscript
225214Pour le plaisir seulement! N'envoyez pas ceci à une vraie imprimante !!
Essayez le:
ou
puis
Mais n'essayez pas de l'ouvrir avec une visionneuse plus sophistiquée et de vous intéresser à la vignette du bureau!
la source
gs -c '...'
commande affiche une page blanche, vous devrez peut-être agrandir la fenêtre d'affichage ou utiliser une résolution inférieure:gs -r45 -c '...'
ou une taille de papier inférieuregs -r600 -g360x200 -c '...'
Javascript (navigateur),
17416015912211211110910766 (91) octetsJ'ai choisi de ne pas
pre
utiliser de police monotypée . Mon nouveau compte est donc 66 . Certains caractères sont ajoutés pour utiliser des polices à espacement fixe, mais comme cela n'est pas nécessaire, je ne compterai pas ces 25 caractères supplémentaires.Merci à ETHproductions pour avoir économisé 14 octets,
à Kritixi Lithos pour enregistrer 1 octet,
pour manipuler pour sauver
13 octets,à Christoph pour avoir sauvé deux autres octets et
me faire économiser 37 octets en utilisant
[..][b^=1]
au lieu desetTimeout
... et 10 autres en les remplaçantfunction(){..}
par des guillemets ...... pire:
De 66 à quelque chose de plus ...
... mais pour le plaisir, dans l'esprit d'un affichage clignotant:
la source
1000
peut devenir1e3
window.
;window.setTimeout
est le même quesetTimeout
.tt
est plus court quepre
et implique également l’utilisation de la police de caractères monospace. (C'est juste un élément en ligne, pas un bloc, mais cela ne devrait faire aucune différence ici.)b=document.body.append(a=document.createElement('tt'))
d=document;d.body.append(a=d.createElement('tt'));setInterval("a.innerHTML=++b%2?'12:00':'--:--'",b=500)
sauve 5 octetssetInterval("document.body.innerHTML=++b%2?'12:00':'--:--'",b=500)
est à la traîne du monospace sophistiqué mais n’a que 66 octets.QuickBASIC , 167 piqûres (délicieux)
Je n'allais jamais gagner de toute façon. QB n'a pas de floor (), et n'a pas non plus de fonction pour dormir pendant x millisecondes. Par conséquent, cela fonctionne en saisissant la partie à virgule flottante de la minuterie (le nombre de secondes écoulées depuis minuit, plus une fraction de la seconde en cours exprimée en décimale à deux chiffres). Nous y ajoutons ensuite une boucle "50 unités" pour déterminer le moment où la phase doit basculer de "-: -" à "12:00", et nous utilisons la décimale TIMER d'origine pour le basculement de "12:00". à "--:--".
Enfin, même si cela est conforme à QB4.5, DOSBox sur une machine assez puissante ignorera les temps. En effet, QB n’est vraiment pas assez rapide pour effectuer la DO-LOOP et les évaluations à l’intérieur du MS dans lequel nous effectuons la comparaison. Aurait besoin d’une boîte de la FUTURE!
Quoi qu'il en soit, j'ai maintenant l'air d'avoir 100 ans et j'ai rendu heureux tous les étudiants de l'université américaine, car ils ont probablement une réponse à donner à leur cours de Comp Sci - puisqu'ils enseignent encore cette ...
la source
b% = b% - 99
à direb%=b%-99
?Clojure,
7962 octetsV2
-17 octets en passant d'une terrible boucle d'indexation à une liste infinie.
Crée une liste infinie de
"12:00"
et"--:--"
répéter encore et encore, puis utilisedoseq
pour tirer constamment le message suivant, et l' imprimer.V1
Je ne pouvais pas penser à un bon moyen de compacter les constantes "12:00" et "-: -", donc je devais les coder en dur.
Ungolfed:
la source
Pushy , 22 octets (non concurrents)
Cette réponse utilise les deux piles, en les retournant, en imprimant les caractères à tour de rôle:
La
oW
commande fait partie d'un ensemble de commandes expérimentales postérieures au défi, rendant cette réponse non concurrente.la source
Windows PowerShell,
4655 octetsCode d'origine:
la source