-
X-Received: by 2002:aed:3ed5:: with SMTP id o21mr3288538qtf.369.1566541113936; Thu,
22 Aug 2019 23:18:33 -0700 (PDT)
X-Received: by 2002:aed:3ed5:: with SMTP id o21mr3288538qtf.369.1566541113936; Thu,
22 Aug 2019 23:18:33 -0700 (PDT)
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erj
e.net!feeder.erje.net!weretis.net!feeder7.news.weretis.net!proxad.net!feeder1-2
.proxad.net!209.85.160.216.MISMATCH!f14no6904836qtq.0!news-out.google.com!d29ni
2633qtg.1!nntp.google.com!f14no6904826qtq.0!postnews.google.com!glegroupsg2000g
oo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Thu, 22 Aug 2019 23:18:33 -0700 (PDT)
In-Reply-To: <b...@g...com>
Complaints-To: g...@g...com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=165.225.84.70;
posting-account=bMuEOQoAAACUUr_ghL3RBIi5neBZ5w_S
NNTP-Posting-Host: 165.225.84.70
References: <5...@g...com>
<b...@g...com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <3...@g...com>
Subject: Re: Sortowanie bąbelkowe
From: Maciej Sobczak <s...@g...com>
Injection-Date: Fri, 23 Aug 2019 06:18:34 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Xref: news-archive.icm.edu.pl pl.comp.programming:213824
[ ukryj nagłówki ]> Spośród rozwiązań na Rosetta Code to w Wolframie jest niewątpliwie najładniejsze:
>
> bubbleSort[{w___, x_, y_, z___}] /; x > y := bubbleSort[{w, y, x, z}]
> bubbleSort[sortedList_] := sortedList
Tak, w tym wypadku wzorzec (i to razem z warunkiem) jest w "sygnaturze" funkcji. To
pokazuje, że w Wolframie wywołanie funkcji nie działa tak samo jak w innych językach,
tylko jest podmianą pasującego wzorca. Z punktu widzenia innych języków to powyżej to
"przeciążanie" funkcji, ale widać, że wtedy przeciążanie na podstawie liczby albo
typów argumentów to zaledwie kropelka w morzu tego, co da się takim mechanizmem
zrobić.
Przyznam jednak, że o ile ten mechanizm ma wysoką teoretyczną estetykę (pomijając
rekurencję w tym przykładzie, która to rekurencja nie ma żadnej wartości dodanej i
jest ogólnie fuj), to mam opory przed jego szerszym użyciem. Może ograniczają mnie
stare przyzwyczajenia, ale pewniej się czuję z wzorcami ukrytymi wewnątrz funkcji,
tak jak w moim pierwszym przykładzie. To, że te dwa podejścia są wymienne widać też
po tym, że nawet ilość kodu jest taka sama (ale rekurencja jest fuj).
Natomiast funkcja FixedPointLoop ma ciekawą cechę, że daje pośrednie wyniki
(FixedPoint daje tylko ostateczny) - pięknie się to nadaje do wizualizacji przebiegu
obliczeń. Wystarczy na wyniku zaaplikować funkcję np. ArrayPlot i mamy prezentację
bąbelków, które w kolejnych wierszach płyną na swoje miejsca.
https://reference.wolfram.com/language/ref/ArrayPlot
.html
I w kilku linijkach mamy gotową lekcję informatyki.
> Szkoda tylko, że taka brzydka interpunkcja ;]
Interpunkcja to skróty dla tych, co lubią skróty. Dla tych co nie lubią (ta sama
funkcja):
oneBubbleStep[lst_]:=ReplaceAll[lst,
Rule[Condition[
List[Pattern[pre, BlankNullSequence[]], Pattern[a, Blank[]],
Pattern[b, Blank[]], Pattern[post, BlankNullSequence[]]],
Greater[a, b]], List[pre, b, a, post]]]
Tak to widzi Wolfram w środku, zawsze. Człowiek ma wybór.
--
Maciej Sobczak * http://www.inspirel.com
Następne wpisy z tego wątku
- 23.08.19 09:29 g...@g...com
- 23.08.19 10:34 Maciej Sobczak
Najnowsze wątki z tej grupy
- 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
- ,,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ą."
Najnowsze wątki
- 2025-08-06 Gdynia => Konsultant wdrożeniowy (systemy controlingowe) <=
- 2025-08-06 Białystok => Inżynier oprogramowania .Net <=
- 2025-08-06 "[...] sejmowe wystąpienie posłanki Klaudii Jachiry, która zakończyła je słowami ,,Sława Ukrainie"."
- 2025-08-05 "Chiny przekraczają w wydobyciu 4 mld ton węgla, Indie i USA ponad 1 mld, a Rosja 500 mln ton [...]"
- 2025-08-05 Panuje się 181 159,42 zł./mies. na posła w 2026r.
- 2025-08-05 "Chiny przekraczają w wydobyciu 4 mld ton węgla, Indie i USA ponad 1 mld, a Rosja 500 mln ton [...]"
- 2025-08-05 Czy cos fi przechodzi przez trafo separujące?
- 2025-08-05 kajaki i promile
- 2025-08-05 Re: Tesla jest bezpieczna, wczoraj spaliła się doszczętnie na Ursynowie i nikomu się nic nie stało
- 2025-08-05 Gdynia => Przedstawiciel handlowy / KAM (branża TSL) <=
- 2025-08-05 Re: Atak na lekarza w Oławie. Policja zatrzymała sprawcę na lotnisku Polska Agencja Prasowa 4 sierpnia 2025, 12:16 FACEBOOK X E-MAIL KOPIUJ LINK W szpitalu w Oławie 37-letni pacjent zaatakował lekarza, po tym, jak ten odmówił mu wypisania długoterminowego
- 2025-08-05 B2B i książka przychodów i rozchodów
- 2025-08-04 Re: Atak na lekarza w Oławie. Policja zatrzymała sprawcę na lotnisku Polska Agencja Prasowa 4 sierpnia 2025, 12:16 FACEBOOK X E-MAIL KOPIUJ LINK W szpitalu w Oławie 37-letni pacjent zaatakował lekarza, po tym, jak ten odmówił mu wypisania długoterminowego
- 2025-08-04 Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML
- 2025-08-04 Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML