Κόκκοι

Κόκκοι

Μέτριο

Εισαγωγή

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

Οδηγίες

Υπολόγισε τον αριθμό των κόκκων σιταριού σε μια σκακιέρα.

Μια σκακιέρα έχει 64 τετράγωνα. Το τετράγωνο 1 έχει έναν κόκκο, το τετράγωνο 2 έχει δύο κόκκους, το τετράγωνο 3 έχει τέσσερις κόκκους, και ούτω καθεξής, διπλασιάζοντας κάθε φορά.

Γράψε κώδικα που υπολογίζει:

  • τον αριθμό των κόκκων σε ένα δεδομένο τετράγωνο
  • τον συνολικό αριθμό των κόκκων στη σκακιέρα

Μέγιστη ακέραια τιμή

Σύμφωνα με την τεκμηρίωση της PHP υπάρχει μια μέγιστη ακέραια τιμή:

Το μέγεθος ενός int εξαρτάται από την πλατφόρμα, αν και συνήθως η μέγιστη τιμή είναι περίπου δύο δισεκατομμύρια (δηλαδή 32 bit με πρόσημο). Οι πλατφόρμες 64 bit έχουν συνήθως μέγιστη τιμή περίπου 9E18. Η PHP δεν υποστηρίζει int χωρίς πρόσημο.

Με άλλα λόγια, η PHP δεν μπορεί να αναπαραστήσει ως ακέραιο κανέναν αριθμό 2^63 ή μεγαλύτερο. Κάποια από τα τεστ αυτής της άσκησης απαιτούν ακέραιους 64 bit (2^64), που ξεπερνούν τον περιορισμό μεγέθους ακεραίων της PHP.

Η PHP μετατρέπει αυτόματα τα int σε float, όταν οι αριθμοί γίνουν πολύ μεγάλοι:

Αν η PHP συναντήσει έναν αριθμό πέρα από τα όρια του τύπου int, θα τον ερμηνεύσει ως float. Επίσης, μια πράξη που έχει ως αποτέλεσμα έναν αριθμό πέρα από τα όρια του τύπου int θα επιστρέψει float.

Όμως ο τύπος float έχει περιορισμένη ακρίβεια. Και ο Βασιλιάς μισεί την ανακρίβεια. Έτσι, ο Βασιλιάς αποφάσισε να περιμένει τα αποτελέσματα των υπολογισμών ως συμβολοσειρά που εκφράζει την ακέραια τιμή, αντί να εκφράζει την απάντηση ως int ή float. Και θέλει ακέραιους υπολογισμούς, όχι απλώς μια τεμπέλικη μετατροπή στο τέλος.

Μπορείς να το λύσεις αποφεύγοντας αριθμούς που είναι μεγαλύτεροι από ό,τι επιτρέπει άμεσα η γλώσσα; Και σε παρακαλώ μη χρησιμοποιήσεις ούτε άλλες βιβλιοθήκες PHP όπως οι gmp ή bc.

Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
PHP Exercism

Έτοιμος να ξεκινήσεις την άσκηση Κόκκοι;

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