Today : Εορτολόγιο

Fanurgakis Manolis mfano at softhome.net
Mon Mar 3 14:49:01 EET 2003


On Sunday 02 March 2003 13:55, Alexandros Droseltis wrote:
> > Καλή τύχη με τη φόρμουλα για το Πάσχα :-) Κάτι με πανσέληνο, άνοιξη
>[...]
>
> Υπάρχει ο τύπος του Gauss. Αν x είναι η χρονιά, τότε
> p είναι το πλήθος των ημερών μετά την 22 Μαρτίου:
>
>p=13+((19*(x%19)+15)%30)+(2*(x%4)+4*(x%7)+6*(((19*(x%19)+15)%30)+1))%7

Σωστός, μπράβο. Δοκίμασα και βγάζει σωστά για φέτος και πέρσι.

Έτσι υπολογίζω το πότε πέφτει το Πάσχα.

Τώρα θέλω να βρω την απόσταση σε μέρες από το α)"σήμερα" ως το β)Πάσχα 
για να γεννήσω ένα string του στυλ "-40" (40 μέρες πριν) ή (+3) το 
οποίο θα κάνω grep στα todayrc.

Ο πιο απλός τρόπος θαρρώ είναι με την παράμετρο j της date που βρίσκει 
τον αριθμό της μέρας μέσα στο χρόνο.

Βρίσκω τον αριθμό της μέρας μέσα στο χρόνο για το σήμερα και για το 
Πάσχα και τα αφαιρώ.

Το αποτέλεσμα φαίνεται να δουλεύει, βρίσκεται στο:

http://www.softlab.ntua.gr/~mfano/today.tar.bz2

Δεν πρόλαβα να κάνω εκτεταμένο τεστ, ενδεχομένως να σκάει πουθενά το 
σκριπτάκι.

Παρατηρήσεις που έχω να κάνω είναι:

#α# Το !@#$!$!@#%!#$%!#$ bash όταν δει αριθμό που αρχίζει από 0 τον 
εκλαμβάνει για οκταδικό. Έτσι έφαγα πολλή ώρα προσπαθώντας να καταλάβω 
πως γίνεται 117-061 να κάνει 68 :-P

#β# Ο τρόπος που επιστρέφω τιμή στην calc_diff_from_easter() είναι να 
θέτω μια μεταβλητή την οποία μετά διαβάζω από την καλούσα. Κάτι 
καλύτερο του στυλ:

zzz() {
	return 3
}

echo $zzz

δεν μπορεί να γίνει;

#γ# Στις γιορτές που έχουν να κάνουν με το Πάσχα, το grep δίνει γραμμές 
του τύπου:

-43 Θεόδωρος

από τις οποίες πρέπει α) να αφαιρεθεί το αριθμητικό πρόθεμα που δηλώνει 
τη σχέση με το Πάσχα και β) να προστεθεί η ημερομηνία σε κανονική 
μορφή.

Το α) είναι εύκολο με ένα `cut -d \  -f 2-` που ορίζει ως delimiter το 
διάστημα κι ύστερα επιστρέφει από το δεύτερο πεδίο και πέρα.

Το β) το υλοποίησα με την εντολή `xargs --replace echo "$date {}"` που 
για κάθε γραμμή από το grep κάνει echo την ημερομηνία κι ύστερα την 
γραμμή.

Προσπαθούσα με awk αλλά δεν μπορούσα να περάσω ως παράμετρο στην awk την 
ημερομηνία για να κάνω κάτι του στυλ awk '{print date, $0}' Πως θα 
μπορούσε να γίνει αυτό;



More information about the Linux-greek-users mailing list