Spoj.com Dos Date
@BlackJack: Wenn ich allerdings "yyyy" angebe, dann macht er mir aus dem Jahr 1 z.B. ein 0001. Das ist ja dann auch nicht im Sinne des Erfinders. Ist ja echt "klasse", wie toll und konsistent das mit dem Datumsformatieren klappt.
@snafu: Dann benutze es doch einfach nur zum Formatieren des Monatsnamens. Und nur zur Vorsicht die Englische Locale mitgeben, damit der bei SPOJ auf dem Server dann nicht am Ende noch polnische Monatsnamen ausspuckt.
Ich geb's jetzt auf in Java. Egal wie klein ich den Puffer für den `BufferedReader` setze, ich bekomme bei der Ausführung auf SPOJ jedes Mal ein überschrittenes Zeitlimit als Antwort und atemberaubenden "Memory Usage". Meine Lösung für `.decode()` war jedenfalls:
Und ich denke, das ist auch korrekt.
EDIT: Und das man die verschiedenen "Formatierungswelten" hier so schön mischen kann, finde ich sogar ganz cool.
Code: Alles auswählen
public static String decode(int dosDate) {
int day = dosDate & 31;
int month = dosDate >> 5 & 15;
int year = dosDate >> 9;
cal.set(Calendar.MONTH, month - 1);
return String.format("%d %tB %d", day, cal, year);
}
EDIT: Und das man die verschiedenen "Formatierungswelten" hier so schön mischen kann, finde ich sogar ganz cool.
103 Zeichen in Ruby:
EDIT: 99 Zeichen:
91 Zeichen:
Code: Alles auswählen
ARGF.lines.next
ARGF.map{|l|d=l.to_i;printf"%d %s %d\n",d&31,Time.new(1,d>>5&15,1).strftime("%B"),d>>9}
Code: Alles auswählen
ARGF.lines.next
ARGF.map{|s|d=s.to_i;puts"#{d&31} #{Time.new(1,d>>5&15,1).strftime("%B")} #{d>>9}"}
Code: Alles auswählen
ARGF.drop(1).map{|s|d=s.to_i;puts"#{d&31} #{Time.new(1,d>>5&15,1).strftime("%B")} #{d>>9}"}