Pchełki Python: zagadka

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!)


2
Dodaj komentarz

avatar
1 Comment threads
1 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
2 Comment authors
xpilButter Recent comment authors
  Subscribe  
najnowszy najstarszy oceniany
Powiadom o
Butter
Gość

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

%d bloggers like this: