News
Po pewnym okresie delikatnego 'zaniedbania' serwisu zaczynam robić porządki!
Na pierwszy ogień idą:
- komentarze czekające na akceptację (jeszcze 168 sztuk) - postaram się w najbliższym czasie przejrzeć wszystkie wasze wpisy i poprawić zgłoszone błędy bądź odpowiedzieć jeżeli zgłoszone uwagi takowymi nie są,
- przesłane implementacje (jeszcze 52 sztuki),
- przesłane artykuły.
Po waszych uwagach poprawiona została implementacja:
- zamiany liczby na słowa w C++
- zamiana liczby na słowa z polską gramatyką w C# i JavaScript
- Algorytmu Naiwnego wyszukiwania wzorca w C++
- Sprawdzania palindromów w C++
- Kolejki w C++
- Sortowania przez wstawianie w C++
Serwis Algorytmy i struktury danych powstał na przełomie lat 2000 i 2001. Postanowiliśmy stworzyć witrynę wyłącznie o algorytmach i konsekwentnie ją rozbudowywać. Chcieliśmy stworzyć stronę z materiałami dostępnymi również w podręcznikach, lecz opisanymi dużo prościej, mniej formalnie, z przykładami oraz implementacją. Na stronach serwisu znajdziesz setki artykułów z dołączonymi rysunkami, zdjęciami i schematami blokowymi. Istniejące opisy cały czas uzupełniamy i poprawiamy zgodnie z waszymi sugestiami. Oprócz szczegółowych opisów metod oraz przykładów ich użycia znajdziesz tutaj ponad tysiąc implementacji w wielu językach programowania. Każdy z artykułów może być komentowany. Możesz podzielić się uwagami na temat algorytmu, podać dodatkowe przykłady, informacje, przypadki szczególne, itp... Z całej zawartości serwisu możesz korzystać bez żadnych opłat i rejestracji!
Wygeneruj graf
Uruchomiliśmy autorski skrypt pozwalający szybko i sprawnie tworzyć reprezentacje graficzną grafów. Przy jego pomocy tworzyć można zarówno grafy skierowane jak i nieskierowane. Każdy wierzchołek oraz krawędź może być oznaczona wybraną etykietą oraz kolorem. Używając tego narzędzia troszczysz się jedynie o zdefiniowanie zbioru wierzchołków i krawędzi, całą pracę polegającą na takim graficznym ustawieniu elementów by przecięć pomiędzy krawędziami było jak najmniej, by całość wyglądała schludnie i przejrzyście załatwia za Ciebie program. Twoja decyzja polega jedynie na wybraniu preferowanej orientacji grafu (pozioma lub pionowa). Wyjściowy obraz może być zapisany w jednym z kilku formatów do wyboru. Zapraszamy do skorzystania z narzędzia do generowania grafów
|
Wygeneruj schemat blokowy
Na naszych stronach znajdziesz kolejny autorski skrypt. Tym razem jest to narzędzie pozwalające szybko i sprawnie tworzyć schematy blokowe. Przy jego pomocy tworzysz zbiór bloków wykonywalnych oraz decyzji. W kolejnym kroku definiujesz ich zawartość oraz ich następniki czyli bloki/decyzje, które mają być wykonywane jako następne. Przed wygenerowaniem schematu skrypt sprawdzi czy wszystkie wejścia i wyjścia z bloków są przypisane. Używając tego narzędzia skupiasz się na logice tworzonego schematu blokowego, żmudną pracę polegającą na odpowiednim ułożeniu elementów, by całość wyglądała schludnie i przejrzyście wykonuje za Ciebie program. Wyjściowy schemat może być zapisany w jednym z kilku formatów do wyboru. Zapraszamy do skorzystania z narzędzia do generowania schematów blokowych
|
Wygeneruj wzór matematyczny
Udostępniliśmy narzędzie do graficznego tworzenia i generowania wzorów matematycznych w programie Latex. Dzięki niemu w prosty sposób wygenerować można nawet skomplikowane wzory wykorzystujące macierze, pierwiastki, indeksy górne, dolne a także wiele innych. Tworzenie wzoru polega na wybieraniu gotowych wzorców prezentowanych w formie graficznej. Wyjściowy wzór może być zapisany w jednym z kilku formatów do wyboru. Zapraszamy do skorzystania z narzędzia do generowania wzorów matematycznych
|
Weź udział w powstawaniu strony
Uruchomiliśmy możliwość dodawania implementacji do zamieszczonych algorytmów, metod i struktur danych przez wszystkich zarejestrowanych użytkowników portalu. Całość została zintegrowana z systemem informacji o użytkownikach dzięki czemu, potencjalny pracodawca po jednym kliknięciu na nazwisko twórcy ma dostęp do wszystkich jego artykułów, implementacji, komentarzy oraz wpisów na forum. Każdy zarejestrowany użytkownik może również dodawać własne artykuły.
|
Nowości
-
BC412
Kod kreskowy BC412 został opracowany w 1988 roku przez Computer Identics oraz IBM. W 1992 roku został on ustanowiony przez organizację SEMI (the Semiconductor Equipment and Materials International) jako standard oznaczania półprzewodnikowych wafli krzemowych (SEMI T1-95). Kod BC412 jest kodem jednej szerokości (ang. single-width code), oznacza to, że wszystkie paski są tej samej szerokości. Kodowanie odbywa się poprzez zmienną odległość pustego miejsca... -
Wyznaczanie daty Wielkanocy - metoda Meeusa/Jonesa/Butchera
Wielkanoc jest tak zwanym świętem ruchomym - oznacza to, że każdego roku występuje w inny dzień. Definicja mówi, iż przypada ona w pierwszą niedzielę po pierwszej pełni Księżyca przypadającej po równonocy wiosennej. W 1991 roku Jean Meeus opublikował sposób na obliczanie daty Wielkanocy. Można uznać tą metodę za lepszą od metody Gaussa (index.php?option=com_content&task=view&id=225&Itemid=28), ponieważ nie ma od niej wyjątków i nie wymaga... -
Morphing
Morphing - płynne przechodzenie jednego obrazu w drugi. Zadaniem jest półautomatyczna transformacja jednego obrazu w drugi a zwłaszcza uzyskanie obrazów pośrednich dla pewnego λ z zakresu co oznacza stopień zawartości drugiego obrazka w obrazie wynikowym. Na przykład dla λ = 0.4 obraz wynikowy składa się w 60% z pierwszego i 40% z drugiego obrazu. Nazywamy to interpolacją. Dla λ mniejszego niż zero lub większego niż jeden będziemy mieli do czynienia z... -
Liczby automorficzne
Liczbami automorficznymi nazywamy takie liczby, które podniesione do kwadratu zawierają w końcówce samą siebie. Np. 52 = 25, 62 = 36. Ciekawostką jest to że, liczby automorficzne w zapisie dziesiętnym zawsze kończą się na 5 lub 6. Czy liczba naturalna n o dowolnej podstawie m jest automorficzna można sprawdzić za pomocą następującego równania: n=n^2... -
Retinex
Często robiąc zdjęcia, na których są zarówno obszary mocno oświetlone jak i te położone w cieniu trudno jest dobrać tak parametry by wszystkie szczegóły były dobrze widoczne. W efekcie albo dobrze oświetlona część zdjęcia jest prześwietlona, albo szczegóły pozostające w cieniu nie są widoczne. A przecież ludzkie oko doskonale radzi sobie w takich sytuacjach. Przykładem może być tutaj zdjęcie ciemnego pokoju oświetlonego jedynie małą stojącą lampą, albo zdjęcie krajobrazu...
Najczęściej czytane
-
Schematy blokowe
Schematy blokowe są tzw. metajęzykiem. Oznacza to, że jest to język bardzo ogólny, służy do opisywania algorytmów w taki sposób, by na jego podstawie można było je zaimplementować w każdym języku. Częściami składowymi schematów blokowych są proste figury geometryczne, np. prostokąt, romb, koło, równoległobok itd... W tych figurach umieszczamy warunki oraz proste instrukcje, przy czym mogą być one związane z jakimś konkretnym językiem... -
Numer dowodu osobistego
Dowód osobisty jest dokumentem stwierdzającym tożsamość osoby i poświadczającym jej obywatelstwo. Jak każdy dokument posiada unikalny identyfikator w tym przypadku jest to seria i numer dowodu. Seria dowodu to 3 litery które w trakcie sprawdzania jego cyfry kontrolnej zamienia się na wartości liczbowe wg poniższego wzoru: ABCDEFGHIJKLMNOPQRSTUVWXYZ 1011121314151617181920212223242526272829303132333435... -
Sortowanie bąbelkowe (bubblesort)
Jest to jeden z prostszych algorytmów sortowania. Sprawdzamy całą tablicę od końca, jeżeli trafimy na parę elementów, w której większy poprzedza mniejszy to zamieniamy je miejscami. Po przejściu całej tablicy znów zaczynamy przeszukiwać tą tablicę od końca. Czynność powtarzamy tak długo aż podczas sprawdzania całej tablicy, nie zajdzie ani jedna zamiana elementów. Realizuje się to najczęściej za pomocą zmiennej logicznej. Algorytm nosi... -
Sortowanie szybkie (quicksort)
Algorytm sorotwania szybkiego jest uważany za najszybszy algorytm dla danych losowych. Zasada jego działania opiera się o metodę dziel i zwyciężaj (index.php?option=com_content&task=view&id=63&Itemid=26). Zbiór danych zostaje podzielony na dwa podzbiory i każdy z nich jest sortowany niezależnie od drugiego. Dla zadanej tablicy a[l..p] wybieramy element v=a[l] i przeszukujemy resztę tablicy (tzn. a[l+1..p]) tak długo, aż nie znajdziemy... -
Filtrowanie obrazów
Zastosowanie filtrów w przetwarzaniu obrazów oznacza, że do obliczenia nowej wartości punktu brane są pod uwagę wartości punktów z jego otoczenia. Każdy piksel z otoczenia wnosi swój wkład - wagę podczas przeprowadzania obliczeń. Wagi te zapisywane są w postaci maski. Typowe rozmiary masek to 3 x 3, 5 x 5 bądź 7 x 7. Rozmiary masek są z reguły nieparzyste ponieważ piksel na środku reprezentuje piksel dla którego wykonywana jest operacja przekształcania filtrem....
Najwyżej oceniane
-
Buddhabrot
Buddhabrot jest fraktalem zbudowanym w oparciu o zbiór Mandelbrot'a (index.php?option=com_content&task=view&id=232&Itemid=28). Jego nazwa pochodzi od podobieństwa do obrazu Buddy, siedzącego w pozie medytacyjnej. Technikę uzyskania tego obrazu odkryła i opisała w roku 1993 Melinda Green. Najpierw przypomnijmy sobie definicję zbióru Mandelbrota. Jest to zbiór liczb zespolonych p takich, że ciąg liczb zespolonych z0, z1, z2, ...... -
Generator Park-Miller
Generator liczb pseudolosowych (ang. PRNG - Pseudo-Random Number Generator) pozwala na generowanie ciągu liczb, który: jest deterministyczny - zainicjowany tą samą wartością dają zawsze taki sam ciąg pseudolosowych liczb, pod pewnymi względami jest nieodróżnialny od ciągu uzyskanego z prawdziwie losowego źródła. Generatory liczb pseudolosowych znajdują zastosowania w wielu dziedzinach algorytmiki, są to m.in: algorytmy... -
BC412
Kod kreskowy BC412 został opracowany w 1988 roku przez Computer Identics oraz IBM. W 1992 roku został on ustanowiony przez organizację SEMI (the Semiconductor Equipment and Materials International) jako standard oznaczania półprzewodnikowych wafli krzemowych (SEMI T1-95). Kod BC412 jest kodem jednej szerokości (ang. single-width code), oznacza to, że wszystkie paski są tej samej szerokości. Kodowanie odbywa się poprzez zmienną odległość pustego miejsca... -
GTIN
Globalny numer jednostki handlowej GTIN (ang. Global Trade Item Number), służy do jednoznacznego oznaczania produktów. Pieczę nad nim sprawuje GS1, który jest następcą EAN (ang. European Article Numbering) i UUC (ang. Uniform Code Council). Numer GTIN jest pojęciem dosyć ogólnym, skupiającym w sobie kilka sposobów oznaczania produktów. Numer ten może mieć długość 8, 12, 13 lub 14 cyfr i w zależności od swojej długości może byc kodowany... -
Interleaved Code 25
Przeplatany kod 2 z 5 (ang. Interleaved 2 of 5), w przeciwieństwie do kodu Standard 2 of 5 (index.php?option=com_content&task=view&id=188&Itemid=54), z którego się wywodzi, jest kodem o dużej gęstości. Zwiększenie pojemności kodu osiągnieto tutaj poprzez zakodowanie cyfr zarówno poprzez paski jak i przerwy pomiędzy nimi, podczas gdy Standard 2 of 5 (index.php?option=com_content&task=view&id=188&Itemid=54), kodował informacje jedynie...