Zum Inhalt springen

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 sind a–z, wie bei base_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 anzeigenkostet 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.

Zurück zum Kalender