Gra w Siódemki przebiega w następujący sposób: n
gracze siedzą w kręgu i zaczynają liczyć od 1, przechodząc w lewo (lub od gracza A
do gracza B
).
Gdy liczba, p
która zawiera 7
OR, jest podzielna, 7
zostanie osiągnięty, wówczas gracz, który wypowiedział numer p-1
, po tym, jak następny gracz powie p
, musi powiedzieć, p+1
a kolejność mówienia zmienia się. Na przykład, jeśli gracz B
mówi 6
, gracz C
mówi 7
, B
mówi 8
, a gracz A
mówi 9
.
Uwaga: dla tych, którzy chcą grać w prawdziwym życiu, jeśli dana osoba zapomni liczbę (lub w wersji, w której sevens
nie podano, przypadkowo mówi a seven
), zostaną wyeliminowani z kręgu, ale pomijamy ten szczegół w tym wyzwaniu.
Samo wyzwanie polega na wydrukowaniu liczb, które każdy gracz powinien wypowiadać w idealnej grze Sevens, aż do wkładu m
dla n
graczy wejściowych .
Jako przykład, w którym pięć osób, A
, B
, C
, D
, i E
są do gry aż dotrą 30
. Grają w ten sposób
A: 1 6 8 13 15 19 23 30
B: 2 7* 12 16 18 24
C: 3 11 17* 25
D: 4 10 21* 26 28*
E: 5 9 14* 20 22 27*29
gdzie sevens
są oznaczone *
. Pamiętaj, że w 27
i 28
cofamy się dwukrotnie, a gra jest kontynuowana „normalnie” od D
do E
.
Należy pamiętać, że dane wyjściowe nie muszą być w powyższym formacie. Po prostu wydrukowałem to w ten sposób dla większej przejrzystości.
Zasady
Dane wejściowe to dwie liczby całkowite w dowolnej kolejności,
m
reprezentujące ostatnią liczbę do powiedzenia,n
reprezentującą liczbę graczy.Wyjściem może być kilka tablic lub kilka ciągów, po jednym dla każdego odtwarzacza. Jeśli używasz ciągów znaków, nie musisz używać separatorów (jeśli jednak możesz dodać trochę w testach kodu, będziemy wdzięczni za czytelność). Jeśli rzeczywiście możesz wydrukować je w kółko, jest to również do przyjęcia i byłoby też całkiem fajne.
Dane wyjściowe nie muszą określać, którzy gracze są tymi, którzy mówią (to całkiem oczywiste, że pierwszy gracz jest tym, który mówi
1
), chociaż jeśli wynik nie zostanie posortowany z jakiegokolwiek powodu, należy wyjaśnić, który gracz mówi, który zestaw liczb . Pominięcie graczy, którzy nic nie mówią, jest również dozwolone, jeśli jasno określisz, którzy gracze mówią. Poniżej dodam kilka przykładów możliwych wyników.To jest kod golfowy, więc wygrywa najmniejsza liczba bajtów.
Jak zawsze, jeśli problem jest niejasny, daj mi znać. Powodzenia i dobrej gry w golfa!
Przykłady
>>> sevens_string(30, 5, " ")
'1 6 8 13 15 19 23 30'
'2 7 12 16 18 24'
'3 11 17 25'
'4 10 21 26 28'
'5 9 14 20 22 27 29'
>>> sevens_string(42, 5)
'16813151923303539'
'27121618243140'
'31117253241'
'410212628333742'
'591420222729343638'
>>> sevens_array(20, 3)
[1, 4, 7, 10, 13, 15, 19]
[2, 5, 9, 12, 16, 18]
[3, 6, 8, 11, 14, 17, 20]
>>> sevens_array(18, 10)
[1, 13, 15]
[2, 12, 16, 18]
[3, 11, 17]
[4, 10]
[5, 9]
[6, 8]
[7]
[]
[]
[14]
1 2 3 4 1 2 3 2 1 4 3 2 1 4 1
). Nie twierdzę, że jest to lepsze lub gorsze pod względem wyzwania: po prostu byłoby bardziej przydatne w prawdziwym świecie.