Εντόπισε παλινδρομικά γινόμενα σε ένα δεδομένο διάστημα.
Ένας παλινδρομικός αριθμός είναι ένας αριθμός που παραμένει ίδιος όταν αντιστραφούν τα ψηφία του.
Για παράδειγμα, το 121 είναι παλινδρομικός αριθμός αλλά το 112 δεν είναι.
Δεδομένου ενός διαστήματος αριθμών, βρες το μεγαλύτερο και το μικρότερο παλίνδρομο που είναι γινόμενα δύο αριθμών μέσα σε αυτό το διάστημα.
Η λύση σου θα πρέπει να επιστρέφει το μεγαλύτερο και το μικρότερο παλίνδρομο, μαζί με τους παράγοντες του καθενός μέσα στο διάστημα. Αν το μεγαλύτερο ή το μικρότερο παλίνδρομο έχει περισσότερα από ένα ζεύγη παραγόντων μέσα στο διάστημα, τότε επίστρεψε όλα τα ζεύγη.
Δεδομένου του διαστήματος [1, 9] (συμπεριλαμβανομένων και των δύο άκρων)...
Και δεδομένης της λίστας όλων των δυνατών γινομένων μέσα σε αυτό το διάστημα:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 16, 18, 15, 21, 24, 27, 20, 28, 32, 36, 25, 30, 35, 40, 45, 42, 48, 54, 49, 56, 63, 64, 72, 81]
Τα παλινδρομικά γινόμενα είναι όλα μονοψήφιοι αριθμοί (στη συγκεκριμένη περίπτωση):
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Το μικρότερο παλινδρομικό γινόμενο είναι το 1.
Οι παράγοντές του είναι (1, 1).
Το μεγαλύτερο παλινδρομικό γινόμενο είναι το 9.
Οι παράγοντές του είναι (1, 9) και (3, 3).
Δεδομένου του διαστήματος [10, 99] (συμπεριλαμβανομένων και των δύο άκρων)...
Το μικρότερο παλινδρομικό γινόμενο είναι το 121.
Οι παράγοντές του είναι (11, 11).
Το μεγαλύτερο παλινδρομικό γινόμενο είναι το 9009.
Οι παράγοντές του είναι (91, 99).
Για να λύσεις αυτή την άσκηση, πρέπει να υλοποιήσεις αυτές τις δύο συναρτήσεις:
largestPalindromesmallestPalindromeΚαι οι δύο συναρτήσεις δέχονται ένα κατώτερο και ένα ανώτερο όριο παραγόντων και επιστρέφουν ένα ζεύγος (value, [(factor1, factor2)]) που περιέχει το παλίνδρομο και τα πιθανά ζεύγη παραγόντων του.
Μπορείς να χρησιμοποιήσεις τις υπογραφές που δίνονται αν δεν είσαι σίγουρος για τους τύπους, αλλά μην τις αφήσεις να περιορίσουν τη δημιουργικότητά σου.
Δεν πειράζει να επιστρέφεις διπλότυπα στη λίστα παραγόντων, και η σειρά των παραγόντων δεν έχει σημασία.
Καλό θα ήταν να εξετάσεις το ενδεχόμενο να χρησιμοποιήσεις έναν ελαφρώς διαφορετικό αλγόριθμο για να βρεις μικρά ή μεγάλα παλίνδρομα.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Haskell με 107 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.