Przejdź do treści
#243 absolute-value · par 3

    ↑↓ ruch · ⏎ otwórz · esc zamknij

    Nr 243 · 26 sierpnia 2026 · Średnia

    Wartość bezwzględna

    Zaimplementuj `Absolute<N>`, aby zwracał wartość bezwzględną literału liczbowego jako **łańcuch**. Na poziomie typów nie ma negacji — znak trzeba usunąć tekstowo.

    01

    Spróbuj rozwiązać samodzielnie

    Par 3

    Zagadka

    absolute-value.ts
    Podejście 1 z 3Jeszcze nie sprawdzone

    Zastąp ??? — rozwiązanie sprawdzamy przypadkami poniżej. Tab wcina; naciśnij Escape, a potem Tab, by wyjść fokusem.

    Testy

    4
    • Absolute<-5>
      '5'
    • Absolute<5>
      '5'
    • Absolute<0>
      '0'
    • Absolute<-100>
      '100'

    Jak oceniamy test Dokładna równość typów, nie przypisywalność — przecięcie to nie to samo co spłaszczony obiekt.

    Jak poszło innym

    Tę zagadkę rozwiązało jak dotąd mniej niż 5 osób. Rozkład pojawi się, gdy próbka będzie na tyle duża, by coś znaczyć.

    Gra na krótkim dystansie

    Najmniej znaków

    Nie ma jeszcze publicznych wyników.

    Archiwum
    02

    Rozwiązanie z komentarzem

    Opublikowano 27 sierpnia 2026

    Rozwiązanie

    type Absolute<N extends number> = `${N}` extends `-${infer R}`
      ? R
      : `${N}`

    Najczęstsza błędna odpowiedź

    type Absolute<N extends number> = N extends `-${infer R}` ? R : `${N}`

    Wzorzec jest dobry, ale badany obiekt jest złego rodzaju. `-5` to literał liczbowy, a literał liczbowy nigdy nie pasuje do wzorca literału szablonowego, więc warunek jest zawsze fałszywy i każde wejście wpada w `${N}` — zwracając `"-5"` bez zmian.

    Linia po linii

    1. `${N}`

      Wstawienie liczby do pustego poza tym literału szablonowego to odpowiednik `String(n)` na poziomie typów. `-5` staje się literałem łańcuchowym `"-5"`, do którego wzorce mogą się już dopasować.

    2. `-${infer R}`

      Minus dopasowywany jest dosłownie, a `R` wiąże całą resztę. Liczby dodatnie po prostu nie pasują do tego wzorca i idą gałęzią fałszywą, więc osobny test znaku jest zbędny.

    Do zapamiętania

    Na poziomie typów nie ma arytmetyki, ale jest tekst. Zamiana liczby na łańcuch przekształca problemy liczbowe w problemy dopasowania wzorca — i tak właśnie działają standardowe sztuczki na wartość bezwzględną, liczenie cyfr i porównanie znaku.

    Wykorzystuje