Viele elektronische Geräte, insbesondere alte, blinken, 12:00
wenn die Uhrzeit nicht eingestellt wurde. Der Zweck dieser Herausforderung besteht darin, dies nachzubilden.
Insbesondere besteht die Aufgabe darin, und alternativ in einer Endlosschleife anzuzeigen12:00
--:--
.
Die Periode sollte 1 Sekunde betragen, gleichmäßig aufgeteilt in zwei Perioden von 0,5 Sekunden. Hier können "1 Sekunde" und "gleichmäßig" lose interpretiert werden. Beispielsweise ist es akzeptabel, wenn der Code zwischen dem Anzeigen der Zeichenfolgen 0,5 Sekunden lang angehalten wird, auch wenn die resultierende Zeitspanne dann etwas höher als 1 Sekunde ist. Eine anfängliche Pause vor dem Anzeigen der ersten Zeichenfolge ist zulässig.
Jede neue Zeichenfolge kann entweder durch Ersetzen der vorherigen Zeichenfolge oder in einer neuen Zeile angezeigt werden . Nachgestellte Leerzeichen sind zulässig, außer wenn sich jede neue Zeichenfolge in einer anderen Zeile befindet, dürfen zwischen aufeinanderfolgenden Zeichenfolgen keine Leerzeilen sein.
Kürzester Code in Bytes gewinnt.
Antworten:
Gelee , 20 Bytes
Wie es funktioniert
quelle
HTML / CSS,
131108106101 +1817 =149126125123118 ByteBearbeiten: 23 Bytes dank @insertusernamehere gespeichert. 1 Byte durch Umschalten von
<pre>
auf gespeichert<tt>
. 2 Bytes dank @darrylyeo gespart. 5 Bytes gespart dank @DBS.quelle
a{position:absolute}
aber völlig vergessen über diepre
...<tt>
.}}
komplett entfernen .margin-left
,margin
da du von oben links arbeitenmargin:-5ch;
solltest sowieso den gleichen Effekt haben.Shell und
pv
26 BytesVerwenden Sie das
yes
Standardwerkzeug und daspv
Shell-Pipeline-Element, um die durchlaufenden Daten zu messenquelle
-qlL2
, um 2 Zeilen pro Sekunde zu erstellen, anstatt-qL12
: 12 Zeichen pro Sekunde. Länge des Skripts ist gleichPython2,
807573696766 BytesIch bemerkte, dass meine Saitenmagie etwas länger dauerte als das Auswählen der Saite aus einem Array.Vergiss es, habe es herausgefunden.Erklärung :
Ich setze einen Zähler n auf 0, der zwischen 0 und 1 umgeschaltet wird.
Ich schleife endlos mit der Schleife
while 1
.Ich erstelle eine Zeichenfolge
1-2-::0-0-
, die die Zeichenfolge enthält12:00
und--:--
überlappt.Ausgehend vom Index 0 mit einem Schritt von 2 erhalten wir:
12:00
Ausgehend vom Index 1 mit einem Schritt von 2 erhalten wir:
--:--
Ich verwende n , um die wiederholte Sequenz 0 , 1 , 0 , 1 , 0 ... zu erstellen, die den Startindex der Zeichenfolge darstellt.
n^=1
, in jeder Schleife, erhalten wir diese Sequenz.^
der XOR-Operator sein.n^=1
ergibt 1n^=1
ergibt sich 0.5
->0.5
) Sekunden.@FlipTack hat 4 Bytes gespart! -> Setzen Sie die Schleife in eine Zeile.
@ Rod sparte 2 Bytes! ->
n+=1
aufn^=1
, son%2
zun
.@xnor hat ein Byte gespeichert! ->
while 1
->while[time.sleep(.5)]
.quelle
n+=1
mitn^=1
verwenden, und dann[n::2]
speichert 2 Bytes und vermeiden große Zahlen c:print"1-2-::0-0-"[n::2]
,print"\b"*6+"1-2-::0-0-"[n::2],
werden ein paar Bytes hinzugefügt, aber es wird an Ort und Stelle blinken\r
statt sich\b\b\b...
zu bewegen , um den Anfang der Zeile. Dies würde der aktuellen Lösung jedoch nur Bytes hinzufügen.while[time.sleep(.5)]:
.Oktave,
63626155 BytesZwei Bytes gespart dank Tom Carpenter! Die Verwendung einer einzelnen Zeichenfolge anstelle von zwei Zeichenfolgen in einem Zellenarray war kürzer.
Erläuterung:
Ein paar Bytes gespart, da für Octave kein Doppelpunkt oder Semikolon zwischen
flip(c)
unddisp()
und zwischenpause(.5)
und erforderlich istend
.quelle
flip
anstelle eines Zählers zu verwenden!JavaScript, 59 Bytes
Erläuterung
setInterval('...',500)
Legt ein Intervall fest, in dem Code in der Zeichenfolge alle 500 Millisekunden oder 1/2 Sekunde ausgeführt wird.y=1
Setzt eine Variabley
,, anfangs auf 1. Auf diese Weise wird zuerst gedruckt,12:00
weily
auf das Array zugegriffen wird.console.log(...)
protokolliert alles an der Konsole, entweder in diesem12:00
oder--:--
.["12:00","--:--"][y^=1]
Erstellt ein Array mit Zeichenfolgen, die beide Status enthalten. Danny
wird verwendet, um auf eines der Elemente zuzugreifen. Schließlich^=
oder XOR-Verbundoperatory = y ^ 1
. Dies invertiert nur das Bit, weil1 ^ 1
es 0 und0 ^ 1
1 ist, ähnlich wie @TuukkaX . Auf diese Weise wechselt die protokollierte Zeichenfolge zwischen den beiden Elementen im Array und erzeugt so den Blinkeffekt.quelle
y=1;setInterval('console.log(y?"12:00":"--:--");y=!y',500)
You can save some bytes with setInterval(...,i=500) :-)
. Wir haben im Grunde die gleiche Antwort und sie funktioniert auch bei Ihnen.V ,
3130272524 BytesGespeichert 5 Byte dank @ nmjcman101 durch die Reihenfolge der Austausch
12:00
und--:--
damitk
kann jeder durch das Entfernen entfernt werden ,ò
so dass es am Ende implizit hinzugefügt werden könntenDank @DJMcMayhem 1 Byte gespart, indem beide
12:00
und--:--
eine Zeile eingefügt wurdenAlte Lösung:
<ESC>
ist0x1b
Hexdump:
Erläuterung
Gif (veraltet)
Hinweis: Ich habe die Hervorhebung aktiviert
quelle
ò
wird implizit angegeben, sodass Sie sie entfernen können.ò
. Es läuft nur einmalk
. Dannpkdd
können Sie statt einfach verwendenVp
, wiep
im visuellen Auswahlmodus effektiv die Auswahl mit dem Standardregister vertauscht.ò
, aber wenn das jetzt funktioniert, sollten Sie in der Lage sein, es zu ändernòVp:sl500m
und V das^Mò
für 2 Bytes hinzufügen zu lassen .Bash,
585645 Bytes3 byte durch unterdrücken von--
afterset
als 1. arg wird eine nummer gespeichert .Mit der @DigitalTrauma -Syntax 16 Byte gespeichert :
Dann 5 Bytes wegen Zeppelins Kommentar verlieren .
Dies konnte auf der Kommandozeile nicht getestet werden. Da wir involvieren
$0
, muss dies in ein Skript geschrieben werden, um ausgeführt zu werden.Umleiten
Mit ein wenig Vorbereitung könnte dies schön werden ( 412 Bytes ):
Oder gleich zwei Zeilen aber mit:
quelle
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 Bytes
Perl
sleep
kann nicht schlafen Dauer brüllt 1 sec, also die Verwendung vonselect undef, undef, undef, .5
(golfed durch Ersetzenundef
mit$,
) in dem Schlaf 0,5 Sekunden.Andere interessante Sache:
$|
kann nur halten0
oder1
.$|--
Schaltet also einfach seinen Wert von0
auf um1
.Und schließlich
{... ;redo}
verhält sich wie eine Endlosschleife.quelle
*> <> ,
4342 BytesProbieren Sie es hier aus!
Ich habe das Gefühl, ich könnte das verkürzen, ich habe ein paar Ideen zum Ausprobieren ... Im Grunde genommen macht das einen Stapel aus
:1200----
. Sie isoliert den:
Stapel und dreht ihn um, indem sie ihn:
in die Mitte von entweder----
oder1200
(je nachdem, was sich am Ende des Stapels befindet) einfügt .Ich sollte auch beachten, dass die einzige *> <> Anweisung, die hier verwendet wird,
S
(sleep) ist, andernfalls handelt es sich um ein richtiges> <> Programm.Update: 1 Byte durch Verschieben
:
nach rechts gespeichert, anstatt es mit einem Register zu schützen.Erläuterung
Initialisierung
Hier bauen wir den Stack auf, den wir für die gesamte Laufzeit des Programms verwenden werden.
Ausgabezeit
Dies ist der Bereich, in dem die Uhrzeit tatsächlich ausgegeben wird. Die ersten 5 werden auf den Stapel geschoben, sodass die folgende Schleife 5-mal ausgeführt werden kann.
Erholen und tauschen
Hier erholen wir uns
:
von der Position, die es nach der Ausgabe ergibt, und wir erhalten einen umgekehrten Stapel. Dies führt tatsächlich zu einer "Ausgabezeit", was zu einer Endlosschleife führt.45-Byte-Lösung
Probieren Sie es hier aus!
Dies ist auch im Grunde ein> <> Programm.
Ich dachte wirklich, mit diesem Ansatz könnten einige Bytes eingespart werden. Das gibt
12:00
man dann ganz einfach aus--:--
. Ich spare Bytes, indem ich die Ausgaberoutine wieder verwendeo/!?l
(ich verwende diesen Spiegel sogar als Ein- und Ausgang). Ich verwende mehrere Stapel, um den Status (hat Ausgabe12
oder--
) zu speichern , und wähle aus, mit welchem Status ich ausgeben sollv>]?v
.Erklärungen folgen in Kürze! (1/2)
quelle
HTML / CSS (nur Chrome), 80 + 4 = 84 Byte
Bearbeiten : Das Attribut "Inhalt" kann von der CSS-Spezifikation nicht animiert werden , befindet sich jedoch im Chrome-Desktopbrowser.
quelle
Noodel , nicht konkurrierende 16 Bytes
Noodel ist noch in Arbeit. Ich versuche nur, meine Füße mit ein paar Herausforderungen nass zu machen.
Versuch es:)
Wie es funktioniert
Hier ist ein Codeausschnitt :)
quelle
QBIC ,
3733 BytesQBasic kann leider nur ganze Sekunden schlafen. Ich werde eine Methode entwickeln, die bald mehr Flexibilität ermöglicht. Ich habe 1 eingegeben
01
, um zu simulieren.5
.Erläuterung:
In älteren Versionen von QBIC
$
und(Leerzeichen) waren Zeichen reserviert. Das Aufrufen einer QBasic-Funktion, die Leerzeichen (wie
sleep x
) oder$
(left$(..)
) benötigte, erforderte ein Codeliteral:Code in einem Codeliteralblock wird direkt an QBasic übergeben, ohne von QBIC analysiert zu werden. Durch das Auslagern von Funktionen aus diesen Symbolen (
$
wurden'
und Zeilenumbrüche werden jetzt┘
(alt-217) statt) werden die Symbole von QBIC nicht mehr als Sonderzeichen angesehen und einfach weitergegeben. Dasselbe gilt für das Kleinbuchstaben: Es wird zur Darstellung numerischer Variablen in QBIC und QBasic verwendet und bleibt unverändert. Die Verwendung von QBasic-Funktionen, die nicht in QBIC (wie
SLEEP
) implementiert sind, bedeutet lediglich, dass QBIC-reservierte Zeichen nicht verwendet werden. Dies wird durch die jüngsten Änderungen in den Befehlssymbolen erleichtert.quelle
JavaScript,
777672 BytesVielen Dank an Kritixi Lithos für 1 Byte und L. Serne für 4 Byte!
quelle
1000
kann verkürzt werden auf1e3
setInterval
undsetTimeout
akzeptieren Sie einen String mit Code als erstes Argument, damit Sie einen weiteren 4B:setInterval('l=console.log,l("12:00"),setTimeout("l(
-: -)",500)',1e3)
`
heißt, dies ist jetzt ES6, während die vorherige Antwort nur ES5 benötigte.Python 2,
88857371 BytesProbieren Sie es hier aus!
Durch die Ausleihe von Stewie Griffins Idee , die Liste umzudrehen, wurde das Programm ermöglicht. Ungolfed Version mit Erklärung:
Danke @FlipTack für das Speichern von 14 Bytes!
quelle
PHP,
51 50471 Byte wegen manatwork gespeichert und weitere 3 von insertusernamehere gespeichert. Vielen Dank!
quelle
usleep(5e5)
Aufruf auffor
den 3. Parameter verschieben, wird das,
Trennzeichen unnötig und es wird 1 Zeichen gespart.while(1)
zuerst.echo
und$i
und ersetzen Sie ihn\n
durch einen tatsächlichen Zeilenumbruch.Pyth, 23 Bytes
Im Pseudocode:
Verwendet die vorinitialisierte Variable
Z
als Flip-Flop und kehrt ihren Zustand jedes Malif
um, wenn versucht wird, die Bedingung zu überprüfen.quelle
Rubin,
4742 BytesNoch keine Ruby-Antwort. Hier ist mein erster Versuch:
quelle
GNU sed, 39 Bytes
EDITS:
Golf gespielt
Erklärt
Probieren Sie es online!
quelle
DC (Bash), 37 Bytes
Dies funktioniert, indem Sie die beiden Zeichenfolgen "12:00" und "-: -" auf dem Stapel drücken und dann wiederholt die Werte austauschen, das Element oben auf dem Stapel drucken und eine halbe Sekunde schlafen.
Um dies auszuführen, können Sie es in einer Datei speichern und dann eingeben
oder Sie können es direkt über die Bash-Befehlszeile ausführen, indem Sie Folgendes eingeben
quelle
Perl 6 ,
48 4134 Bytesquelle
for
schleife kann es etwas kürzer werden:for |<12:00 --:-->xx* {sleep .5;.say}
say
1:sleep .say/2 for |<12:00 --:-->xx*
Jelly, 22 Bytes
Funktioniert nicht mit TIO. Es hat auch Spaß gemacht, Jelly mit QPython3 auf Android zum Laufen zu bringen.
Erläuterung
quelle
Mathematica, 38 Bytes
Erläuterung
Gibt eine Taktvariable aus, die kontinuierlich jede Sekunde von 0 auf 1 wechselt.
Wenn die Taktvariable größer als 0,5 ist, geben Sie "12:00" aus. Wenn nicht, geben Sie "-: -" aus.
Dynamisierung des Programms (ständige Aktualisierung)
quelle
Javascript,
5755Dank ETHproductions 2 Bytes gespart
quelle
setInterval(...,i=500)
:-)Postscript
225214Nur zum Spaß! Senden Sie dies nicht an einen echten Drucker!
Versuch es:
oder
dann
Versuchen Sie jedoch nicht, dies mit einem anspruchsvolleren Viewer zu öffnen, und kümmern Sie sich um Desktop-Thumbnails!
quelle
gs -c '...'
Eingabeaufforderung eine weiße Seite anzeigt, müssen Sie möglicherweise das Anzeigefenster vergrößern oder eine kleinere Auflösung verwenden:gs -r45 -c '...'
oder eine kleinere Papiergrößegs -r600 -g360x200 -c '...'
Javascript (im Browser),
17416015912211211110910766 (91) BytesIch habe von genommen,
pre
weil die Verwendung von monotypisierten Schriftarten nicht Teil der Anforderung ist, sodass meine neue Anzahl 66 ist . Einige Zeichen werden hinzugefügt, um monospaced Schrift zu verwenden, aber da dies nicht benötigt wird, zähle ich diese 25 Zeichen nicht mehr.Dank ETHproductions für die Einsparung von 14 Bytes,
zu Kritixi Lithos für das Speichern von 1 Byte,
Manatwork für das Speichern von
13 Byte,an Christoph für das Speichern von zwei weiteren Bytes und
mir selbst für das Speichern von 37 Bytes durch Verwenden von
[..][b^=1]
anstelle vonsetTimeout
... und 10 weitere durch Ersetzenfunction(){..}
durch doppelte Anführungszeichen ...... schlechter:
Von 66 bis etwas mehr ...
... aber zum Spaß, im Geiste eines blinkenden Displays:
quelle
1000
kann werden1e3
window.
;window.setTimeout
ist das gleiche wiesetTimeout
.tt
ist kürzer alspre
und impliziert auch die Verwendung von Monospace-Schriftarten. (Nur ist es ein Inline-Element, kein Block, aber das sollte hier keinen Unterschied machen.)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)
spart 5 BytessetInterval("document.body.innerHTML=++b%2?'12:00':'--:--'",b=500)
liegt nur hinter dem ausgefallenen Monospace, hat aber nur 66 Bytes.QuickBASIC , 167 Bissen (lecker)
Ich würde sowieso nie gewinnen. QB hat keine Etage () und hat auch keine Funktion, um für x Millisekunden zu schlafen . Dies funktioniert also, indem der Gleitkomma-Teil des TIMERS abgerufen wird (gibt die seit Mitternacht verstrichenen Sekunden plus einen Bruchteil der aktuellen Sekunde, ausgedrückt als zweistellige Dezimalzahl, zurück). Wir fügen dann eine Schleife um "50 Einheiten" hinzu, um zu bestimmen, wann die Phase von "-: -" auf "12:00" wechseln soll, und verwenden die ursprüngliche TIMER-Dezimalzahl für die Umschaltung von "12:00". zu "-: -".
Selbst wenn dies in QB4.5 ausgeführt wird, werden in DOSBox auf einem relativ leistungsfähigen Computer keine Beats ausgegeben. Das liegt daran, dass QB nicht schnell genug ist, um den DO-LOOP und die Auswertungen in der MS durchzuführen, in der wir den Vergleich durchführen. Benötigen Sie eine Box aus der ZUKUNFT!
Wie auch immer, ich sehe jetzt 100 aus und ich habe jeden amerikanischen Studenten glücklich gemacht, da sie wahrscheinlich eine Antwort auf ihre Comp Sci-Klasse haben - da sie dies immer noch unterrichten ...
quelle
b% = b% - 99
zub%=b%-99
?Clojure,
7962 BytesV2
-17 Bytes durch Wechseln von einer schrecklichen Indizierungsschleife zu einer Schleife über eine unendliche Liste.
Erstellt eine unendliche Liste von Nachrichten
"12:00"
und"--:--"
wiederholt diesedoseq
ständig. Anschließend wird die nächste Nachricht ständig abgerufen und gedruckt.V1
Ich konnte mir keine gute Möglichkeit vorstellen, die Konstanten "12:00" und "-: -" zu komprimieren, daher musste ich sie nur hart codieren.
Ungolfed:
quelle
Pushy , 22 Bytes (nicht konkurrierend)
In dieser Antwort werden die beiden Stapel verwendet, indem die Zeichen der Reihe nach gedruckt werden:
Der
oW
Befehl ist Teil einer Reihe von experimentellen Befehlen, die die Herausforderung nachdatieren und diese Antwort nicht konkurrieren lassen.quelle
Windows PowerShell,
4655 BytesUrsprünglicher Code:
quelle