Είσαι ένας καταξιωμένος λύτης προβλημάτων, γνωστός για την ικανότητά σου να αντιμετωπίζεις τα πιο απαιτητικά μαθηματικά παζλ. Ένα βράδυ, λαμβάνεις ένα επείγον γράμμα από έναν εφευρέτη που λέγεται Triangle Tinkerer, ο οποίος δουλεύει πάνω σε ένα πρωτοποριακό νέο έργο. Το γράμμα λέει:
Αγαπητέ Μαθηματικέ,
Χρειάζομαι τη βοήθειά σου. Σχεδιάζω μια συσκευή που βασίζεται στις μοναδικές ιδιότητες των πυθαγόρειων τριάδων, δηλαδή συνόλων τριών ακεραίων που ικανοποιούν την εξίσωση a² + b² = c². Αυτή η συσκευή θα φέρει επανάσταση στην πλοήγηση, αλλά για να δουλέψει, πρέπει να την προγραμματίσω με κάθε δυνατή τριάδα όπου το άθροισμα των a, b και c ισούται με έναν συγκεκριμένο αριθμό, N. Ο υπολογισμός αυτών των τριάδων με το χέρι θα μου έπαιρνε χρόνια, αλλά ακούω ότι είσαι παραπάνω από ικανός για αυτό το έργο.
Ο χρόνος είναι κρίσιμος. Το μέλλον της εφεύρεσής μου, και ίσως ακόμη και το μέλλον της μαθηματικής καινοτομίας, εξαρτάται από την ικανότητά σου να λύσεις αυτό το πρόβλημα.
Υποκινημένος από τη σημασία του έργου, ξεκινάς να βρεις όλες τις πυθαγόρειες τριάδες που ικανοποιούν τη συνθήκη. Η δουλειά σου θα μπορούσε να έχει εκτεταμένες επιπτώσεις, ανοίγοντας νέες δυνατότητες στην επιστήμη και τη μηχανική. Μπορείς να ανταποκριθείς στην πρόκληση και να γράψεις ιστορία;
Μια πυθαγόρεια τριάδα είναι ένα σύνολο τριών φυσικών αριθμών, {a, b, c}, για τους οποίους ισχύει ότι
a² + b² = c²
και ότι
a < b < c
Για παράδειγμα,
3² + 4² = 5².
Δεδομένου ενός ακέραιου αριθμού N, βρες όλες τις πυθαγόρειες τριάδες για τις οποίες a + b + c = N.
Για παράδειγμα, με N = 1000, υπάρχει ακριβώς μία πυθαγόρεια τριάδα για την οποία a + b + c = 1000: {200, 375, 425}.
Από προεπιλογή, στη συνάρτηση triplets δίνεται μόνο το sum, αλλά μπορεί προαιρετικά να λάβει και minFactor ή/και maxFactor. Όταν δίνονται αυτά, φρόντισε κάθε παράγοντας της τριάδας να είναι τουλάχιστον minFactor και το πολύ maxFactor.
Αν το λύνεις αυτό χρησιμοποιώντας τη γραμμή εντολών, υπάρχει μια περίπτωση δοκιμής με μεγάλους αριθμούς που προς το παρόν παραλείπεται για να αποφευχθούν οι υπερβάσεις χρόνου στον εκτελεστή δοκιμών μας.
Μπορείς να την ενεργοποιήσεις αν θέλεις αφαιρώντας το .skip, απλώς να ξέρεις ότι μπορεί να αργήσει να εκτελεστεί.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις JavaScript με 37 έννοιες159 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.