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