Pchełki Python: zagadka

https://xpil.eu/QstGZ

Nadszedł czas na kolejną zagadkę. Tym razem zamiast uwalniać więźniów, mierzyć prędkości koni czy też pstrykać przełącznikami, zerkniemy sobie na pewną tajemniczą funkcję.

Zagadka brzmi: co robi poniższa funkcja?

Pytanie bonusowe: dlaczego poniższa funkcja działa poprawnie?

(kod jest w Pythonie, co zresztą wynika z tytułu dzisiejszego wpisu)

# POCZĄTEK KODU
import re

def funkcja_zagadka(n):
    return not re.match(r'^.?$|^(..+?)\1+$', '1' * n)
# KONIEC KODU

Jeżeli ktoś szuka podpowiedzi, to mogę udzielić takiej oto: powyższa funkcja - gdyby ją przełożyć na język zbieraczy jagód - jest odpowiednikiem gościa, który z zawiązanymi oczyma i ostrym atakiem sraczki zbiera jagody za pomocą koparki przemysłowej z zaprzężonymi do niej dzikimi wielbłądami. Gdyby istniały rankingi najgorszych sposobów zbierania jagód, facet nie miałby sobie równych 😉

Ale w końcu, po dłuższym czasie, nazbierałby tych jagód pełen koszyczek, prawda? A więc metoda działa.

Powyższa funkcja też działa.

Co więc ona robi i dlaczego?

Miłego główkowania!

(jeżeli nie chce Ci się kombinować samodzielnie, nie szukaj proszę odpowiedzi na Google - daj szansę innym!)

Jeżeli ktoś szuka podpowiedzi, to mogę udzielić takiej oto: powyższa funkcja - gdyby ją przełożyć na język zbieraczy jagód - jest odpowiednikiem gościa, który z zawiązanymi oczyma i ostrym atakiem sraczki zbiera jagody za pomocą koparki przemysłowej z zaprzężonymi do niej dzikimi wielbłądami. Gdyby istniały rankingi najgorszych sposobów zbierania jagód, facet nie miałby sobie równych 😉

Ale w końcu, po dłuższym czasie, nazbierałby tych jagód pełen koszyczek, prawda? A więc metoda działa.

Powyższa funkcja też działa.

Co więc ona robi i dlaczego?

Miłego główkowania!

(jeżeli nie chce Ci się kombinować samodzielnie, nie szukaj proszę odpowiedzi na Google - daj szansę innym!)

https://xpil.eu/QstGZ

2 komentarze

  1. zakładając, że \1+ to ciąg jedynek, a nie pierwsza grupa, to funkcja zwróci false dla dowolnej cyfry [n=0,1] a potem dla dowolnej liczby 3 lub więcej cyfrowej, dla której ostatnie n-2 cyfry to 1

Leave a Comment

Komentarze mile widziane.

Jeżeli chcesz do komentarza wstawić kod, użyj składni:
[code]
tutaj wstaw swój kod
[/code]

Jeżeli zrobisz literówkę lub zmienisz zdanie, możesz edytować komentarz po jego zatwierdzeniu.