Eruyomo
Πολύ δραστήριο μέλος
Υ.Γ. 3. πώς σε ένα θρεντ για την ΑΕΠΠ καταλήξαμε να συζητάμε για NP-complete προβλήματα δεν το κατάλαβα. ΕΛΕΟΣ. ΣΕ μαθητές Γ' Λυκείου απευθείνεται το θρεντ. Όποιος θέλει να εντυπωσιάσει με τις γνώσεις του (και καλά) ας κάνει τον κόπο να ανοίξει ένα άλλο θρεντ.
Δεν μπορούμε, είμαστε πολύ γαμάτοι για να κρυβόμαστε
Σοβαρότερα, o φίλος με ρώτησε γιατί πίστευτα οτι η λύση του δεν είναι σωστή και εγώ του εξήγησα γιατί. Δεν καταλαβαίνω γιατί πειράζει τόσο μερικούς, απο την στιγμή που αναφέρθηκα ρητώς οτι απαντώ σε αυτόν και μόνο και δεν υπάρχει καμία σχέση με την ΑΕΠΠ.
Βάλτε το σε ένα μεγάλο σχόλιο μέσα ή ρίξτε το offtopic, σιγά.
Πάντως συμφωνώ στο οτι σωστότερο είναι να λέμε τον συλλογισμό (και πέρα απο την ΑΕΠΠ). Αν θέλει κανείς να του εξηγήσω την λύση ας πεί, κόβω τους κύβους εδώ προς το παρόν (αν και δεν καταλαβαίνω γιατί την απαξιώνετε, μια χαρούλα άσκηση είναι) γιατί θα με δείρουν εδώ οι διδάκτορες.
Προς διαχειριστές: Γίνεται το όλο θέμα με τους κύβους να μεταφερθεί εδώ: https://ischool.e-steki.gr/showthread.php?t=54227&page=10
Ταιριάζει περισσότερο (και είναι πιο κοντά σε ασκήσεις ΑΕΙ/ΤΕΙ).
Σημείωση: Το μήνυμα αυτό γράφτηκε 14 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Eruyomo
Πολύ δραστήριο μέλος
Για την ιστορία, ο λόγος που το πιστεύω, είναι οτι υπάρχουν κάποια προβλήματα (τα οποία όπως λέμε ανήκουν σε μια «κλάση», μια «ομάδα» αν θες, προβλημάτων) τα οποία, ενώ είναι πολύ προφανή για τον άνθρωπο, για τον υπολογιστή είναι πάρα πολύ δύσκολα. Κοινώς οτι δεν μπορείς να τα λύσεις με πολυωνυμικό τρόπο γι αυτό χρησιμοποιείς μεθοδολογίες σχεδίασης αλγορίθμων που δίνουν πολύ καλές λύσεις (όπως πχ ο Δυναμικός Προγραμματισμός) αλλα όχι την βέλτιστη (η οποία μπορεί να εξαχθεί πχ με ένα αλγόριθμο αναζήτησης σε χώρο καταστάσεων).
Ο λόγος που υποπτεύθυκα οτι η άσκηση σου δεν ήταν σωστή, είναι επειδή με μια γρήγορη ματιά, είδα οτι την λύνεις σε πολυωνυμικό χρόνο (aka 2 πεπερασμένους βρόχους το ένα μέσα στο άλλο)
Τώρα η παγίδα είναι οτι ένα πολύ δύσκολο πρόβλημα (NP) μπορεί να αναχθεί σε πολύ εύκολο (P) αν αλλάξεις ένα μικροσκοπικό σημείο στην εκφώνηση (και το ανάποδο βέβαια) και αυτός είναι ο λόγος για τον οποίο δεν είμαι σίγουρος στο τί είναι το πρόβλημα σου. Αν και μου φαίνεται σαν πρόβλημα γραμμικού προγραμματισμού (μεγιστοποίησε κάτι, δωσμένων κάποιων γραμμικών συνθηκών) τα οποία αποδεδειγμένα είναι P-complete. Οπότε όντως πρέπει να χει πολυωνυμική λύση.
Τέλως πάντων, τέρμα τα offtopic εδώ για να μην μπερδέψουμε περισσότερο.
Για λόγους αρχείου, ιδού η λύση μου σε λογαριθμικό χρόνο (θα ήταν σταθερός αν είχα σταθερού χρόνου διακριτή ρίζα):
#include <stdio.h>
#include <string.h>
long long int maxheight(int N, int K){
/*
* maxheight(N,K): Theta(log_K(N)) time complexity.
*
* returns the max height for a 'scale' constructed
* with at most N 1x1 boxes with each consecutive step
* at most differing K in height.
*
* expects:
* N: long long int.
* K: long long int.
*
* idea:
* The idea is that we construct the largest scale we can
* so that, every step has exactly K difference in height
* from the consecutive step.
*
* Then we just 'complete' the scale with the remaining boxes.
*/
long long int m = 0, w, h;
// Find the 'width' of the full scale with at most N boxes (1).
while (K*m*(m+1) <= 2*N){
m++;
}
m--;
// Find the increase in height we get with the
// remaining boxes.
w = (N-K*m*(m+1)/2)/(m+1);
// The max height, will be m times K plus the height
// we gain with the remaining boxes.
h = m*K + w;
return h;
}
int main(int argc, char **argv){
long long int N, K;
if (argc < 3){
printf("Usage: %s N K.\\n", argv[0]);
return 0;
}
N = atoi(argv[1]);
K = atoi(argv[2]);
if (K<=0){
printf("Expecting positive number, equal or greater than 1 for K.\\n");
return 0;
}
if (N<K){
printf("Expecting positive number, greater than K for N.\\n");
return 0;
}
printf("h(%lld, %lld) = %lld.\\n",N,K,maxheight(N,K));
return 0;
}
Σημείωση: Το μήνυμα αυτό γράφτηκε 14 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Eruyomo
Πολύ δραστήριο μέλος
@Eruyomo
Η άσκηση αυτή όπως είχα αναφέρει σχετικά βρίσκεσαι σε μια ιστολίδα στο hellenico και πιο συγκεκριμένα εδώ -> https://www.hellenico.gr/
Είναι μια ιστοσελίδα στην οποία υπάρχουν πολλά προβλήματα για τον μαθητή και το πιο σπουδαίο είναι ότι τα προβλήματα ελέγχονται αυτόματα απο κατάλληλο πρόγραμμα. Θέλω να καταλήξω στο ότι το πρόβλημα αυτό το ανέβασα και αξιολογήθηκε με 10 διαφορετικές μετρήσεις στις οποίες τα αποτέλεσματα ήταν 100% επιτυχίας. Τώρα να το έχουν λύσει λάθος 3-4 άτομα που έχουν αναλάβει αυτή την εργασία το βρίσκω σχεδόν παράλογο.
Θα θελα να μου δώσεις ακριβώς την σελίδα αυτουνού του προγράμματος αξιολόγησης για να καταλάβω ακριβώς το πως κάνουν την αξιολόγηση. Θέλω επίσης να δω επακριβώς την εκφώνηση Επίσης αξιολόγηση σε ψευδοκώδικα πως ακριβώς κάνουν; Δώσε μου ακριβώς link προς τα εκεί που την πήρες για να καταλάβω τι κάνουν.
Σε 0 sec με 100000 κύβους και πόσα K; Τέσπα, ελπίζω να καταλαβαίνεις οτι δεν είναι το θέμα το πόσο θα τρέχει μόνος του ο αλγόριθμος, καθότι ποτέ σχεδόν δεν χρησιμοποιούμε έναν αλγόριθμο μόνο του αλλα μέσα σε προγράμματα.
Το οτι ένας αλγόριθμος για μικρά νούμερα σου τρέχει αμέσως, δεν το κάνει καλό πρόγραμμα (όταν αρχίσεις και γράφεις «μεγάλα» προγράμματα θα το καταλάβεις αυτό, όταν ακόμα και το O(n) ενός αθροίσματος σου φαίνεται πολύ). Κοιτάς την πολυπλοκότητα καθεαυτή και όχι στην απόδοση με μετρήσεις (που σε κάθε μηχάνημα είναι διαφορετική). Και η γλώσσα δεν έχει τόσο μεγάλη σημασία. Αν είναι άσχημο απο πλευράς πολυπλοκότητας, ακόμα και σε τσιπάκι να το κάψεις, μια software λύση μικρότερης πολυπλοκότητας σε μια interpreted γλώσσα, θα το «κερδίζει».
Επίσης την έχεις κάνει και σε C; Θα το ήθελα (Για να κάνω και εγώ τα benchmarks). Και πάλι δεν έχω καταλάβει πως αποδεικνείεται η ορθότητα της λύσης σου απο την hellenico. Πετάνε νούμερα μέσα και ελέγχουν αν είναι τα ίδια; Αν είναι αυτό, τότε ξανάρχομαι στην πρώτη μου σκέψη, δεν έχεις δώσει (και αντίστοιχα δεν ζητάνε) ακριβή λύση, αλλα μια καλή προσέγγιση. Συνεχίζω να έχω αμφιβολίες για την κλάση του προβλήματος πάντως (αν είναι NP-Complete).
Όσο για το τελευταίο, δεν είναι τόσο τραγικά τα πράγματα όσο το περιγράφεις. Για αρχή είναι κάποια στοιχειώδη πράγματάκια. Έπειτα όσο δυσκολεύουν τα πράγματα, μπαίνουν και μεθοδολογίες για τη σχεδίαση αλγορίθμων. Μην τρομάζεις τον κόσμο, εύκολα είναι (σχετικά).
Έπειτα, σε εσένα αναφέρθηκα που πόσταρες το πρόβλημα. Είναι κάπως offtopic με το thread. Δεν αναφέρομαι στην Γ' Λυκείου σε καμία περίπτωση.
-----------------------------------------
Ρε βαζω κενα οταν γραφω, αλλα μου τα βγαζει στην ιδια σειρα η βλακεια. Εννοειται οτι αφηνω κενα(ισα με ενα πατημα tab περιπου:p) για να μην μπερδευομαι και γω.
Βάζε τα σε code tags. N00b.
Σημείωση: Το μήνυμα αυτό γράφτηκε 14 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Eruyomo
Πολύ δραστήριο μέλος
Ναι έχεις δίκιο, ισχύουν κάποιοι περιορισμοί για τα N και K
Είναι Ν (1<=Ν<=100000) και Κ (1<=Κ<=1000).
Με βάση τα παραδείγματα που έχουν δωθεί στην εικόνα μπορείς να καταλάβεις τι ακριβώς χρειάζεται το πρόβλημα
Πρώτο λάθος, όχι. Το πρόβλημα πρέπει να περιγράφεται επακριβώς. Απο τα παραδείγματα έχεις κάποια ένδειξη, όχι το πρόβλημα.
Όσο για τα N και K εννοώ οτι δεν μπορείς πχ να φτιάξεις μια σκάλα με δυο κύβους μόνο, ή μια σκάλα με μέγιστο βήμα 1, με 4 κύβους.
Προφανώς και ισχύει αυτό που λες. Αλλά η απόδοση ενος αλγόριθμου ειδικά σε αυτή την τάξη είναι κάτι που δεν μας καίει τόσο πολύ. Ας λύσουμε το πρόβλημα σωστά και βλέπουμε
Ξανααναφέρω λοιπόν τον παραπάνω μου συλλογισμό.
Είσαι σίγουρος οτι η λύση είναι αυτή που έδωσες; Αν ναι, μπορείς να μου το αποδείξεις;
Δεν έχω δεί την λύση σου, αλλα η φύση του προβλήματος δεν μου φαίνεται οτι έχει ακριβή λύση σε πολυωνυμικό χρόνο (a.k.a NP-Complete ) όπως την λύση που έδωσες. Μπορεί να κάνω και λάθος, αλλα πρέπει να μου το αποδείξεις (Συνήθως αυτά τα προβληματάκια με κύβους, που πρέπει να βρείς το βέλτιστο... «κάτι» είναι NP-Complete)
Στην θέση σου, το πρόβλημα θα το προσέγγιζα με χρήση ΔΠ. (κοινώς «σπάς» το πρόβλημα σε επιμέρους προβλήματα και φροντίζεις η λύση σε κάθε ένα να είναι η βέλτιστη) ή αν δεν σε ενδιαφέρει όντως η πολυπλοκότητα, με χρήση κάποιου αλγορίθμου αναζήτησης σε χώρο καταστάσεων (αν και έφτιαξα και εγώ μια naive λύση).
Η απόδοση έχει τεράστια σημασία πάντως αν θες να αναφέρεσαι σε «προγραμματισμό». Προγραμματάκια και αλγορίθμους για οτιδήποτε χωρίς να τον νοιάζει η απόδοση, φτιάχνει ο καθένας.
Σημείωση: Το μήνυμα αυτό γράφτηκε 14 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Eruyomo
Πολύ δραστήριο μέλος
Για να δούμε τι ξέρετε απο ΠΡΑΓΜΑΤΙΚΟ προγραματισμό και ΟΧΙ σαν κάτι άλλες που νομίζουν πως αυτό που κανουν λέγετε προγραμματισμός. Όπως επίσης ο προγραμματισμός που κάνουμε στο σχολείο μόνο προγραμματισμός δεν είναι παίδες. Έχει καταντήσει να κάνουμε οικονομία πλέον ΛΟΛ... Το περίμενα εντελώς διαφορετικό, πλήρης απογοήτευση...
Οι ασκήσεις αυτές απευθύνονται και σε καθηγητές. Τις έχω λύσει με 100% βαθμό επιτυχίας μόνος. Οι ασκήσεις είναι οι παρακάτω. Copyrighted Hellenico(Αλλαγές απο μένα)
Σου έχουν δωθεί Ν κυβοι 1x1x1 τους οποίους θες να τους στοιβάξεις με τέτοιο τρόπο έτσι ώστε να δημιουργήσεις μια σκάλα. Στόχος σου είναι να χρησιμοποιήσεις αυτή τη σκάλα για να φτάσεις ένα συγκεκριμένο ύψος. Πρέπει να φτιάξεις τη σκάλα με τέτοιο τρόπο ώστε να μη χρειαστεί πηδώντας από τη μία σκάλα στην άλλη να ανέβεις ύψος μεγαλύτερο από Κ κύβους.
Έστω Η(Ν,Κ) το μέγιστο ύψος που μπορείς να ανέβεις χρησιμοποιώντας Ν κύβους αν μπορείς να ανεβαίνεις το πολύ Κ κύβους τη φορά. Η παρακάτω εικόνα δείχνει τη λύση για μικρές τιμές του Ν και του Κ.
Καλείσαι να φτίαξεις έναν αλγόριθμο που θα υπολογίζει το Η(Ν,Κ).
Ο αλγόριθμος θα διαβάζει τα Ν,Κ και θα τυπώνει το ζητούμενο.
Υ.Γ Δεκτή κάθε λυση γραμμένη σε C/C++,Pascal και ψευδοκώδικα.
Το πρόγραμμα αυτό είανι το μόνο που αρμόζει για τις συγκεκριμένες γνώσεις που έχουν τα παιδιά μέχρι στιγμής.
Έτσι να αποκτήσει λίγο ενδιαφέρον.
[σπασίκλας mode on]
Για αρχή δεν έχεις ορίσει σωστά το πρόβλημα σου. Πρέπει να βάλεις
για πότε το πρόβλημα έχει λύση (προφανώς ισχύει περιορισμός ανάμεσα στα Ν και στα Κ).
Έπειτα, το 1x1x1 στην εκφώνηση προϊδεάζει για τριδιάστατο χώρο (οπου θα μπορείς να ανέβεις σκάλες τόσο κινούμενος στο (x,y) όσο και στο (z,y).
Τέλος, ακόμα και για 2Δ χώρο, μπορείς να αποδείξεις οτι η λύση σου είναι σωστή; (οτι δίνει το μέγιστο ύψος
Υστερα, για να έχει νόημα το πρόβλημα, θα πρεπε να υπάρχει και κάποιο άνω φράγμα στην απόδοση. Πχ δεν είναι το ίδιο καλές μια λύση που λύνει το πρόβλημα σε Θ(N) βήματα και μια που το λύνει σε Θ(2^Ν).
[/σπασίκλας mode off]
Σημείωση: Το μήνυμα αυτό γράφτηκε 14 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Eruyomo
Πολύ δραστήριο μέλος
Φίλε μου αν κρίνω από την ηλικία σου, μας λες ότι αυτοί που γράψαν αεππ πριν 7 χρόνια δεν είχαν και φοβερές γνώσεις, δηλαδή το αυτονόητο
Μια ματιά να ρίξεις στα θέματα τότε και τώρα και θα καταλάβεις γιατί ο αριστούχος της αεππ προ 2004 με τον σημερινό δεν έχουν καμία σχέση.
Ναι εντάξει, το ανέφερα άλλωστε και εγώ. Γι αυτό το ονόμασα και ντούκου.
Αλλα νομίζω πως έτσι και αλλιώς, όπως σε όλα τα μαθήματα, άντε να σε βοηθήσει λίγο στο πρώτο εξάμηνο, μετά δεν θα κάνει και μεγάλη διαφορά.
Αρχική Δημοσίευση από dkotanid:Σκοπός είναι η γνώση να γίνει εργαλείο για τη ζωή σου, όχι περιττή πληροφορία που θα τη μάθεις και θα την πετάξεις όταν πλέον δε τη χρειαστείς!
Με το συμπάθειο, αλλα σιγά την γνώση που αποκομίζουν μέσα σε ένα 8μηνο για πόσες ώρες τη βδομάδα (πόσες κάνετε αλήθεια; ), σε ένα μάθημα τόσο συμπυκνωμένο, για ένα αντικείμενο που καν δεν το χουν ξαναδεί.
Και εντάξει, η 3η Λυκείου υπάρχει για έναν και μόνο σκοπό, τις Πανελλήνιες. Τι γνώση να αποκομίσεις απο εκεί μέσα; Μέχρι και μαθήματα που κάνεις για χρόνια όπως τα μαθηματικά, τα μαθαίνεις με σκοπό να γράψεις καλά στο τέλος. Δεν υπάρχει χρόνος, μέσα απο σχολεία, φροντιστήρια, ιδιαίτερα, για κάτι διαφορετικό.
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Eruyomo
Πολύ δραστήριο μέλος
Τα μαθαίνεις απο την αρχή έτσι και αλλιώς (και μάλιστα πιο εντατικά και σε μικρότερη πίεση χρόνου, πολλές ώρες την εβδομάδα και με εργαστήρια και τα τοιάυτα). Ίσως να βοηθάει λίγο η ΑΕΠΠ όπως έχει "ωριμάσει" κάπως τώρα, αλλα τουλάχιστον όταν έδινα εγώ, δεν φάνηκε πουθενά να κάνει κάποια διαφορά.
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Eruyomo
Πολύ δραστήριο μέλος
Όσο διδάσκεται ουσιαστικά μόνο μια χρονιά στο σχολείο σε μια τάξη δεν μπορεί να αναβαθμιστεί. Το μάθημα διδάσκεται 10 χρόνια στο σχολείο
Τα μαθηματικά, η φυσική κτλ 100 χρόνια σε όλες τις τάξεις
Υπάρχουν και άλλοι λόγοι που καθιστούν δύσκολη την ομοιόμορφη αντιμετώπιση των ζητημάτων που αφορύν στο μάθημα αυτό απο όλους τους διδάσκοντες...
Οταν λέω για όλο τον κόσμο δεν εννοώ μόνο τους διδάσκοντες που στην τελική δεν είναι και τόσο του χεριού τους.
Δεν είναι αμαρτία αυτό το μάθημα να έχει παραμείνει ακόμα στην φάση αυτή; Το να είναι ένα μάθημα που διδάσκεται σε μια τάξη μόνο και οπου τα παιδιά μπαίνουν έτσι απότομα σε κάτι που δεν έχουν ξαναδεί ποτέ τους και να απαιτείται να εξετάζονται και όλας.
Αυτή η προσέγγιση ήταν απο την αρχή λάθος και αντί να γίνουν διορθώσεις, ακούω για το πόσο δύσκολα γίνονται τα θέματα και το πόσο καλά εκπαιδεύονται οι μαθητές στα φροντιστήρια (όσοι έχουν λεφτά για να πηγαίνουν σε ένα καλό φροντιστήριο/ιδιαίτερα ή την τύχη για να είναι πολύ καλός ο καθηγητής τους στην ενισχυτική)
Μα πως είναι δυνατόν σε κάτι που μπαίνεις για πρώτη φορά να απαιτούν να το κατέχεις όσο καλά κατέχεις και τη φυσική η την χημεία που τα κάνεις απο το γυμνάσιο. Στον 21 αιώνα είμαστε, γιατί ο αιώνας της πληροφορίας να βρίσκει την πληροφορική σε υποδεέστερη θέση απο την χημεία ή την βιολογία (και τα δύο διδάσκονται στο γυμνάσιο). Τέσπα, ο eru λέει πάλι τα δικά του, συνεχίστε.
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Eruyomo
Πολύ δραστήριο μέλος
Για πόσο καιρό θα θεωρείται το αντικείμενο "Νέο";
Έχουν ήδη βγει πόσες φουρνιές δασκάλων απο τότε, δεν θα πρεπε να έχει εξοικειωθεί ο κόσμος;
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Eruyomo
Πολύ δραστήριο μέλος
τι το λαθος βγαζει με τιμη 0.00001 αυτος ο αλγοριθμος; Το αποτελεσμα ειναι 0.(αυτο που πρεπει να'ναι δηλαδη.)
Δεν έχει λάθος για πολύ μικρές τιμές.
Για πολύ μεγάλες έχειι, καθώς μπορεί να βγείς έξω απο τα όρια του δεκαδικού όταν πολλαπλασιάζεις με 100. Διορθώνεται εύκολα χωρίζοντας στον αριθμό σε ακέραιο και δεκαδικό μέρος.
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Eruyomo
Πολύ δραστήριο μέλος
Δεκτη? :pCode:[COLOR=#000000][COLOR=#0000bb]ΠΡΟΓΡΑΜΜΑ επιτελους ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ[/COLOR][COLOR=#007700]: [/COLOR][COLOR=#0000bb]χ ΑΡΧΗ ΓΡΑΨΕ [/COLOR][COLOR=#dd0000]'δωσε αριθμο' [/COLOR][COLOR=#0000bb]ΔΙΑΒΑΣΕ χ χ [/COLOR][COLOR=#007700]<-- [/COLOR][COLOR=#0000bb]χ[/COLOR][COLOR=#007700]*[/COLOR][COLOR=#0000bb]100 χ [/COLOR][COLOR=#007700]<-- [/COLOR][COLOR=#0000bb]χ [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000bb]0.5 χ [/COLOR][COLOR=#007700]<-- [/COLOR][COLOR=#0000bb]Α_Μ [/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]χ[/COLOR][COLOR=#007700]) [/COLOR][COLOR=#0000bb]χ [/COLOR][COLOR=#007700]<-- [/COLOR][COLOR=#0000bb]χ[/COLOR][COLOR=#007700]/[/COLOR][COLOR=#0000bb]100 ΓΡΑΨΕ [/COLOR][COLOR=#dd0000]'ο αριθμος ειναι'[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000bb]χ ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ[/COLOR][/COLOR]
Δεκτή, αλλα παρόλο που είναι αλγοριθμικά σωστή, σε κάποιες πραγματικές περιπτώσεις δεν θα δώσει σωστό αποτέλεσμα. Ποιος θα πει γιατί; (για θετικούς μιλάμε πάντα)
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Eruyomo
Πολύ δραστήριο μέλος
- Με βάση αυτό, η άρνηση χρήσης συναρτήσεων της γλώσσας όταν γράφουμε ψευδοκώδικα σημαίνει ότι ένας μαθητής που θα εφαρμόσει τον παραπάνω κανόνα του Υπουργείου και χρησιμοποιήσει ΓΛΩΣΣΑ, θα φτάσει πιο εύκολα στη λύση από κάποιο μαθητή που θα επιλέξει τον ψευδοκώδικα. Αυτό και μόνο το γεγονός το κρίνω απαράδεκτο. Δεν νομίζω ότι ο σκοπός της εξέτασης στην ΑΕΠΠ είναι αυτός.
Φαντάζομαι οτι αυτό το ρώτησε κάποιος σαν άσκηση-γρίφο (όπως πχ πως θα ανταλλάξουμε δυο μεταβλητές χωρίς την χρήση προσωρινής τρίτης κλπ).
Γενικά το καλύτερο είναι να χρησιμοποιούμε συναρτήσεις όπου μπορούμε για να είμαστε σωστοί (για να τις έγραψε κάποιος άλλος για μας τις συναρτήσεις, υποθέτουμε οτι τις έχει κάνει σωστά) και να τρώμε τον χρόνο μας σε ουσιαστικά πράγματα και όχι να ξανα-ανακαλύπτουμε τον τροχό.
Πάντως σαν ασκησούλα καλή είναι
-----------------------------------------
Δεν το κατάλαβα αυτό, δηλαδή μπορούν να γράψουν δικό τους ψευδοκώδικα;Υποτίθεται ότι ο μαθητής μπορεί να εκφράσει τις λύσεις του"είτε σε οποιαδήποτε μορφή παράστασης αλγορίθμου είτε σε "ΓΛΩΣΣΑ""
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Eruyomo
Πολύ δραστήριο μέλος
Συνιστώ κάποιο υπογλώσσιο
Ορίστε;
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Eruyomo
Πολύ δραστήριο μέλος
Το παρακάτω τμήμα αλγορίθμου, υπολογίζει το Α_Μ αριθμου κ
Διάβασε κ ! πραγματικός θεωρούμε > 0
α ¬ 0
Όσο α <= κ επανάλαβε
α ¬ α + 1
Τέλος_επανάληψης
Αν α = κ τότε
Εμφάνισε α
Αλλιώς
Εμφάνισε α – 1
Τέλος_αν
Πονάει η καρδούλα μου τώρα.
Για να πάρεις δηλαδή το ακέραιο μέρος, τρέχεις όλο τον ακέραιο.
Φαντάζομαι οτι στη γλώσσα (δεν πρέπει να κάνετε και πολλά για απόδοση αλγορίθμων) θα είναι σωστό.
Εδώ μια άλλη, εκθετικά γρηγορότερη (αλλα ακόμα και αυτή δεν είναι τόσο γρήγορη ωστε να χρησιμοποιηθεί σε πράξεις)
α <- 1
διάβασε κ
αν κ = 0 τότε
εμφάνισε 0
τέλος_αν
!- Αν είναι αρνητικός, τον αντιστρέφουμε, και κρατάμε το πρόσημο του.
αν κ<0 τότε
κ = - κ
αρνητικός = Αληθής
τέλος_αν
!- Αν είναι μικρότερος ή ίσος του 1, τότε το ακέραιο μέρος είναι 0.
αν κ <=1 τότε
εμφάνισε 0
τέλος_αν
!- Βρές απο πόσα δεκαδικά ψηφία αποτελείται ο ακέραιος
όσο α<κ επανέλαβε
α <- α * 10
τέλος_επανάληψης
α <- α / 10
!- Απο το πρώτο μέχρι το τελευταίο δεκαδικό του ακεραίου, βρες
!- ποιό είναι αυτό το στοιχείο.
ι <- α
όσο ι>0 επανέλαβε
α <- α + ι
αν α > κ τότε
α<- α - ι
ι <- ι / 10
τέλος_αν
τέλος_επανάληψης
!- Εμφάνισε το ακέραιο μέρος
αν αρνητικός = Αληθής τότε
εμφάνισε -α
αλλιώς
εμφάνισε α
τέλος_αν
Ευχαριστώ
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Eruyomo
Πολύ δραστήριο μέλος
Όχι το λέει ρητά (σελ 153 στο πλάι), τα ορίσματα DIV και MOD πρέπει να είναι ακέραιοι.
Δεν έχω το βιβλίο (θετική ήμουνα)
Θα θελα να το πάρω κάποια στιγμή πάντως.
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Eruyomo
Πολύ δραστήριο μέλος
Στην ΑΕΠΠ μπορούν να χρησιμοποιήσουν mod με δεκαδικούς;Μπορείς να παράγεις σχετικά "σωστές" λύσεις και με άγνωστο αριθμό δεκαδικών ψηφίων αν αντί για 10^2 πάρεις π.χ. 10^10 ή 10^20 - και πάρεις το αντίστοιχο Mod βεβαίως. Θα το χαρακτήριζα λίγο "μπακάλικο" διότι δεν πρόκειται για αλγόριθμο που λειτουργεί υπό όλες τις συνθήκες (π.χ. αν προσπαθούσες να πολλαπλασιάσεις με 10^20 σε γλώσσα προγραμματισμού θα έβγαινες εκτός ορίων του τύπου) αλλά χωρίς το A_M(x) είναι μονόδρομος.
Σε γλώσσες που επιτρέπεται
η χρήση της MOD με δεκαδικούς, μπορείς να ελέγξεις με το αν <αριθμός> mod 1 = 0 και αντίστοιχα να πάρεις το ακέραιο μέρος με <αριθμός> - <αριθμός> mod 1.
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Eruyomo
Πολύ δραστήριο μέλος
Το πρόβλημα ειναι πως της το επισήμανα αλλά επέμενε πως αυτό που έγραψα είναι λάθος καθώς και μια άλλη κοπέλα που είχε κάνει το ίδιο...
Ευχαριστώ πάντως
Με μια σημείωση.
Πάντα θα υπάρχει περίσσευμα.
Και αυτό γιατί (έστω n οι μέρες που απαιτουνται)
Που δεν ισχύει προφανώς για κανένα n φυσικό, καθώς το 41 δεν είναι δύναμη του 2. Οπότε τον τελευταίο έλεγχο (λογικά, δεν ξέρω τι παίζει με τα παγανιστικά της ΑΕΠΠ) μπορείς να τον απορρίψεις.
Offtopic, μη με διαβάσεις:
Eπίσης σε περίπτωση που είχατε τις συναρτήσεις ΛΟΓΑΡΙΘΜΟΣ_ΜΕ_ΒΑΣΗ_ΔΥΟ()
και ΤΑΒΑΝΙ() καθώς και να υψώσεις σε δύναμη του 2, θα μπορούσες αμέσως να δώσεις το αποτέλεσμα ως
ΒΔΟΜΑΔΕΣ <- ΤΑΒΑΝΙ(ΛΟΓΑΡΙΘΜΟΣ_ΜΕ_ΒΑΣΗ_ΔΥΟ(41))
και
ΠΕΡΙΣΣΕΥΜΑ <- 15*(2^ΒΔΟΜΑΔΕΣ-1)-600
και θα χες καθαρίσει.
Αλλα καλύτερα ξέχνα τα απο πάνω που έγραψα.
-----------------------------------------
Είσαι ολόσωστος.Παρόλα αυτα μου έκοψε μερικές μονάδες γιατι λέει οτι η αρχικοποιήση των εβδομάδων θα έπρεπε να είναι 1, ενω βγάζουν το ίδιο αποτέλεσμα γιατι λέει οτι όποιος το διαβάζει πρεπει να καταλαβαίνει οτι την πρώτη εβδομάδα ο μαθητής παίρνει 15Ε. Εσείς τι λέτε γι'αυτό?
Αν θέλει να βρεί κατι να καταλαβαίνει ας πιάσει κανένα βιβλίο στα ελληνικά. Ο αλγόριθμος αρκεί που τελειώνει με σωστό αποτέλεσμα για σωστή είσοδο.
Σημείωση: Το μήνυμα αυτό γράφτηκε 15 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
-
Το forum μας χρησιμοποιεί cookies για να βελτιστοποιήσει την εμπειρία σας.
Συνεχίζοντας την περιήγησή σας, συναινείτε στη χρήση cookies στον περιηγητή σας.