Datumsarithmetik

Neue Frage »

Nyckelpiga Auf diesen Beitrag antworten »
Datumsarithmetik
Hallo,

ich bin auf dieses Board gestossen, weil ich mich gerade mit Quersummen und Daten befasse. Jetzt würde ich mir gerne ein Programm schreiben, dass mir für jedes Datum vom 1.1.1 bis 31.12.2999 die Quersumme in der Form ausrechnet:
Tag + Monat + Jahr = Zahl
Z+a+h+l = Quersumme
Falls Quersumme > 21 bilde weitere Quersumme

Bsp.: 27.06.1967
27 + 6 + 1967 = 2000
2 + 0 + 0 + 0 = 2
if 2 < 22 then goto Ende

Bsp.: 26.06.1967
26 + 6 + 1967 = 1999
1 + 9 + 9 + 9 = 28
if 28 < 22 then goto Ende
else 2 + 8 = 10

usw. Wie gesagt hätte ich das gerne für alle existierenden Daten eine Quersumme kleiner 22.

Ich kann in Perl programmieren, gibt es da evtl. ein paar schicke Module die sowas erleichtern, habe keine Lust die ganze Datumslogik mit den Schaltjahren usw. selber zu schreiben? Ich dachte es sollte sowas geben, da sage ich erstmal einfach: "Gib mir alle realen Daten seit 1.1.1 bis 31.12.2999," dann rechne ich die Quersumme aus für jedes einzelne davon und schreibe alles schick formatiert raus in eine Datei.

Klingt das gut? Hat jemand sowas schon einmal gemacht, oder so was ähnliches und welches Modul von Perl sollte ich dazu verwenden? Gibt es vielleicht auch ein Quersummenmodul? Was heisst Quersumme in englisch?
Nyckelpiga Auf diesen Beitrag antworten »

Und / oder umgekehrt: ein Programm, dass mir alle Daten seit der Zeitrechnung ausspuckt, bei denen nach obiger Quersummenbildungsvorschrift die Quersumme 1,2,3,4,... herauskommt wär auch nicht schlecht, oder sogar noch besser, ich sage welche Quersumme ich suche und welchen Zeitraum ich dabei betrachten will und das Programm spuckt alle Daten aus die meine Kriterien erfüllen.

Na, gibt es das vielleicht schon?
heinerbrämer Auf diesen Beitrag antworten »

wozu soll ein derartiges programm nützen?
Nyckelpiga Auf diesen Beitrag antworten »

Es gibt beim Tarot die persönlichen Karten.

Aus unserem Geburtsdatum oder einem beliebigen Jahr lassen sich drei Zahlen ermitteln, die für unser Leben eine herausragende Bedeutung haben. Diese drei Karten werden bezeichnet als:
1. Die Persönlichkeitskarte, die Auskunft über unsere äussere Erscheinung gibt. Die astrologische Entsprechung dürfte in etwa der Aszendent sein.
2. Die Wesenskarte, die beschreibt, wie es in Herz und Geist aussieht. Ihre astrologische Entsprechung ist die Sonne.
3. Die Wachstumskarte, die Auskunft gibt über die Situation und die Gelegenheiten eines Jahres.

1. Die Persönlichkeitskarte
Sie errechnet sich, in dem aus dem Geburtstag, -monat und -jahr die Quersumme gebildet wird. Diese Quersumme darf nicht größer als 22 sein.

2. Die Wesenskarte
Aus der Persönlichkeitszahl ist die erneute Quersumme zu bilden. Ist die Zahl für die Persönlichkeitskarte bereits einstellig, so ist diese gleichzeitig Wesenskarte. Eine Ausnahme gilt für die 22 als Ausgangszahl. Hier ist die Persönlichkeitskarte die vier (Der Kaiser) und die Wesenskarte automatisch die null (Der Narr).

Bsp.: 13.8.1958
13 + 8 = 21 + 1958 = 1979 = 26 = 8
Da die Quersumme allemal einstellig ist, ist Trumpf 8, "Ausgleichung" sowohl Persönlichkeits- wie auch Wesenskarte.
Oder: 17.7.1956
17 + 7 = 24 + 1956 = 1980 = 18 = 9
Die Persönlichkeitskarte ist die Nummer 18 "Der Mond", die Wesenskarte ist die Nummer 9 "Der Eremit".

3. Die Wachstumskarte
Sie wird ermittelt, indem zu Geburtstag und -monat das aktuelle Jahr addiert wird und hieraus wie oben beschrieben die Quersumme errechnet wird.

Bsp.
13 + 8 + 1992 = 6
Das Wachstum für das Lebensjahr vom Geburtstag 1992 bis zum nächsten im Jahre 1993 steht unter dem Einfluss des Trumpfes Nummer 6, "Die Liebenden".
Zitat von hier.

Ich habe jetzt keine Lust jedesmal meine grauen Zellen anzustrengen wenn mich jemand fragt was ein bestimmter Tag für eine Persönlichkeits- und Wesenskarte bedeutet, sondern will mir die Daten einmal ermitteln und eine Liste machen. Wenn ich schon damit anfange, dann gleich richtig.

Ausserdem habe ich Lust was zu programmieren, ich spiele gerne mit Zahlen rum Augenzwinkern
klarsoweit Auf diesen Beitrag antworten »

Tarot ist irgendwas zwischen groben Unfug und gefährlicher Suggestion. Am liebsten würde ich den Thread schließen. Ich werde mal die anderen Mods befragen.
JochenX Auf diesen Beitrag antworten »

Lassen wir das Kartenlegen mal bei Seite und widmen uns der programmiertechnischen Sache...... besser passen würde das doch eigentlich eh ins Informatikerboard, oder?

Was genau ist eigentlich dein Problem?
Der Algorithmus, der das Datum umwandelt oder suchst du einfach erst mal eine Liste aller möglichen Daten (da du die ganzen Schaltjahre nicht extra bestimmen willst)?

Ein Algorithmus könnte so aussehen:
Eingabe des Datums in der Form als 8stellige Zahl, die Punkte sind natürlich nicht vorhanden.
Die letzte einer solchen Ziffer findest du z.B. mit x-[INT(x/10)]*10, analog kannst du die anderen finden.
Daraus kannst du dann die Quersumme berechnen und wenn es nicht <22 ist, fährst du so fort.
 
 
Nyckelpiga Auf diesen Beitrag antworten »

Zitat:
Original von klarsoweit
Tarot ist irgendwas zwischen groben Unfug und gefährlicher Suggestion. Am liebsten würde ich den Thread schließen. Ich werde mal die anderen Mods befragen.


Es geht mir nicht um Tarot. Ich will nur die Rechenvorschrift, um die Zahlen die als Grundlage für deren Persönlichkeitskarten dienen, in ein Programm umsetzen. Die Regel ist ein ziemlich einfacher Algorithmus, setzt aber ziemlich fundierte Kenntnisse voraus was die Regeln für die gültigen Daten betrifft. Da ich das nicht alles selber auch noch programmieren möchte war meine Frage, ob es da z.B. vernünftige Perl Module gibt die das alles schon machen, kann ich aber auch in C programmieren, klar dass ich das Rad nicht neu erfinden will.

Zitat:
Original von LOED
Was genau ist eigentlich dein Problem?
Der Algorithmus, der das Datum umwandelt oder suchst du einfach erst mal eine Liste aller möglichen Daten (da du die ganzen Schaltjahre nicht extra bestimmen willst)?


Informatikerboard, hmmm guter Gedanke, doch habe ich die Erfahrung gemacht, dass die Physiker und Mathematiker die besseren Programmierer sind, Informatiker sind im Vergleich dazu mehr sowas wie Architekten im Vergleich zu Bauingenieuren.

Der Algorithmus ist ja eigentlich trivial, Tag plus Monat plus Jahr, die Bibliothek sollte diese Elemente schon einzeln liefern, die Berechnung der Quersumme ist denke ich auch trivial, bzw. gibt es bestimmt hierfür eine entsprechend Funktion in Perl oder auch C die ich verwenden kann, wenn es die Funktion nicht gibt, dann gibt es sicher ein Bibliothek die es implementiert.

Also mir fehlt eine Bibliothek die (bzw. ein Algorithmus der) mir alle "richtigen" Daten liefert.

Zitat:
Original von LOED
Die letzte einer solchen Ziffer findest du z.B. mit x-[INT(x/10)]*10


Das ist für mich wie chinesisch... x ist die Datumszahl ohne die Punkte?
Was macht INT und wieso finde ich damit die letzte Ziffer (von acht Ziffern)? Wo kommt denn da eine 8 vor? Wie meinst du das mit "analog die anderen finden"?

27061967-[INT(27061967/10)]*10 = ?
Ben Sisko Auf diesen Beitrag antworten »

Zitat:
Original von Nyckelpiga

Das ist für mich wie chinesisch... x ist die Datumszahl ohne die Punkte?
Was macht INT und wieso finde ich damit die letzte Ziffer (von acht Ziffern)? Wo kommt denn da eine 8 vor? Wie meinst du das mit "analog die anderen finden"?

27061967-[INT(27061967/10)]*10 = ?


Ich denke LOED meint mit INT sowas wie die Gaußklammer also die grösste ganze Zahl, die kleiner ist als das Argument.

Deswegen:

27061967-[INT(27061967/10)]*10 = 27061967-[INT(2706196,7)]*10 = 27061967-[2706196]*10 = 27061967-27061960 =7

Gruß vom Ben

Edit: Und analog die anderen finden heisst [INT(27061967/10)]*10 - [INT(27061967/100)]*100
JochenX Auf diesen Beitrag antworten »

ich bin ja kein Programierexperte (eher sogar Oberlaie!), aber zumindest in Java und C ist "int" (Integer) doch wohl "Ganzzahl...." und int(1.7) gibt z.B. 1 wieder.
Oder sehe ich das falsch?
verwirrt



Bens letzte Formel verwirrt mich gerade auch ein wenig, aber vermutlich kann man die einfach aus unserem Algo rauslesen.
Den Algo für die letzte Ziffer haben wir nun oben gesehen (die komische Formel), dann findest du die vorletzte, indem du
1) die letzte Ziffer von der Ursprungszahl abziehst
2) durch 10 teilst
3) den "letzte Stelle Algo" anwendest

ist das das gleiche, Ben?
Ben Sisko Auf diesen Beitrag antworten »

Zitat:
Original von LOED
Den Algo für die letzte Ziffer haben wir nun oben gesehen (die komische Formel), dann findest du die vorletzte, indem du
1) die letzte Ziffer von der Ursprungszahl abziehst
2) durch 10 teilst
3) den "letzte Stelle Algo" anwendest

ist das das gleiche, Ben?


Jaaaaa Augenzwinkern

Der Part [INT(27061967/10)]*10 gibt gerade die Zahl mit letzter Stelle 0 an und das - [INT(27061967/100)]*100 funktioniert dann wie oben (die letzten beiden Stellen abschneiden und wieder mit 100 multiplizieren).

Gruß vom Ben

Edit: Würde dann hier gerade 60 ergeben, wenn man die reine Stelle will, muss man nochmal durch 10 teilen.
Neue Frage »
Antworten »



Verwandte Themen