Rod moderiert ein Kartenspiel zwischen zwei Spielern: George und Tim. Derzeit mischt Tim die Karten. Rod vermutet, dass Tim versucht zu schummeln, also braucht er deine Hilfe, um zu überprüfen, ob das Shuffle fair ist.
Tim mischt die übergebenen Karten: Er schneidet einen Stapel Karten vom unteren Ende des Stapels ab, schneidet dann verschiedene Teile vom oberen Ende des Stapels auf den oberen Rand des Stapels und wiederholt den Vorgang einige Male.
Rod hat Adleraugen und kann genau sehen, wie viele Karten Tim jedes Mal schneidet. Er kann die Karten jedoch nicht so schnell berechnen und verfolgen, wie Tim sie mischt. Hier kommen Sie ins Spiel: Rod möchte, dass Sie ein Programm oder eine Funktion schreiben, die die detaillierten Informationen zum Mischen abruft und feststellt, ob das Mischen fair, schwach oder trickreich ist.
- Wenn nach dem Mischen weniger als 25 Paare benachbarter Karten nebeneinander liegen (in derselben Reihenfolge), ist das Mischen fair und das Spiel kann fortgesetzt werden.
- Wenn mindestens 25 (aber nicht alle) Paare benachbarter Karten nebeneinander liegen, ist die Mischung schwach und Rod schlägt Tim über den Kopf und bittet ihn, weitere Karten zu mischen.
- Wenn alle Karten am Ende in der gleichen Position bleiben, betrügt Tim offensichtlich und Rod schlägt ihn mit einer großen Forelle.
Dies ist Codegolf, also gewinnt der kürzeste Code.
Eingang:
Sie erhalten eine Reihe von Zahlen zwischen 0 und 52 (beide exklusive), die durch ein Leerzeichen voneinander getrennt sind. Dabei steht jede Zeile für eine Mischrunde, die mit allen gestapelten Karten beginnt und endet.
In jeder Zeile ist die erste Zahl die Anzahl der Karten, die Tim vom unteren Ende des Decks abschneidet, und jede nachfolgende Zahl ist die Anzahl der Karten, die er von seiner Hand auf die Oberseite des Decks fallen lässt. Wenn nach der letzten Zahl in einer Zeile noch Karten übrig sind, sollten Sie davon ausgehen, dass Tim sie oben auf den Stapel legt.
Die Eingabe ist garantiert gültig. Es gibt mindestens eine Zahlenzeile und jede Zeile enthält mindestens 2 Zahlen. Die erste Zahl in jeder Zeile ist nicht kleiner als die Summe aller anderen Zahlen in derselben Zeile. Ein abschließender Zeilenumbruch ist optional. Sie können davon ausgehen, dass der Eingang einen hat oder dass er keinen hat.
Ausgabe:
Ihr Programm sollte "fair" drucken / zurückgeben, wenn das Mischen fair ist, "schwach", wenn das Mischen schwach ist, und "trick", wenn Tim alle Karten in derselben Reihenfolge hält. Ein abschließender Zeilenumbruch ist optional.
Beispiel:
Es wird davon ausgegangen, dass das Kartenspiel 52 Karten enthält. Zu Demonstrationszwecken verwende ich jedoch ein kleineres Kartenspiel mit 10 Karten.
Eingang:
5 3 1
4 2 2
Anfangsstapel von oben gesehen 0 1 2 3 4 5 6 7 8 9
5
:: 0 1 2 3 4
( 5 6 7 8 9
in der Hand)
3
➜ 5 6 7 0 1 2 3 4
( 8 9
in der Hand)
1
➜ 8 5 6 7 0 1 2 3 4
( 9
in der Hand)
Linienende ➜ 9 8 5 6 7 0 1 2 3 4
4
➜ 9 8 5 6 7 0
( 1 2 3 4
in der Hand)
2
➜ 1 2 9 8 5 6 7 0
( 3 4
in der Hand)
2
➜3 4 1 2 9 8 5 6 7 0
4 Paare bleiben benachbart:(3 4) (1 2) (5 6) (6 7)
Testfälle:
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5 5
Ausgabe: fair
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5
Ausgabe: weak
29 24
19 18
38 2 1 8 13 6 4
47 15 16 5 2 1 7
34 22 9 3
44 9 10 11 3 1 7
33 18 4 2 3 3
Ausgabe: fair
24 6 12 4
25 3 19
36 4 25 2
19 11 1 3
15 9 3
37 5 27
Ausgabe: weak
26 13
26 13
26 13
26 13
Ausgabe: trick
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
Ausgabe: weak
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
Ausgabe: trick
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
49 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
Ausgabe: fair
Bedarf:
- Wenn Sie eine Funktion schreiben, kann diese entweder von der Standardeingabe lesen oder die Eingabe als einzelner Zeichenfolgenparameter empfangen. Außerdem kann die Funktion die Ausgabe entweder ausdrucken oder zurückgeben.
- Das Programm muss unter Linux mit frei verfügbarer Software lauffähig sein.
- Der Quellcode darf nur ASCII-Zeichen enthalten.
- Keine Standardlücken.
quelle
Antworten:
Pyth, 62 Bytes
Demonstration.
quelle
CJam,
7675 BytesProbieren Sie es online im CJam-Interpreter aus .
quelle
JavaScript,
292289 BytesDies könnte wahrscheinlich mehr Bytes herausholen, aber es ist vorerst ein schneller erster Durchgang:
BEARBEITEN: Speichert 3 Bytes, indem der Wert
i
aus der Deck-Building-Schleife beim Zählen der Anzahl benachbarter Karten wiederverwendet wird .quelle