Autorské riešenie
[stiahni py]

  • Počet riešiteľov: 10 / 10= 100 %

  • Úspešnosť riešenia: 5.2 / 6 = 86.7 %

V tejto úlohe je potrebné zistiť konečné pozície hráčov. Vstupom je zoznam zoznamov hodov hráčov. Postupne prechádzame jednotlivé herné kolá. Hráči idú v poradí v akom sú vo vstupnom zozname.

V každom kole postupne simulujeme pohyb hráčov po hracej ploche. Zo zoznamu si vyberieme jeho hody v danom kole a spočítame ich. Ak sa hráč nachádza v domčeku a hodil dokopy menej ako 7, tak sa pohnúť nemôže a ide ďalší hráč. Ak však hodil viac ako 6, vychádza z domčeka na pozíciu 0 a odpočíta sa 6-tka od celkového posunu. Ďalej je posudzovaný ako bežný hráč v hre. Je vypočítaná jeho nová pozícia. Ak sa na vypočítanej pozícii už nejak hráč nachádza, aktuálny hráč ide do domčeka. Ak sa na vypočítanej pozícii nenachádza žiaden iný hráč, hráč sa premiestni na dané políčko. Predpokladáme, že vstupný zoznam hodov je korektný, preto ak na konci ťahu hráča ostane jeho zoznam hodov prázdny, tak ďalšie kolo už nezačne.

def korytnacky_sa_nehnevaju(hody):
    pocet_hracov = len(hody)
    pozicie = ['d'] * pocet_hracov
    hra_pokracuje = True
    while hra_pokracuje:
        for hrac in range(pocet_hracov):
            posun = 0
            while len(hody[hrac]) != 0:
                hod = hody[hrac].pop(0)
                posun += hod
                if hod != 6:
                    break
            pozicia_hraca = pozicie[hrac]
            if pozicia_hraca == 'd':
                if posun > 6:
                    pozicia_hraca = 0
                    posun -= 6
                else:
                    continue
            nova_pozicia = pozicia_hraca + posun
            if nova_pozicia in pozicie:
                pozicie[hrac] = 'd'
            else:
                pozicie[hrac] = nova_pozicia
            if len(hody[hrac]) == 0:
                hra_pokracuje = False
    return pozicie

Vaše zaujímavé riešenia a najčastejšie chyby

Túto úlohu riešilo 10 tímov. Časť tímov použila 1 parameter - zoznam zoznamov hodov, druhá časť použila 2 parametre - počet hráčov a jednoduchý zoznam všetkých hodov. Častou chybou je používanie globálnych premenných v prípadoch, keď to nie je nevyhnutné a vypisovanie výsledku v prípade, keď je požadované jeho vrátenie. Počet hráčov nebol daný, očakávalo sa riešenie pre ľubovoľný počet hráčov.