ZWI #4 – jak wylosować elementy bez powtórzeń

Losowanie bez powtórzeń jest chyba jednym z najczęstszych zadań dla początkujących, zarówno uczących się samodzielnie, jak i na studiach. Często przejawia się w zadaniu typu “utwórz program losujący liczby w Lotto”. Równie często spotykam kod z wydajnością O(evil), którego powstydziłbym się nawet w najbezczelniejszym Lawful Evil – mieszanina randów, srandów, sprawdzania w pętli O(n3) czy wartość jest już znaleziona, alokacji pamięci za pomocą new[] itd.

Jest to w dużej mierze pokłosie sposobu nauczania C++. W tym poście przedstawię proste, czytelne i wydajne sposoby uzyskania tego samego efektu.

Lawful Evil #5 – instrukcja retum

Nie byłem pewien, czy dodawać tę historię, ponieważ nie zakończyła się ona pełnym sukcesem, ale uznałem, że rozwiązanie na to zasługuje. Historia zaczęła się pewnego pięknego środowego popołudnia:

Hej koledzy z #programowanie #cpp Potrzebuje pilnej pomocy ! place jak za króla ;D Pisze własne kolosa mam czas do okooło 18:30 jest do drugi termin 🙁 Tresc zadania
1.Napisac program wykorzystujacy stos, ktory sprawdza czy w danym wyrazeniu nawiasy sa prawidlowo zagniezdzone. Przetestowac dzialanie na wyrazeniu ” [ [ ] [ [ ] [ [ ] ”

2.Opracowac rekurnecyjny algorytm pozwalajacy zamienic liczbe dziesietna na liczbe w systemie trojkowym. Sprawdzic dla liczby 123

Liczy na was 5 osob

ZWI#3 – jak wywołać specjalizację szablonu funkcji dla wszystkich typów z listy

Tym razem podzielę się pytaniem jakie otrzymałem na IRC-u:

<cauchy> mam sobie funkcyjke z templejtem
<cauchy> i chce sobie ta fn wywolac dla jakiejs tam listy typow
<cauchy> np dla int, in64_t, string, vector<int>, vector<string>, itd
<cauchy> jakos fajnie daloby sie to zrobic w petli zebym nie musial explicitnie dawac po kolei
<cauchy> fn<int>();
<cauchy> fn<string>();
<cauchy> …

Oczywiście, że by się dało!

Misja Gynvaela 011

MISJA 011            goo.gl/keE94T                  DIFFICULTY: █████░░░░░ [5/10]
┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅

Jednemu z naszych agentów polowych poszczęściło się - zakradł się do biura
podejrzanego i zrobił zdjęcie bardzo ważnego dokumentu. Zdjęcie udało się wywołać
i otrzymaliśmy dzisiaj archiwum z jego skanem.

Ponieważ jestem obecnie bardzo zajęty i mam bardzo ważne spotkanie, poniżej jest
link do pliku - zajmij się tym.

  goo.gl/A6sMwA

Powodzenia!

--

Odzyskaną wiadomość umieść w komentarzu pod tym video 🙂
Linki do kodu/wpisów na blogu/etc z opisem rozwiązania są również mile widziane!

P.S. Rozwiązanie zadania przedstawię na jednym z vlogów w okolicy dwóch tygodni.

Misja Gynvaela 010

MISJA 010            goo.gl/oAdvWe                  DIFFICULTY: ███░░░░░░░ [3/10]
┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅

Otrzymaliśmy dokument PDF w którym podobno jest zaszyta ukryta wiadomość.
Zwracamy się do Ciebie z prośbą o jej odnalezienie:

  https://goo.gl/wgt94W

Powodzenia!

--

Odzyskaną wiadomość umieść w komentarzu pod tym video 🙂
Linki do kodu/wpisów na blogu/etc z opisem rozwiązania są również mile widziane!

P.S. Rozwiązanie zadania przedstawię na początku kolejnego livestreama.
P.S. Pomysłodawcą misji jest foxtrot_charlie.

Misja Gynvaela 009

MISJA 009            goo.gl/q49Fw7                  DIFFICULTY: ██████░░░░ [6/10]
┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅
Do naszych techników trafiło nagranie, w postaci pliku dźwiękowego, z osobliwymi
piskami. Nagranie otrzymaliśmy od lokalnego radioamatora i możesz je pobrać
poniżej:

  https://goo.gl/NeJHD2

Jeśli możesz, wyręcz naszych techników w zdekodowaniu wiadomości - są obecnie 
zajęci naprawą naszego elektrohydroturbobulbulatora.

Powodzenia!

--

Odzyskaną wiadomość umieść w komentarzu pod tym video 🙂
Linki do kodu/wpisów na blogu/etc z opisem rozwiązania są również mile widziane!

P.S. Rozwiązanie zadania przedstawię na początku kolejnego livestreama.