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.
'''