Tracks
/
PHP
PHP
/
Übungen
/
Weizenkörner
Weizenkörner

Weizenkörner

Mittel

Einführung

Es war einmal ein weiser Diener, der das Leben eines Prinzen rettete. Der König versprach, ihm alles zu geben, was er sich nur wünschen konnte. Der Diener wusste, dass der König Schach liebte, und bat ihn um Weizenkörner. Ein Korn auf dem ersten Feld eines Schachbretts, und auf jedem weiteren Feld sollte sich die Anzahl der Körner verdoppeln.

Anleitung

Berechne die Anzahl der Weizenkörner auf einem Schachbrett.

Ein Schachbrett hat 64 Felder. Feld 1 hat ein Korn, Feld 2 hat zwei Körner, Feld 3 hat vier Körner und so weiter, wobei sich die Anzahl jeweils verdoppelt.

Schreibe Code, der Folgendes berechnet:

  • die Anzahl der Körner auf einem bestimmten Feld
  • die Gesamtzahl der Körner auf dem Schachbrett

Maximaler Ganzzahlwert

Laut der PHP-Dokumentation gibt es einen maximalen Ganzzahlwert:

Die Größe eines int ist plattformabhängig, wobei ein Maximalwert von etwa zwei Milliarden der übliche Wert ist (das sind 32 Bit mit Vorzeichen). 64-Bit-Plattformen haben normalerweise einen Maximalwert von etwa 9E18. PHP unterstützt keine vorzeichenlosen ints.

Anders gesagt: PHP kann keine Zahl 2^63 oder größer als Ganzzahl ausdrücken. Einige der Tests für diese Übung benötigen 64-Bit-Ganzzahlen (2^64), was die Größengrenze für Ganzzahlen von PHP überschreitet.

PHP wandelt automatisch ints in floats um, wenn die Zahlen zu groß werden:

Wenn PHP auf eine Zahl stößt, die außerhalb des Wertebereichs des int-Typs liegt, wird sie stattdessen als float interpretiert. Auch eine Operation, die eine Zahl außerhalb des Wertebereichs des int-Typs ergibt, liefert stattdessen einen float.

Aber der float-Typ hat eine begrenzte Genauigkeit. Und King hasst Ungenauigkeit. Also hat King entschieden, die Ergebnisse der Berechnungen als String zu erwarten, der den Ganzzahlwert ausdrückt, statt die Antwort als int oder float auszudrücken. Und er will Ganzzahlberechnungen, nicht nur eine faule Umwandlung am Ende.

Kannst du das lösen, indem du Zahlen vermeidest, die größer sind, als die Sprache direkt zulässt? Und bitte verwende auch keine anderen PHP-Bibliotheken wie gmp oder bc.

Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
PHP Exercism

Bereit, mit Weizenkörner zu starten?

Melde dich bei Exercism an, um PHP mit 11 Konzepte122 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.