Erstellen Sie eine BCD- Binäruhr in ASCII. Wie impliziert, soll die Zeit in sechs Punktspalten angezeigt werden:
(Quelle: Wikimedia Commons )
Jede Spalte ist eine binär codierte Ziffer, die Stunden, Minuten und Sekunden von links nach rechts liest. Die Stunden werden im 24-Stunden-Format angegeben.
Die Anzeigezeit wird von der Befehlszeile oder von stdin gelesen (je nachdem, was besser passt). Wenn leer, sollte stattdessen die aktuelle Zeit verwendet werden.
Die Ausgabegröße ist hier etwas eingeschränkt und wir können nur zwei Textzeilen anpassen. Sie müssen die Punkte also nur in zwei Zeilen einfügen. Die Charaktere .
, :
und '
kommen hier praktisch.
Eingang
Die Zeit für die Anzeige im ISO-8601-Format, dh HH:MM:SS
ohne Sekundenbruchteil. Obligatorisches 24-Stunden-Format. Der Eingang kann leer sein. In diesem Fall wird die aktuelle Zeit verwendet.
Ausgabe
Zwei Zeilen mit repräsentieren den BCD-Binärtakt wie im obigen Bild. Jede Zeile ist genau sechs Zeichen lang und die einzigen zulässigen Zeichen sind Leerzeichen, Punkt, Doppelpunkt und Apostroph.
Gewinner
Die kürzeste Anzahl von Code pro Byte gewinnt. Bei einem Unentschieden gewinnt die Lösung zuerst.
Probeneingabe 1
(leeren)
Beispielausgabe 1
.
''. ::
Probeneingabe 2
17:59:20
Beispielausgabe 2
..'
.:..'
Probeneingabe 3
01:08:01
Beispielausgabe 3
'
. .
Rubin,
107 103 99 9490 ZeichenBeachten Sie, dass die Eingabe keinen Zeilenumbruch enthalten sollte. Verwenden Sie zum Testen der Lösung beispielsweise Folgendes
echo -n "01:08:01" | ruby1.9 bcd.rb
.Um das Standardverhalten zu testen, führen Sie es mit aus
ruby1.9 bcd.rb
und geben Sie es ein^D
(dh einen wörtlichen EOF).quelle
Time.now.to_s[11,8]
.Windows PowerShell, 81
Da ich beim Schreiben der Aufgabe keine Implementierung erstellt habe, fühle ich mich auch von Anfang an berechtigt, Golf zu spielen :-)
Geschichte:
[Math]::Floor
ist waaaayy zu lang. Ich hasse, dass.:
für die erste Zeile.58
anstelle der:
automatischen Umwandlung in eine Ganzzahl - keine$_
Anführungszeichen mehr erforderlich :-)-join
sind nicht mehr erforderlich.quelle
Ruby - 124 Zeichen
quelle
C #
236 Zeichen
Lesbar:
quelle
- 48
wenn Sie tun% 4
, wie48 % 4 == 0
c/4-12
kürzer ist als(c-48)/4
... :)Golfscript (+ Ruby), 63
Noch ein Anfänger mit Golfscript. Schlag mich nicht.
quelle
""
zwingen zu false, damit Sie sie entfernen können,\
.Perl (84)
quelle
"\n$&"
zu$/.$&
- üblicher Perl-Golf-Trick :)Python 3, 136 Zeichen
quelle
wc -c
. Gute Arbeit tho. +1Python -
201172 Zeichenquelle
t=raw_input().replace(':','')
/if not t:t=strftime('%H%M%S')
- spart Ihnen 5 Zeichen :)Lua -
163160 Zeichenquelle
VBA (Excel),
150148132 BytesVerwenden von Sofortfenster und Zelle
[A1]
als Eingabe.quelle
If
Anweisung in die[..]
Notation einfügen und ein nicht unterbrechendes Leerzeichen anstelle eines regulären Leerzeichens in der geteilten Anweisung (Alt + 255) verwenden und dann anstelle der Zeichenfolgenverkettung die Zeichenfolgenaddition verwenden. Sollte so aussehena=Format([IF(A1,A1,NOW())],"hhmmss"):b=Split(" . ' :"):For c=1To Len(a):d=Mid(a,c,1):e=e+b(d\4):f=f+b(d Mod 4):Next:?e:?f
, wo das erste Zeichen in der Split-Anweisung das nicht unterbrechende Leerzeichen istsplit
Funktion. Wieder neue Dinge gelernt XD Schön! Und danke! : DScala, 222:
quelle
VimScript, 143 Zeichen
quelle