Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Klatsch und Tratsch (https://www.delphipraxis.net/34-klatsch-und-tratsch/)
-   -   Verdammt gute Kalenderfrage (https://www.delphipraxis.net/191344-verdammt-gute-kalenderfrage.html)

Wolfgang Mix 4. Jan 2017 15:44

Verdammt gute Kalenderfrage
 
Verdammt gute Kalenderfrage:
(Jahrgangsstufe 7)

C.F. Gauß wurde am 30. April 1777 geboren.
Der 30.4.1967 fiel auf einen Sonntag.
An welchem Wochentag wurde Gauß geboren?

Hilfe: 1800 und 1900 waren keine Schaltjahre.
Weitere Hilfsmittel sind nicht erlaubt!

Wer findet eine nachvollziehbare Lösung?

Der gesuchte Wochentag ist übrigens Mittwoch, aber darum geht
es ja nicht

nahpets 4. Jan 2017 15:59

AW: Verdammt gute Kalenderfrage
 
Sowas in der Art:
Delphi-Quellcode:
Sonntag - (((1967 - 1777) * 365) + (((1967 - 1777) / 4) - 2)) mod 7 = Mittwoch

Jumpy 4. Jan 2017 16:08

AW: Verdammt gute Kalenderfrage
 
Oder:
Von Jahr zu Jahr schiebt sich der Wochentag um eines nach vorne, also 1777 bis 1967 190 mal.
In Schaltjahren sogar zwei Tage: 190 div 4 = 47, wg. 1800/1900: 47-2=45.
190+45=235. 235 mod 7 = 4. 4 Tage Rückwärts von Sonntag => Mittwoch.

Wolfgang Mix 4. Jan 2017 22:02

AW: Verdammt gute Kalenderfrage
 
Beides super Losungen . Bei Stephan merkt man die Codeerfahrung (Code perfekt)

Die andere Lösung auch perfekt und aus meiner Sicht aber schülernäher. Die Kids sind ja erst 13-14.

Meine Note wäre für beide 1+ bzw. 15 Punkte,

Ob ihrs glaubt oder nicht , es gibt noch einen oben drauf (16 Punkte) . Schaut Euch mal den Code von Conway an (Die Doomsday-Methode) . Da geht es noch einige ms flotter, Erklärung kommt, wenn hier nichts mehr kommt.
Der 16-Punkte-Held bekommt mein Buch gratis als Geschenk , versprochen.

Liebe Grüße
Wolfgang

himitsu 4. Jan 2017 23:13

AW: Verdammt gute Kalenderfrage
 
Habt ihr auch die Schaltsekunden berücksichtigt?
Über die Jahre summiert sich das ja. :lol:

nahpets 5. Jan 2017 09:49

AW: Verdammt gute Kalenderfrage
 
Nö, wieso, die ändern doch nix an der Anzahl der Tage, der Anzahl der Jahre, selbst Schaltstunden würden an der Berechnung nix ändern ;-)

himitsu 5. Jan 2017 10:02

AW: Verdammt gute Kalenderfrage
 
Genügend Sekunden ergeben auch einen zusätzlichen Tag :stelldirhierdasironiesmileyvor:

nahpets 5. Jan 2017 10:17

AW: Verdammt gute Kalenderfrage
 
Prinzipiell stimmt das, aber wenn irgendwer definiert, dass ein Tag jetzt eben mal grundsätzlich 24 * 60 * 61 Sekunden hat, ändert sich die Rechnung trotzdem nicht. Ein Tag ist ein Tag ist ein Tag, egal wie wir ihn im Laufe der Zeit umdefinieren. Ein Problem bei der Umrechnung bekommen wird nur, wenn wir im Berechnungszeitraum mehrere, unterschiedlich definierte, Zeitberechnungen haben, wie zum Bleistift 1582 geschehen ;-)

himitsu 6. Jan 2017 11:18

AW: Verdammt gute Kalenderfrage
 
Linux mit seiner Seitrechnung interessiert es schon, aber zum Glück wird hier kaum jemand mit seinem Delphi in näherer Zukunft für Linux entwickeln. :stupid:

nahpets 6. Jan 2017 11:46

AW: Verdammt gute Kalenderfrage
 
Linux zählt doch die Sekunden seit 1.1.1970. Kann man denn da überhaupt mit Zeiten davor rechnen? 8-)

rokli 6. Jan 2017 11:59

AW: Verdammt gute Kalenderfrage
 
Zitat:

Zitat von nahpets (Beitrag 1358235)
Linux zählt doch die Sekunden seit 1.1.1970. Kann man denn da überhaupt mit Zeiten davor rechnen? 8-)

Ich bin nicht ganz sicher, aber ich glaube schon!

nahpets 6. Jan 2017 12:04

AW: Verdammt gute Kalenderfrage
 
Die Frage war nicht ganz ernst gemeint, Delphi fängt mit seiner Zeitrechnung ja auch erst am 30.12.1899 an, da müsste das Problem ja dann auch vorhanden sein und schon halt etwas früher auftreten 8-)

himitsu 6. Jan 2017 13:30

AW: Verdammt gute Kalenderfrage
 
Das kommt drauf an.
Negative Werte gibt es ja nicht immer.

Delphi nutzt standardmäßig TDateTime, was intern die Zeit über einen TSystemTime holt. (Delphi-Referenz durchsuchenNow / MSDN-Library durchsuchenGetSystemTime)
TDateTime ist ein Double und da gibt es negative Werte.
TSystemTime ist ein Record aus Words und da kann man nur bis zum Jahr 0 runter, also ein Jahr, bevor der eine Typ angeblich geboren wurde.

Im negativen Bereich ist Delphi-Referenz durchsuchenTDateTime bissl "gemein", also bei Überschreitung der Grenze unbedingt die OH lesen!

Und nun zum Linux / Unix Timestamp, denn da könnte man den Wert (Sekunden) in einem Integer mit oder ohne Vorzeichen speichern (LongInt oder LongWord).
Da Linux im Jahre 2038 ein Problem bekommen soll, werden sie wohl meistens mit einem signed Integer rechnen und dann gibt es auch ein negatives davor.

2017-01-06 00:00:00 (1483660800)
2038-01-19 03:14:07 ($7FFFFFFF)
2106-02-07 06:28:15 ($FFFFFFFF)

Nur wie man das da mit den Schaltdekunden machen will ... Linux muß dann doch jede einzelne Schaltsekunde kennen und wenn dann mal jemand "unerwartet" daran was ändert....
Und bei der Umrechnung muß man dann auch noch alle Zeitverschiebungen einberechnen. :shock: Ich glaub mit einer extrem kranken mathematischen Formel läßt sich das nicht gut berechnen.

Delphi-Quellcode:
TSystemTime = record // 16 Byte (4 Integer)
  wYear: Word;
  wMonth: Word;
  wDayOfWeek: Word;
  wDay: Word;
  wHour: Word; // 0 bis 65.535 Uhr :lol:
  wMinute: Word;
  wSecond: Word;
  wMilliseconds: Word;
end;


// Ich hätte es ja eher so definiert, aber k.A. was sich der bei Microsoft damals dabei gedacht hat oder ob er nichts dachte, aber ganze Integer wären auch ein Grund.

TSystemTime = record // 10 Byte
  wYear: Word;
  wMonth: Byte;
  wDayOfWeek: Byte;
  wDay: Byte;
  wHour: Byte; // 0 bis 255 Uhr, aber halbe Bytes sind ja blöd
  wMinute: Byte;
  wSecond: Byte;
  wMilliseconds: Word;
end;

rokli 6. Jan 2017 13:59

AW: Verdammt gute Kalenderfrage
 
Zitat:

Zitat von nahpets (Beitrag 1358242)
Die Frage war nicht ganz ernst gemeint, Delphi fängt mit seiner Zeitrechnung ja auch erst am 30.12.1899 an, da müsste das Problem ja dann auch vorhanden sein und schon halt etwas früher auftreten 8-)

Dessen war ich mir schon bewußt! :cyclops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz