#algorytmy

0
8
.
Dzisiaj ruszyły zapisy na Potyczki Algorytmiczne 2024, ogólnopolski, otwarty konkurs programistyczny.


Harmonogram

Rejestracja rozpoczyna się 1 marca 2024 o godz. 12:00.
Runda próbna startuje 5 marca 2024 o godz. 12:00 i kończy się 7 marca 2024 o godz. 23:59.
Rundy zdalne wystartują 11 marca 2024 o godz. 12:00, a zakończą się 17 marca 2024 o godz. 23:59.
Ogłoszenie ostatecznych wyników rund zdalnych nastąpi 19 marca 2024 o godz. 20:00.
Finał odbędzie się w dniach 24-25 maja 2024 w Zielonej Górze.

Warto spróbować, nawet jeśli ktoś tylko trochę umie programować. Zadania i rozwiązania z poprzedniej edycji.

Każdego, kto jest pasjonatem algorytmiki i programowania gorąco zapraszamy do wzięcia udziału w XIX edycji konkursu „Potyczki Algorytmiczne”. Potyczki Algorytmiczne są najstarszym internetowym konkursem algorytmiczno-programistycznym w Polsce, adresowanym do wszystkich – uczniów, studentów, zawodowców i amatorów, bez jakichkolwiek ograniczeń wiekowych. W tej edycji, oprócz rozwiązań w C++, dopuszczamy także rozwiązania w Pythonie.
Rejestracja on-line do konkursu rusza już 1 marca 2024 r.
Potyczki Algorytmiczne w roku 2024 składać się będą z dwóch etapów:
● zdalnego – odbywającego się w dniach od 11 marca do 17 marca 2024 roku;
● wielkiego finału – rozgrywanego w dniach 24 – 25 maja w gościnnych progach współorganizatora konkursu, zielonogórskiej firmy Digital Technology Poland. DTP Ltd. Do finału zostanie zakwalifikowanych 20 zawodników.
Dla najlepszych zawodników czekają nagrody rzeczowe. Dodatkowo 128 uczestników otrzyma kultowe koszulki Potyczek Algorytmicznych 2024 oraz upominki-niespodzianki.

#cpp #python #algorytmy

Jak ktoś ma konto na wykopie, to może tam też opublikować.
Iknifeburncat

O kurczę zajrzę. Dzięki!

Zaloguj się aby komentować

Wizualizacja algorytmów sortowania

Wizualizacja różnych algorytmów sortowania w przeglądarce!

Umożliwia dostosowywanie różnych opcji jak typ grafu wizualizującego sortowanie czy dźwięk je opisujący.

#technologia #informatyka #algorytmy #sortowanie
b3bb8a4b-375e-4267-8353-57d96eb8f474
evilonep

@koszotorobur Stalin sort najlepszy

Zaloguj się aby komentować

Cześć.
Potrzebowałbym wsparcia technicznego/informacji, na temat tego jakiego algorytmu muszę użyć.
Cel: Program który po wprowadzeniu kilku/nastu tasków wraz z poziomem trudności od 1 do 5 podzieli te taski tak, aby ich sumaryczny czas wynosił 8.00h.
Przykład:
Task1, trudność 1
Task2, trudność 1
Task3, trudność 1
Task4, trudność 1
Task5, trudność 5
Oczekiwane działanie:
Task1: Zajął 1h
Task2: Zajął 1h
Task3: Zajął 1h
Task4: Zajął 1h
Task5: Zajął 4h
SUMA: 8.00h
Oczywiście poziomy trudności mogą być inne, a program miałby sam określić ile dana rzecz zajęła, mając na uwadze że taski z wyższą trudnością musiały zająć proporcjonalnie większą ilość czasu.
Chciałbym to zaimplementować w języku Python, wraz z przyszłym wrzucaniem tego z automatu przez API do Jira.
Ma ktoś pomysł jak się za to zabrać? ChatGPT rozkłada ręce.
#pytanie #programowanie #informatyka #algorytmy
sierzant_armii_12_malp

@EXCV31 https://en.wikipedia.org/wiki/Subset_sum_problem ? Przepraszam, ale nie do końca rozumiem problem. Co to dokładnie znaczy „podzieli te taski tak, aby ich sumaryczny czas wynosił 8.00h”? Jak rozdzielę monety o łącznej wartości 100 zł pomiędzy iluś ludzi, to ich łączna wartość dalej będzie wynosiła 100 zł.

nest0r171

def knapsack(tasks, difficulty_levels):

n = len(tasks)<br />

dp = [[0] * (n + 1) for _ in range(9)]  # Tablica przechowująca wyniki<br />

# Obliczanie optymalnego rozwiązania<br />

for i in range(1, n + 1):<br />

    task_time = tasks[i - 1]<br />

    difficulty = difficulty_levels[i - 1]<br />

    for j in range(1, 9):<br />

        if difficulty <= j:<br />

            dp[j][i] = max(dp[j][i - 1], dp[j - difficulty][i - 1] + task_time)<br />

        else:<br />

            dp[j][i] = dp[j][i - 1]<br />

# Odtworzenie rozwiązania<br />

selected_tasks = []<br />

j = 8<br />

for i in range(n, 0, -1):<br />

    if dp[j][i] != dp[j][i - 1]:<br />

        selected_tasks.append(i)<br />

        j -= difficulty_levels[i - 1]<br />

return selected_tasks<br />

Przykładowe dane

tasks = [1, 1, 1, 1, 4]

difficulty_levels = [1, 1, 1, 1, 5]


selected_tasks = knapsack(tasks, difficulty_levels)

total_time = sum(tasks[i - 1] for i in selected_tasks)


Wyświetlenie wyniku

for task_index in selected_tasks:

print(f"Task{task_index}: Zajął {tasks[task_index - 1]}h")<br />

print(f"\nSUMA: {total_time:.2f}h")

Zaloguj się aby komentować

Dziś o problemie o wielu nazwach: problemie sekretarki, problemie wyboru najlepszego obiektu, problemie łowcy posagu, czy wyboru kandydatki na żonę (ale można go odnieść do wielu innych życiowych sytuacji, jak np wyboru ścieżki kariery):
Klasyczny przykład takiego problemu to zagadnienie obsady stanowiska sekretarki. Na ogłoszenie o wolnym stanowisku sekretarki zgłosiło się N kandydatek. Z każdą z nich przeprowadza się wywiad oceniając jej przydatność i natychmiast po skończeniu wywiadu kandydatkę można bądź przyjąć (wówczas proces selekcji kończy się), bądź też odrzucić i przeprowadzić wywiad z następną. Nie wolno przy tym wracać do odrzuconych kandydatek.
Celem jest maksymalizacja prawdopodobieństwa wyboru najlepszej kandydatki.
Przedstawiony problem ma bardzo proste rozwiązanie optymalne: w skrócie - należy zawsze odrzucić N/e kandydatek (gdzie e to liczba Eulera i wynosi w przybliżeniu 2,7) . Przykładowo dla N=30 należy odrzucić 11 kandydatek. Następnie, z pozostałych kandydatek, wybrać pierwszą, która jest lepsza od wszystkich dotychczas przeglądanych (lub, gdy to nie nastąpi, wybrać ostatnią).
Przy takiej strategii prawdopodobieństwo wyboru najlepszej kandydatki, przy N dążącym do nieskończoności, wynosi około 36,8% (1/e).
Mój komentarz - o ile sam problem jak i jego rozwiązanie jest ciekawe, o tyle przykładanie go "1 do 1" do życiowych decyzji może nie dać efektywnych wyników. Pamiętajmy że warunki problemu są postawione wyraźnie, a życie jest jakie jest. Na przykład nie zawsze mamy do czynienia z losowym rozkładem "kandydatek". Często też nie znamy N, bądź podejmujemy decyzję na dłuższym odcinku czasu (a wtedy ocena tego co jest "najlepsze" może się dla nas zmieniać).
https://pl.m.wikipedia.org/wiki/Problem_sekretarki
inskpektor

Ten problem jest też opisany w książce 'Algorytmy. Kiedy mniej myśleć i ...'. Oczywiście polska szkoła tłumaczenia tytułów (i projektowania okładek) robi jej tutaj krzywdę :). Książka jest bardzo ciekawa i mimo że to publikacja chyba jednak pop naukowa (100 stron przypisów!) to moim zdaniem warta przeczytania. Jeśli kogoś interesuje szersze spojrzenie na metody rozwiązywania problemów, genezę algo, jak dzięki matematycznemu myśleniu wprowadzić porządek do rozwiązań - to polecam.

Zaloguj się aby komentować

Witam, jestem nowy, jak dzialaja algorytmy wyświetlania wpisów ludzi?
lubieplackijohn

@michal-theofilopoulos tego nie wie nikt ( ͡° ͜ʖ ͡°) W sztosach jest zdaje się głównie #qualitycontent, ale weryfikowany przez AI, więc jak się napisze shitposta i doda tag to wykryje i nie doda do sztosów. A docenione to wpisy z największą ilością piorunów.

EDIT

Ubiegł, skubany >.<

michal-theofilopoulos

@gacek ok czyli w miarę prostu system. W sztosach ma znaczenie data dodania , ranga OP,a czy coś innego?

Admiral

@michal-theofilopoulos ranga raczej nie ma znaczenia w sztosach jako że została dodana dziś, a nie pisali w poście że sztosy zostały jakoś zmienione. Na pewno czas dodania ma znaczenie, bo zaobserwowałem kiedyś że mój wpis zaraz po dodaniu był na górze sztosów, mimo że miał tylko 2 pioruny

Zaloguj się aby komentować