Advertisement
makispaiktis

Words Of Wonders

May 2nd, 2019 (edited)
301
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.53 KB | None | 0 0
  1. print("**********************************************")
  2. print("**********************************************")
  3. print("Καλωσόρισες στο διάσημο παιχνίδι λέξεων: Word Of Wonders.")
  4. print("Τώρα, θα σου δώσω κάποια γράμματα και εσύ θα πρέπει να βρεις τις λέξεις που ")
  5. print("μπορούν να φτιαχτούν από αυτά τα γράμματα χρησιμοποιώντας τα τουλάχιστον μία φορά.")
  6. print("Τα γράμματα που έχεις στην διάθεση σου είναι τα εξής: ")
  7. print("Μ, Α, Ι, Κ, Γ, Α")
  8. print("Γράψε τις λέξεις που θες: ")
  9. print()
  10.  
  11. # alphabet = "abcdefghijklmnopqrstuvwxyz"
  12. letters = ["Μ", "Α", "Γ", "Ι", "Κ", "Α"]
  13. words = ["ΜΑΓΙΚΑ", "ΜΑΓΚΙΑ", "ΜΑΓΙΑ", "ΚΑΜΙΑ", "ΓΚΑΜΑ","ΜΑΙΑ", "ΓΑΙΑ", "ΑΙΜΑ", "ΑΙΓΑ", "ΑΓΙΑ", "ΙΚΑ"]
  14. # words = ["ΜΑΓΙΚΑ", "ΙΚΑ"] για τις δοκιμές
  15. solutions = words.copy()
  16. flag = False        # Η flag αυτή μπήκε λόγω ενός bug, που ενώ έβρισκε ΣΩΣΤΗ ΛΕΞΗ ΣΤΗΝ ΛΙΣΤΑ, ΑΝ ΑΥΤΗ Η ΛΡΞΗ ΗΤΑΝ Η ΤΕΛΕΥΤΑΙΑ ΤΗΣ words ΛΙΣΤΑΣ
  17. # ΓΙΝΟΝΤΑΝ ΚΑΙ ΤΟ PRINT ΤΗΣ ΠΕΡΠΤΩΣΗΣ ΛΑΘΕΜΕΝΗΣ ΛΕΞΗΣ
  18. # ΟΠΟΤΕ ΟΡΙΣΑ ΑΡΧΙΚΗ ΤΙΜΗ ΣΤΗΝ flag False, Η ΟΠΟΙΑ ΑΛΛΑΖΕ ΣΕ TRUE !!ΜΟΝΟ!! ΟΤΑΝ ΕΙΧΑΜΕ ΣΩΣΤΗ ΛΕΞΗ
  19. # ΕΠΙΣΗΣ ΣΤΟΝ ΕΛΕΓΧΟ (IF) ΤΗΣ ΠΕΡΙΠΤΩΣΗΣ ΛΑΘΟΥΣ ΛΕΞΗΣ ΠΡΟΣΤΕΘΗΚΕ ΚΙ ΑΛΛΗ ΣΥΝΘΗΚΗ
  20. # Η ΟΠΟΙΑ ΕΛΕΓΧΕ ΑΝ Η flag ΗΤΑΝ False, δλδ αν δεν είχε αλλάξει, δλδ αν όντως είχα λάθος λέξη (Γιατί αν είχα σωστή η flag θα είχε αλλάξει σε True).
  21.  
  22. # 1. Firstly, I check if the given word is out of bounds (length > 6 in this case)
  23. while words:                                                # Όσο έχει στοιχεία η λίστα words
  24.     word = input().upper()                                  # Μετατρέπω την δοσμένη από τον χρήστη λέξη σε λέξη με κεφαλαία γράμματα
  25.     if len(word) > len(letters):                              # Αν η λέξη είναι μεγαλύτερη από όσο πρέπει
  26.         print("Η λέξη " + word + " έχει μήκος " + str(len(word)) + " > " + str(len(letters)))
  27.         continue                                            # Για να γυρίσω πίσω στην επανάληψη δίχως καμία άλλη ενέργεια
  28.  
  29.     else:                                                   # Αν η λέξη του χρήστη έχει έγκυρο μέγεθος
  30.         for ch in word:
  31.             chCounter = 0               # Ο chCounter θα μετρήσει τους αποτυχείς ελέγχους με κάθε γράμμα της λίστας words
  32.             for i in range(len(letters)):
  33.                 if ch != letters[i]:
  34.                     chCounter += 1              # Αν το γράμμα ch δεν ταυτίζεται με τον i-οστό χαρακτήρα του letters, αυξάνω τον chCounter κατά 1
  35.             if chCounter == len(letters):
  36.                 # Αν ο chCounter γίνει ίσος με len(letters) έχουν αποτύχει όλοι οι έλεγχοι "ταύτισης χαρακτήρων", σημαίνει ότι ο ch δεν είναι κάποιο γράμμα της λίστας letters
  37.                 print("Στην λέξη " + word + " υπάρχει το γράμμα " + ch + " που δεν είναι στην αρχική λίστα γραμμάτων.")
  38.                 continue
  39.                 #break
  40.  
  41.         # Έχει γίνει ο έλεγχος αν υπάρχει κάποιο γράμμα "εκτός λίστας"
  42.         # Με το επόμενο for σαρώνω την λίστα με τις λέξεις, την λίστα words και βλέπω αν το input του χρήστη, το word,
  43.         # ταυτίζεται με κάποιο στοιχείο i της λίστας words
  44.         failedComparisons = 0
  45.         for i in range(len(words)):
  46.             if word == words[i]:
  47.                 print("Τέλεια. Βρήκες μία σωστή λέξη, την: " + word)
  48.                 #words.remove(words[i])
  49.                 flag = True
  50.                 del words[i]
  51.                 break
  52.             else:                               # Κάθε φορά πο αποτυγχάει η σύγκριση της word με το στοιχείο words[i],
  53.                 failedComparisons += 1          # αυξάνω τον μετρητή failedComparisons κατά 1
  54.  
  55.         if failedComparisons == len(words) and len(words) != 0 and flag == False:     # Άμα συμβαίνει αυτό, τότε ξέρω ότι όλες οι συγκρίσεις της word με τα στοιχεία της words απέτυχαν
  56.             print("Η λέξη " + word + " δεν είναι σωστή λύση.")      # άρα η word δεν είναι λύση (είναι εκτός της λίστας words)4
  57.             # Η συνθήκη len(words) != 0 μπήκε για τον εξής λόγο
  58.             # ΣΤΗΝ ΠΕΡΙΠΤΩΣΗ ΠΟΥ ΒΡΩ ΤΗΝ ΤΕΛΕΥΤΑΙΑ ΛΕΞΗ, ΠΧ ΤΗΝ ΙΚΑ ΤΟΤΕ ΑΥΤΟΜΑΤΑ ΜΕ ΤΟ DELETE ΤΗΣ ΛΕΞΗΣ ΑΠΟ ΤΗΝ ΛΙΣΓΑ WORDS
  59.             # Η ΛΙΣΤΑ ΑΥΤΗ ΑΠΟΚΤΑ ΜΕΓΕΘΟΣ = 0. ΜΗΔΕΝ ΟΜΩΣ ΕΙΝΑΙ ΚΑΙ Η ΜΕΤΑΒΛΗΤΗ FailedComparisons ΠΟΥ ΜΕΤΡΑΕΙ ΤΙΣ ΑΠΟΤΥΧΙΕΣ ΣΥΓΚΡΙΣΗΣ
  60.             # ΟΠΟΤΕ ΕΔΩ ΣΤΗΝ ΤΕΛΕΥΤΑΙΑ ΣΩΣΤΗ ΛΕΞΗ ΟΙ ΔΥΟ ΑΥΤΕΣ ΤΙΜΕΣ ΕΙΝΑΙ 0 ΚΑΙ Η ΤΕΛΕΥΤΑΙΑ ΣΥΓΚΡΙΣΗ ΜΕ ΤΗΝ IF ΘΑ ΘΕΩΡΗΘΕΙ ΕΠΙΤΥΧΗΜΕΝΗ
  61.             # ΑΡΑ ΘΑ ΤΥΠΩΣΕΙ ΤΟ PRINT ΤΗΣ ΠΕΡΙΠΤΩΣΗΣ ΑΠΟΤΥΧΙΑΣ, ΠΡΑΓΜΑ ΠΟΥ ΕΔΩ ΔΕΝ ΣΥΜΒΑΙΝΕΙ
  62.  
  63. # Εδώ φτάνουμε όταν ο χρήστης καταφέρει να βρει όλες τις λέξεις
  64. print()
  65. print("Μπράβο σου. Κατάφερες να βρεις και τις " + str(len(solutions)) + " λύσεις που υπάρχουν με αυτά τα γράμματα.")
  66. print("Όλες οι λύσεις: ")
  67. for i in range(len(solutions)):
  68.     print(solutions[i])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement