PHP :: Aufgabe #353
1 Lösung
Buchstabenkiste (Wörter bilden)
Anfänger - PHP
von JKooP
- 09.05.2021 um 17:29 Uhr
In einer fiktiven Kiste befinden sich eine vorgegebene Menge an Steinen mit aufgedruckten Kleinbuchstaben (a-z).
Nun soll geprüft werden, ob sich ein vorgegebenes (auch fiktives) Wort mit den in der Kiste vorhandenen Steinen bilden lässt.
Sowohl das Wort als auch der Inhalt der Kiste werden als String (Text) übergeben.
Beispiele:
Wort = "mama"; Kiste = "mneamna"
Lösung: true
Wort = "papa"; Kiste = "aapq"
Lösung: false
Wort = "aabaacbaacbb"; Kiste = "bbaabaaccaaa"
Lösung: false
Achtung: die Wörter sollen aus bis zu 10.000 Zeichen (Kleinbuchstaben) bestehen können.
Erstelle eine Methode/Funktion, die für obige Aufgabenstellung true/false als Ergebnis liefert.
Viel Spaß
Nun soll geprüft werden, ob sich ein vorgegebenes (auch fiktives) Wort mit den in der Kiste vorhandenen Steinen bilden lässt.
Sowohl das Wort als auch der Inhalt der Kiste werden als String (Text) übergeben.
Beispiele:
Wort = "mama"; Kiste = "mneamna"
Lösung: true
Wort = "papa"; Kiste = "aapq"
Lösung: false
Wort = "aabaacbaacbb"; Kiste = "bbaabaaccaaa"
Lösung: false
Achtung: die Wörter sollen aus bis zu 10.000 Zeichen (Kleinbuchstaben) bestehen können.
Erstelle eine Methode/Funktion, die für obige Aufgabenstellung true/false als Ergebnis liefert.
Viel Spaß
Lösungen:
PHP-Code
<?php $checker = function(string $word, string $trunk): bool { // validate input if (!preg_match('/[a-z]+/', $word)) return false; if (!preg_match('/[a-z]+/', $trunk)) return false; // for later usage convert string to array $word = str_split($word); $trunk = str_split($trunk); foreach ($word as $character) { // search letter in trunk if (($key = array_search($character, $trunk)) !== false) { unset($trunk[$key]); $trunk = array_values($trunk); } // no letter found in trunk else { return false; } } return true; }; var_dump($checker('', '')); // false, input not valid var_dump($checker('ABC', 'ABC')); // false, input not valid var_dump($checker('abc', 'cba')); // true var_dump($checker('abcd', 'cba')); // false, 'd' missing in trunk var_dump($checker('abc', 'dcba')); // true var_dump($checker('aabbcc', 'abcabc')); // true var_dump($checker('mama', 'mneamna')); // true var_dump($checker('papa', 'aapq')); // false var_dump($checker('aabaacbaacbb', 'bbaabaaccaaa')); // false
Konsolenausgabe:
bool(false)
bool(false)
bool(true)
bool(false)
bool(true)
bool(true)
bool(true)
bool(false)
bool(false)