Wenn ich meine Geschichte lese und Notizen mache, kann ich es nicht lassen, all diese langen Datteln aufzuschreiben - 1784 sind sechs komplette Bleistiftlifte! jǝǝz!
Wie Sie sehen, bin ich - wie die meisten Herausforderungsposter auf dieser Website - faul, wenn es darum geht, Dinge zu schreiben. Deshalb bitte ich Sie, mir bei der Verkürzung einiger Daten zu helfen. Natürlich muss Ihre Lösung so kurz wie möglich sein, da meine Hand bereits müde vom Schreiben der Testfälle ist.
Wie verkürze ich ein Date?
Na witzig solltest du fragen. Es ist ziemlich einfach:
- Nehmen Sie zwei Ganzzahlen als Eingabe in beliebiger Reihenfolge (
(smallest, biggest)
oder(biggest, smallest)
). - Nehmen Sie die größere der beiden Zahlen und nehmen Sie nur den Teil, nicht die kleinere Zahl.
Beispiel:2010, 2017
Verkürzen2017
auf,-7
weil201_
sich beide Zeichen an denselben Stellen befinden. - Drucken Sie die kleinere Zahl aus oder geben Sie sie zurück, gefolgt von einem Bindestrich und der verkürzten größeren Zahl.
Beispielsweise:
Bonus brownies for you if you figure out these dates' significance :)
1505, 1516 -> 1505-16
1989, 1991 -> 1989-91
1914, 1918 -> 1914-8
1833, 1871 -> 1833-71
1000, 2000 -> 1000-2000
1776, 2017 -> 1776-2017
2016, 2016 -> 2016-
These dates lack significance :(
1234567890, 1234567891 -> 1234567890-1
600, 1600 -> 600-1600
1235, 1424 -> 1235-424
600, 6000 -> 600-6000
1914-18
oder1914-8
?600, 6000 -> 600-6000
?1914-8
ist der Erste Weltkrieg. Jetzt gib mir meine Brownies!Antworten:
05AB1E , 16 Bytes
Probieren Sie es online!
Verwendet Jonathan Allans Algorithmus.
quelle
Jelly ,
1716 BytesEin vollständiges Programm, das eine Liste von Jahren erstellt
from, to
und das Ergebnis druckt.Probieren Sie es online! oder sehen Sie sich die Testsuite an .
Wie?
quelle
[600, 6000]
tauchte verdammt noch mal auf. Und es scheint, dass dies unterbewertet wurde.Javascript ES6,
5957 ZeichenPrüfung:
quelle
(x+'-'+y)
?x=>y=>
), um ein Byte zu speichern.Dyalog APL, 29 Bytes
Probieren Sie es online!
Wie?
⍺,'-'
- das erste Jahr +, -
=x←⍕⍵
- Vergleiche das zweite formatierte Jahr((-⍴x)↑⍕⍺)
- bis zum ersten Jahr mit Leerzeichen von links aufgefüllt⌈\~
- negiere das Ergebnis und markiere alle Einsen nach dem erstenx/⍨
- Nehmen Sie das zweite Jahr in allen markierten Positionquelle
Retina , 34 Bytes
Probieren Sie es online! Link enthält Testfälle. Die Bilanzgruppe und die Wortgrenze stellen sicher, dass beide Zahlen dieselbe Länge haben, bevor das Präfix abgeglichen wird. Wenn nicht, stimmt die Wortgrenze zu Beginn des zweiten Jahres überein, sodass sich das Komma lediglich in einen Bindestrich ändert.
quelle
Python 2 , 102 Bytes
Probieren Sie es online!
Ich denke, es muss einen besseren Weg geben, um dies zu tun, da es sehr ausführlich zu sein scheint. Extremer Missbrauch der `` Auswertung von Variablen, damit dies funktioniert, da wir keine Zeichenfolgen als Eingabe verwenden können.
quelle
Python 2, 127 Bytes
Ich bin noch neu in diesem Bereich, daher weiß ich nicht, ob es in Ordnung ist, eine andere Antwort in derselben Sprache zu verfassen. Da ich die Beiträge anderer Leute noch nicht kommentieren kann, gehe ich hier mein Risiko ein.
Probieren Sie es online!
Was ich tue, ist, ich vergleiche jede einzelne Ziffer von beiden Malen und wenn die größere variiert, drucke ich die kleinere Zahl plus den Rest der größeren.
Wenn mir jemand beim Golfspielen in der dritten Reihe helfen könnte, würde ich mehr als 30 Bytes sparen. Ich habe es nur implementiert, um den Fall von 600.6000 zu behandeln, bei dem die Ziffern gleich, aber nicht gleich lang sind.
quelle
Haskell , 143 Bytes
Probieren Sie es online!
smallest biggest
Eingabe (ganze Zahlen).if length x<length y then y
bedeutet, dass der gemeinsame Teil ungültig ist , wenn erx
weniger Ziffern hat alsy
. Ansonsten speichern wir die Zifferny
der ersten unterschiedlichen Ziffer.quelle
Python 2 ,
8988 BytesProbieren Sie es online!
quelle
Common Lisp, 120 Bytes
Probieren Sie es online!
Kleinste, größte.
Ungolfed:
quelle
C ++,
285271 Bytes-14 Bytes dank Zacharý
Code zum Testen:
quelle
using namespace std;
und dasT
Makro entfernen .