Διαδρομές
/
Python
Python
/
Ασκήσεις
/
Μεγαλύτερο γινόμενο σειράς
Μεγαλύτερο γινόμενο σειράς

Μεγαλύτερο γινόμενο σειράς

Μέτριο

Εισαγωγή

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

Οδηγίες

Η αποστολή σου είναι να αναζητήσεις μοτίβα στη μεγάλη ακολουθία ψηφίων του κρυπτογραφημένου σήματος.

Η τεχνική που θα χρησιμοποιήσεις εδώ ονομάζεται μεγαλύτερο γινόμενο σειράς.

Ας ορίσουμε πρώτα μερικούς όρους.

  • είσοδος: η ακολουθία ψηφίων που πρέπει να αναλύσεις
  • σειρά: μια ακολουθία γειτονικών ψηφίων (αυτών που βρίσκονται το ένα δίπλα στο άλλο) που περιέχεται στην είσοδο
  • εύρος: πόσα ψηφία έχει σε μήκος η κάθε σειρά
  • γινόμενο: αυτό που προκύπτει όταν πολλαπλασιάζεις αριθμούς μεταξύ τους

Ας δουλέψουμε ένα παράδειγμα, με είσοδο το "63915".

  • Για να σχηματίσεις μια σειρά, πάρε γειτονικά ψηφία από την αρχική είσοδο.
  • Αν δουλεύεις με εύρος 3, θα υπάρχουν τρεις πιθανές σειρές:
    • "639"
    • "391"
    • "915"
  • Έπειτα χρειάζεται να υπολογίσουμε το γινόμενο της κάθε σειράς:
    • Το γινόμενο της σειράς "639" είναι 162 (6 × 3 × 9 = 162)
    • Το γινόμενο της σειράς "391" είναι 27 (3 × 9 × 1 = 27)
    • Το γινόμενο της σειράς "915" είναι 45 (9 × 1 × 5 = 45)
  • Το 162 είναι μεγαλύτερο και από το 27 και από το 45, οπότε το μεγαλύτερο γινόμενο σειράς του "63915" προέρχεται από τη σειρά "639". Άρα η απάντηση είναι 162.

Μηνύματα εξαιρέσεων

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

Αυτή η συγκεκριμένη άσκηση απαιτεί να χρησιμοποιήσεις την εντολή raise για να "πετάξεις" ένα ValueError όταν η συνάρτηση largest_product() λαμβάνει μη έγκυρη είσοδο. Τα tests θα περάσουν μόνο αν και κάνεις raise την exception και συμπεριλάβεις ένα μήνυμα μαζί της. Μη διστάσεις να ξαναχρησιμοποιήσεις τον κώδικά σου από την άσκηση series!

Για να κάνεις raise ένα ValueError με ένα μήνυμα, γράψε το μήνυμα ως όρισμα στον τύπο exception:

# span of numbers is longer than number series
raise ValueError("span must not exceed string length")

# span of number is negative
raise ValueError("span must not be negative")

# series includes non-number input
raise ValueError("digits input must only contain digits")
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Python Exercism

Έτοιμος να ξεκινήσεις την άσκηση Μεγαλύτερο γινόμενο σειράς;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις Python με 17 έννοιες146 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.