Ο καλύτερός σου φίλος άρχισε να συλλέγει παζλ και θέλει να φτιάξει έναν λεπτομερή κατάλογο της συλλογής του, καταγράφοντας πληροφορίες όπως ο συνολικός αριθμός των κομματιών, ο αριθμός των σειρών και των στηλών, ο αριθμός των κομματιών του περιγράμματος και των εσωτερικών, η αναλογία διαστάσεων και η μορφή του παζλ. Ακόμα κι αν ενώσεις τις δυνάμεις σου με του φίλου σου, χρειάζονται αρκετές ώρες για να λύσεις ένα μόνο παζλ με χίλια κομμάτια, και μετά πρέπει ακόμα να μετρήσεις τις σειρές και τις στήλες και να υπολογίσεις τους υπόλοιπους αριθμούς με το χέρι. Τα ακόμα μεγαλύτερα παζλ με χιλιάδες κομμάτια μοιάζουν τώρα αρκετά αποθαρρυντικά. "Πρέπει να υπάρχει καλύτερος τρόπος!" αναφωνείς και κάθεσαι μπροστά στον υπολογιστή σου για να λύσεις το πρόβλημα.
Με δεδομένες τις μερικές πληροφορίες για ένα παζλ, συμπλήρωσε τα κομμάτια που λείπουν.
Αν οι πληροφορίες δεν επαρκούν για να συμπληρωθούν οι λεπτομέρειες, ή αν τα δοσμένα στοιχεία έρχονται σε αντίφαση μεταξύ τους, ο χρήστης θα πρέπει να ειδοποιηθεί.
Οι πλήρεις πληροφορίες για το παζλ περιλαμβάνουν τα εξής μέρη:
pieces: Συνολικός αριθμός κομματιώνborder: Αριθμός κομματιών περιγράμματοςinside: Αριθμός εσωτερικών κομματιών (μη περιγράμματος)rows: Αριθμός σειρώνcolumns: Αριθμός στηλώνaspectRatio: Λόγος διαστάσεων στηλών προς σειρέςformat: Μορφή παζλ, η οποία μπορεί να είναι portrait, square ή landscape
Για αυτή την άσκηση, μπορείς να υποθέσεις ότι τα κομμάτια είναι τετράγωνα, ώστε η μορφή να προκύπτει από τον λόγο διαστάσεων:
portrait
square
landscape
Ένα παζλ portrait με 6 κομμάτια, από τα οποία όλα είναι κομμάτια περιγράμματος και κανένα δεν είναι εσωτερικό. Έχει 2 στήλες και 3 σειρές. Ο λόγος διαστάσεων είναι 0.666666... (2/3).
Ένα παζλ square με 9 κομμάτια, από τα οποία όλα είναι κομμάτια περιγράμματος εκτός από το ένα στο κέντρο, το οποίο είναι εσωτερικό κομμάτι. Έχει 3 στήλες και 3 σειρές. Ο λόγος διαστάσεων είναι 1.0 (3/3).
Ένα παζλ landscape με 12 κομμάτια, από τα οποία 10 είναι κομμάτια περιγράμματος και 2 είναι εσωτερικά. Έχει 4 στήλες και 3 σειρές. Ο λόγος διαστάσεων είναι 1.333333... (4/3).
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Zig με 104 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.