Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Γ΄ Λυκείου => Μήνυμα ξεκίνησε από: Delta2000 στις 01 Νοέ 2017, 05:06:54 μμ

Τίτλος: Τροποποίηση άσκησης πανελληνίων για πολύ δυνατούς λύτες
Αποστολή από: Delta2000 στις 01 Νοέ 2017, 05:06:54 μμ
Πρόκειται για την απόλυτη γενικοποίηση του Γ θέματος των Επαναληπτικών του 2014. Όποιος θέλει μπορεί να ψάξει να δει το θέμα. Να τονίσω οτι στην άσκηση μου το πλήθος ν κανονικά μπορεί να πάρει οποιαδήποτε θετική τιμή το 10 είναι απλώς μια ενδεικτική τιμή. Λεω την εκφωνησή μου λοιπόν ;)

--------------------------------------------------------------------------------------------------------------------------------------------------------------
Να αναπτύξετε πρόγραμμα σε Γλώσσα το οποίο:

1. Να διαβάζει το πλήθος ν (1<=ν<=10) των αγνώστων της εξίσωσης Α*χ1+Β*χ2+Γ*χ3+Δ*χ4...+Ω*Χν = αρ καθώς και
τους συντελεστές {Α,Β,Γ,Δ...Ω...} των αγνώστων αυτών και την τιμή αρ.
2.Να προσδιορίζει ο χρήστης σε ποια όρια θα κυμαίνεται ο κάθε άγνωστος.
3.Να εμφανίζει όλες τις λύσεις της εξίσωσης, εξετάζοντας όλους τους δυνατούς συνδιασμούς ακεραίων τιμών
των αγνώστων στα όρια που έχει ο χρήστης για κάθε άγνωστο. Αν δεν υπάρχουν τέτοιες λύσεις, να εμφανίζει κατάλληλο μήνυμα.
4.Να εμφανίζει το πρώτο ζεύγος λύσεων της εξίσωσης για τις οποίες το άθροισμα των αγνώστων έχει την
μεγαλύτερη τιμή
5.Να εμφανίζει το πλήθος των λύσεων της εξίσωσης για τις οποίες οι άγνωστοι είναι θετικοί άρτιοι αριθμοί
6.Να εμφανίζει το ποσοστό των λύσεων της εξίσωσης για τις οποίες μία μόνο απο τους άγνωστους είναι ίσο με το μηδεν. 
------------------------------------------------------------------------------------------------------------------------------------------------------------
Δινω και την λύση παρακάτω αλλα καλό θα ήταν πρώτα κάποιος να προσπαθήσει να βρει κάποια λύση. Να σημειώσω ότι αυτή η άσκηση ξεφεύγει εντελώς από
τους διδακτικούς σκοπούς του μαθήματος και προσφέρεται μονο και μόνο ως πρόκληση σε όποιον καθηγητή (η και ικανό μαθητή γιατί οχι) που θέλει να δει το
όριο των δυνατοτήτων της ΓΛΩΣΣΑΣ. Να σημειώσω ότι η λύση μου δουλεύει μόνο στον διερμηνευτή της ΓΛΩΣΣΑΣ εξαιτίας του μεγάλου αριθμού εντολών που
εκτελούνται απλώς σε κάποιες περιπτώσεις θα εμφανίσει ένα προειδοποιητικό μήνυμα ότι η εκτέλεση υπέρβηκε τις 100.000 εντολες. Απλώς του λέτε να συνεχίσει ;)

Αν έχετε οποιαδήποτε απορία για τον τρόπο λύσης μου ή εντοπίσετε κάποιο λάθος μην διστάσετε να μου πειτε.Προσώπικα όλο το ΣΚ την πάλευα :D
Τίτλος: Απ: Τροποποίηση άσκησης πανελληνίων για πολύ δυνατούς λύτες
Αποστολή από: bugman στις 01 Νοέ 2017, 08:55:15 μμ
Έδωσα μια λύση με 99 γραμμές (μέσα έχω και τρεις σημείωση, που τις αφαιρούμε και είναι εντολές για εμφάνιση πληροφοριών).
Δεν χρησιμοποιώ υπολογισμό όλων των συνδυασμών προκαταβολικά, αυτό προκύπτει από το τον τρόπο που χρησιμοποιώ το "cascade" των μετρητών (θεωρώ τους άγνωστους  ως μετρητές από ένα κάτω όριο μέχρι και ένα πάνω όριο, και κάθε φορά που ο μετρητής περνάει το πάνω όριο, παίρνει τιμή το κάτω όριο, και η μεταβλητή Κ ή "cascade" αυξάνεται κατά ένα για να γυρίσει τον επόμενο μετρητή, αν και αυτός έχει "cascade" τότε πάει στον επόμενο, και αν το Κ γίνει μεγαλύτερο από το Ν, τότε τερματίζει η κεντρική επανάληψη. Οι μετρητές δουλεύουν με δυο "σημαίες" ή "συνθήκες", το αν το Κ>Ν (το εξήγησα) και το ΩΣ_ΕΧΕΙ, το δεύτερο αν δεν έχουμε cascade κατάσταση τότε βγαίνουμε από τους μετρητές και παραμένουμε στη κεντρική επανάληψη (συνήθηκη μέχρις_ότου Κ > Ν Η ΩΣ_ΕΧΕΙ). Η κεντρική επανάληψη βγαίνει όταν Κ>Ν

λογικά το πρόγραμμα παίρνει βελτιστοποίηση αν καταγράφουμε πόσοι μετρητές "γύρισαν" και υπολογίζουμε μόνο αυτά τα γινόμενα, άρα θα πρέπει να έχουμε και ένα πίνακα γινομένων! Ο υπολογισμός είναι εύκολος, αρκεί το Κ.

Τίτλος: Απ: Τροποποίηση άσκησης πανελληνίων για πολύ δυνατούς λύτες
Αποστολή από: Delta2000 στις 01 Νοέ 2017, 10:44:12 μμ
Έδωσα μια λύση με 99 γραμμές (μέσα έχω και τρεις σημείωση, που τις αφαιρούμε και είναι εντολές για εμφάνιση πληροφοριών).
Δεν χρησιμοποιώ υπολογισμό όλων των συνδυασμών προκαταβολικά, αυτό προκύπτει από το τον τρόπο που χρησιμοποιώ το "cascade" των μετρητών (θεωρώ τους άγνωστους  ως μετρητές από ένα κάτω όριο μέχρι και ένα πάνω όριο, και κάθε φορά που ο μετρητής περνάει το πάνω όριο, παίρνει τιμή το κάτω όριο, και η μεταβλητή Κ ή "cascade" αυξάνεται κατά ένα για να γυρίσει τον επόμενο μετρητή, αν και αυτός έχει "cascade" τότε πάει στον επόμενο, και αν το Κ γίνει μεγαλύτερο από το Ν, τότε τερματίζει η κεντρική επανάληψη. Οι μετρητές δουλεύουν με δυο "σημαίες" ή "συνθήκες", το αν το Κ>Ν (το εξήγησα) και το ΩΣ_ΕΧΕΙ, το δεύτερο αν δεν έχουμε cascade κατάσταση τότε βγαίνουμε από τους μετρητές και παραμένουμε στη κεντρική επανάληψη (συνήθηκη μέχρις_ότου Κ > Ν Η ΩΣ_ΕΧΕΙ). Η κεντρική επανάληψη βγαίνει όταν Κ>Ν

λογικά το πρόγραμμα παίρνει βελτιστοποίηση αν καταγράφουμε πόσοι μετρητές "γύρισαν" και υπολογίζουμε μόνο αυτά τα γινόμενα, άρα θα πρέπει να έχουμε και ένα πίνακα γινομένων! Ο υπολογισμός είναι εύκολος, αρκεί το Κ.

Φίλε μου έλεγξα την λύση σου και ενω πίστευα αρχικά ότι δεν θα είχε το ίδιο αποτέλεσμα,τελικά κάνει το ίδιο πράγμα και πολύ πιο αποδοτικά. Ετσι κι αλλιως ξερουμε οτι στον προγραμματισμο η λύση η οποια ειναι πιο σύντομη κατά την εκτελεσή της και παράγει το ίδιο αποτέλεσμα με οποιαδήποτε άλλη είναι και η πιο αποδεκτή ;). Για να βλέπουμε και άλλες λύσεις ;D
Τίτλος: Απ: Τροποποίηση άσκησης πανελληνίων για πολύ δυνατούς λύτες
Αποστολή από: bugman στις 02 Νοέ 2017, 12:00:54 πμ
Ευχαριστώ για τα καλά λόγια! Το έφτιαξα γιατί είδα ότι στο πρόγραμμά σου είχε χρησιμοποιηθεί πολύ πράγμα, που φώναζε από μακριά ότι "είμαι πληθωρικό".
Είχα δε πολύ καιρό να γράψω πρόγραμμα στη ΓΛΩΣΣΑ (και να χρησιμοποιήσω τον διερμηνευτή), και το όνομα Bugman δεν είναι τυχαίο, δηλαδή με το που το χρησιμοποίησα βρήκα και δυο "bug", ένα ενοχλητικό και ένα όχι ουσιαστικό: Πρώτο δεν υπάρχει το ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ στη λίστα εντολών (Διερμηνευτής 1.5.1.3). Το δεύτερο είναι το TAB  το οποίο παραμένει ως TAB αν δεν επιλέξουμε το κείμενο για να κάνει την εσοχή που θέλουμε. Για να κάνουμε γρήγορη επιλογή πρέπει πριν το TAB να πατήσουμε κάτω βελάκι με shift, και μετά το TAB. (μπέρδεμα δηλαδή).
Αν γράφει κανείς το ΑΡΧΗ_Ε τότε εμφανίζεται η συμπλήρωση εντολής.


Δες επίσης στο κώδικά μου το -1 στην αρχική τιμή του ΜΕΓΙΣΤΟΣ. Θέλω ο μέγιστος να είναι -1 από τη πρώτη σειρά του αθροίσματος των μετρητών ώστε στη πρώτη λύση αν είναι από την πρώτη σειρά των μετρητών, τότε θα είναι -1 διαφορά, και έτσι θα πάρει τιμές ο πίνακας μεγ[].
Τίτλος: Απ: Τροποποίηση άσκησης πανελληνίων για πολύ δυνατούς λύτες
Αποστολή από: Delta2000 στις 02 Νοέ 2017, 12:56:51 πμ
Ευχαριστώ για τα καλά λόγια! Το έφτιαξα γιατί είδα ότι στο πρόγραμμά σου είχε χρησιμοποιηθεί πολύ πράγμα, που φώναζε από μακριά ότι "είμαι πληθωρικό".
Είχα δε πολύ καιρό να γράψω πρόγραμμα στη ΓΛΩΣΣΑ (και να χρησιμοποιήσω τον διερμηνευτή), και το όνομα Bugman δεν είναι τυχαίο, δηλαδή με το που το χρησιμοποίησα βρήκα και δυο "bug", ένα ενοχλητικό και ένα όχι ουσιαστικό: Πρώτο δεν υπάρχει το ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ στη λίστα εντολών (Διερμηνευτής 1.5.1.3). Το δεύτερο είναι το TAB  το οποίο παραμένει ως TAB αν δεν επιλέξουμε το κείμενο για να κάνει την εσοχή που θέλουμε. Για να κάνουμε γρήγορη επιλογή πρέπει πριν το TAB να πατήσουμε κάτω βελάκι με shift, και μετά το TAB. (μπέρδεμα δηλαδή).
Αν γράφει κανείς το ΑΡΧΗ_Ε τότε εμφανίζεται η συμπλήρωση εντολής.


Δες επίσης στο κώδικά μου το -1 στην αρχική τιμή του ΜΕΓΙΣΤΟΣ. Θέλω ο μέγιστος να είναι -1 από τη πρώτη σειρά του αθροίσματος των μετρητών ώστε στη πρώτη λύση αν είναι από την πρώτη σειρά των μετρητών, τότε θα είναι -1 διαφορά, και έτσι θα πάρει τιμές ο πίνακας μεγ[].

Αυτο που ζηταει αυτη η ασκηση σε αλλες γλωσσες γινεται και με 20 εντολες πολυ πιο απλα αλλα να γινει σε ΓΛΩΣΣΑ το κανει προκληση  ;) Δεν είχα σκεφτεί τον τρόπο σου και το έμπλεξα όσο πιο πολυ γινόταν πραγματικα για να βγαλω λυση απ'οτι φαινεται :'( Επίσης σίγουρα δεν έχω την εμπειρία σου στην ΓΛΩΣΣΑ λογικά είσαι καθηγητής ενώ εγώ μαθητής δίνω σε 6 μήνες χαχαχαχαχα. Προσωπικα βρισκω τις ασκησεις που κανω στο φροντηστηριο γελοιες και στον ελευθερο μου χρονο γενικοποιω διαφορα θεματα οπου γινεται μεσα στις δυνατοτητες της ΓΛΩΣΣΑΣ και όποτε φτιάχνω κάτι καλό λέω να το δημοσιεύω εδώ να βλέπω και άλλες γνώμες. Ως γνώστης vb.net και λίγο python όμως, όταν κάτι δεν το έχει αυτοματοποιημένο η ΓΛΩΣΣΑ έχω την τάση να σκέφτομαι όσο πιο περίπλοκα γίνεται για να βγαλω αυτο που θελω ;D

Υ.Γ Και ο Διερμηνευτής της Γλώσσας και η Γλωσσομάθεια ακόμα και για τον αρχάριο χομπίστα προγραμματιστή φαίνονται επιεικώς απαράδεκτα αλλα ας μην ξεχνάμε ότι πρόκειται για διδακτικό λογισμικό και όχι κάποιο IDE όπως το Visual Studio. Και εγώ υπομονή κάνω με τα bug μην νομίζεις ;D
Τίτλος: Απ: Τροποποίηση άσκησης πανελληνίων για πολύ δυνατούς λύτες
Αποστολή από: bugman στις 02 Νοέ 2017, 01:41:31 πμ
Δεν δουλεύω σαν καθηγητής. Αλλά λύνω πολύ γρήγορα προβλήματα σχετικά με ασκήσεις και αυτό που έβαλες μου πήρε πολύ λίγο χρόνο (δεν το γράφω...). Στον ελεύθερο χρόνο μου τελειοποιώ μια γλώσσα που έχω γράψει!
 
Τίτλος: Απ: Τροποποίηση άσκησης πανελληνίων για πολύ δυνατούς λύτες
Αποστολή από: Delta2000 στις 02 Νοέ 2017, 09:45:25 πμ
Δεν δουλεύω σαν καθηγητής. Αλλά λύνω πολύ γρήγορα προβλήματα σχετικά με ασκήσεις και αυτό που έβαλες μου πήρε πολύ λίγο χρόνο (δεν το γράφω...). Στον ελεύθερο χρόνο μου τελειοποιώ μια γλώσσα που έχω γράψει!

Είδα σήμερα λίγο καλύτερα τη λύση σου να καταλάβω πως ακριβώς λειτουργεί και ομολογώ να πω ότι ήταν πολύ καλή σκέψη για να γλυτώσεις επαναλήψεις. Η λύση μου βγήκε από την συγχώνεψη 2 ασκήσεων που έχω σκεφτεί. Πριν αρχίσω να δουλεύω με αυτην σκεφτόμουν πως να κάνω τη ΓΛΩΣΣΑ να μπορεί να δίνει τις τιμές ζεύγων μεταβλητών για ν εμφωλευμένους βρόχους δυναμικά ανάλογα με το τι αριθμό ν βάλει ο χρήστης. Η λύση σου δεν δουλεύει σαν οι άγνωστοι να ήταν σε εμφωλευμένους βρόχους αλλά εφόσον καλύπτει όλους τους συνδιασμούς στην άσκηση σημασία δεν έχει. Ίσως να έχει λίγο σημασία στο μέγιστο του αθροίσματος των αγνώστων γιατί οι πιθανοί συνδιασμοί δεν έχουν τη σείρα που θα είχαν σαν να ήταν σε βρόχους και η άσκηση ζητάει το πρώτο ζεύγος. Αλλά στην τελική ποιο είναι το πρώτο να μου πεις.
Τίτλος: Απ: Τροποποίηση άσκησης πανελληνίων για πολύ δυνατούς λύτες
Αποστολή από: bugman στις 02 Νοέ 2017, 02:28:34 μμ
Για το Μέγιστο:
Το πρώτο θα δώσει! Γιατί το δεύτερο ή θα είναι ίσο ή μικρότερο, οπότε δεν θα το δώσει, ή θα είναι μεγαλύτερο άρα θα το αλλάξει με το νέο μεγαλύτερο.
Οι πιθανοί συνδυασμοί σχετίζονται με τη λύση, και ο τρόπος που δουλεύει το πρόγραμμα "εκθέτει" όλες τις λύσεις στη σειρά των ΑΝ για τα επιμέρους ερωτήματα. Εφόσον δηλαδή δίνει τον αριθμό των σωστών λύσεων, σημαίνει ότι έχει γίνει έλεγχος σε όλες τις λύσεις βάσει του Μέγιστου. Η "πατέντα" είναι ότι δεν ξέρουμε ποιο είναι αρχικό μέγιστο, μπορεί να είναι το πρώτο! Οπότε παίρνουμε το πρώτο, όλα τα κάτω όρια, τα προσθέτουμε και προσθέτουμε ένα ακόμα -1, άρα η πρώτη τιμή ΜΕΓΙΣΤΟ είναι ψεύτικη, αλλά αδύνατον να μην φέρει αληθές στην πρώτη σύγκριση, έτσι η πρώτη σύγκριση (που γίνεται μόνο σε λύσεις) θα γεμίσει τον πίνακα μεγ[].
Για να τσεκάρει κανείς ένα πρόγραμμα πρέπει να το υποβάλει σε κάποια τεστ ώστε όλα τα μέρη του να "παίξουν" και να φανεί ότι δουλεύει.

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

Στο τελικό άφησα τα μηνύματα...ελέγχου!
Αν βγάλεις το ! εκεί που δείχνει τα βήματα δες τι θα πάρεις:
ΠΟΣΟΙ ΑΓΝΩΣΤΟΙ;
3
ΣΥΝΤΕΛΕΣΤΗ ΚΑΙ ΚΑΤΩ ΚΑΙ ΑΝΩ ΟΡΙΟ ΓΙΑ ΤΟΝ ΑΓΝΩΣΤΟ 1
2
-2
0
ΣΥΝΤΕΛΕΣΤΗ ΚΑΙ ΚΑΤΩ ΚΑΙ ΑΝΩ ΟΡΙΟ ΓΙΑ ΤΟΝ ΑΓΝΩΣΤΟ 2
-2
0
2
ΣΥΝΤΕΛΕΣΤΗ ΚΑΙ ΚΑΤΩ ΚΑΙ ΑΝΩ ΟΡΙΟ ΓΙΑ ΤΟΝ ΑΓΝΩΣΤΟ 3
1
-1
1
ΔΩΣΕ ΤΙΜΗ ΕΛΕΓΧΟΥ ΑΘΡΟΙΣΜΑΤΟΣ
0
0 ΣΥΝ (-2 ΕΠΙ 2)
-4 ΣΥΝ (0 ΕΠΙ -2)
-4 ΣΥΝ (-1 ΕΠΙ 1)
0 ΣΥΝ (-1 ΕΠΙ 2)
-2 ΣΥΝ (0 ΕΠΙ -2)
-2 ΣΥΝ (-1 ΕΠΙ 1)
0 ΣΥΝ (0 ΕΠΙ 2)
0 ΣΥΝ (0 ΕΠΙ -2)
0 ΣΥΝ (-1 ΕΠΙ 1)
0 ΣΥΝ (-2 ΕΠΙ 2)
-4 ΣΥΝ (1 ΕΠΙ -2)
-6 ΣΥΝ (-1 ΕΠΙ 1)
0 ΣΥΝ (-1 ΕΠΙ 2)
-2 ΣΥΝ (1 ΕΠΙ -2)
-4 ΣΥΝ (-1 ΕΠΙ 1)
0 ΣΥΝ (0 ΕΠΙ 2)
0 ΣΥΝ (1 ΕΠΙ -2)
-2 ΣΥΝ (-1 ΕΠΙ 1)
0 ΣΥΝ (-2 ΕΠΙ 2)
-4 ΣΥΝ (2 ΕΠΙ -2)
-8 ΣΥΝ (-1 ΕΠΙ 1)
0 ΣΥΝ (-1 ΕΠΙ 2)
-2 ΣΥΝ (2 ΕΠΙ -2)
-6 ΣΥΝ (-1 ΕΠΙ 1)
0 ΣΥΝ (0 ΕΠΙ 2)
0 ΣΥΝ (2 ΕΠΙ -2)
-4 ΣΥΝ (-1 ΕΠΙ 1)
0 ΣΥΝ (-2 ΕΠΙ 2)
-4 ΣΥΝ (0 ΕΠΙ -2)
-4 ΣΥΝ (0 ΕΠΙ 1)
0 ΣΥΝ (-1 ΕΠΙ 2)
-2 ΣΥΝ (0 ΕΠΙ -2)
-2 ΣΥΝ (0 ΕΠΙ 1)
0 ΣΥΝ (0 ΕΠΙ 2)
0 ΣΥΝ (0 ΕΠΙ -2)
0 ΣΥΝ (0 ΕΠΙ 1)
Ζεύγος Λύσεων
1 0
2 0
3 0
0 ΣΥΝ (-2 ΕΠΙ 2)
-4 ΣΥΝ (1 ΕΠΙ -2)
-6 ΣΥΝ (0 ΕΠΙ 1)
0 ΣΥΝ (-1 ΕΠΙ 2)
-2 ΣΥΝ (1 ΕΠΙ -2)
-4 ΣΥΝ (0 ΕΠΙ 1)
0 ΣΥΝ (0 ΕΠΙ 2)
0 ΣΥΝ (1 ΕΠΙ -2)
-2 ΣΥΝ (0 ΕΠΙ 1)
0 ΣΥΝ (-2 ΕΠΙ 2)
-4 ΣΥΝ (2 ΕΠΙ -2)
-8 ΣΥΝ (0 ΕΠΙ 1)
0 ΣΥΝ (-1 ΕΠΙ 2)
-2 ΣΥΝ (2 ΕΠΙ -2)
-6 ΣΥΝ (0 ΕΠΙ 1)
0 ΣΥΝ (0 ΕΠΙ 2)
0 ΣΥΝ (2 ΕΠΙ -2)
-4 ΣΥΝ (0 ΕΠΙ 1)
0 ΣΥΝ (-2 ΕΠΙ 2)
-4 ΣΥΝ (0 ΕΠΙ -2)
-4 ΣΥΝ (1 ΕΠΙ 1)
0 ΣΥΝ (-1 ΕΠΙ 2)
-2 ΣΥΝ (0 ΕΠΙ -2)
-2 ΣΥΝ (1 ΕΠΙ 1)
0 ΣΥΝ (0 ΕΠΙ 2)
0 ΣΥΝ (0 ΕΠΙ -2)
0 ΣΥΝ (1 ΕΠΙ 1)
0 ΣΥΝ (-2 ΕΠΙ 2)
-4 ΣΥΝ (1 ΕΠΙ -2)
-6 ΣΥΝ (1 ΕΠΙ 1)
0 ΣΥΝ (-1 ΕΠΙ 2)
-2 ΣΥΝ (1 ΕΠΙ -2)
-4 ΣΥΝ (1 ΕΠΙ 1)
0 ΣΥΝ (0 ΕΠΙ 2)
0 ΣΥΝ (1 ΕΠΙ -2)
-2 ΣΥΝ (1 ΕΠΙ 1)
0 ΣΥΝ (-2 ΕΠΙ 2)
-4 ΣΥΝ (2 ΕΠΙ -2)
-8 ΣΥΝ (1 ΕΠΙ 1)
0 ΣΥΝ (-1 ΕΠΙ 2)
-2 ΣΥΝ (2 ΕΠΙ -2)
-6 ΣΥΝ (1 ΕΠΙ 1)
0 ΣΥΝ (0 ΕΠΙ 2)
0 ΣΥΝ (2 ΕΠΙ -2)
-4 ΣΥΝ (1 ΕΠΙ 1)
ΥΠΑΡΧΟΥΝ 1 ΛΥΣΕΙΣ
ΖΕΥΓΟΣ ΜΕ ΜΕΓΑΛΥΤΕΡΟ ΑΘΡΟΙΣΜΑ ΑΓΝΩΣΤΩΝ
1 0
2 0
3 0
ΠΟΣΟΣΤΟ ΛΥΣΕΩΝ ΜΕ ΕΝΑ ΑΓΝΩΣΤΟ ΙΣΟ ΜΕ ΜΗΔΕΝ:0.00
ΠΛΗΘΟΣ ΛΥΣΕΩΝ ΜΕ ΚΑΘΕ ΑΓΝΩΣΤΟ ΘΕΤΙΚΟ ΚΑΙ ΑΡΤΙΟ:0
Τίτλος: Απ: Τροποποίηση άσκησης πανελληνίων για πολύ δυνατούς λύτες
Αποστολή από: Delta2000 στις 02 Νοέ 2017, 03:33:17 μμ
Για το Μέγιστο:
Το πρώτο θα δώσει! Γιατί το δεύτερο ή θα είναι ίσο ή μικρότερο, οπότε δεν θα το δώσει, ή θα είναι μεγαλύτερο άρα θα το αλλάξει με το νέο μεγαλύτερο.
Οι πιθανοί συνδυασμοί σχετίζονται με τη λύση, και ο τρόπος που δουλεύει το πρόγραμμα "εκθέτει" όλες τις λύσεις στη σειρά των ΑΝ για τα επιμέρους ερωτήματα. Εφόσον δηλαδή δίνει τον αριθμό των σωστών λύσεων, σημαίνει ότι έχει γίνει έλεγχος σε όλες τις λύσεις βάσει του Μέγιστου. Η "πατέντα" είναι ότι δεν ξέρουμε ποιο είναι αρχικό μέγιστο, μπορεί να είναι το πρώτο! Οπότε παίρνουμε το πρώτο, όλα τα κάτω όρια, τα προσθέτουμε και προσθέτουμε ένα ακόμα -1, άρα η πρώτη τιμή ΜΕΓΙΣΤΟ είναι ψεύτικη, αλλά αδύνατον να μην φέρει αληθές στην πρώτη σύγκριση, έτσι η πρώτη σύγκριση (που γίνεται μόνο σε λύσεις) θα γεμίσει τον πίνακα μεγ[].
Για να τσεκάρει κανείς ένα πρόγραμμα πρέπει να το υποβάλει σε κάποια τεστ ώστε όλα τα μέρη του να "παίξουν" και να φανεί ότι δουλεύει.

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

Στο τελικό άφησα τα μηνύματα...ελέγχου!
Αν βγάλεις το ! εκεί που δείχνει τα βήματα δες τι θα πάρεις:
ΠΟΣΟΙ ΑΓΝΩΣΤΟΙ;
3
ΣΥΝΤΕΛΕΣΤΗ ΚΑΙ ΚΑΤΩ ΚΑΙ ΑΝΩ ΟΡΙΟ ΓΙΑ ΤΟΝ ΑΓΝΩΣΤΟ 1
2
-2
0
ΣΥΝΤΕΛΕΣΤΗ ΚΑΙ ΚΑΤΩ ΚΑΙ ΑΝΩ ΟΡΙΟ ΓΙΑ ΤΟΝ ΑΓΝΩΣΤΟ 2
-2
0
2
ΣΥΝΤΕΛΕΣΤΗ ΚΑΙ ΚΑΤΩ ΚΑΙ ΑΝΩ ΟΡΙΟ ΓΙΑ ΤΟΝ ΑΓΝΩΣΤΟ 3
1
-1
1
ΔΩΣΕ ΤΙΜΗ ΕΛΕΓΧΟΥ ΑΘΡΟΙΣΜΑΤΟΣ
0
0 ΣΥΝ (-2 ΕΠΙ 2)
-4 ΣΥΝ (0 ΕΠΙ -2)
-4 ΣΥΝ (-1 ΕΠΙ 1)
0 ΣΥΝ (-1 ΕΠΙ 2)
-2 ΣΥΝ (0 ΕΠΙ -2)
-2 ΣΥΝ (-1 ΕΠΙ 1)
0 ΣΥΝ (0 ΕΠΙ 2)
0 ΣΥΝ (0 ΕΠΙ -2)
0 ΣΥΝ (-1 ΕΠΙ 1)
0 ΣΥΝ (-2 ΕΠΙ 2)
-4 ΣΥΝ (1 ΕΠΙ -2)
-6 ΣΥΝ (-1 ΕΠΙ 1)
0 ΣΥΝ (-1 ΕΠΙ 2)
-2 ΣΥΝ (1 ΕΠΙ -2)
-4 ΣΥΝ (-1 ΕΠΙ 1)
0 ΣΥΝ (0 ΕΠΙ 2)
0 ΣΥΝ (1 ΕΠΙ -2)
-2 ΣΥΝ (-1 ΕΠΙ 1)
0 ΣΥΝ (-2 ΕΠΙ 2)
-4 ΣΥΝ (2 ΕΠΙ -2)
-8 ΣΥΝ (-1 ΕΠΙ 1)
0 ΣΥΝ (-1 ΕΠΙ 2)
-2 ΣΥΝ (2 ΕΠΙ -2)
-6 ΣΥΝ (-1 ΕΠΙ 1)
0 ΣΥΝ (0 ΕΠΙ 2)
0 ΣΥΝ (2 ΕΠΙ -2)
-4 ΣΥΝ (-1 ΕΠΙ 1)
0 ΣΥΝ (-2 ΕΠΙ 2)
-4 ΣΥΝ (0 ΕΠΙ -2)
-4 ΣΥΝ (0 ΕΠΙ 1)
0 ΣΥΝ (-1 ΕΠΙ 2)
-2 ΣΥΝ (0 ΕΠΙ -2)
-2 ΣΥΝ (0 ΕΠΙ 1)
0 ΣΥΝ (0 ΕΠΙ 2)
0 ΣΥΝ (0 ΕΠΙ -2)
0 ΣΥΝ (0 ΕΠΙ 1)
Ζεύγος Λύσεων
1 0
2 0
3 0
0 ΣΥΝ (-2 ΕΠΙ 2)
-4 ΣΥΝ (1 ΕΠΙ -2)
-6 ΣΥΝ (0 ΕΠΙ 1)
0 ΣΥΝ (-1 ΕΠΙ 2)
-2 ΣΥΝ (1 ΕΠΙ -2)
-4 ΣΥΝ (0 ΕΠΙ 1)
0 ΣΥΝ (0 ΕΠΙ 2)
0 ΣΥΝ (1 ΕΠΙ -2)
-2 ΣΥΝ (0 ΕΠΙ 1)
0 ΣΥΝ (-2 ΕΠΙ 2)
-4 ΣΥΝ (2 ΕΠΙ -2)
-8 ΣΥΝ (0 ΕΠΙ 1)
0 ΣΥΝ (-1 ΕΠΙ 2)
-2 ΣΥΝ (2 ΕΠΙ -2)
-6 ΣΥΝ (0 ΕΠΙ 1)
0 ΣΥΝ (0 ΕΠΙ 2)
0 ΣΥΝ (2 ΕΠΙ -2)
-4 ΣΥΝ (0 ΕΠΙ 1)
0 ΣΥΝ (-2 ΕΠΙ 2)
-4 ΣΥΝ (0 ΕΠΙ -2)
-4 ΣΥΝ (1 ΕΠΙ 1)
0 ΣΥΝ (-1 ΕΠΙ 2)
-2 ΣΥΝ (0 ΕΠΙ -2)
-2 ΣΥΝ (1 ΕΠΙ 1)
0 ΣΥΝ (0 ΕΠΙ 2)
0 ΣΥΝ (0 ΕΠΙ -2)
0 ΣΥΝ (1 ΕΠΙ 1)
0 ΣΥΝ (-2 ΕΠΙ 2)
-4 ΣΥΝ (1 ΕΠΙ -2)
-6 ΣΥΝ (1 ΕΠΙ 1)
0 ΣΥΝ (-1 ΕΠΙ 2)
-2 ΣΥΝ (1 ΕΠΙ -2)
-4 ΣΥΝ (1 ΕΠΙ 1)
0 ΣΥΝ (0 ΕΠΙ 2)
0 ΣΥΝ (1 ΕΠΙ -2)
-2 ΣΥΝ (1 ΕΠΙ 1)
0 ΣΥΝ (-2 ΕΠΙ 2)
-4 ΣΥΝ (2 ΕΠΙ -2)
-8 ΣΥΝ (1 ΕΠΙ 1)
0 ΣΥΝ (-1 ΕΠΙ 2)
-2 ΣΥΝ (2 ΕΠΙ -2)
-6 ΣΥΝ (1 ΕΠΙ 1)
0 ΣΥΝ (0 ΕΠΙ 2)
0 ΣΥΝ (2 ΕΠΙ -2)
-4 ΣΥΝ (1 ΕΠΙ 1)
ΥΠΑΡΧΟΥΝ 1 ΛΥΣΕΙΣ
ΖΕΥΓΟΣ ΜΕ ΜΕΓΑΛΥΤΕΡΟ ΑΘΡΟΙΣΜΑ ΑΓΝΩΣΤΩΝ
1 0
2 0
3 0
ΠΟΣΟΣΤΟ ΛΥΣΕΩΝ ΜΕ ΕΝΑ ΑΓΝΩΣΤΟ ΙΣΟ ΜΕ ΜΗΔΕΝ:0.00
ΠΛΗΘΟΣ ΛΥΣΕΩΝ ΜΕ ΚΑΘΕ ΑΓΝΩΣΤΟ ΘΕΤΙΚΟ ΚΑΙ ΑΡΤΙΟ:0

Άνοιξε την λύση μου και την λύση σου. Η σειρά ελέγχου των συνδιασμών μου είναι σαν οι μεταβλητές να ήταν σε εμφωλευμένους βρόχους ενώ η δικιά σου σειρά έχει διαφορετική συμπεριφορά. Αν το πάμε με την λογική των πανελληνίων το πρόγραμμα θα αποθήκευε την 1η max τιμή που θα έδιναν οι εμφωλευμένοι βρόχοι ενώ σε σένα δεν κάνει κάτι τέτοιο βέβαια αυτό είναι μία ασήμαντη λεπτομέρεια. Πχ τρέξε τις λύσεις μας για την εξίσωση 2x+2y=10 για χ απο 0 εως 10 και y απο 0 ως 10. Στην δικια μου θα ειναι το ζευγος 0 5 ενω στη δικιά σου το ζεύγος 5 0 που θα ήταν η τελευταία σε εμφωλευμένους βρόχους ;) Απλως το θεωρώ λίγο λάθος γιατί στην αρχή του προγράμματος ο χρήστης δηλώνει απο πού θέλει να ξεκινάει ο έλεγχος για κάθε μεταβλητή. Με μικρή παρέμβαση στον αλγόριθμο σου όμως λύνεται και αυτό χωρίς να αλλάξει η λογική σου.
Τίτλος: Απ: Τροποποίηση άσκησης πανελληνίων για πολύ δυνατούς λύτες
Αποστολή από: bugman στις 02 Νοέ 2017, 07:11:15 μμ
Αντιλαμβάνομαι πώς το βλέπεις το πράγμα. Όταν λέει το μέγιστο στο άθροισμα δεν αναφέρεται στο συγκεκριμένο ζεύγος που θα το βγάλει (το λέμε ζεύγος, γιατί δέχτηκα την ορολογία της άσκησης, αλλά θα το λέγαμε "σύνολο τιμών αγνώστων", αλλά βαρύ φαίνεται), αλλά βάσει του συγκεκριμένου τρόπου που μετράμε τις αλλαγές. Θα μπορούσα πχ στο δικό μου πρόγραμμα να μετράω από το τελευταίο στο πρώτο, οπότε το Κ να ξεκινάει από το Ν και εκεί που έκανα έλεγχο για το Κ>Ν τώρα θα κάνω τον έλεγχο Κ<1.
Πράγματι υπάρχουν δυο λύσεις, και αφού έφτιαξες την άσκηση πρέπει να ξεκαθαρίσεις για ποιο γινόμενο θα είναι ο "άγνωστος" ο περισσότερος φωλιασμένος.
Στη δική μου λύση είναι ο πρώτος από δεξιά (άρα πάει από Κ=1 προς Κ=Ν+1), αλλά όπως έγραψα πριν μπορεί να πάει και από αριστερά (από Κ=Ν προς Κ=1-1=0), ή θα μπορούσε να παίξει ένας πίνακας Μ[] όπου το Μ[Κ] θα έδειχνε το "τελικό_κ", και εδώ απλά το Κ ξεκινάει με 1 και τερματίζει στο Ν+1 (η έξοδος), άρα μπορούμε να έχουμε με αλλαγή σειράς με το Μ[] και όσους συνδυασμούς δίνουν Ν στοιχεία, δηλαδή Ν! (πχ το Ν=3 δίνει 6 συνδυασμούς).  Μπορούμε να υποθέσουμε ότι με το "πρώτο" εννοεί για τον συνδυασμό που επιλέγουμε! :)
Τίτλος: Απ: Τροποποίηση άσκησης πανελληνίων για πολύ δυνατούς λύτες
Αποστολή από: Delta2000 στις 02 Νοέ 2017, 08:28:45 μμ
Αντιλαμβάνομαι πώς το βλέπεις το πράγμα. Όταν λέει το μέγιστο στο άθροισμα δεν αναφέρεται στο συγκεκριμένο ζεύγος που θα το βγάλει (το λέμε ζεύγος, γιατί δέχτηκα την ορολογία της άσκησης, αλλά θα το λέγαμε "σύνολο τιμών αγνώστων", αλλά βαρύ φαίνεται), αλλά βάσει του συγκεκριμένου τρόπου που μετράμε τις αλλαγές. Θα μπορούσα πχ στο δικό μου πρόγραμμα να μετράω από το τελευταίο στο πρώτο, οπότε το Κ να ξεκινάει από το Ν και εκεί που έκανα έλεγχο για το Κ>Ν τώρα θα κάνω τον έλεγχο Κ<1.
Πράγματι υπάρχουν δυο λύσεις, και αφού έφτιαξες την άσκηση πρέπει να ξεκαθαρίσεις για ποιο γινόμενο θα είναι ο "άγνωστος" ο περισσότερος φωλιασμένος.
Στη δική μου λύση είναι ο πρώτος από δεξιά (άρα πάει από Κ=1 προς Κ=Ν+1), αλλά όπως έγραψα πριν μπορεί να πάει και από αριστερά (από Κ=Ν προς Κ=1-1=0), ή θα μπορούσε να παίξει ένας πίνακας Μ[] όπου το Μ[Κ] θα έδειχνε το "τελικό_κ", και εδώ απλά το Κ ξεκινάει με 1 και τερματίζει στο Ν+1 (η έξοδος), άρα μπορούμε να έχουμε με αλλαγή σειράς με το Μ[] και όσους συνδυασμούς δίνουν Ν στοιχεία, δηλαδή Ν! (πχ το Ν=3 δίνει 6 συνδυασμούς).  Μπορούμε να υποθέσουμε ότι με το "πρώτο" εννοεί για τον συνδυασμό που επιλέγουμε! :)

Όταν τροποποιούσα την εκφώνηση της άσκησης δεν σκέφτηκα ότι θα μπορούσαν να ελεγχθούν όλοι οι συνδιασμοί με διαφορετική σειρά απ'ότι θα ήταν σαν να ήταν σε φωλιές βρόχων. Και φυσικά ούτε αυτοί στις πανελλήνιες περίμεναν κάποια λύση σαν τις δικές μας αφού τα δεδομένα εκεί είναι πολύ συγκεκριμένα. Και στην τελική λίγη σημασία έχει εγώ θα αλλάξω και την εκφώνηση στο αρχείο μου και θα βάλω ένα ζεύγος.
Τίτλος: Απ: Τροποποίηση άσκησης πανελληνίων για πολύ δυνατούς λύτες
Αποστολή από: gbougioukas στις 06 Νοέ 2017, 08:58:07 μμ
Ενδιαφέρων ο προβληματισμός με τις διοφαντικές εξισώσεις. Να προτείνω μία παραλλαγή:

Κατασκευάστε έναν αλγόριθμο ο οποίος να βρίσκει μια λύση σε μια δεδομένη διοφαντική εξίσωση, θεωρώντας ότι δεν υπάρχουν φράγματα στις τιμές που παίρνουν οι μεταβλητές (δηλαδή οι δυνατές τιμές κάθε μεταβλητής είναι όλοι οι ακέραιοι (ℤ)), με την υπόθεση όμως ότι υπάρχει λύση.
Τίτλος: Απ: Τροποποίηση άσκησης πανελληνίων για πολύ δυνατούς λύτες
Αποστολή από: bugman στις 07 Νοέ 2017, 09:55:26 πμ
Έστω η 10*[4]+(-5)*[4]+(-100)*[2]=-180, όπου οι λύσεις για τους άγνωστους είναι τα 4,4,2 στο 10*Α1-5*Α2-100*Α3=-180
Επιπλέον όμως λύση είναι και τα 22, 20,3  επειδή 10*22-5*20-100*3=-180
Πώς θα γίνει να βγάλουμε μια λύση κοινή για κάθε αλγόριθμο που ξεκινάει μόνο με την γνώση του 10*Α1-5*Α2-100*Α3 χωρίς να οριστεί από που θα ξεκινήσουν οι άγνωστοι και προς τα που θα πάνε (θα αυξάνονται ή θα μειώνονται), μάλλον αδύνατον!
Τίτλος: Απ: Τροποποίηση άσκησης πανελληνίων για πολύ δυνατούς λύτες
Αποστολή από: gbougioukas στις 07 Νοέ 2017, 11:32:55 πμ
@bugman

Έχω γράψει έναν ακέραιο αριθμό σ' ένα χαρτί. Αν με ρωτήσεις "είναι ο α;" (όσες φορές θέλεις), όπου α οποιαδήποτε ακέραια σταθερά, θα σου απαντήσω αλήθεια χωρίς να σε κοροϊδέψω NAI ή ΟΧΙ. Μπορείς να κατασκευάσεις έναν αλγόριθμο ο οποίος θα βρίσκει τον αριθμό που έχω γράψει;
Τίτλος: Απ: Τροποποίηση άσκησης πανελληνίων για πολύ δυνατούς λύτες
Αποστολή από: bugman στις 08 Νοέ 2017, 09:05:18 πμ
Δεν μπορώ. Γιατί μπορώ να κάνω άπειρες ερωτήσεις!  Πρέπει να ξέρω αν είναι μικρότερο ή μεγαλύτερο...από το στόχο. Δηλαδή πρέπει να έχω κάτι να συγκλίνω. Μια Newton–Raphson μέθοδος, στην αριθμητική ανάλυση αν πρόκειται για συνάρτηση.
Τίτλος: Απ: Τροποποίηση άσκησης πανελληνίων για πολύ δυνατούς λύτες
Αποστολή από: gpapargi στις 08 Νοέ 2017, 10:29:32 πμ
Μπορείς αν σαρώσεις 0,1,-1,2,-2,3,-3 κλπ
Τίτλος: Απ: Τροποποίηση άσκησης πανελληνίων για πολύ δυνατούς λύτες
Αποστολή από: gbougioukas στις 08 Νοέ 2017, 10:31:34 πμ
@bugman

Μπορείς, αποκλείεται να κάνεις άπειρες ερωτήσεις. Έστω m ο ακέραιος αριθμός που είναι γραμμένος στο χαρτί:

Είναι ο 0;
Είναι ο 1;
Είναι ο -1;
Είναι ο 2;
Είναι ο -2;
Είναι ο 3;
Είναι ο -3;
...
Είναι ο m;

Θα πέσεις πάνω στον αριθμό m σε πεπερασμένο πλήθος ερωτήσεων. Αυτό από μια πιο θεωρητική άποψη αποδεικνύει ότι "το σύνολο των ακέραιων είναι αριθμήσιμο (countable)".
Τίτλος: Απ: Τροποποίηση άσκησης πανελληνίων για πολύ δυνατούς λύτες
Αποστολή από: bugman στις 08 Νοέ 2017, 02:32:25 μμ
Η δική μου απάντηση παραμένει: Αν το γράψεις στο χαρτί πχ 1231231231230120381928391283918318239 θα πεθάνω πριν το  βρω με τον "αλγόριθμο" του gpapargi.
Ένας αλγόριθμος οφείλει να βρίσκει λύση σε εύλογο χρονικό διάστημα, αλλιώς δεν είναι αλγόριθμος.
Αν όμως ο ακέραιος βρίσκεται σε ένα πεπερασμένο διάστημα, πχ 0 έως 255 (για ένα byte ακέραιο, χωρίς πρόσημο) ή 0 έως 65535 ( για δυο bytes ακέραιο χωρίς πρόσημο) τότε  σαρώνεις 256 νούμερα ή 65536 νούμερα κάτι που δεν είναι αργό. Όμως έτσι έχεις από πριν την περιοχή.
Στο ερώτημα με "άνευ" περιοχής αναζήτηση η απάντηση είναι σε άπειρο χρόνο...άρα μη εφικτό για αλγόριθμο!
Τίτλος: Απ: Τροποποίηση άσκησης πανελληνίων για πολύ δυνατούς λύτες
Αποστολή από: gpapargi στις 08 Νοέ 2017, 03:41:28 μμ
Ένας δεδομένος ακέραιος, οσοδήποτε μεγάλος και να είναι, παραμένει πεπερασμένος. Σε καμία περίπτωση δεν είναι άπειρος. Για την ακρίβεια απέχει άπειρα πολύ από το άπειρο.
Έχει σημασία το ότι ο ακέραιος είναι ήδη γραμμένος σε χαρτί. Είναι άλλο πράγμα το να ψάχνεις για τις λύσεις μιας διοφαντικής χωρίς να ξέρεις αν υπάρχει η λύση. Το βιβλίο το αναφέρει αυτό ως υπολογιστική διαδικασία και όχι αλγόριθμο γιατί δεν ξέρεις αν τερματίζει.

Στην περίπτωση του δεδομένου ακέραιου, υπάρχει τερματισμός σε πεπερασμένο χρόνο άρα είναι αλγόριθμος. Το αν ο χρόνος αυτός υπερβαίνει την ανθρώπινη ζωή και τελικά αν όλο αυτό έχει πρακτική αξία είναι άλλο πράγμα. Στον ορισμό του αλγορίθμου μας ενδιαφέρει το "πεπερασμένο" πλήθος βημάτων. Όχι το αν αυτό το πλήθος είναι μεγάλο ή μικρό σε σχέση με τα ανθρώπινα δεδομένα.
Τίτλος: Απ: Τροποποίηση άσκησης πανελληνίων για πολύ δυνατούς λύτες
Αποστολή από: bugman στις 08 Νοέ 2017, 05:05:20 μμ
Νομίζω ο πιο γρήγορος αλγόριθμος έχει την γνωστή ελληνική περιφραστική ονομασία "να το πάει το ποτάμι". Είναι η τεχνική που ψήνει αυτόν που γνωρίζει τον αριθμό να τον πει χωρίς κανένα άλλο πεπερασμένο βήμα παρά αυτό της μιας ερώτησης "αν έλεγες ..να το πάρει το ποτάμι και απαντούσαμε ναι, ποιος αριθμός θα ήταν;".  Σε αυτή την περίπτωση υπάρχει ένα πρόβλημα να μην έχουμε λύση αν απορριφθεί η πρόταση, αλλά είναι ισοδύναμο με το να μην έχουμε λύση αν ψάχνουμε με τον "σωστό" αλγόριθμο για χρόνια και δεν τελειώνει...(μπορεί να πεθάνει και αυτός που ξέρει τον αριθμό-λύση), από την άλλη μεριά όμως μπορεί να πιάσει, και να πάρουμε την λύση!
Τίτλος: Απ: Τροποποίηση άσκησης πανελληνίων για πολύ δυνατούς λύτες
Αποστολή από: gbougioukas στις 08 Νοέ 2017, 10:03:14 μμ
@bugman

Ο καθένας είναι ελεύθερος να ορίσει το άπειρο ή οποιαδήποτε άλλη έννοια θέλει όπως του αρέσει, ακόμα και να εισάγει νέα Μαθηματικά. It's Ok. Επειδή όμως εδώ είναι η κατηγορία ΑΕΠΠ, η οποία βασίζεται στα συνήθη Μαθηματικά, και διαβάζουν μαθητές που δίνουν εξετάσεις, να ξεκαθαρίσουμε ότι:

1) Το πλήθος των στοιχείων ενός συνόλου είναι πεπερασμένο όταν υπάρχει φυσικός αριθμός ίσος με αυτό. Το 0 μας κάνει, όπως και το 1231231231230120381928391283918318239. Είναι και οι δύο φυσικοί αριθμοί. Αν ένα σύνολο έχει πλήθος στοιχείων ίσο με το ένα ή το άλλο είναι πεπερασμένο.

2)Το πλήθος των στοιχείων ενός συνόλου είναι άπειρο όταν δεν είναι πεπερασμένο, δηλαδή όταν δεν υπάρχει φυσικός αριθμός που δίνει το πλήθος. Για παράδειγμα δεν υπάρχει φυσικός αριθμός που να δίνει το πλήθος του συνόλου των φυσικών αριθμών.

Επομένως, η εν λόγω διαδικασία τερματίζει σε πεπερασμένο πλήθος βημάτων. Και επειδή πληρούνται και οι άλλες προϋποθέσεις που θέτει το σχολικό βιβλίο είναι όντως αλγόριθμος, με βάση το  σχολικό βιβλίο πάντα.
-----------------------------------------------------------
Παρεμπιπτόντως, με την λογική αυτή που λες ούτε η λύση στο αρχικό πρόβλημα που παρουσιάζεις παραπάνω είναι αλγόριθμος, αφού, για παράδειγμα, για ελάχιστη τιμή μεταβλητής -2^112 (πίνακας κάτω[10] στην λύση σου) και μέγιστη 2^134 (πίνακας πάνω[10] στην λύση σου) ο χρόνος είναι "άπειρος" (με βάση τον δικό σου ορισμό του απείρου)
Τίτλος: Απ: Τροποποίηση άσκησης πανελληνίων για πολύ δυνατούς λύτες
Αποστολή από: bugman στις 08 Νοέ 2017, 11:47:11 μμ
Πρακτικά όταν κάτι εξαρτιέται σε τέτοιο βαθμό από την εισαγωγή στοιχείων, και μπορεί η διαδικασία να χρειάζεται τεράστιους χρόνους εκτέλεσης, τότε πρέπει ο αλγόριθμος να προβλέπει περιορισμό ή έναν τρόπο να τερματίσει με παρέμβαση του χρήστη. Δηλαδή δεν θα έφτιαχνα ποτέ ένα πρόγραμμα που θα ξεκίναγε με μια επανάληψη μέχρι να ικανοποιηθεί μια συνθήκη γνωρίζοντας ότι αυτό μπορεί να γίνει μερικά χρόνια μετά! Αν το πούλαγα ως μέθοδο επίλυσης, και εξηγούσα ότι ενδέχεται να βρει τη λύση σε χίλια χρόνια, αλλά σίγουρα έχω σωστό αλγόριθμο, τότε απλά δεν θα το αγόραζε κανείς! Δεν μπορεί να είναι κάτι αλγόριθμος, ως μια λύση, για ένα πρόβλημα και να δίνει λύση χίλια χρόνια μετά!


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


Μου  θύμισες κάτι που είχα διαβάσει παλιά. Αν έχεις μια ασπρόμαυρη οθόνη με ανάλυση 100χ100 στοιχεία μπορείς να διαβάσεις όλα τα βιβλία του κόσμου. Άρα θα μπορούσε να πει κανείς ότι αρκούν 10000bit για να έχουμε όλη τη σοφία του κόσμου, και απλά μια γεννήτρια τυχαίων συνδυασμών θα μπορούσε να μας κάνει την οθόνη να μας απαντάει σε ότι θέλουμε, αρκεί να περιμένουμε να έρθει το σωστό, αλλά σίγουρα το σωστό θα έρθει, αφού είναι βέβαιο ότι αν έχουμε το σωστό βιβλίο θα μας το δείξει η οθόνη!



Τίτλος: Απ: Τροποποίηση άσκησης πανελληνίων για πολύ δυνατούς λύτες
Αποστολή από: gpapargi στις 09 Νοέ 2017, 03:29:30 μμ
Στο "δικό μου" πρόγραμμα, οι μετρητές ξέρουμε από πριν πόσα βήματα θα κάνουν. πχ αν κάνει ο καθένας 3 και έχουμε τέσσερις τότε έχουμε 3Χ3Χ3Χ3 μετρήσεις. Αυτό είναι γνωστό από την αρχή. Εντελώς διαφορετικό με το βρες ένα ακέραιο αριθμό..που έχω γράψει σε χαρτί ρωτώντας με!
Άλλο πράγμα το άγνωστο αλλά πεπερασμένο πλήθος (δε μας ενοχλεί)  και άλλο πράγμα το άπειρο πλήθος (μας ενοχλεί).

Μου  θύμισες κάτι που είχα διαβάσει παλιά. Αν έχεις μια ασπρόμαυρη οθόνη με ανάλυση 100χ100 στοιχεία μπορείς να διαβάσεις όλα τα βιβλία του κόσμου. Άρα θα μπορούσε να πει κανείς ότι αρκούν 10000bit για να έχουμε όλη τη σοφία του κόσμου, και απλά μια γεννήτρια τυχαίων συνδυασμών θα μπορούσε να μας κάνει την οθόνη να μας απαντάει σε ότι θέλουμε, αρκεί να περιμένουμε να έρθει το σωστό, αλλά σίγουρα το σωστό θα έρθει, αφού είναι βέβαιο ότι αν έχουμε το σωστό βιβλίο θα μας το δείξει η οθόνη!

Αυτό δεν είναι τόσο απλό. Αν έχεις μια οθόνη με 10000 στοιχεία ας πούμε ότι μπορείς να διαβάσεις μια σελίδα βιβλίου. Όλοι οι συνδυασμοί είναι 2^10000. Αν έχεις πιο πολλές σελίδες πολλαπλασιάζεται ανάλογα ο εκθέτης όχι το πλήθος των συνδυασμών. Πχ 2^1000000 για 100 σελίδες.
Αν μετρήσεις το μήκος του γνωστού σύμπαντος σε χιλιοστά  από άκρη σε άκρη είναι της τάξης του 2^130. Αυτό δίνει μια ιδέα του τι είναι το 2^1000000.

Και άντε… ότι τις φτιάξαμε και όλες τις πιθανές σελίδες. Τα βιβλία που θα φτιαχτούν θα λένε και αντιφατικά πράγματα μεταξύ τους. Πχ μια θα λέει «το άθροισμα γωνιών τριγώνου στο επίπεδο είναι 180 μοίρες» μια άλλη θα λέει «το άθροισμα γωνιών τριγώνου στο επίπεδο ΔΕΝ είναι 180 μοίρες» μια άλλη θα λέει «το άθροισμα γωνιών τριγώνου στο επίπεδο είναι 100 μοίρες» κλπ. Πως θα ξέρουμε ποια είναι η σελίδα που λέει το σωστό;
Καμία σοφία δεν μπορεί να υπάρξει με όλους τους πιθανούς συνδυασμούς. Τα λάθη θα είναι πολύ περισσότερα από τα σωστά και κανείς δεν μπορεί να κάνει το διαχωρισμό. Φυσικά θα δεις κάποια στιγμή και το σωστό βιβλίο (που έχεις στα χέρια σου), όμως δεν μπορείς να χρησιμοποιήσεις αυτόν τον αλγόριθμο για να πεις ότι θα μάθεις τα πάντα.
Τίτλος: Απ: Τροποποίηση άσκησης πανελληνίων για πολύ δυνατούς λύτες
Αποστολή από: bugman στις 09 Νοέ 2017, 08:34:35 μμ
Δεν περίμενα να το αναλύσεις!
 ;D

Ο αλγόριθμός σου* δεν μπορεί να δουλέψει, επειδή πρέπει να πάρει όλα τα νούμερα και να ρωτάει "είναι αυτό το νούμερο". Δηλαδή βασίζεται στο τι θα του πούμε εμείς. Μπορούμε να κλέψουμε. Δεν μπορεί να ξέρει τι είναι σωστό. Όπως και στις τυχαίες σελίδες στην οθόνη. Δεν ξέρουμε ποιο είναι το αληθινό. Αν ο αλγόριθμος δεν περιέχει το τρόπο "λύσης" δεν είναι αλγόριθμος. Επειδή κάνει επανάληψη και προβάλει νούμερα, δεν σημαίνει ότι αναζητεί νούμερα. Αν δε, του δώσεις την λύση για να μην δίνεις συνέχεια "όχι", τότε δεν χρειάζεται τις επαναλήψεις, την έχει τη λύση!



*Γράφω ως προς  αυτόν που υποστηρίζεις, και θεωρητικά φαίνεται να είναι, ότι "δουλεύει" για πεπερασμένο αριθμό επαναλήψεων.