Inkrementelles Spielzeitformat
Tor
Inkrementelle Spiele haben oft einen Countdown-Zähler, der die Tage, Stunden, Minuten und Sekunden anzeigt, bis eine Aufgabe abgeschlossen ist. Abhängig vom verfügbaren Speicherplatz können sie wie folgt formatiert werden:
2d 13h
23h 59m 48s
14m
3h 0m 0s
Das Ziel dieses Codegolfs ist es, eine Funktion oder ein Programm zu schreiben, die bzw. das diese Formatierung durchführt.
Eingänge
- Die Gesamtanzahl der Sekunden.
- Die maximale Anzahl der auszugebenden Segmente.
Ausgabe
- Segmente umfassen:
- 0w Wochen
- 0 Tage
- 0h Stunden
- 0m Minuten
- 0s Sekunden
- Jedes Segment ist durch ein einzelnes Leerzeichen getrennt.
- Angezeigte Segmente müssen zusammenhängend sein. Beispielsweise werden Stunden und Sekunden nicht ohne Minuten angezeigt, auch wenn keine Minuten vorhanden sind.
- Einstellige Werte haben keine führenden Nullen, ein Wert von Null muss jedoch als angezeigt werden
0
. - Die Werte sind abgerundet.
- Das erste angezeigte Segment ist der erste Wert ungleich Null.
Testfälle
seconds segments output
0 1 0s
123 1 2m
123 2 2m 3s
123 3 2m 3s
82815 3 23h 0m 15s
307891 2 3d 13h
307891 4 3d 13h 31m 31s
604800 1 1w
604800 6 1w 0d 0h 0m 0s
Gewinnen
Die Lösung mit der niedrigsten Byteanzahl in einer Woche gewinnt die "Akzeptanz".
Bearbeitungen
- Klargestellt, welches Segment das erste ist, wie in den Beispielen gezeigt.
- Testfall 4 gemäß Anfrage hinzugefügt.
307891 1
?0w
oder1w
.3d
? "Das erste angezeigte Segment ist der erste Wert ungleich Null"Antworten:
CJam (Snapshot),
4138 BytesOben wird die Caret-Notation verwendet, da zwei der Zeichen nicht druckbar sind.
Vielen Dank an @ Sp3000 für das Golfen mit 2 Bytes.
Testen
Die neueste stabile Version (0.6.5) hat einen Fehler , der dazu führen kann, dass
{}#
Integer statt Long zurückgegeben werden. Paradoxerweise kann dies umgangen werden, indem auf integer (i
) umgewandelt wird.Um dies mit Code mit dem Online-Interpreter auszuführen, klicken Sie auf diesen Permalink oder kopieren Sie den Code aus dieser Paste .
Alternativ können Sie den neuesten Snapshot herunterladen und erstellen, indem Sie die folgenden Befehle ausführen:
Sie können die CJam-Datei folgendermaßen erstellen:
Wie es funktioniert
quelle
Java
197,191 BytesMir ist gerade aufgefallen, dass Java Deklaration wie unterstützt
String a[]
. Dies ermöglichte es mir, die Deklaration vonb
undz
in dieselbe Zeile zu ziehen, was mich davon abhielt,String
erneut zu schreiben .quelle
;z=" ")
- sehr schlau.C
134127110104103 BytesNeue Version:
Vorherige Version:
quelle
Pyth,
3943 Bytesedit: +4 Zeichen, weil ich den
0s
Testfall vergessen habe.Dies beinhaltet 2 nicht druckbare Zeichen. Holen Sie sich den aktuellen Code und probieren Sie ihn online aus: Demonstration
Erläuterung:
quelle
Python 2.7 -
181178174 BytesMein erster Versuch etwas zu golfen.
quelle
if n!=0
auf nur ändernif n
.Julia, 158 Bytes
Ich bin mir sicher, dass dies mit einem klügeren Ansatz kürzer sein könnte, aber das ist, was ich jetzt habe.
Dadurch wird eine unbenannte Funktion erstellt, die zwei Ganzzahlen als Eingabe akzeptiert und eine Zeichenfolge zurückgibt. Um es zu nennen, geben Sie ihm einen Namen, z
f=(s,g)->...
.Ungolfed + Erklärung:
Beispiele:
quelle
Scala, 147 Bytes
quelle
RS , 367 Bytes
Live-Demo und alle Testfälle.
Chaotisch, chaotisch, chaotisch ...
Die Ausführung der Testfälle unter Chrome für Android dauert ca. 3-7 Sekunden. Verwenden Sie nicht den Debug-Modus, der Ihren Browser in diesem Fall aufgrund der gesamten Ausgabe, die gedruckt werden würde, einfrieren kann.
quelle
C #,
239 237 170164 BytesDies ist bei weitem nicht so kompakt wie andere Lösungen, aber ich kann diese Herausforderung nicht bewältigen, ohne mich selbst daran zu stechen.
Diese neueste Iteration wurde durch die Antwort von ESC inspiriert .
Zur Verdeutlichung eingerückt:
quelle