Einführung
Stellen Sie sich vor, diese Zeile besteht aus zwei Zeilen. Die oberen Punkte stehen für Stunden (24-Stunden-System), während die unteren Kommas für Minuten stehen . Ein Zeichen kann Stunde, Minute oder beides darstellen - wann immer es möglich ist.
Zuerst müssten Sie wahrscheinlich die Minuten seit Mitternacht in Stunden und Minuten umrechnen .
Das Ergebnis ist die Zeichenfolge, die die aktuelle Zeit im "Punktformat" anzeigt. Die Punktzahl ( Apostroph zählt hier als Punkt und wird so genannt! ) Ist die Stundenzahl seit Mitternacht und die Kommazahl ist die Minutenzahl. Ich werde ein paar Beispiele zeigen, um es klar zu machen.
- (Bemerkung) hh: mm -
result
- (Nur Stunden) 05:00 -
'''''
- (Nur Minuten) 00:08 -
,,,,,,,,
- (Stunden <Minuten) 03:07 -
;;;,,,,
- (Stunden> Minuten) 08:02 -
;;''''''
- (Stunden = Minuten) 07:07 -
;;;;;;;
- (Beginn des Tages) 00:00 -
( leeres Ergebnis )
Beachten Sie, dass "beide" Zeichen maximal 23 Mal verwendet werden können - für 23: xx, wobei xx 23 oder mehr ist.
Symbole
Wenn ein Charakter in Ihrer Sprache maskiert werden muss (siehe Regel 5.), können Sie ihn in eine der Alternativen ändern. Wenn die genannten Alternativen nicht ausreichen, können Sie auch andere Symbole verwenden - halten Sie diese jedoch in einem angemessenen Rahmen. Ich möchte nur nicht, dass Flucht eine Barriere ist.
;
(Semikolon) - Marker für beide Stunden und Minuten (alt::
)'
(Apostroph) - Marker für Stunden (alt:'``°
),
(Komma) - Marker für die Minuten (alt:.
)
Zusätzliche Regeln
- Der Code mit der geringsten Anzahl von Bytes gewinnt!
- Sie müssen beide Symbole verwenden, wann immer dies möglich ist. Für 02.04 kann das Ergebnis nicht sein
'',,,,
, noch;',,,
. Es muss sein;;,,
- Eingabe - kann ein Skript- / App-Parameter, eine Benutzereingabe (wie readline) oder eine Variable innerhalb von Code
3.1 sein. Wenn die Variable inside code verwendet wird, muss ihre Länge so lang wie möglich sein. Es ist1439
(23:59), also würde es so aussehent=1439
- Der gemeinsame Teil, der durch "beide" Zeichen (12 in 12:05, 3 in 03:10) symbolisiert wird , muss am Anfang der Zeichenfolge platziert werden
- Symbole können nur durch Alternativen ersetzt werden, wenn sie in Ihrem Code maskiert werden müssten.
- Die Eingabe erfolgt in Minuten nach 00:00 . Sie können davon ausgehen, dass dies eine nicht negative Ganzzahl ist.
Testfälle
Input: 300
Output: '''''
Input: 8
Output: ,,,,,,,,
Input: 187
Output: ;;;,,,,
Input: 482
Output: ;;''''''
Input: 427
Output: ;;;;;;;
Input: 0
Output: (empty)
1439
ist23:59
und nicht1339
. (23 x 60 + 59).Antworten:
Pyth, 19 Bytes
Testsuite
quelle
CJam,
222019 BytesNimmt Eingaben von STDIN entgegen:
Teste es hier.
Erläuterung
Es war wirklich ein Glück, wie gut die Dinge hier zusammengearbeitet haben, insbesondere die Zuweisung von Stunden zu
'
und Minuten,,
so dass die Reihenfolge der Stunden und Minuten auf dem Stapel mit der Zeichenfolgendarstellung des Zeichens übereinstimmte.Dies ist der einzige 3-Byte-Block, den ich bisher gefunden habe. Es gab Tonnen von 4-Zeichen-Lösungen:
quelle
GNU Sed, 37
Die Punktzahl enthält +1 für die
-E
Option zum Beruhigen.Ich war nicht besonders beeindruckt von der Golffreundlichkeit meiner Bash-Antwort und dachte, ich würde es aus Spaß mit sed versuchen.
Die Eingabe ist gemäß dieser Meta-Antwort unär .
Probieren Sie es online aus
quelle
Python 2, 56 Bytes
Eine Funktion, die druckt (ein Zeichen kürzer als
t=input();
).Die Methode ähnelt der von Loovjo . Die Anzahl
,
ist der Unterschied zwischen Minuten und Stunden mit einem impliziten Minimum von 0. Denn'
es ist die Negation. Für;
berechnet diemin
implizit so viele , indem sie;
als Stunden, dann auf die Anzahl der Minuten Kürzen.Das spart Zeichen
d
, aber nicht die Anzahl der Stunden und Minuten. Das Analogon mit Lambda war zwei Zeichen länger (58), daher lohnen sich die variablen Zuweisungen.Bei der direkten Verarbeitung der Eingabe wurden auch keine Zeichen gespeichert (58):
Eine andere Strategie mit viel längerem Schneiden (64):
quelle
Retina , 24
Trivial Port meiner sed Antwort .
Die Eingabe ist gemäß dieser Meta-Antwort unär .
Probieren Sie es online aus.
quelle
Pure Bash (keine externen Dienstprogramme), 103
Vielen Dank an @ F.Hauri für das Speichern von 2 Bytes.
quelle
$1
und$2
in Zeile 3p()
schreibenp , $c
.printf "%s"
, wennc
leer ist (wenn es nicht wiederverwendet wird)C 119 Bytes
Detailliert
quelle
putchar
& Integer-Literalen als Zeichen spart ein Byte, das Ziehen der Semikolons im Makro spart zwei weitere :)while
in Ihrem #define-Makro verlieren . -1 ByteHaskell,
6866 BytesAnwendungsbeispiel:
Das Schlaue dabei ist, dass
replicate
die leere Zeichenfolge zurückgegeben wird, wenn die angegebene Länge negativ oder null ist, sodass ich sie auf beide Differenzen anwenden kann und nur die positive auftaucht. Der erste Teil ist einfach, da die Anzahl der Semikolons nur das Minimum der beiden ist. DannzipWith
wendet die Funktion auf die entsprechenden Positionen.EDIT: Ich habe festgestellt, dass ich minutenlang den falschen Buchstaben verwendet habe
EDIT 2: 2 Bytes dank @Laikoni gespeichert
quelle
concat$
mitid=<<
.JavaScript (ES6) 69
quelle
Powershell,
99 bis85 Bytesparam($n)";"*(($m=$n%60),($h=$n/60))[($b=$m-gt$h)]+"'"*(($h-$m)*!$b)+","*(($m-$h)*$b)
Nach Loovjos Methode ist dies meine PowerShell-Implementierung.
ungolfed
14 Bytes dank AdmBorkBork gespart
quelle
$m
und$h
-Deklarationen darin verschieben und dann die boolesche Multiplikation verwenden. Gefälltparam($n)';'*(($m=$n%60),($h=$n/60))[($b=$m-gt$h)]+'°'*(($h-$m)*!$b)+','*(($m-$h)*$b)
Python 3, 98 Bytes
Wahrscheinlich nicht die beste Antwort, aber es hat viel Spaß gemacht!
quelle
Python 2, 61 Bytes
Erklärung:
quelle
PHP, 81 Bytes
Ich habe mich für die Variableneingabe entschieden, da sie kürzer ist als das Lesen von
STDIN
oder das Verwenden von Befehlszeilenargumenten.quelle
240
. Versuchen Sie$i>=min($h,$m)?$h<$m?",":"'":";"
(+1 Byte). Oder verwenden Siefor($_=1439;$i<max($h=0|$_/60,$m=$_%60);)echo"',;"[$i++<min($h,$m)?2:$h<$m];
(76 Bytes). Übrigens: Single Quote macht-r
unmöglich; Sie sollten Backtick also stundenlang verwenden, wenn Sie sich in einer Zeichenfolge oder in einer°
eigenständigen Zeichenfolge befinden (erfordert keine Anführungszeichen -> -1 Byte).JavaScript (ES6),
7771 Bytesquelle
Perl 6,
103101989769 BytesGibt mehrere Arrays aus, aber scheiß drauf,viel Spaß. Wie immer sind alle Golfmöglichkeiten gegeben.Edit: -2 Bytes: Wurde mutig und entfernte einige Casts.
Edit2: -3 Bytes durch Entfernen der Arrays.
Edit3: -1 Byte zum Drucken im richtigen Format mit "Lambdas" und Entfernen von Klammern.
Edit4: (sorry guys) Missbrauch dieser Stunden - Minuten sollte 0 und das Gegenteil zurückgeben. Entfernte if-Anweisungen. Dann entferne ich die Klammern und stelle fest, dass ich das Lambda überhaupt nicht brauchte. -28 Bytes :)
Woah, ich werde besser darin.
quelle
C 141 Bytes
quelle
h>0||m>0
. Dann müssen Sieh--;m--;
nur einmal in jeder Iteration und das{}
fürif/else
würde veralten.else if(h&&!m)
können Sieelse if(h)
if
und zu verwendenelse
.scanf()
.%24
notwendig ist - maximale Eingabe ist 23:59.Gema, 119 Zeichen
Probelauf:
quelle
Matlab: 89 Bytes
Prüfung:
quelle
SmileBASIC, 59 Bytes
Erklärt:
Es sieht ziemlich schrecklich aus, da der untere Teil von
;
nicht einmal derselbe ist wie,
in der Schriftart von SmileBASICquelle
PHP, 81 Bytes
Einige weitere Lösungen:
Laufen Sie mit
echo <time> | php -R '<code>'
.Durch
1439
Eingabe ersetzen , in Datei speichern, ausführen.quelle
Ruby, 50 Zeichen
Dank an:
Ich habe so lange darauf gewartet, es zu benutzen
Numeric.divmod
, nur um zu erkennen, dass es fürchterlich lang ist.Probelauf:
quelle
(?;*h=t/60)[0,m=t%60]
",',"[0<=>m-=h]*m.abs
05AB1E , 25 Bytes
Probieren Sie es online!
60‰vy„'.Nè×}
kann definitiv verkürzt werden, ich konnte es einfach nicht herausfinden und bezweifle, dass ich 7 Bytes abschneiden kann, um mit diesem Ansatz zu gewinnen, es sei denn, es gibt eine vektorisierte Version von×
.Beispiel (mit Eingabe gleich 63):
D60÷''×s60%'.ׂ.BøJ„'.';:ðK
war meine ursprüngliche Version, aber das ist noch teurer als divmod.60‰WDµ';ˆ¼}-¬0Qi'.ë''}ZׯìJ
Noch eine andere Methode, die ich ausprobiert habe ...quelle
Gleichstrom , 95 Bytes
Probieren Sie es online!
quelle
Java 8,
1019986 BytesErläuterung:
Probieren Sie es hier aus.
quelle