Υπολογισμός Λεξαρίθμων

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

Υπολογισμός Λεξαρίθμων

Δημοσίευση από soteres2002 » 26 Δεκ 2004 17:21

xalaroste... :D

Άβαταρ μέλους
xmavidis
Honorary Member
Δημοσιεύσεις: 1217
Εγγραφή: 02 Δεκ 2003 19:59
Τοποθεσία: Ηράκλειο

Υπολογισμός Λεξαρίθμων

Δημοσίευση από xmavidis » 27 Δεκ 2004 21:06

Πολύ χρήσιμο το script Σωτήρη :wink:
Τελευταία επεξεργασία από το μέλος xmavidis την 29 Δεκ 2004 01:13, έχει επεξεργασθεί 1 φορά συνολικά.
I want to know God’s thoughts; the rest are details.
Albert Einstein

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

Υπολογισμός Λεξαρίθμων

Δημοσίευση από soteres2002 » 28 Δεκ 2004 18:48

euxaristo poli xmavidis, na sai kala... kai xronia polla...

Άβαταρ μέλους
ledraweb
Honorary Member
Δημοσιεύσεις: 1356
Εγγραφή: 13 Νοέμ 2004 11:00
Τοποθεσία: Λευκωσία

Υπολογισμός Λεξαρίθμων

Δημοσίευση από ledraweb » 29 Δεκ 2004 23:08

Δοκιμάστε:
> ΕΛΛΑΣ ΕΣΤΙ
και μετά
> ΣΟΦΙΑ
None Of Us Is As Smart As All Of Us!!!

Εικόνα

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

Υπολογισμός Λεξαρίθμων

Δημοσίευση από soteres2002 » 30 Δεκ 2004 20:50

o man ΕΛΛΑΣ ΕΣΤΙ = ΣΟΦΙΑ = 781 !!!

leriaz
Δημοσιεύσεις: 1
Εγγραφή: 12 Νοέμ 2010 19:43
Τοποθεσία: Greece

Υπολογισμός Λεξαρίθμων

Δημοσίευση από leriaz » 12 Νοέμ 2010 19:50

χτες στο μαθημα του προγραμματισμου το ειχα σαν ασκηση να το δημιουργησω xD.. βεβαια σαν amateur στον προγραμματισμο, καθησα και εκανα καμια 30αρια (δεν θυμαμαι ποσα ειναι :D ) IF, σε ενα loop με συνθηκη τερματισμου μια # :P

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

Υπολογισμός Λεξαρίθμων

Δημοσίευση από soteres2002 » 12 Νοέμ 2010 23:27

η λύση είναι πολύ πιο απλή αν χρησιμοποιήσεις την έννοια του συσχετισμένου πίνακα (associative array) στο πρόγραμμά σου. Πιο συγκεκριμένα μπορείς να αντιστοιχήσεις τις αλφαριθμητικές τιμές των χαρακτήρων του αλφαβήτου σε αριθμούς που εκφράζουν το σκρορ του κάθε γράμματος. Στην συνέχεια, και για να αποφύγεις τα πολλά if απλώς διαβάζεις κάθε γράμμα του string που δίνει ο χρήστης και απλά αυξάνεις μια μεταβλητή τελικού σκορ της λέξης συνολικά (που εν τέλει είναι τιμή του λεξάριθμου της λέξης). Αυτό θα μπορούσε να γίνει με ένα for/while σε 3 γραμμές:

Κώδικας: Επιλογή όλων

// κατασκευή συσχετισμένου πίνακα με χρήση 1 δι-διάστατου και ενός μονοδιάστατου
// όπου ο μονοδιάστατος δίχνει την θέση στον associative, ο δεύτερος απλώς απεικονίζει
// τους χαρακτήρες στα λεξαριθμικά βάρη

// υπολογισμός λεξάριθμου
lex = 0;
while&#40;&#40;c = readchar&#40;&#41;&#41; <> REACHED_EOF&#41; &#123;
  lex += assoc&#91;position&#91;c&#93;&#93;;
&#125;
Ουσιαστικά η λύση αυτή αποφεύγει τους πολλαπλούς ελέγχους που έχεις υλοποιήσει εσύ, αφού σε σταθερό χρόνο για κάθε γράμμα μπορείς να μάθεις με ένα lookup στον συσχετισμένο πίνακα την τιμή του κάθε γράμματος. Η ιδέα αυτή δεν είναι καινούργια, αλλα θα ήταν βάλσαμο στην περίπτωση που αντί για 25 γράμματα είχαμε 250... και 250-if δεν θα ήταν αρκετά efficient τρόπος να κάνεις αυτή τη δουλειά.

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

Νομίζω ολόκληρη η λύση δεν είναι πάνω απο 5 γραμμές με αυτή την τεχνική... Αυτή την τεχνική είχα χρησιμοποιήσει και στο δικό μου πρόγραμμα, μόνο που οι συσχετισμένες δομές είναι υλοποιηημένες ήδη στην ΡΗΡ οπότε εγώ απλώς αρχικοποίησα ένα instance αυτής στο πρόγραμμα...

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες