Friday, March 18, 2016

Ερωτόκριτος

H εξομολόγηση στον Πολύδωρο





Ο Ερωτόκριτος μιλάει στον φίλο του τον Πολύδωρο για το πάθος του και ζητάει τη συμβουλή του.
Oι λογισμοί είναι σαϊτιές, καρδιά μου είν' το σημάδι,και μάχουνται, και ποιός μπορεί να τα συβάσει ομάδι;

Το σφάλμα μου γνωρίζω το, που βρίσκομαι κατέχω, μα δε μπορώ να βοηθηθώ και την εξά δεν έχω.
O Έρωτας ανυφαντής με πονηριάν εγίνη
αράχνην ήστεσε ψιλήν, κ' επιάστηκα εις εκείνη.
Σαν το μωρό εκομπώθηκα, οπού δεν έχει γνώση,
και βουηθισμόν πλιό πού να βρω; και τίς να με γλιτώσει;
O Έρωτας μ' εμπέρδεσε, και σκλάβον του κρατεί με,
και δουλευτής του εγράφτηκα, και μετά κείνον είμαι. 
Αρνήθηκα του παλατιού τη στράτα και μισώ τη
και εδά έχω πλια την παιδομή, εδά παρά την πρώτη.
Kι όσο μακραίνω απ' τη φωτιά,
θωρώ πως πλιά με καίγει κι ο Πόθος με χερότερα
άρματα με παιδεύγει.
Aρχή ήτονε πολλά μικρή κι άφαντη δίχως άλλο,
μα το μικρό με τον Kαιρόν εγίνηκε μεγάλο. 


Η συμβουλή του Πολύδωρου

Αδέρφι μου Ερωτόκριτε, αυτή η μεγάλη οδύνη
ώστε να βρίσκεσαι κοντά στη χώρα δε σ' αφήνει.
Κι αν πεθυμάς ο λογισμός εκείνος να σ' αφήσει
μίσεψε κι άμε γύρισε ανατολή και δύση.

Η μέρα του κονταροχτυπήματος


Μια όμορφη μέρα ξημερώνει και η Αρετή με τον Ερωτόκριτο ανυπομονούν να ειδωθούν
Και με τη σιγανή λαλιά τον ήλιο προσκαλούσι
και πεθυμούσι γρήγορα να βγεί να τον εδούσι
Eδέτσι κι ο Ρωτόκριτος με την αυγή εσηκώθη,
και δεν μπορεί να καρτερεί, μα πάραυτα αρματώθη.
Με την αυγή κι ο βασιλιάς, στο φόρο εκατέβει
μ' όλην την άξα συντροφιά, κ' εις το Πατάρι ανέβη.
O Kυπριώτης είν' ο είς, κι ο Kρητικός ο άλλος,
ο τρίτος ο Ρωτόκριτος, της αντρειάς το κάλλος. 

Ο κρητικός

Mαύρο φαρί, μαύρ' άρματα, και μαύρο το κοντάρι
μαύρη ήτονε κ' η φορεσά τουνού του Kαβαλάρη.
Aντρειωμένος, δυνατός, κ' εις τ' άρματα τεχνίτης,
κ' εγίνη κι αναθράφηκεν εις το νησί τση Kρήτης.
Xαρίδημος εκράζετο, αντρειάν και χάριν έχει,
 και πάντα εκεί που πολεμά, στράφτει, βροντά, και βρέχει.

Η μονομαχία με το Σπιθόλιοντα


Το μοιρολόι της Αρετής



Επίλογος

H γης εβγάνει τη βοήν, ο αέρας και μουγκρίζει,
        και μιά βροντή στον Oυρανόν τσ' οχθρούς μου φοβερίζει,
εκείνους τους κακόγλωσσους, που ψέγουν ό,τι δούσι,
        κι απόκεις δεν κατέχουσι την ’λφα σκιάς να πούσι.        1530

Θωρώ πολλούς και πεθυμούν, κ' έχω το γρικημένα,
        να μάθουν τίς εκόπιασεν εις τ' απανωγραμμένα.
K' εγώ δε θέ' να κουρφευτώ, κι αγνώριστο να μ' έχουν,
        μα θέλω να φανερωθώ, όλοι να με κατέχουν.
BITΣENTZOΣ είν' ο Ποιητής, και στη Γενιάν KOPNAPOΣ,        1535
        που να βρεθεί ακριμάτιστος, σα θα τον πάρει ο Xάρος.
Στη Στείαν εγεννήθηκε, στη Στείαν ενεθράφη,
        εκεί ήκαμε κ' εκόπιασεν ετούτα που σας γράφει.
Στο Kάστρον επαντρεύθηκε, σαν αρμηνεύγει η Φύση,
        το τέλος του έχει να γενεί, όπου ο Θεός ορίσει.        1540


Για μένα όλα σφάλουσι και πάσιν άνω κάτω
για με ξαναγενήθηκε η φύση των πραγμάτων

Monday, July 8, 2013

Ancient Pc Rejuvenation... Hardcore Style



MicroXP

MicroXP is an ultratiny, extrafast version of windows XP by eXPer1ence. It installs in zero time and the installation is unattended. The latest - and probably the last - version can be found as a torrent.

Chrome

Chrome is known to be the fastest browser around and this also applies for our "special" installation. We are gonna be changing some settings though. That is disabling "Instant" from the corresponding option in the settings page. 
From the chrome://plugins/ page you can disable "Chrome Remote Desktop Viewer", "Native Client " and other plugins you don't need e.g. "Adobe Reader".
You should also refrain from installing unnecessary extensions.

Hosts File

We will use the MVPS HOSTS file to block unwanted connections - including advertisements and adware - without wasting any resources. Download it from (http://winhelp2002.mvps.org/hosts.htm) and copy it to "c:\windows\system\drivers\etc".

Flash Player

For the purposes of this tutorial we will install an older version of the Adobe Flash Player. Specifically the Flash Player 10 seems to be the more efficient version. Currently you can find it - along with other old and discontinued versions - right here --> (http://helpx.adobe.com/flash-player/kb/archived-flash-player-versions.html). Scroll down to find the "Flash Player archives".

Integration with Google Chrome
Navigate to chrome://plugins/. enable the Details by clicking the link in the upper left corner. Disable Shockwave Flash 11.7 r700 and enable Shockwave Flash 10.3 r183.+
Update(4/2014): It seems like Youtube is using the HTML5 player by default. The solution I am using is to rename the "ffmpegsumo.dll" file in "C:\Program Files\Google\Chrome\Application\34.0.1847.116" where "34.0.1847.116" is the version number, making Chrome unable to play HTML5 :evil.

Benchmarks
Here is some screenshots of different Adobe Flash Player versions used with a Youtube video.




Wednesday, May 1, 2013

Πανελλήνιες for... Dummies

Αντί προλόγου

Φίλε μαθητή της Γ' Λυκείου δώσε βάση. Σου μιλάει η εμπειρία!

Για γενικότερα νέα σχετικά με τις Πανελλαδικές Εξετάσεις: http://panelladikes.gr/
Αναλυτικά τα 6 μαθήματα της Τεχνολογικής:

Μαθηματικά

Οι μαθηματικοί έχουν οργανοθεί στο mathematica.gr και καταστρώνουν ασκήσεις και θέματα

Φυσική

Οι φυσικοί δεν είναι της συλλογικότητας. Αξιόλογα είναι τα εξής:

Α.Ε.Π.Π. (Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον)

Οι πληροφορικάριοι συχνάζουν στο αγαπημένο τους στέκι.

Α.Ο.Δ.Ε. (Αρχές Οργάνωσης και Διοίκησης Επιχειρήσεων)

Έκθεση

Γενικά/Θέματα

Monday, January 28, 2013

PDP 2013: The last chance

Α: Αναζητώντας Εξωγήινη Νοημοσύνη

Πρόβλημα:
Να αναπτύξετε ένα πρόγραμμα σε μια από τις γλώσσες του IOI το οποίο θα διαβάζει τις τιμές που αντιστοιχούν σε ένα σήμα και θα αναγνωρίζει τις χαρακτηριστικές συχνότητες. Μία τριπλέτα σε ένα σήμα είναι μία τριάδα τιμών του σήματος με τις εξής ιδιότητες: 
    (α) οι δύο ακραίες τιμές ισαπέχουν από τη μεσαία τιμή, και 
    (β) οι δύο ακραίες τιμές είναι ίσες μεταξύ τους και μικρότερες του μισού της μεσαίας τιμής.  
Η μεσαία τιμή μίας τριπλέτας μας δίνει τη χαρακτηριστική συχνότητα, η οποία ισούται με τη θέση της μεσαίας τιμής στο σήμα.
Αρχεία Εισόδου:
Τα αρχεία εισόδου με όνομα seti.in είναι αρχεία κειμένου με την εξής δομή: Έχουν ακριβώς δύο γραμμές. Η πρώτη έχει έναν ακέραιο αριθμό Ν (10 ≤ Ν ≤ 10.000), που αντιστοιχεί στο πλήθος των τιμών του σήματος που έχουμε καταχωρήσει. Η δεύτερη γραμμή έχει Ν ακέραιους αριθμούς χωρισμένους ανά δύο με ένα κενό διάστημα.
Αρχεία Εξόδου:
Τα αρχεία εξόδου με όνομα seti.out είναι αρχεία κειμένου με την εξής δομή: Η πρώτη γραμμή έχει έναν ακέραιο αριθμό Κ(0 ≤ Κ ≤ Ν). Ο αριθμός αυτός εκφράζει το πλήθος των χαρακτηριστικών συχνοτήτων που εντοπίστηκαν. Ακολουθούν Κ γραμμές, κάθε μια από τις οποίες έχει έναν ακέραιο αριθμό Μ, (2 ≤ Μ ≤ Ν-1). Ο αριθμός Μ εκφράζει μία χαρακτηριστική συχνότητα, δηλαδή τη θέση της μεσαίας τιμής της αντίστοιχης τριπλέτας μέσα στο σήμα (η αρίθμηση αρχίζει από το 1). Οι χαρακτηριστικές συχνότητες πρέπει να δίνονται σε αύξουσα σειρά. Αν σε μία χαρακτηριστική συχνότητα αντιστοιχούν περισσότερες τριπλέτες, η συχνότητα θα πρέπει να  εμφανίζεται μόνο μία φορά.


#include <stdio.h>
#define MAX 10000
#define DEBUG0

int N;
int Amp[MAX]; //input
bool isTriplet[MAX]; //result
int nTriplets;

int main() {
#ifndef DEBUG 
    freopen("seti.in", "rt", stdin);
    freopen("seti.out", "wt", stdout);
#endif

    //input
    scanf("%d", &N);
    for (int i=0; i<N; i++) {
        scanf("%d", &Amp[i]);
    }

    //find triplets
    for (int i=0; i<N; i++) {
        for (int j=1; i-j>=0 && i+j<N; j++) {
            if (Amp[i-j] == Amp[i+j] && Amp[i-j] < Amp[i]/2.) {
                //found triplet!
                isTriplet[i] = true;
                nTriplets++;
                break;
            }
        }
    }

    //output
    printf("%d\n", nTriplets);
    for (int i=0; i<N; i++) {
        if (isTriplet[i]) printf("%d\n",i+1);
    }
    return 0;
}

Β: Οι μυστικοί αριθμοί

Πρόβλημα:
Στο δείπνο που παρατίθεται κατά τη διάρκεια του φετινού πανελλήνιου συνεδρίου πληροφορικής παρευρίσκονται Ν επιστήμονες. Κάθε ένας έχει στο μυαλό του ένα θετικό φυσικό αριθμό, διαφορετικό από τους αριθμούς όλων των συναδέλφων του, τον οποίο κρατάει μυστικό.  Ο διοργανωτής του δείπνου θέλει να μοιράσει τους επιστήμονες σε ομάδες, αποτελούμενες από ένα ή περισσότερα μέλη, ούτως ώστε σε καμία ομάδα να μην υπάρχουν δύο επιστήμονες που ο μυστικός αριθμός του ενός να διαιρεί ακριβώς το μυστικό αριθμό του άλλου.  Είναι αδύνατο να μάθετε τους μυστικούς αριθμούς των επιστημόνων.  Με πολύ κόπο, καταφέρνετε να βρείτε μερικές δυάδες επιστημόνων που είναι φίλοι και για τους οποίους γνωρίζετε με βεβαιότητα ότι ο μυστικός αριθμός του πρώτου διαιρεί ακριβώς το μυστικό αριθμό του δεύτερου. Μπορείτε να υπολογίσετε τον ελάχιστο αριθμό ομάδων που θα χρειαστεί να φτιάξει ο διοργανωτής του δείπνου;
Αρχεία εισόδου:
Τα αρχεία εισόδου με όνομα scidinner.in είναι αρχεία κειμένου με την εξής δομή:  Στην πρώτη γραμμή περιέχουν δύο φυσικούς αριθμούς Ν και Μ χωρισμένους με ένα κενό διάστημα (1 ≤ M ≤ Ν ≤ 1.000.000),  όπου Ν το πλήθος των επιστημόνων και M το πλήθος των δυάδων των φίλων. Θεωρούμε ότι οι επιστήμονες είναι αριθμημένοι από 1  έως και Ν. Κάθε μία από τις επόμενες Μ γραμμές περιέχει δύο φυσικούς αριθμούς xi και yi χωρισμένους με ένα κενό διάστημα (1 ≤ xi , yi ≤ Ν), που ορίζουν μία δυάδα φίλων:  γνωρίζουμε ότι ο μυστικός αριθμός του επιστήμονα xi διαιρεί ακριβώς το μυστικό αριθμό του επιστήμονα  yi.  Δε θα υπάρχουν δύο δυάδες με το ίδιο yi. 

Αρχεία εξόδου: 
Τα αρχεία εξόδου με όνομα scidinner.out είναι αρχεία κειμένου με την εξής δομή:  Έχουν ακριβώς μία γραμμή που περιέχει έναν ακέραιο αριθμό Κ (1 ≤ Κ ≤ Ν).  Ο αριθμός αυτός εκφράζει το ελάχιστο πλήθος ομάδων επιστημόνων που πρέπει να φτιάξει ο διοργανωτής του δείπνου.

 #undef DEBUG  
 #define DEBUG0  
   
 #ifdef DEBUG  
 #define debug(...) fprintf(stderr, __VA_ARGS__)  
 #else  
 #define debug(...) do ; while(0)  
 #define NDEBUG  
 #endif  
   
 #include <assert.h>  
 #include <stdio.h>  
 #include <limits.h>  
 #include <vector>  
 #include <queue>  
 #include <algorithm>  
 using namespace std;  
   
 #define MAX 1000001  
 int N,M;  
 vector<int> graph[MAX];  
 int memo[MAX]; // memorization  
 int fmax(int n); //recursive function  
   
 int main() {  
 #ifndef DEBUG  
   freopen("scidinner.in", "rt", stdin);  
   freopen("scidinner.out", "wt", stdout);  
 #endif  
   
   scanf("%d %d", &N, &M);  
   for (int i=1; i<=N; i++) { memo[i] = 1; }//no children by default  
   
   //read nodes  
   int from, to;  
   for (int i=0; i<M; i++) {  
     scanf("%d %d", &from, &to);  
     graph[from].push_back(to);  
     memo[from] = 0; //has children to check  
     assert(from!=to &&  
         from>0 && from <=N &&  
         to >0 && to  <=N );  
   }  
   
   
   int totalmax = 1; //totalmax = minteams ;)  
   for (int i = 1; i <= N; i++) {  
     memo[i] = fmax(i);  
     totalmax = max(totalmax, memo[i]);  
   }  
   printf("%d", totalmax);  
   
   return 0;  
 }  
   
 int fmax(int u) {  
   if (memo[u] != 0) return memo[u];  
   int res = 1;  
   for (int j=0; j<graph[u].size(); j++) {  
     int v = graph[u][j];  
     res = max(res, fmax(v)+1);  
   }  
   assert(res>1);  
   return res;  
 }  




Wednesday, December 5, 2012

Αιτίες άνοδου Χρυσής Αυγής

Είναι προφανές ότι αυτή η άνοδος της Χρυσής Αυγής δεν έγινε σε κοινωνικό και ιδεολογικό κενό. Η συρρίκνωση της επιτυχίας της στην απλοϊκή εξίσωση «οικονομική κρίση = άνοδος του φασισμού» συσκοτίζει το φαινόμενο και φυσικά δεν βοηθά στην αντιμετώπισή του. Μπορεί η κρίση και η ανασφάλεια λειτουργεί ως θρυαλλίδα αυτών των φαινομένων, αλλά δεν είναι η συνολική εξήγηση. Υπήρχαν και υπάρχουν υπόγεια ρεύματα στην ελληνική κοινωνία που αποτυπώθηκαν στις προηγούμενες εκλογές. Υπάρχει ο ρατσισμός, στον οποίο δεν είμαστε άνοσοι, όπως νομίζαμε, η συνωμοσιολογία που θέλει το σύμπαν να απεργάζεται το κακό της χώρας, και υπάρχει η βαθιά άγνοια για τη δημοκρατία και τον φασισμό. Αυτά πρέπει να αντιμετωπίζονται από μια κοινωνία, είτε υπάρχει κρίση είτε όχι.

Πάσχος Μανδραβέλης, Medium.gr

Tuesday, October 16, 2012

Μεγιστος - Ελάχιστος με απόλυτη τιμή

Να ένα αλγοριθμικό trick:
Μπορείς να βρεις τον μικρότερο και το μεγαλύτερο από δύο αριθμούς, μόνο με χρήση της απόλυτης τιμής.



Πως δουλεύει;
Ας πάρουμε για παράδειγμα την πρώτη σχέση. Έστω δύο αριθμοί x, y έτσι ώστε x < y:



Sunday, October 14, 2012

Δημοκρατία

Αυτό που δεν διδάχθηκε ο ελληνικός λαός, ούτε από το σχολείο, ούτε από τα ΜΜΕ, ούτε από τα κόμματα, είναι η αξία της δημοκρατίας. Δεν έμαθε ότι οι κανόνες συμβίωσης που έχουμε μπορεί να μην είναι τέλειοι, αλλά στη δημοκρατία ο αγώνας επιτρέπεται και συνεχίζεται. Οτι η ανομία, ανεξαρτήτως κινήτρων, καταλήγει πάντα στη φαλκίδευση των δικαιωμάτων των αδύναμων. Οτι οι κακοί νόμοι δεν καταργούνται με την παράβασή τους, αλλά με την παραγωγή καλύτερων νόμων. Οτι ο λόγος -ακόμη και ο προσβλητικός για κάποιους- δεν μπορεί να θεωρείται παραβατικός, αλλά κάθε παράβαση στην πράξη πρέπει να δικάζεται και να τιμωρείται. Οτι η ανοχή στη μικρή παραβατικότητα οδηγεί στη μεγαλύτερη, για να καταλήξουμε σε πογκρόμ ανθρώπων. Είναι δύσκολο να πεισθούν οι άνθρωποι ότι η αργόσυρτη και γεμάτη δικλίδες ασφαλείας δημοκρατική διαδικασία είναι μακροπρόθεσμα η πιο παραγωγική για τη λύση των προβλημάτων. Αποδείχθηκε όμως στις πρόσφατες εκλογές πως ούτε ο πολιτικός στραβισμός πείθει.
Απόσπασμα από το άρθρο «Τα άκρα και οι συμψηφισμοί» του Πάσχου Μανδραβέλη. Δημοσιεύτηκε στην εφημερίδα «Καθημερινή» στις 14.10.2012

Monday, September 24, 2012

Περί πολιτικών πεποιθήσεων

Όπως πιθανότατα ξέρεις, εσύ που διαβάζεις αυτό εδώ το μπλογκ εδώ και καιρό, δεν είμαι κομμουνιστής (μετά τα 14, τουλάχιστον -αλλά τότε δεν με ήξερες, γιατί δεν υπήρχε ίντερνετ). Δεν πιστεύω ότι όλοι οι άνθρωποι είναι ίδιοι και ότι πρέπει να αμείβονται το ίδιο και να μην υπάρχει ιδιοκτησία. Πιστεύω ότι η ανθρώπινη φύση είναι εξ’ ορισμού ατελής και ότι για να μπορέσουν οι άνθρωποι να συνυπάρξουν και να μοιραστούν τη Γη με κάποιον τρόπο που μοιάζει αντικειμενικά δίκαιος, και ταυτόχρονα να έχουν κίνητρα για να αναπτύξουν φιλοδοξίες και όνειρα και να πάνε την ανθρωπότητα παρακάτω, θα πρέπει να επινοήσουν ένα κριτήριο αυστηρά μη-ανθρώπινο. Ο καπιταλισμός είναι το πιο επιτυχημένο οικονομικό σύστημα στην ανθρώπινη ιστορία, και χάρη σ’ αυτόν σήμερα οι άνθρωποι έχουν υγιή δόντια και κινητά τηλέφωνα και, παρά τις φρικτές του ατέλειες, παραμένει καλύτερος από άλλα, πιο ανθρωποκεντρικά συστήματα, που προτιμούν την ισότητα απ’ την ελευθερία. 

 Το κείμενο αυτό γράφτηκε από το Θοδωρή Γεωργακόπουλο. Μπορείς να το διαβάσεις ολόκληρο εδώ: http://www.georgakopoulos.org/2012/09/al-mirqab/

Thursday, July 5, 2012

XDA Update Checker in Python

I have been checking this url allot lately (last six months). Its the development thread of Android 4: Ice Scream Sandwich for my HTC Desire. So I wrote a small python script to do it for me.
It uses regular expression to separate the title and compares it with the previous one, saved in a text file, to determine if it's new. Here is the code:
URL = 'http://forum.xda-developers.com/showthread.php?t=1355660'
SAVE_FILE = 'ics'
REG_EXP = '<title>.+?\] '

import urllib2, re, time, webbrowser

#### Load page
print "Loading page..."
html_content = urllib2.urlopen(URL).read()
   
#### Search for version info
try:
   match = re.findall(REG_EXP, html_content)[0]
   match = re.findall('\[.+', match)[0] #remove <title>
except IndexError:
   match = "ERROR! Cant match regular expression:" + reg_exp

### Load SaveFile
try: old = open(SAVE_FILE).readline()
except IOError: old = 'file not found'

if old == match:
  ## No new version
   print "Old Version:", match;
   time.sleep(5) #wait and close
else:
  ## Update found!!   
   open(SAVE_FILE, 'w').write(match)
   raw_input("UPDATE! \t"+ match + "\n\nPress any key to open url.") #print and pause
   webbrowser.open_new_tab(URL)

This is a more recent version that is simpler and can check multiple urls. It just prints out the topic title though, without checking if it's new.
URLs = [
        'http://forum.xda-developers.com/showthread.php?t=1766550',
        'http://forum.xda-developers.com/showthread.php?t=1355660',
        ]

import urllib2
for URL in URLs:
   
   #### Load page
   #print "Loading page: " + URL
   html = urllib2.urlopen(URL).read()
   

   begin = html.find('<title>')
   end   = html.find('- xda', begin)
   title = html[begin+len('<title>'):end].strip()

   print title
   #print '\n'
raw_input("Press any key")

Saturday, May 26, 2012

Γενέθλια και η χαμένη Τετάρτη

Πλησιάζουν τα γενέθλια μου! Την Πέμπτη είναι, στις 31 Μαΐου. Πέμπτη;! Μα αφού πέρσι ήταν Πέμπτη Τρίτη. Νόμιζα πως κάθε χρόνο πάνε μια μέρα μπροστά. Κανονικά έπρεπε να είναι Παρασκευή Τετάρτη. 

ΑΑΑ! είναι δίσεκτο έτος φέτος. Χάθηκε μία μέρα, η 28η Φεβρουαρίου!.
Χμμ.., ας το ψάξουμε λίγο περισσότερο.
Μάλλον έχει να κάνει με το ότι φέτος το έτος ηταν δίσεκτο(2012).

Γιατί κάθε κάθε ημερολογιακή μέρα πάει χρόνο μία μέρα της ευδομάδας μπροστά;
Είναι απλο. Ο κανονικός χρόνος(ή Common year) έχει 365 μέρες = 52 εβδομάδες και 1 μέρα (Ευκλείδια διαίρεση: 365 = 52 * 7 + 1). Αυτή η μία μέρα είναι που μετακινεί τα γενέθλια μου.
Δίκαιο ακούγεται πάντως. Έτσι όλοι μπορούν να έχουν γενέθλια σε όλες τις μέρες του χρόνου σε 7 χρόνια.

Σε πια περίπτωση όμως θα τα γενέθλια μου θα ήταν σταθερά;
Για να συμβαίνει αυτό χρειάζεται η παραπάνω ευκλείδια διαίρεση να δίνει υπόλοιπο μηδεν. Αυτό είναι αδύνατον αφού το 7 δεν έχει διαιρέτες.

Τι θα γινόταν όμως αν ο χρόνος είχε, παραδείγματος χάρην 366 μέρες; Τίποτα το ιδιαίτερο.
Αν όμως ταυτόχρονα η εβδομάδα είχε 6 μέρες (έτσι ώστε το δύο να είναι διαιρέτης του 6) θα συνέβενε κάτι ενδιαφέρον. Τα γενέθλια μου θα έπεφταν μόνο στις 3 από τις 6 μέρες της εβδομάδας.
Με 367 μέρες θα έπεφταν μόλις σε 2. 

Μόνο αν η εβδομάδα είχε, για παράδειγμα, 6 ημέρες, στα δίσκετα έτη, που ο χρόνος έχει 366 ημέρες, τα γενέθλιά μου θα έμεναv ακίνητα. (366 = 61 * 6 + 0).

Υ.Γ.: Το αρχικό ποστ είχε μια σειρά(>1) από λογικά λάθη.

Monday, May 21, 2012

Υπολογισμός Μεσοπαράλληλης

Έστω δύο παράλληλες ευθείες ε1, ε2 και η μεσοπαράλληλη τους ε3.
Αν Μ1(x1,y1), M2(x2,y2), Μ3(x3,y3) τυχαία σημεία των ε1, ε2, ε3 αντίστοιχα, ισχύει:
(1)        (2) 
Επειδή το Μ3 είναι μέσο των Μ1, Μ2 για οποιαδήποτε Μ1, Μ2, Μ3 (Θεώρημα Θαλή).

Ομώς Μ1, Μ2, Μ3  ε1, ε2, ε3 αντίστοιχα.
Άρα ισχύει yi = λx + βi, (i=1, 2, 3) και αντικαθιστώντας τα yi η (2) γίνεται:



και τελικά:



Αν δεν υπάρχει λ (a.k.a. οι ευθείες είναι κατακόρυφες), μπορεί να χρησιμοποιηιεί η (1).

Saturday, May 19, 2012

Βουλή των Εφήβων 2012

Όχι, δυστηχώς δεν κληρώθηκα. Δεν είχα προετοιμαστεί με κανένα τρόπο, ούτε είχα αρχίσει ακόμα φροντιστήριο στην Έκθεση. Αυτά βέβαια δεν είχαν σημασία αφού οι βουλευτές επιλέγονται με κλήρωση...
http://efivoi.gr/

 Γιατί θέλετε να συμμετέχετε στη Βουλή των Εφήβων; (50 λέξεις)
Πιστεύω πως η Βουλή των Εφήβων είναι σαν θεσμός, έχει πολλά να προσφέρει στους συμμετέχοντες μαθητές. Τους δίνει την ευκαιρία να σκεφτούν, να εκφραστούν, να κρίνουν και να κριθούν. Βοηθάει ακόμα σημαντικά στην καλλιέργεια της θετικής στάσης των νέων απέναντι στα "κοινά", κάτι πολύ σημαντικό σήμερα, που Ελλάδα έχει ανάγκη από ικανούς ηγέτες.

 Περί αξιοκρατίας (300 λέξεις)
Ο όρος αξιοκρατία δηλώνει την αρχή σύμφωνα με την οποία η ανάληψη αξιωμάτων και θέσεων εργασίας, η αναγνώριση και η επιβράβευση προσπαθειών, γίνονται με βάση την πραγματική αξία του καθενός, χωρίς να επηρεάζονται από την καταγωγή, την πολιτική ιδεολογία ή την κοινωνική του θέση. Η αξιοκρατία ορθά χαρακτηρίζεται βασικό θεμέλιο κάθε δημοκρατικής κοινωνίας και ουσιαστικός παράγοντας για την πρόοδο των ατόμων και τη σωστή λειτουργία των κοινωνιών.

Κάθε Έλληνας ωφελείται από ένα αξιοκρατικό κράτος, μια αξιοκρατική κοινωνία. Αναγκάζεται να γίνει δημιουργικός, κυνηγά την ευκαιρία, όχι το βόλεμα. Του δίνεται το κίνητρο να εργασθεί, να μοχθήσει, και τελικά να πετύχει. Μαθαίνει να έχει εμπιστοσύνη στις προσωπικές του δυνάμεις και διαμορφώνει τις φιλοδοξίες του, και αγωνίζεται για να τις πραγματοποιήσει με βάση τις δυνάμεις αυτές. Παράλληλα, οδηγείται στην αυτογνωσία και στην επίγνωση των πραγματικών αδυναμιών, αλλά και των ικανοτήτων του τις οποίες επιστρατεύει για την επίτευξη των στόχων του. Τελικά, η αξιοκρατία οδηγεί στη συναισθηματική ικανοποίηση του, εφόσον δικαιώνεται απέναντι στον εαυτό του και αναγνωρίζεται από την κοινωνία, ανάλογα με τις προσπάθειες που κατέβαλε.

Και η κοινωνία όμως έχει σοβαρούς λόγους να επιδιώκει την αξιοκρατία. Μέσω αυτής αναπτύσσεται η ευγενής άμιλλα μεταξύ των μελών της. Εξασφαλίζεται η κοινωνική ισορροπία και η δικαιοσύνη, ενώ, παράλληλα, μειώνονται οι κοινωνικές και ταξικές ανισότητες. Τοποθετούνται στις θέσεις εργασίας οι άξιοι και ικανοί πολίτες, με αποτέλεσμα την αναβάθμιση των παρεχόμενων υπηρεσιών και την εύρυθμη λειτουργία της πολιτείας. Τέλος δημιουργούνται πρότυπα ήθους και εργατικότητας, τα οποία με τη σειρά τους εμπνέουν τους νέους.

Από τα παραπάνω γίνεται προφανές το πόσο θα βοηθούσε την Ελλάδα η πιο αξιοκρατική οργάνωση της κοινωνίας. Η παραγωγικοί εργαζόμενοι, προσελκύουν τους υποψήφιους επενδυτές να δημιουργούν νέες επιχειρήσεις και θέσεις εργασία στη χώρα μας.

Είναι τόσο σημαντική η αξιοκρατία, που κατά την άποψη μου, δικαιολογεί κάποιες άδικες ίσως επιπτώσεις προκειμένου να εφαρμοστεί στην εντελώς αναξιοκρατική Ελλάδα. Σίγουρα όμως δεν μπορούμε να αφήνουμε τους ικανότατους νέους μας άνεργους μόνο και μόνο για να αποφύγουμε το "ξεβόλεμα" των αντιπαραγωγικών δημοσίων υπαλλήλων.

Monday, May 14, 2012

[DRAFT]Codejam 2012: Round 1B

This was the first year I participated in Google Codejam. I passed the Qualification round which was far more difficult than I expected. I didn't pass the first round.

However I did write some interesting code to solve Problem C. It's in Python.
'''Output: Second line is one subset. Third line is another subset with the same sum.
####
For the big input, you cannot find the solution in time. 
However, you can make the script read a part of the input set and hope you will still ger a solution. 
Set slice_index to a value between 100 and 500 to do it.  Use None to read the whole input.
'''
slice_index = 50

import itertools

def solve(S):
    #S: the set of numbers 
    
    subsets = (c
               for length in range(1,len(S)+1)
               for c in itertools.combinations(S,length)
               )

    #finds a good subset pair
    result = ((i,j)
              for i,j in itertools.combinations(subsets,2)
              if sum(i)==sum(j)
              )
    

    print "Case #%d:" % (test_case) #, no_new_line
    try:
        a, b = next(result)
        print ' '.join(map(str, a))
        print ' '.join(map(str, b))
    except StopIteration:
        print 'Impossible'

#Input
fin = open('big.in', 'r')
fin.readline()
for test_case, line in enumerate(fin, 1):
    line = map(int, line.split())[1:slice_index]
    solve(line)
Here is the Contest Analysis.

Sunday, May 13, 2012

Dropquest 2012 Chapter 1

So, I have some code that I want to save somewhere and I thought this blog is a good place to post it. I wrote it to solve Chapter 1 if this years Dropquest.
Dropquest is an online challenge, organized by dropbox. The rewards are GBs of free lifetime space in dropbox.

It's written in Python. I am getting pretty fluent after taking CS373: Programming A Robotic Car, a free online course by Udacity.

digitized_numbers = lambda n: (
    map(int, x) for x in
    map(list, map(str,range(pow(10,n-1),pow(10,n)))))
'''digitized_numbers(5) returns all the 5 digit numbers (23546, 23547 etc.) 
  in the form [...[2,3,5,4,6],[2,3,5,4,7]...]''' 
print next( d  
    for d in digitized_numbers(5)
#d[0], d[1] etc. are the digits.
if d[0] * d[1] == 24                #1: 1st * 2nd = 24 
    if d[3] == d[1] /2                    #2: 4th = 2nd / 2
    if d[4] + d[3] == d[0] + d[2]  #3: 5th + 4th = 1st + 3rd
    if sum(d) == 26                      #4
    if len(set(d)) is not len(d)    #5
            )
'''
Instructions:
1: The product of the first two digits is 24.
2: The fourth digit is half of the second digit. 
3: The sum of the last two digits is equal to the sum of the first and third digits.  
4: The sum of all the digits is 26.  
5: Not all the digits are unique.
'''

Wednesday, May 4, 2011

Firefox: Tabs next to the url bar, IE style

Last week, I was thinking how much valuable space is wasted, by having such a wide location bar in my browser. So I googled about it, and moved my tabs next to the location bar, just like Internet Explorer. Here is how I did it.

  • Right click on the blue space next to the tabs and select "Customize...". 
  • Drag the location bar next to your tabs. (I prefer to have it it on the left.)
  • Drag all the items you need (like the Previous-next buttons) next to the locatiob bar. 
  • Click "Done".
  • Right click again and deselect "Navigation Toolbar".

  • Now you may need to resize the location bar. To do so hold WindowsKey and press R. Write in %appdata%\Mozilla\Firefox\Profiles and press Enter.
  • Open your profile folder(xxxx.default). 
  • Create a new folder and name it "chrome". Inside the new folder, create a text file and name it "userChrome.css".
  • Inside the "userChrome.css" file write:
    #urlbar, #urlbar-container {
    min-width: 350px !important;
    max-width: 350px !important; }
  • Change 350 if you want a bigger or a smaller url bar. 
  • Save and restart firefox.



Here is a batch file to do the job for you: (run and restart firefox)
cd %appdata%\Mozilla\Firefox\Profiles
REM run "dir" command and save the outputd profile forder in %profile%
FOR /F "tokens=1 delims=" %%A in ('dir /b') do SET profile=%%A
cd %profile%
if not exist chrome mkdir chrome
cd chrome
echo #urlbar, #urlbar-container {  >> userChrome.css
echo min-width: 350px !important;  >> userChrome.css
echo max-width: 350px !important;} >> userChrome.css

FXChrome theme works nicely with the above trick.

Tuesday, May 3, 2011

Hello world

This is my first post!