-
X-Received: by 2002:a37:4146:: with SMTP id o67mr29631652qka.232.1574179914024; Tue,
19 Nov 2019 08:11:54 -0800 (PST)
X-Received: by 2002:a37:4146:: with SMTP id o67mr29631652qka.232.1574179914024; Tue,
19 Nov 2019 08:11:54 -0800 (PST)
Path: news-archive.icm.edu.pl!news.icm.edu.pl!wsisiz.edu.pl!goblin1!goblin.stu.neva.r
u!j16no4084624qtl.0!news-out.google.com!g53ni415qtg.0!nntp.google.com!j16no4084
610qtl.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Tue, 19 Nov 2019 08:11:53 -0800 (PST)
In-Reply-To: <5dd3e574$0$511$65785112@news.neostrada.pl>
Complaints-To: g...@g...com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=213.192.68.153;
posting-account=f7iIKQoAAAAkDKpUafc-4IXhmRAzdB5r
NNTP-Posting-Host: 213.192.68.153
References: <5dd2981a$0$17364$65785112@news.neostrada.pl>
<9...@g...com>
<5dd2e826$0$17359$65785112@news.neostrada.pl>
<0...@g...com>
<f...@g...com>
<5dd3e574$0$511$65785112@news.neostrada.pl>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <3...@g...com>
Subject: Re: Jak zrobić grupowanie w kolejności
From: g...@g...com
Injection-Date: Tue, 19 Nov 2019 16:11:54 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Xref: news-archive.icm.edu.pl pl.comp.programming:214455
[ ukryj nagłówki ]W dniu wtorek, 19 listopada 2019 13:52:06 UTC+1 użytkownik Borneq napisał:
> >> [[1,10],[7,3],[10],[100],[5,6]]
> > Trochę poprawiłem nazwy i formatowanie, może teraz będzie nieco czytelniejsze:
> > https://rextester.com/CRWPJS53169
>
> Wyniki daje dobre.
> Trzeba by przeanalizować, jakie znaczenie ma ++ ?
++ to sklejanie list:
[1,2]++[3,4] daje [1,2,3,4]
Niestety w przypadku języków funkcyjnych dopisywanie elementu na koniec listy jest
raczej kosztowne. No ale to szczegół
> jest tu jakiś sposób rekurencyjny
Jest rekurencyjny, ale to prosta rekurencja, którą można łatwo zamienic na pętlę.
Jakby co, to napisałem rozwiązanie rekurencyjne w Pythonie.
Wariant iteracyjny wygląda tak:
def igroups(l, cond):
result = []
group = []
for x in l:
group += [x]
if cond(group):
result += [group]
group = []
if group:
result += [group]
return result
> grouped [] [] = []
> grouped [] g = [g]
> Te dwa powyżej rozumiem
> a
> grouped (h:t) g
> | (cond (g++[h])) = [g++[h]]++(grouped t [])
> grouped (h:t) g = grouped t (g++[h])
>
> ?
W pierwszym przypadku jest tzn. "pattern guard", tzn. jeżeli funkcja "cond" dla
argumentu g++[h] zwróci True, to zwracamy [g++[h]] ++ (grouped t []), albo innymi
słowy - zamykamy bieżącą grupę z dopisanym bieżącym elementem i tworzymy nową pustą
grupę, którą będziemy przetwarzać na pozostałych elementach listy.
Jeżeli "cond" nie jest spełnione, to dodajemy bieżący element do bieżącej grupy i
przetwarzamy resztę listy.
Tutaj jest Pythonowa wersja, w której umieściłem Haskellowe patterny i guardy w
komentarzach
def groups(l, cond):
def group(l, g):
if l: ### grouped (h:t) g -- lista niepusta
h, *t = l
if cond(g+[h]): ### | (cond (g++[h])) -- warunek spelniony
return [g+[h]]+group(t, [])
return group(t, g+[h]) ### -- warunek niespelniony
if g:
return [g] ### grouped [] g -- grupa jest niepusta
return [] ### grouped [] [] -- pusta grupa
return group(l, [])
Oba warianty możesz potestować tutaj:
https://rextester.com/FCY59693
Następne wpisy z tego wątku
- 19.11.19 17:36 Borneq
- 19.11.19 18:25 Borneq
- 19.11.19 18:29 g...@g...com
- 20.11.19 01:00 M.M.
Najnowsze wątki z tej grupy
- 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
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
Najnowsze wątki
- 2025-07-22 Genialna toaleta Urobot, automatycznie badająca mocz i kał z Taiwanu
- 2025-07-22 Thunderbird i dysk...
- 2025-07-22 Warszawa => Programista Full Stack .Net <=
- 2025-07-22 Warszawa => Software .Net Developer <=
- 2025-07-22 Warszawa => Asystent ds. Sprzedaży i Rozwoju Klienta <=
- 2025-07-22 Warszawa => Sales Assistant and Customer Development Specialist <=
- 2025-07-22 antyfaszystka
- 2025-07-22 W ogóle nie widać...
- 2025-07-22 I znowu inżynierowie i inżynierzy...
- 2025-07-21 Dokumenty zgromadzone przez Instytut Pamięci
- 2025-07-21 cashback
- 2025-07-21 Pomarańczowy rakietnyj on de telefon ;)
- 2025-07-21 Gdańsk => Kotlin Developer <=
- 2025-07-21 Warszawa => Sales Executive / KAM <=
- 2025-07-21 Gdańsk => Programista Kotlin <=