Das Spiel von Sevens wird wie folgt gespielt: Die n
Spieler sitzen in einem Kreis und zählen von 1 nach links (oder von Spieler A
zu Spieler B
).
Wenn eine Zahl erreicht ist p
, die ein 7
ODER enthält, das durch teilbar 7
ist, muss der Spieler, der die Nummer gesprochen hat p-1
, nach dem nächsten Spieler p
sagen, p+1
und die Reihenfolge der sprechenden Personen wird umgekehrt. Zum Beispiel, wenn der Spieler B
spricht 6
, C
sagt der Spieler 7
, B
sagt 8
und A
sagt der Spieler 9
.
Hinweis: Wenn eine Person eine Zahl vergisst (oder in der Version, in der sevens
nicht gesagt wird, versehentlich a seven
), werden sie aus dem Kreis gestrichen, aber wir werden dieses Detail bei dieser Herausforderung weglassen.
Die Herausforderung selbst besteht darin, die Zahlen zu drucken, die jeder Spieler in einem perfekten Sevens-Spiel sagen sollte, bis eine Eingabe m
für eine Eingabe erfolgtn
.
Als ein Beispiel, in dem fünf Menschen, A
, B
, C
, D
, und E
sind zu spielen , bis sie erreichen 30
. Sie spielen auf diese Weise
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
wo sevens
sind mit gekennzeichnet *
. Beachten Sie, dass bei 27
und 28
, wir Umkehr zweimal, und das Spiel geht weiter „normal“ aus D
zu E
.
Bitte beachten Sie, dass die Ausgabe nicht im obigen Format erfolgen muss. Ich habe es aus Gründen der Klarheit einfach so ausgedruckt.
Regeln
Die Eingabe besteht aus zwei Ganzzahlen in beliebiger Reihenfolge,
m
die die letzte zu sagenden
Zahl darstellen und die Anzahl der Spieler darstellen.Die Ausgabe kann aus mehreren Arrays oder mehreren Zeichenfolgen bestehen, eine für jeden Player. Wenn Sie Zeichenfolgen verwenden, müssen Sie keine Trennzeichen verwenden (wenn Sie jedoch einige in Ihren Codetests hinzufügen könnten, wären wir für die Lesbarkeit dankbar). Wenn man sie tatsächlich irgendwie im Kreis drucken kann, ist das auch akzeptabel, und es wäre auch ziemlich cool.
Die Ausgabe muss nicht angeben, welche Spieler welche sind (es ist ziemlich offensichtlich, dass der erste Spieler derjenige ist, der sagt
1
). Wenn die Ausgabe jedoch aus irgendeinem Grund nicht sortiert ist, sollten Sie klarstellen, welcher Spieler welchen Satz von Zahlen spricht . Das Weglassen von Spielern, die nichts sagen, ist auch zulässig, wenn Sie klar machen, welche Spieler sprechen. Ich werde im Folgenden einige weitere Beispiele für mögliche Ausgaben hinzufügen.Das ist Codegolf, also gewinnt die kleinste Anzahl von Bytes.
Wie immer, wenn das Problem unklar ist, lassen Sie es mich bitte wissen. Viel Glück und gutes Golfen!
Beispiele
>>> 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
.) Ich sage nicht, dass das in Bezug auf die Herausforderung besser oder schlechter ist: Nur, dass es in der realen Welt nützlicher wäre.