-
Data: 2019-11-19 18:29:57
Temat: Re: Jak zrobić grupowanie w kolejności
Od: g...@g...com szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]W dniu wtorek, 19 listopada 2019 17:37:28 UTC+1 użytkownik Borneq napisał:
> > Tutaj jest Pythonowa wersja, w której umieściłem Haskellowe patterny i guardy w
komentarzach
> > return group(t, g+[h]) ### -- warunek niespelniony
> > if g:
> > return [g] ### grouped [] g -- grupa jest niepusta
> > return [] ### grouped [] [] -- pusta grupa
> > return group(l, [])
>
> To jest jakaś rekurencja ogonowa, którą można przenieść na pętlę nie
> zajmując stosu?
Nie, w tym przypadku rekurencja nie jest ogonowa, bo jedno z wywołań rekurencyjnych
jest zagnieżdżone w wywołanie innej funkcji (sklejania list).
Chodzi konkretnie o linię:
return [g+[h]]+group(t, [])
Typowo jeśli chcielibyśmy przekształcić taką rekurencję w rekurencję ogonową,
musielibyśmy stworzyć dodatkowy argument reprezentujący wynik.
Możemy tak zrobić, jeśli strukutra rekurencji jest liniowa (albo inaczej:
nie-drzewiasta). Wersja Pythonowa zapisana z rekurencją ogonową wyglądałaby tak:
def trgroups(l, cond):
def group(l, g, out):
if l:
h, *t = l
if cond(g+[h]):
return group(t, [], out+[g+[h]])
return group(t, g+[h], out)
if g:
return out+[g]
return out
return group(l, [], [])
Takie coś rzeczywiście nie powinno zajmować stosu w implementacjach optymalizujących
rekurencję ogonową (do których Pythony raczej się nie zaliczają)
Tutaj link:
https://rextester.com/FCY59693
Następne wpisy z tego wątku
- 20.11.19 01:00 M.M.
Najnowsze wątki z tej grupy
- Xiaomi [Chiny - przyp. JMJ] produkuje w całkowitych ciemnościach i bez ludzi
- Prezydent SZAP/USONA Trump ułaskawił prezydenta Hondurasu Hernandeza skazanego na 45 lat więzienia
- Rosjanie chwalą się prototypem komputera kwantowego. "Najważniejszy projekt naukowy Rosji"
- A Szwajcarzy kombinują tak: FinalSpark grows human neurons from stem cells and connects them to electrode arrays
- Re: Najgorszy język programowania
- NOWY: 2025-09-29 Alg., Strukt. Danych i Tech. Prog. - komentarz.pdf
- Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML
- Błąd w Sofcie Powodem Wymiany 3 Duńskich Fregat Typu Iver Huitfeldt
- Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
Najnowsze wątki
- 2026-01-15 Wyjaśnienie patologii opisanej w art. pt. "Przeciw bezkarności biznesu"
- 2026-01-15 Wyjaśnienie patologii opisanej w art. pt. "Przeciw bezkarności biznesu"
- 2026-01-15 "deficyt budżetowy [na 2026r. -przyp. JMJ] jest prognozowany na poziomie 271,7"Gzł, czyli 74.52G$
- 2026-01-15 Miliardy z podatków znów popłynęły do TVP
- 2026-01-14 #Motodziennik test - Jaecoo E5 - słabe auto, słaby elektryk. A ZIMĄ NAWET BARDZO
- 2026-01-14 Piaseczno cd
- 2026-01-14 Robert do ciebie
- 2026-01-14 Prątki to zawalidrogi
- 2026-01-14 Naruszenie immunitetu ZP-RE Romanowskiego bezkarne (umorzenie śledztwa żurkotury)
- 2026-01-14 Prezydent Trzaskowski nie będzie mógł ułaskawić Tuska, Sienkiewicza, Bodnara, ... przed prawomocnym wyrokiem?
- 2026-01-14 Do Kongresu SZAP/USONA Złożono Proj. ,,Ustawy o aneksji i statusie stanowym Grenlandii"
- 2026-01-13 STREFA CZYSTEGO TRANSPORTU. O tym nie mówią nam WŁADZE
- 2026-01-13 To nie koniec
- 2026-01-13 Warszawa => Recruiter 360 <=
- 2026-01-13 Katowice => Key Account Manager <=




5 Najlepszych Programów do Księgowości w Chmurze - Ranking i Porównanie [2025]