Σε ένα γκαράζ σεϊλ, βρίσκεις μια υπέροχη ρετρό γραφομηχανή σε τιμή ευκαιρίας! Με ενθουσιασμό, τρέχεις σπίτι, βάζεις ένα φύλλο χαρτί και αρχίζεις να πληκτρολογείς. Ωστόσο, ο ενθουσιασμός σου εξασθενεί όταν εξετάζεις το αποτέλεσμα: όλες οι λέξεις βγαίνουν μπερδεμένες! Για παράδειγμα, τυπώνει "stop" αντί για "post" και "least" αντί για "stale". Με προσοχή, δοκιμάζεις ξανά, αλλά τώρα τυπώνει "spot" και "slate". Έπειτα από κάποια πειράματα, ανακαλύπτεις ότι υπάρχει μια τυχαία καθυστέρηση πριν από την εκτύπωση κάθε γράμματος, που χαλάει τη σειρά. Τώρα καταλαβαίνεις γιατί την πούλησαν για τόσο λίγα χρήματα!
Συνειδητοποιείς ότι αυτή η ιδιορρυθμία σου επιτρέπει να δημιουργείς ανάγραμματα, δηλαδή λέξεις που σχηματίζονται αναδιατάσσοντας τα γράμματα μιας άλλης λέξης. Με ικανοποίηση για την ανακάλυψή σου, περνάς την υπόλοιπη μέρα δημιουργώντας εκατοντάδες ανάγραμματα.
Σου δίνεται μια λέξη-στόχος και μία ή περισσότερες υποψήφιες λέξεις, και το καθήκον σου είναι να βρεις τις υποψήφιες που είναι αναγραμματισμοί της λέξης-στόχου.
Ο αναγραμματισμός είναι μια αναδιάταξη των γραμμάτων που σχηματίζει μια νέα λέξη: για παράδειγμα, το "owns" είναι αναγραμματισμός του "snow".
Μια λέξη δεν είναι αναγραμματισμός του εαυτού της: για παράδειγμα, το "stop" δεν είναι αναγραμματισμός του "stop".
Η λέξη-στόχος και οι υποψήφιες λέξεις αποτελούνται από έναν ή περισσότερους αλφαβητικούς χαρακτήρες ASCII (A-Z και a-z).
Οι πεζοί και οι κεφαλαίοι χαρακτήρες είναι ισοδύναμοι: για παράδειγμα, το "PoTS" είναι αναγραμματισμός του "sTOp", αλλά το "StoP" δεν είναι αναγραμματισμός του "sTOp".
Οι λέξεις που πρέπει να βρεις προέρχονται από τις υποψήφιες λέξεις, με την ίδια γραφή πεζών και κεφαλαίων γραμμάτων.
Με δεδομένη τη λέξη-στόχο "stone" και τις υποψήφιες λέξεις "stone", "tones", "banana", "tons", "notes" και "Seton", οι αναγραμματισμοί που πρέπει να βρεις είναι οι "tones", "notes" και "Seton".
Κάθε σύνολο λέξεων αναπαρίσταται ως συμβολοσειρά τερματισμένη με null, με χαρακτήρα αλλαγής γραμμής στο τέλος κάθε λέξης.
Πρέπει να επιστρέψεις τα αναγράμματα με την ίδια σειρά που αναγράφονται στις υποψήφιες λέξεις.
Ένα παράδειγμα θα ήταν το "tones\nnotes\nSeton\n"
| Καταχωρητής | Χρήση | Τύπος | Περιγραφή |
|---|---|---|---|
$a0 |
είσοδος | διεύθυνση | συμβολοσειρά-στόχος τερματισμένη με null, χωρίς αλλαγή γραμμής |
$a1 |
είσοδος | διεύθυνση | συμβολοσειρά υποψηφίων τερματισμένη με null, με αλλαγή γραμμής μετά από κάθε λέξη |
$a2 |
είσοδος/έξοδος | διεύθυνση | συμβολοσειρά εξόδου τερματισμένη με null, με αλλαγή γραμμής μετά από κάθε λέξη |
$t0-9 |
προσωρινός | οποιοσδήποτε | για προσωρινή αποθήκευση |
Γράψου στο Exercism για να μάθεις και να κατακτήσεις MIPS Assembly με 70 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.