Tracks
/
PHP
PHP
/
Übungen
/
Glückszahlen
Glückszahlen

Glückszahlen

Lernübung

Einführung

Type Juggling

Type Juggling wird auch als Typumwandlung bezeichnet. Type Juggling bedeutet, dass zwei Werte unterschiedlicher Typen in denselben Typ umgewandelt werden, um eine Operation auszuführen.

$baskets = 5 // int
$apples_per_basket = "3" // string
$baskets * $apples_per_basket
# => 15

Das kann implizit geschehen (siehe obiges Beispiel) oder explizit mit einer Typumwandlung im C-Stil:

$apples_per_basket = "3" // string
$my_number = (int) $apples_per_basket // cast string to int
# => 3 // int

Erlaubte Typen für eine manuelle Typumwandlung sind: bool, int, float, string, array, object. Am häufigsten wird die Typumwandlung verwendet, um eine Ganzzahl (int) in eine Gleitkommazahl (float) umzuwandeln oder umgekehrt.

Anleitung

Dein Freund Kojo ist ein großer Zahlenfan. Er hat eine kleine Website, auf der er mit Zahlen herumspielt. Kojo ist nicht besonders gut im Programmieren, deshalb hat er dich um Hilfe gebeten.

Du baust zwei Hilfsmethoden für neue Zahlenspiele auf Kojos Website und eine dritte, mit der du eine Eingabe überprüfst, die der Nutzer machen kann.

1. Berechne die Summe der Zahlen am Spielautomaten

Eines der Spiele auf Kojos Website sieht aus wie ein Spielautomat, der zwei Gruppen von Walzen mit Ziffern darauf zeigt. Jede Zifferngruppe stellt eine Zahl dar. Für die Spielmechanik muss Kojo die Summe dieser beiden Zahlen kennen.

Schreibe eine Methode sumUp, die zwei Arrays als Parameter entgegennimmt. Jedes Array besteht aus einer oder mehreren Ziffern zwischen 0 und 9. Die Funktion soll jedes Array als Zahl interpretieren und die Summe dieser beiden Zahlen zurückgeben.

<?php
$lucky_numbers = new LuckyNumbers()

$lucky_numbers->sumUp([1, 2, 3], [0, 7]);
//=> 130

// [1, 2, 3] represents 123 and [0, 7] represents 7.
// 123 + 7 = 130

2. Prüfe, ob eine Zahl ein Palindrom ist

Ein weiteres Spiel auf der Website ist ein kleines Quiz namens „Lucky Numbers“. Ein Nutzer kann eine Zahl eingeben und sieht dann, ob die Zahl zu einer geheimen Folge oder einem Muster gehört. Die Folge bzw. das Muster der „Lucky Numbers“ ändert sich jeden Monat, und jeder Nutzer hat nur eine begrenzte Anzahl an Versuchen, um es zu erraten.

Die Lucky Numbers dieses Monats sollen Zahlen sein, die Palindrome sind. Palindromzahlen bleiben gleich, wenn man die Ziffern umdreht.

Implementiere die neue Funktion isPalindrome, die eine Ganzzahl als Parameter entgegennimmt. Die Funktion soll true zurückgeben, wenn die Zahl ein Palindrom ist, und andernfalls false. Die eingegebene Zahl ist immer eine positive Ganzzahl.

<?php
$lucky_numbers = new LuckyNumbers()

$lucky_numbers->isPalindrome(1441);
//=>  true

$lucky_numbers->isPalindrome(123);
//=> false

3. Erzeuge eine Fehlermeldung für ungültige Nutzereingaben

An verschiedenen Stellen der Website gibt es Eingabefelder, in die Nutzer Zahlen eingeben und dann auf eine Schaltfläche klicken können, um eine Aktion auszulösen. Kojo möchte die Nutzererfahrung seiner Website verbessern. Er möchte eine Fehlermeldung anzeigen, wenn der Nutzer auf die Schaltfläche klickt, das Feld aber einen ungültigen Eingabewert enthält.

Hier sind noch ein paar Informationen dazu, wie der Wert eines Eingabefelds bereitgestellt wird.

  • Wenn der Nutzer etwas in ein Feld eingibt, ist der zugehörige Wert immer ein String, auch wenn er nur Ziffern eingegeben hat.
  • Wenn der Nutzer etwas eingibt und es dann wieder löscht, ist die Variable ein leerer String.
  • Bevor der Nutzer überhaupt mit der Eingabe begonnen hat, ist die Variable ein leerer String.

Schreibe eine Funktion validate, die die Nutzereingabe als Parameter entgegennimmt. Wenn der Nutzer keine Eingabe gemacht hat, soll validate 'Required field' zurückgeben. Wenn die Eingabe keine positive ganze Zahl ungleich null darstellt (gemäß den Typumwandlungsregeln von PHP), soll 'Must be a whole number larger than 0' zurückgegeben werden. In allen anderen Fällen kannst du davon ausgehen, dass die Eingabe gültig ist; der Rückgabewert ist dann ein leerer String.

<?php
$lucky_numbers = new LuckyNumbers()

$lucky_numbers->validate('123');
// => ''

$lucky_numbers->validate('');
// => 'Required field'

$lucky_numbers->validate('abc');
// => 'Must be a whole number larger than 0'
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
PHP Exercism

Bereit, mit Glückszahlen zu starten?

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