Szukaj…


Uwagi

Wprowadzenie do algorytmów

Algorytmy są wszechobecne w informatyce i inżynierii oprogramowania. Wybór odpowiednich algorytmów i struktur danych poprawia wydajność naszego programu pod względem kosztów i czasu.

Co to jest algorytm? Nieformalnie algorytm to procedura umożliwiająca wykonanie określonego zadania. [Skiena: 2008: ADM: 1410219] W szczególności algorytm jest dobrze zdefiniowaną procedurą obliczeniową, która przyjmuje pewną wartość (lub zestaw wartości) jako dane wejściowe i generuje pewną wartość lub zbiór wartości jako dane wyjściowe . Algorytm jest zatem sekwencją kroków obliczeniowych, które przekształcają dane wejściowe na dane wyjściowe. Cormen i in. glin. nie zaznacza wyraźnie, że algorytm niekoniecznie wymaga danych wejściowych. [Cormen: 2001: IA: 580470]

Formalnie algorytm musi spełniać pięć funkcji: [Knuth: 1997: ACP: 260999]

  1. Skończoność Algorytm musi zawsze kończyć się po skończonej liczbie kroków.
  2. Definicja Każdy krok algorytmu musi być dokładnie zdefiniowany; działania, które należy przeprowadzić, muszą być ściśle określone. Właśnie do tej jakości [Cormen: 2001: IA: 580470] odnosi się pojęcie „dobrze zdefiniowane”.
  3. Wejście Algorytm ma zero lub więcej danych wejściowych . Są to wielkości, które są przydzielane algorytmowi na początku przed jego uruchomieniem lub dynamicznie podczas działania.
  4. Wyjście Algorytm ma jedno lub więcej wyników . Są to wielkości, które mają określoną relację do danych wejściowych. Oczekujemy, że algorytm generuje takie same dane wyjściowe, jeśli otrzyma te same dane wejściowe w kółko.
  5. Skuteczność Na ogół oczekuje się również, że algorytm będzie skuteczny . Jego operacje muszą być wystarczająco podstawowe, aby mogły być wykonane dokładnie w zasadzie i przez określony czas przez osobę używającą ołówka i papieru.

Procedura, której brakuje skończoności, ale spełnia wszystkie inne cechy algorytmu, można nazwać metodą obliczeniową . [Knuth: 1997: ACP: 260999]

Przykładowy problem algorytmiczny

Problem algorytmiczny jest określony przez opisanie pełnego zestawu instancji, na których musi on działać, oraz jego wyników po uruchomieniu na jednym z tych instancji. To rozróżnienie między problemem a wystąpieniem problemu ma fundamentalne znaczenie. Problem algorytmiczny zwany sortowaniem definiuje się następująco: [Skiena: 2008: ADM: 1410219]

  • Problem: sortowanie
  • Dane wejściowe: ciąg n kluczy, a_1, a_2, ..., a_n .
  • Dane wyjściowe: zmiana kolejności sekwencji wejściowych w taki sposób, że a'_1 <= a'_2 <= ... <= a'_{n-1} <= a'_n

Instancja sortowania może być układem łańcuchów, takich jak { Haskell, Emacs } lub sekwencji liczb, takich jak { 154, 245, 1337 } .

Rozpoczęcie pracy z prostym algorytmem Fizz Buzz w Swift

Dla tych z was, którzy dopiero zaczynają programować w Swift i tych z różnych podstaw programowania, takich jak Python lub Java, ten artykuł powinien być bardzo pomocny. W tym poście omówimy proste rozwiązanie do implementacji szybkich algorytmów.

Fizz Buzz

Być może widziałeś Fizz Buzz napisany jako Fizz Buzz, FizzBuzz lub Fizz-Buzz; wszystkie odnoszą się do tej samej rzeczy. Ta „rzecz” jest dziś głównym tematem dyskusji. Po pierwsze, czym jest FizzBuzz?

Jest to częste pytanie, które pojawia się podczas rozmów kwalifikacyjnych.

Wyobraź sobie serię liczb od 1 do 10.

1 2 3 4 5 6 7 8 9 10

Fizz i Buzz odnoszą się do dowolnej liczby, która jest wielokrotnością odpowiednio 3 i 5. Innymi słowy, jeśli liczba jest podzielna przez 3, jest ona zastępowana przez fizz; jeśli liczba jest podzielna przez 5, jest zastępowana przez szum. Jeśli liczba jest jednocześnie wielokrotnością 3 ORAZ 5, liczba jest zastępowana przez „fizz buzz”. Zasadniczo emuluje słynną grę dla dzieci „fizz buzz”.

Aby rozwiązać ten problem, otwórz Xcode, aby utworzyć nowy plac zabaw i zainicjuj tablicę jak poniżej:

// for example 
let number  = [1,2,3,4,5]
// here 3 is fizz and 5 is buzz

Aby znaleźć wszystkie szumy i szumy, musimy iterować po tablicy i sprawdzić, które numery są szumami, a które szumami. Aby to zrobić, utwórz pętlę for, aby iterować przez zainicjowaną przez nas tablicę:

for num in number {
  // Body and calculation goes here
}

Następnie możemy po prostu użyć warunku „if else” i operatora modułu w trybie szybkim tj. -%, aby zlokalizować szum i szum

for num in number {
  if num % 3 == 0 {
    print("\(num) fizz")
  } else {
    print(num)
  }
}

Świetny! Możesz przejść do konsoli debugowania na placu zabaw Xcode, aby zobaczyć dane wyjściowe. Przekonasz się, że „musujące” zostały uporządkowane w twojej tablicy.

W części Buzz zastosujemy tę samą technikę. Spróbujmy przed przewinięciem artykułu - możesz sprawdzić swoje wyniki w tym artykule, gdy skończysz to robić.

for num in number {
  if num % 3 == 0 {
    print("\(num) fizz")
  } else if num % 5 == 0 {
    print("\(num) buzz")
  } else {
    print(num)
  }
}

Sprawdź wyjście!

Jest to raczej proste - podzieliłeś liczbę przez 3, musujesz i podzieliłeś liczbę przez 5, buzz. Teraz zwiększ liczby w tablicy

let number = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]

Zwiększyliśmy zakres liczb z 1-10 do 1-15, aby zademonstrować koncepcję „szumu fizycznego”. Ponieważ 15 jest wielokrotnością zarówno 3, jak i 5, liczbę należy zastąpić „fizz buzz”. Spróbuj sam i sprawdź odpowiedź!

Oto rozwiązanie:

for num in number {
  if num % 3 == 0 && num % 5 == 0 {
    print("\(num) fizz buzz")
  } else if num % 3 == 0 {
    print("\(num) fizz")
  } else if num % 5 == 0 {
    print("\(num) buzz")
  } else {
    print(num)
  }
}

Poczekaj ... to jeszcze nie koniec! Głównym celem algorytmu jest poprawne dostosowanie środowiska wykonawczego. Wyobraź sobie, że zasięg wzrośnie z 1-15 do 1-100. Kompilator sprawdzi każdą liczbę, aby ustalić, czy można ją podzielić przez 3 lub 5. Następnie ponownie przejdzie przez liczby, aby sprawdzić, czy liczby są podzielne przez 3 i 5. Kod musiałby zasadniczo przejść przez każdą liczbę w tablicy dwa razy - musiałby najpierw uruchomić liczby przez 3, a następnie uruchomić przez 5. Aby przyspieszyć proces, możemy po prostu powiedzieć naszemu kodowi, aby bezpośrednio podzielił liczby przez 15.

Oto końcowy kod:

for num in number {
  if num % 15 == 0 {
    print("\(num) fizz buzz")
  } else if num % 3 == 0 {
    print("\(num) fizz")
  } else if num % 5 == 0 {
    print("\(num) buzz")
  } else {
    print(num)
  }
}

Tak proste, że możesz użyć dowolnego wybranego języka i zacząć

Ciesz się kodowaniem



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow