Lua ma jedną strukturę danych, tabelę, więc każdą strukturę z tej ścieżki tworzysz właśnie z niej: stos z jej części tablicowej, kolejkę z dwoma indeksami, drzewo z tabel wskazujących na tabele. W tej ścieżce budujesz każdą z nich w Lua, potem sortujesz, stosujesz rekurencję i przeszukujesz z nimi grafy, a na koniec rozwiązujesz oceniane zadania rekrutacyjne. Za darmo, w przeglądarce, z certyfikatem w większości kursów.
Każdy krok to zestaw istniejących kursów Coddy, a każdy przycisk Start otwiera je w Lua. Trzy kursy, które nie są jeszcze prowadzone w Lua, są wymienione po krokach.
1
Krok 1
Seria Struktury danych, część pierwsza
Zacznij ten krokZacznijStos, kolejka, drzewo binarne, tablica mieszająca i lista wiązana, każda struktura zbudowana od zera w Lua, a potem użyta do rozwiązywania zadań. Tabela w Lua już jest tablicą mieszającą, więc ten krok pokazuje, co robi za ciebie i jak nadać jej kształt pozostałych czterech struktur.Zacznij
Zacznij ten krokZacznijLista dwukierunkowa, kopce i kolejki priorytetowe, drzewa trie, grafy i samorównoważące się drzewo AVL. W Lua węzeł drzewa trie to po prostu tabela z kluczami będącymi kolejnymi znakami, a graf to tabela list sąsiadów, więc każda struktura jest dokładnie tak skomplikowana jak jej idea.Zacznij
Zacznij ten krokZacznijSortowanie bąbelkowe, przez wybieranie, przez wstawianie, przez scalanie, szybkie, przez kopcowanie, przez zliczanie i pozycyjne, napisane w Lua i oglądane w wizualizatorze. table.sort nie jest stabilne, jak podaje podręcznik referencyjny Lua. Po tym kroku wiesz, dlaczego sortowanie rezygnuje ze stabilności i jak przywraca ją indeks rozstrzygający remisy.Zacznij
Zacznij ten krokZacznijWyzwania z rekurencji w Lua, która ma prawdziwe wywołania ogonowe: przy wywołaniu w pozycji ogonowej, return f(x), wywoływana funkcja korzysta z miejsca na stosie wywołującej, więc pętla oparta na rekurencji ogonowej nigdy nie powiększa stosu. Zwykła głęboka rekurencja wciąż kończy się przepełnieniem stosu. Programowanie dynamiczne i operacje na bitach są wymienione po krokach, bo prowadzi się je w Pythonie i C++.ZacznijOsobna strona15 lekcje15 wyzwania
5
Krok 5
Algorytmy grafowe
Zacznij ten krokZacznijPrzeszukiwanie wszerz i w głąb, Dijkstra, Bellman-Ford, sortowanie topologiczne, Kruskal i Prim w Lua, na grafie zbudowanym w kroku drugim. Lua nie ma kolejki priorytetowej, więc kopiec z kroku drugiego to ten, którego potrzebuje algorytm Dijkstry, a przeszukiwanie wszerz potrzebuje kolejki, która nigdy nie wywołuje table.remove(t, 1).Zacznij
Zacznij ten krokZacznijDziesięć pakietów wyzwań rekrutacyjnych i dwa banki zadań programistycznych w Lua, oceniane przez testy: nieznane zadania rozwiązywane bez samouczka, z tabelami przekształcanymi w to, czego potrzebuje każde zadanie.Zacznij
Wszystko, czego potrzebujesz do nauki programowania
Ucz się w praktyce
Pisz prawdziwy kod, odpytuj bazy danych, twórz strony internetowe i opanuj prompty AI. Nasze interaktywne lekcje obejmują wszystkie umiejętności, których potrzebuje współczesny programista.
playground.js
Edytor kodu
1const greeting ="Hello, Coddy!"
2function sayHi(name) {
3return greeting +" "+ name
4}
5
Test #1
Test #2
Test #3
Dane wejściowe
"Alex"
Wynik
"Hello, Coddy! Alex"
Buduj swoją serię
Ucz się regularnie i patrz, jak rosną twoje postępy! Śledź codzienny nawyk programowania, chroń serię dzięki zamrożeniom i zdobywaj nagrody za każdy dzień nauki.
12 dni serii
Wróć jutro, aby utrzymać serię!
January 2026
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
21
22
23
24
25
26
27
28
29
30
Podwójnie albo nic
Dzień 5 z 7
Zamrożenie serii
2 left
Programuj wszędzie
Zabierz naukę programowania ze sobą! Bez konfiguracji i pobierania plików: po prostu otwórz i zacznij kodować. Dostępne na iOS, Androida i w przeglądarce, z oceną 4,9 gwiazdki.
Jedna struktura, wszystkie struktury. Tabela w Lua to część tablicowa i część haszująca w jednym, a nic więcej nie jest wbudowane: nie ma typu listy, zbioru, kolejki ani kopca. W Lua każda struktura to tabele wskazujące na tabele, co daje najczytelniejszy obraz tego, czym naprawdę jest lista wiązana czy drzewo.
Dla Roblox, gier i wtyczek. Lua napędza Roblox (jako Luau), skrypty w grach, konfigurację Neovima i skrypty Redisa, a kod gry to kod struktur danych: ekwipunek to tablica mieszająca, kolejność tur to kolejka, wyznaczanie ścieżki to przeszukiwanie grafu. Nauka struktur w Lua to nauka w języku, w którym już piszesz skrypty.
Prawie cała ścieżka w Lua. Każda struktura danych, sortowanie, algorytm grafowy, wyzwanie z rekurencji i pakiet rekrutacyjny jest prowadzony w Lua. Trzy kursy są prowadzone w innych językach i wymienione po krokach, każdy z linkiem: programowanie dynamiczne i seria rekrutacyjna w Pythonie oraz operacje na bitach w C++. Wszystko, co zostaje w Lua, zbudowane jest z tabel, od pierwszego stosu do ostatniego zadania rekrutacyjnego.
Oceniane jak na rozmowie rekrutacyjnej. Każda lekcja kończy się wyzwaniem w Lua sprawdzanym przez testy, a gdy coś nie przechodzi, Bugsy czyta twój kod i naprowadza cię na poprawkę, nie podając gotowej odpowiedzi. Darmowy certyfikat w większości kursów, każdy do zweryfikowania pod własnym adresem URL.
Najczęstsze pytania o algorytmy i struktury danych w Lua
Czy Lua nadaje się do nauki algorytmów i struktur danych?
Do nauki zaskakująco dobrze: skoro budujesz tylko z tabel, każda struktura jest jawna, a kod pozostaje krótki. Haczyk w tym, że tabele po cichu wybaczają błędy: tablice zwyczajowo zaczynają się od 1, brakujący klucz zwraca nil zamiast błędu, a operator długości #t jest wiarygodny tylko dla sekwencji bez dziur z nil. Niewiele rozmów rekrutacyjnych odbywa się w Lua, więc jeśli taka rozmowa jest twoim celem, pakiety rekrutacyjne są dostępne także w języku, którego tam użyjesz.
Jak zbudować stos i kolejkę z tabeli w Lua?
Stos to część tablicowa używana od jednego końca: table.insert(t, x) wkłada, a table.remove(t) zdejmuje. Kolejka wymaga więcej uwagi, bo table.remove(t, 1) przesuwa każdy pozostały element o jedno miejsce w dół, więc każde zdjęcie z kolejki to O(n). Zamiast tego trzymaj dwa indeksy, first i last: dodawaj pod last + 1, czytaj pod first, ustaw to miejsce na nil i przesuń indeks, a zdejmowanie z kolejki staje się operacją o stałym czasie. W kroku pierwszym budujesz oba.
Dlaczego #t w Lua czasem podaje złą długość?
Bo # zwraca granicę tabeli: indeks n, dla którego t[n] nie jest nil, a t[n + 1] jest. Prawidłowa sekwencja ma dokładnie jedną granicę, swoją długość. Wstaw nil w środek, a granic może być kilka i # może zwrócić dowolną z nich. Dlatego nigdy nie przechowuj nil w tablicy, którą mierzysz przez #, a w strukturach z lukami, takich jak kolejka z dwoma indeksami, śledź rozmiar samodzielnie.
Czy struktury danych mają znaczenie przy skryptach w Roblox?
Tak, gdy gra rozrośnie się ponad garstkę obiektów. Ekwipunek to tablica mieszająca, kolejność pojawiania się albo tur to kolejka, lista czasów odnowienia może być kolejką priorytetową, a znalezienie drogi przez mapę to przeszukiwanie grafu. Luau, język skryptów w Roblox, wywodzi się z Lua 5.1 i zachowuje jej tabele, tablice indeksowane od 1 i operator #, więc to, co tu budujesz, przenosi się wprost.
Które kursy z tej ścieżki nie są prowadzone w Lua?
Trzy: programowanie dynamiczne i seria rekrutacyjna w Pythonie, prowadzone w Pythonie, oraz operacje na bitach, prowadzone w C++. Są wymienione po krokach, każdy z linkiem, który otwiera go w jego własnym języku. Memoizacja w Lua to tabela. Operatory bitowe pojawiły się dopiero w Lua 5.3, która ma te same &, |, << i >> co C++, a zarówno XOR, jak i NOT zapisuje jako ~.
Czy muszę znać Lua, zanim zacznę tę ścieżkę?
Przynajmniej tabele, funkcje, pętle i zmienne lokalne. Metatabele pomagają, jeśli chcesz struktur zachowujących się jak obiekty. Jeśli to dla ciebie nowość, kurs Lua w Coddy omawia je najpierw, za darmo, a ta ścieżka zaczyna się tam, gdzie on się kończy.
Czy dostanę certyfikat za ścieżkę Algorytmy i struktury danych?
Tak. Ukończ każdy krok, a dostaniesz jeden darmowy certyfikat za całą ścieżkę Algorytmy i struktury danych. Wymienia on każdy kurs ukończony po drodze oraz linkuje do certyfikatu każdego kursu, więc każdy może sprawdzić każdą wymienioną umiejętność. Możesz dodać go do profilu na LinkedInie. To certyfikat ukończenia od Coddy, a nie akredytowana kwalifikacja.
Inne ścieżki nauki
Te same kursy, ułożone pod inną rolę. Postępy się przenoszą: kurs ukończony na jednej ścieżce liczy się na każdej ścieżce, która go zawiera.