Συζήτηση
Γεια χαρά, Επισκέπτης
Όνομα χρήστη: Κωδικός: Να με θυμάσαι

ΘΕΜΑ: Μαγικό τετράγωνο

Μαγικό τετράγωνο 12 Χρόνια 2 Μήνες πριν #1640

  • eleni26
  • Το Άβαταρ του/της eleni26
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 7
Καλησπέρα, χρειάζομαι τη βοήθεια σας στο να κατασκευάσω ένα πρόγραμμα το οποίο να αναγνωρίζει αν ένα array δύο διαστάσεων είναι μαγικό τετράγωνο λέξεων, γνωστό και ως word square. Καμιά ιδέα?
B e a
e a r
a r c
Τελευταία διόρθωση: 12 Χρόνια 2 Μήνες πριν από pmav99.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Μαγικό τετράγωνο 12 Χρόνια 2 Μήνες πριν #1641

  • pmav99
  • Το Άβαταρ του/της pmav99
  • Αποσυνδεμένος
  • Author
  • Δημοσιεύσεις: 684
  • Ληφθείσες Ευχαριστίες 111
Καλησπέρα Ελένη.

Σε παρακαλώ αν μπορείς να γράφεις στα ελληνικά. Τα greeklish είναι πολύ δυσανάγνωστα. Από εκεί και πέρα, μπορείς να κάνεςι λίγο πιο συγκεκριμένο το πρόβλημα σου?

Ανέβασε πχ τον κώδικα που έχεις γράψει μέχρι τώρα.

Αυτό που θες να κάνεις, γίνεται και με loops, αλλά μια άλλη ιδέα που μου έρχεται είναι, αν υποθέσουμε ότι ο πίνακας σου είναι ο M να υπολογίζεις τον αντίστροφό του MT και να βλέπεις αν οι δύο πίνακες ταυτίζονται.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: Μαγικό τετράγωνο 12 Χρόνια 2 Μήνες πριν #1642

  • STRATOS
  • Το Άβαταρ του/της STRATOS
  • Αποσυνδεμένος
  • pyt___
  • Δημοσιεύσεις: 34
  • Ληφθείσες Ευχαριστίες 5
Βρήκα κάποιες πληροφορίες για το πρόγραμμα που αναζητάς εδώ, δεν το δοκίμασα αλλά ίσως σε βοηθήσουν.

Και ο pmav99 έχει δίκαιο ανέβασε τον κώδικα που έχεις κάνει για να πάρουμε καμια ίδεα τι θέλεις να δημιουργήσεις και να σε βοηθήσουμε καλύτερα.

Α και καλή ιδέα για πρόγραμμα!!!!
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": eleni26

Απ: Μαγικό τετράγωνο 12 Χρόνια 2 Μήνες πριν #1647

  • eleni26
  • Το Άβαταρ του/της eleni26
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 7
Καλησπέρα pmav99,
δεν καταλαβαίνω γιατί λες οτι γράφω σε greeklish...
Σχετικά με το το κώδικα έκανα το παρακάτω το οποιο σε πρωτη φάση επαληθεύει οριζόντια αν υπάρχει η λέξη μέσα στο λεξικό το οποιο εμείς καθορίζουμε:
a=["bea",
   "ear",
   "arc"]
list= "bea","ear","arc"
i=0
x=0
for i in a :
    for x in list:
        if x==i:
            print "true"

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

Ευχαριστώ για την απάντηση...
Τελευταία διόρθωση: 12 Χρόνια 2 Μήνες πριν από pmav99.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: Μαγικό τετράγωνο 12 Χρόνια 2 Μήνες πριν #1648

  • pmav99
  • Το Άβαταρ του/της pmav99
  • Αποσυνδεμένος
  • Author
  • Δημοσιεύσεις: 684
  • Ληφθείσες Ευχαριστίες 111
Καλησπέρα Ελένη

Το αρχικό σου μήνυμα ήταν σε greeklish, τα οποία στη συνέχεια μετέτρεψα σε Ελληνικά.

Προκειμένου να είναι ευκολότερη η ανάγνωση του κώδικα, καλό είναι να χρησιμοποιείς τα code tags. Εμφανίζονται όταν πατάς στο κουμπί "Απάντηση" και μπαίνουν με το κουμπί που μοιάζει με <>. Στη γρήγορη απάντηση δεν εμφανίζονται. Στο προηγούμενο μήνυμά σου, το έκανα εγώ για εσένα. Αν θέλεις πάτα "Επεξεργασία" για να δεις τι έχει προστεθεί στο σώμα της δημοσίευσης.
Τελευταία διόρθωση: 12 Χρόνια 2 Μήνες πριν από pmav99.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: Μαγικό τετράγωνο 12 Χρόνια 2 Μήνες πριν #1649

  • pmav99
  • Το Άβαταρ του/της pmav99
  • Αποσυνδεμένος
  • Author
  • Δημοσιεύσεις: 684
  • Ληφθείσες Ευχαριστίες 111
Αφού τελειώσαμε τα τυπικά, ας πάμε στο ζουμί του θέματος :)
Μία παρατήρηση πρώτα σχετικά με τα ονόματα μεταβλητών.

Αν και καμιά φορά είναι βαρετό να τα γράφεις, ιδίως αν είανι για κάτι πολύ μικρό και σύντομο, είναι καλή συνέχεια να έιναι περιγραφικά. Κάνουν τον κώδικα πιο ευανάγνωστο. Πχ το "a" μπορεί να γίνει magic_square.

Ακόμη απέφευγε να χρησιμοποιείς ως ονόματα μεταβλητών/συναρτήσεων κτλ τα keywords και τις builtin συναρτήσεις που έχει κρατημένα η ίδια η γλώσσα (πχ list, tuple, dict, max, min κτλ). Αυτό θα σε γλυτώσει από δυσεξήγητα bugs.

Όσον αφορά τον έλεγχο των λέξεων, το "σωστό" data type για το λεξικό που δημιουργείς είναι το set.'Όπως λέει και στο επίσημο documentation της γλώσσας, τα sets είναι για "Unordered collections of unique elements". Ο λόγος που προτιμούνται έναντι των lists που χρησιμοποιησες εσύ είναι η απόδοση. Αν έχεις ένα λεξικό με χιλιάδες λέξεις η διαφορά θα είναι περισσότερο από αισθητή. To set (σύνολο στα ελληνικά) θα το δημιουργήσεις έτσι:
dictionary = set(["bea", "ear", "arc"])
Στην python γενικά όταν θέλουμε να ελέξγουμε αν κάτι ανήκει μέσα σε κάτι άλλο, χρησιμοποιούμε το "in". Πχ για να ελέγξουμε αν ένας χαρακτήρας βρίσκεται μέσα σε μία λέξη, δε χρειάζεται να διασχίσουμε τη λέξη χαρακτήρα προς χαρακτήρα με ένα loop. Μπορούμε να κάνουμε απλά αυτό
if "w" in "qwerty":
    print("yeah!")
To ίδιο πράγμα μπορείς να το κάνεις και με τα sets.
magic_square = ["bea", "ear", "arc"]
for word in magic_square:
    if word in dictionary:
        print("Ok")

Στην πραγματικότητα μάλλον το λεξικό δε θα το δημιουργείς γράφοντας τις λέξεις, αλλά θα τις διαβάζεις από ένα αρχείο του υπολογιστή σου. Το βλέπεις στη συνέχεια αυτό.
Τελευταία διόρθωση: 12 Χρόνια 2 Μήνες πριν από pmav99.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: Μαγικό τετράγωνο 12 Χρόνια 2 Μήνες πριν #1650

  • pmav99
  • Το Άβαταρ του/της pmav99
  • Αποσυνδεμένος
  • Author
  • Δημοσιεύσεις: 684
  • Ληφθείσες Ευχαριστίες 111
Όσον αφορά το πως θα ελέγξεις αν το τετράγωνο είναι όντως μαγικό τετράγωνο, μπορείς να το κάνεις ως εξής.

Χρησιμοποιώντας την πρώτη λίστα, δημιούργησε μια δεύτερη λίστα της οποίας τα στοιχεία να είναι οι κατακόρυφες λέξεις.

Βρες το μήκος των λέξεων του τετραγώνου, φτιάξε μία λίστα με empty strings με το μήκος αυτό και χρησιμοποίησε 2 loops. Λέω να μη σου δώσω τον κώδικα ακόμα. Προσπάθησε το και πες μου
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: Μαγικό τετράγωνο 12 Χρόνια 2 Μήνες πριν #1651

  • eleni26
  • Το Άβαταρ του/της eleni26
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 7
Λοιπόν δοκίμασα να παίρνω το πρώτο γράμμα απο κάθε λέξη και να βλέπω αν υπάρχει μέρα στο λεξικό λέξη με τα αρχικά τους. Νομίζω δουλεύει ...
magic_square = ["bea", "ear", "arc"]
dictionary = set(["bea", "ear", "arc"])
output=""
for word in magic_square:
	for i in  magic_square:
		output+=i[0]
		if output in dictionary:
			if word in dictionary:
				print("Ok")
Tώρα θα πρέπει να το βάλω το κώδικα μου σε μια function, φαντάζομαι δεν θα έχω πρόβλημα σ'αυτό. Ευχαριστώ πάρα πολύ για τη βοήθεια!!!
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ: Μαγικό τετράγωνο 12 Χρόνια 2 Μήνες πριν #1652

  • pmav99
  • Το Άβαταρ του/της pmav99
  • Αποσυνδεμένος
  • Author
  • Δημοσιεύσεις: 684
  • Ληφθείσες Ευχαριστίες 111
Νομίζω ότι το μπλέκεις αναίτια... Τον κώδικα για να ελέγξεις αν οι λέξεις του μαγικού τετραγώνου ανήκουν στο λεξικό στον έδωσα παραπάνω.
Τρέξε το ακόλουθο για να το καταλάβεις.
dictionary = set(["bea", "ear", "arc", "new", "old", "web", "axe"])
magic_square = ["bea", "ear", "aaa"]
for word in magic_square:
    if word in dictionary:
        print("%s is a valid word" %s)
    else:
        print("%s is not a valid word" %s)
Δε χρειάζεται κάτι παραπάνω. Τα δύο loops είναι για να τσεκάρεις αν οι λέξεις σχηματίζουν όντως μαγικό τετράγωνο. Το παραπάνω απλα ελέγχει αν οι λέξεις είναι όντως λέξεις και όχι απλώς ακολουθίες χαρακτήρων.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": eleni26
Συντονιστές: pmav99
Χρόνος δημιουργίας σελίδας: 0.292 δευτερόλεπτα

Μοιράσου το!

Powered by CoalaWeb

Λίστα Ταχυδρομείου