tuerchen 08 · 8. Dezember
Doppelt gespiegelt
Code-GolfMittelPHP 8.4
Aufgabe
585 ist ein Palindrom. Und binär? 1001001001 – auch! Solche Doppel-Palindrome sucht der Weihnachtsmann für seine Geschenk-Seriennummern.
Schreibe function p($n,$b): true, wenn die Ganzzahl $n sowohl im Dezimalsystem als auch in der Basis $b ein Palindrom ist, sonst false.
0 <= $n <= PHP_INT_MAX,2 <= $b <= 36(Ziffern über 9 sinda–z, wie beibase_convert()).- Rückgabe ist ein echter
bool(die Tests vergleichen mit===). - Warnungen und Deprecations zählen als Fehler.
Gewertet wird die Zeichenzahl (ohne <?php und ohne Leerraum am Ende). Kürzer ist besser.
Sichtbare Tests
585 binär
set_error_handler(function (int $no, string $msg) { throw new ErrorException($msg, 0, $no); }); echo json_encode(p(585, 2));Erwartet: true
121 ist binär kein Palindrom
set_error_handler(function (int $no, string $msg) { throw new ErrorException($msg, 0, $no); }); echo json_encode(p(121, 2));Erwartet: false
Basis 16
set_error_handler(function (int $no, string $msg) { throw new ErrorException($msg, 0, $no); }); echo json_encode([p(353, 16), p(354, 16)]);Erwartet: [true,false]
Dazu kommen 7 versteckte Tests, die nur beim Abgeben laufen.
Tipp anzeigenTipp ausblendenkostet keine Punkte
strrev() dreht einen String um, base_convert() rechnet in eine andere Basis um. Ein Palindrom ist gleich seiner Umkehrung.
Gezählt wird: Zeichen ohne <?php und ohne abschließende Leerzeichen/Zeilenumbrüche
Extra-Stufe (+5 Punkte, freiwillig)
Extra-Stufe (+5): p() nimmt beliebig viele Basen: p($n, 2, 8, 16) ist true, wenn $n dezimal und in jeder angegebenen Basis ein Palindrom ist. Ohne Basis (p($n)) zählt nur das Dezimalsystem. Rückgabe bleibt ein echter bool, gezählt wird weiter dein ganzer Code.
Kein zweiter Editor: Dein Code oben zählt für beides. Die Extra-Tests laufen mit jeder Abgabe (4 Tests).
Mitraten geht mit deinem kostenlosen Entwicklerkonto
Lesen darf jeder. Punkte, Bestenliste und Preise gibt es nur mit Konto.