-
Data: 2019-08-23 08:18:33
Temat: Re: Sortowanie bąbelkowe
Od: Maciej Sobczak <s...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie 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
- 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
- C++. Podróż Po Języku - komentarz
Najnowsze wątki
- 2025-07-16 Rzeszów => Spedytor Międzynarodowy <=
- 2025-07-16 Gdańsk => Konsultant wdrożeniowy (systemy controlingowe) <=
- 2025-07-16 Kraków => Kotlin Developer <=
- 2025-07-16 Warszawa => Inżynier oprogramowania .Net <=
- 2025-07-16 Tadeusz Rolke RIP
- 2025-07-14 Dwa dylematy
- 2025-07-14 Re: Dwa dylematy
- 2025-07-14 [UOKiK] Jeronimo Martins, właścicielowi sieci Biedronka, [przedstawił zarzut] udział[u] w zmowie z 32 firmami transportowymi.
- 2025-07-14 Re: Dwa dylematy
- 2025-07-14 Re: Dwa dylematy
- 2025-07-15 w czasach LED komary mają ciężko
- 2025-07-14 walizka z kodami
- 2025-07-15 Warszawa => Konsultant Wiodący SAP PP <=
- 2025-07-15 Warszawa => Lead SAP PP Consultant <=
- 2025-07-15 China => Production Coordinator / Representant Product Dev <=