Ostatnie posty

Po raz drugi brałem udział w Potyczkach i znowu świetnie się bawiłem. Z dnia na dzień coraz cięższe zadanka, coraz więcej emocji...
Były to wspaniałe zawody! Dziękuję organizatorom za całą pracę włożoną w przygotowanie Potyczek 2021 i czekam z niecierpliwością na kolejną edycję :)
Kategoria Rozwiązania to świetny pomysł, dzięki któremu można nauczyć się wielu ciekawych rzeczy. Jednak jeśli otworzy się kilka zgłoszeń, to łatwo zapomnieć które zgłoszenie było które i się w nich pogubić...

Moim zdaniem następujące rzeczy mogłyby znacznie ułatwić przeglądanie zgłoszeń przez uczestników Potyczek:
a) informacje, które są w głównej kategorii:
* nazwa danego zadania
* kto wysłał zgłoszenie
* ilość przyznanych punktów
b) możliwość porównywania zgłoszeń danego zawodnika
c) lista pozostałych zgłoszeń do konkretnego zadania danego zawodnika

EDIT: Jeśli by się dało, to możliwość podstawowego formatowania tekstu wiadomości.
Wooooow - nie wiedziałem, że potyczki są na githubie.
Mnie interesowałyby różne statystyki, histogramy i wykresy - na przykład słupki pokazujące punkty zdobyte w danej rundzie i nałożony na to wykres z pozycją w rankingach (np. 25 punktów za rundę X, minus 10 pozycji w rankingu ABC, plus 5 w BC), liczba zawodników która wysłała rozwiązanie danego zadania i histogram z ocenami itd. Kiedyś zrobiłem sobie coś takiego ale musiałem zacząć od wget-owania stron z rankingiem i destylowania danych z HTML-a. Może organizatorzy mogliby udostępnić nam plik JSON albo CSV (w pierwszej kolumnie ksywka, w kolejnych punkty za kolejne rundy)? To raptem jeden selekt z bazy a być może ktoś przygotuje na tej podstawie coś ciekawego.

Co do czata jestem zdecydowanie przeciw. Przy pracy zdalnej komunikatory zbrzydły mi do reszty - myślę, że nie mnie jednemu...
Jak dla mnie podział ten ma bardzo dużo sensu, osoby walczące o koszulkę nie muszą poświęcać czasu na zadania z dywizji A, nawet jeśli nie zrobiliby ich na 10 pkt to pisaliby wtedy do niech brutalne rozwiązania. Jestem dość przekonany, że gdyby w tym roku rozdawać koszulki według rankingu A+B+C to próg by był większy niż 76, a to że teraz ta różnica jest taka mała pokazuje tylko, że rzeczywiście osoby walczące o koszulkę nie chciały/nie miały czasu robić dodatkowych zadań z dywizji A.
Czy tylko moim zdaniem nie ma sensu robienie osobnego rankingu dla B+C?
I tak większość osób walczących o koszulkę nie da rady zadaniom z dywizji "A", więc w okolicach miejsca 250 raczej będzie tam pusto.
Przykładowo, gdyby w tym roku rozdawać koszulki według rankingu A+B+C, próg by wyniósł... 76, czyli o JEDEN punkt więcej niż dla B+C.
Szczerze to nie wiem dokładnie, ale wydaje mi się, że implementacja na OI (przynajmniej ta oryginalna) po prostu zlicza liczbę instrukcji asm i każda ma taki sam koszt, łącznie z operacją odczytu pamięci. Czyli każdy cykl procesora to jedna instrukcja i tyle. Czyli inaczej niż w rzeczywistości, gdzie instrukcja może trwać kilka-kilkanaście cykli i pipelinuje się równolegle z innymi instrukcjami. Nie ma kar za dostęp do pamięci ani za ify, które źle się branch-predictują, ani nic takiego. Chyba...

"Wykorzystywany model opiera się na zliczaniu instrukcji wykonanych przez uruchomiony program, co w odzwierciedla procesor z bardzo dużą pamięcią podręczną. Ewaluację takiego modelu na zadaniach Olimpiady Informatycznej można zobaczyć w rozdziale 3 następującej pracy:

Sz. Acedański, Wykorzystanie sprzętowych liczników zdarzeń do oceny wydajności algorytmów. Praca magisterska, WMiM UW (2009)."
https://homepage.accek.net/wp-content/papercite-data/pdf/acemgr09.pdf
W forum na pewno formatowanie wzorów i kodu by się przydało.
TL;DR: jak wygląda 'rynek pracy' z algorytmami (lub ogólniej: 'computer science')? Gdzie szukać takich ofert? Ktoś z Was ma styczność z taką pracą? Moglibyście się podzielić wrażeniami? Jak wyglądają stawki w porównaniu do 'reszty' świata, itp.? Itp. itd.

Wersja rozszerzona:

Zainspirowany pokrewnym tematem z tego działu, chciałbym zapytać Was jak wygląda 'rynek pracy', gdzie trochę bardziej wykorzystuje się algorytmikę (lub szerzej: 'computer science')? Innymi słowy: prace, w których zamiast klepania wysokopoziomowych serwisów, logiki biznesowej, itp., to działa się z zagadnieniami algo/CS, np.: grafy, matematyka, przetwarzanie obrazów, dźwięku, kompilatory, systemy operacyjne/baz danych, wnętrza bibliotek, optymalizacje pod wydajność, itp.

Teoretycznie ktoś mógłby powiedzieć: panie, użyj mógzu - ot chociażby takie firmy: Google (wielka skala, grafy, wyszukiwanie, itd.), Oracle (silnik SQL, JVM), Autodesk (grafika 3D, więc sporo algo i matematyki), itp. itd.

No niby tak, ale nasuwa się pytanie: czy przypadkiem nie jest tak, że nawet w takich firmach, algo/computer science to zajmuje się tylko wąska grupa jakichś super wymiataczy, do której bardzo ciężko się dostać? A reszta kodzi wysokopoziomową logikę i co najwyżej korzysta z bibliotek stworzonych przez garstkę ludzi od algo?

Dalej, może są jakieś nieoczywiste firmy/branże gdzie styczność z computer science jest większa niż mogłoby się wydawać?

Ponadto (jak już w podobnym temacie ktoś zasugerował), może jest tak, że właśnie 99% to prosta, wysokopoziomowa logika, a algo/CS to jakiś drobny ułamek. Co o tym myślicie? Orientujecie się gdzie takich ofert szukać?

Kontynuując, jak jest z wypłatą w przypadku takich algo-programistów? To czego się obawiam, to że właśnie tam kasa będzie mniejsza niż dla 'typowych wysokopoziomowych programistów', mimo że to właśnie takie zajęcia są bardziej twórcze, innowacyjne, skomplikowane, itp. Bądź co bądź, 'biznes jest biznes'. A computer science niekoniecznie jest 'sexy' dla biznesu - oni chcą zarabiać, 'dostarczać wartość dla klientów tu i teraz', a nie bawić się w 'niskopoziomowe pierdoły' - jak brakuje mocy, to się dokupi w chmurze.

Jakie jest Wasze zdanie/doświadczenie w tym temacie?
Da się też zrobić szybki algorytm dziel i rządź dla DES bez losowego skakania po pamięci, tak jak wspomniałem dalej w wątku.

Też wolę realny czas działania a nie liczbę instrukcji. Szczególnie że jest opcja uruchomienia próbnego i można sobie zmierzyć na docelowej maszynie.

Jeśli zaś miałaby być liczba instrukcji, to na pewno musiałoby to być napisane wyraźnie wprost.
@Marcin - gratulacje dokładności. Pomyliłeś się tylko o 1 punkt :)
Tak z ciekawości jak dokładnie zrealizowany jest ten pomiar instrukcji?

To, że mam dwa razy więcej wykonanych instrukcji wcale nie oznacza iż mój jest dwa razy wolniejszy. Wręcz może być dużo szybszy jeśli ładnie rozbija zależności w kodzie i wykorzystuje wszystkie ALU.
Moje nq dało 3 pkt xd
Spróbuję trochę sprostować #25290 na temat "GAFAM"

Algorytmy są maglowane w ten czy inny sposób ale głównie dla new grads, czyli ludzi bez doświadczenia w CV. Dla ludzi, którzy parę lat w branży już pracują to dużo ważniejszy jest tzw. system design plus udokumentowane doświadczenie w konkretniej dziedzinie pod dane stanowisko - np. machine learning, distributed systems, itd.

Dwie uwagi:
1. algorytmy z potyczek może się nie przydają, ale zdecydowanie przydaje się umiejętność swobodnego i szybkiego przelewania myśli na działający kod.
2. trzeba również pamiętać, że wiele osób które rekrutują w takich wielkich firmach to nie są żadni wymiatacze algorytmiczni, taki Google to z grubsza koło 100tyś tzw. inżynierów ma, i najczęściej biorą jakieś gotowe pytania z wenętrznej bazy danych niekoniecznie rozumiejąc różne aspekty problemu który zadają kandydatowi - łagodnie to ujmując.
U mnie również 1, 2, 3, 6, i 7