Решение на От ливадите до Лас Вегас (и назад) от Кристиан Иванов

Обратно към всички решения

Към профила на Кристиан Иванов

Резултати

  • 1 точка от тестове
  • 0 бонус точки
  • 1 точка общо
  • 2 успешни тест(а)
  • 13 неуспешни тест(а)

Код

import random
class Card:
def __init__(self, suit, face):
self.suit = suit
self.face = face
def get_suit(self):
return self.suit
def get_face(self):
return self.face
class Deck:
def __init__(self, face_filter):
self.face_filter = face_filter
def cut(self):
cards_len = len(self.face_filter) - 1
cutting = random.randint(0, cards_len)
cut_cards = []
for i in range(cutting, cards_len):
cut_cards.append(self.face_filter[i])
for i in range(0, cutting):
cut_cards.append(self.face_filter[i])
self.face_filter = cut_cards
def shuffle(self):
random.shuffle(self.cards)
def get_cards(self):
return self.cards
class Player(Deck):
pass
class Game:
def __init__(self, number_of_players, dealing_direction, dealing_instructions):
self.number_of_players = number_of_players
self.dealing_direction = dealing_direction
self.dealing_instructions = dealing_instructions
self.deck = Deck()
def get_players(self):
players = []
for i in range(0, self.number_of_players):
person = Player()
players.append(person)
return players
def prepare_deck(self):
players = self.get_players()
cards = []
for player in players:
cards.append(player.get_cards())
deck = Deck(cards)
deck.shuffle()
deck.cut()
def deal(self, player):
players = self.get_players()
if self.dealing_direction == 'lhs':
players.reverse()
i = 0
for person in players:
if player == person:
break
else:
i += 1
dealing_order = []
for j in range(i, len(players) - 1):
dealing_order = players[j]
for j in range(0 , i):
dealing_order = players[j]
for instruction in self.dealing_instructions:
for j in range(instruction):
for person in dealing_order:
person = Deck(self.deck[0])
self.deck.pop(0)
def get_deck(self):
return self.deck
class Belot:
def __init__(self):
Game(4, 'ltr', (2, 3, 3))
class Poker:
def __init__(self):
Game(9, 'rtl', (1, 1, 1, 1, 1))

Лог от изпълнението

EE..EEEEEEEEEEE
======================================================================
ERROR: test_correct_deck_init (test.TestBelot)
Test initialization with correct deck.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/storage/deedee/data/rails/pyfmi-2022/releases/20221115154139/lib/language/python/runner.py", line 67, in thread
    raise result
TypeError: Deck.__init__() missing 1 required positional argument: 'face_filter'

======================================================================
ERROR: test_correct_direction_and_players_deal (test.TestBelot)
Test dealing with correct direction and players.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/storage/deedee/data/rails/pyfmi-2022/releases/20221115154139/lib/language/python/runner.py", line 67, in thread
    raise result
TypeError: Deck.__init__() missing 1 required positional argument: 'face_filter'

======================================================================
ERROR: test_cutting_deck (test.TestDeck)
Test cutting a deck.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/storage/deedee/data/rails/pyfmi-2022/releases/20221115154139/lib/language/python/runner.py", line 67, in thread
    raise result
AttributeError: 'Deck' object has no attribute 'cards'

======================================================================
ERROR: test_init_filtered (test.TestDeck)
Test initialized cards with filter.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/storage/deedee/data/rails/pyfmi-2022/releases/20221115154139/lib/language/python/runner.py", line 67, in thread
    raise result
AttributeError: 'Deck' object has no attribute 'cards'

======================================================================
ERROR: test_init_regular (test.TestDeck)
Test initialized cards without filter.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/storage/deedee/data/rails/pyfmi-2022/releases/20221115154139/lib/language/python/runner.py", line 67, in thread
    raise result
TypeError: Deck.__init__() missing 1 required positional argument: 'face_filter'

======================================================================
ERROR: test_shuffling_deck (test.TestDeck)
Test shuffling a deck.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/storage/deedee/data/rails/pyfmi-2022/releases/20221115154139/lib/language/python/runner.py", line 67, in thread
    raise result
TypeError: Deck.__init__() missing 1 required positional argument: 'face_filter'

======================================================================
ERROR: test_collecting_cards_before_dealing (test.TestGame)
Test collecting the cards before a new deal.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/storage/deedee/data/rails/pyfmi-2022/releases/20221115154139/lib/language/python/runner.py", line 67, in thread
    raise result
TypeError: Deck.__init__() missing 1 required positional argument: 'face_filter'

======================================================================
ERROR: test_dealing_ltr (test.TestGame)
Test dealing the cards left to right.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/storage/deedee/data/rails/pyfmi-2022/releases/20221115154139/lib/language/python/runner.py", line 67, in thread
    raise result
TypeError: Deck.__init__() missing 1 required positional argument: 'face_filter'

======================================================================
ERROR: test_dealing_rtl (test.TestGame)
Test dealing the cards right to left.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/storage/deedee/data/rails/pyfmi-2022/releases/20221115154139/lib/language/python/runner.py", line 67, in thread
    raise result
TypeError: Deck.__init__() missing 1 required positional argument: 'face_filter'

======================================================================
ERROR: test_players_creation (test.TestGame)
Test creation and retrieval of players.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/storage/deedee/data/rails/pyfmi-2022/releases/20221115154139/lib/language/python/runner.py", line 67, in thread
    raise result
TypeError: Deck.__init__() missing 1 required positional argument: 'face_filter'

======================================================================
ERROR: test_prepare_deck (test.TestGame)
Test preparing the deck for dealing.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/storage/deedee/data/rails/pyfmi-2022/releases/20221115154139/lib/language/python/runner.py", line 67, in thread
    raise result
TypeError: Deck.__init__() missing 1 required positional argument: 'face_filter'

======================================================================
ERROR: test_correct_deck_init (test.TestPoker)
Test initialization with correct deck.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/storage/deedee/data/rails/pyfmi-2022/releases/20221115154139/lib/language/python/runner.py", line 67, in thread
    raise result
TypeError: Deck.__init__() missing 1 required positional argument: 'face_filter'

======================================================================
ERROR: test_correct_direction_and_players_deal (test.TestPoker)
Test dealing with correct direction and players.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/storage/deedee/data/rails/pyfmi-2022/releases/20221115154139/lib/language/python/runner.py", line 67, in thread
    raise result
TypeError: Deck.__init__() missing 1 required positional argument: 'face_filter'

----------------------------------------------------------------------
Ran 15 tests in 0.183s

FAILED (errors=13)

История (1 версия и 8 коментара)

Кристиан обнови решението на 15.11.2022 17:55 (преди над 1 година)

+import random
+
+
+class Card:
+ def __init__(self, suit, face):
+ self.suit = suit
+ self.face = face
+
+ def get_suit(self):
+ return self.suit
+
+ def get_face(self):
+ return self.face
+
+
+class Deck:
+ def __init__(self, face_filter):
+ self.face_filter = face_filter
+
+ def cut(self):
+ cards_len = len(self.face_filter) - 1
+ cutting = random.randint(0, cards_len)
+
+ cut_cards = []
+ for i in range(cutting, cards_len):
+ cut_cards.append(self.face_filter[i])
+
+ for i in range(0, cutting):
+ cut_cards.append(self.face_filter[i])
+
+ self.face_filter = cut_cards
+
+ def shuffle(self):
+ random.shuffle(self.cards)
+
+ def get_cards(self):
+ return self.cards
+
+
+class Player(Deck):
+ pass
+
+
+class Game:
+ def __init__(self, number_of_players, dealing_direction, dealing_instructions):
+ self.number_of_players = number_of_players
+ self.dealing_direction = dealing_direction
+ self.dealing_instructions = dealing_instructions
+ self.deck = Deck()
+
+ def get_players(self):
+ players = []
+
+ for i in range(0, self.number_of_players):
+ person = Player()
+ players.append(person)
+
+ return players
+
+ def prepare_deck(self):
+ players = self.get_players()
+ cards = []
+
+ for player in players:
+ cards.append(player.get_cards())
+
+ deck = Deck(cards)
+ deck.shuffle()
+ deck.cut()
+
+ def deal(self, player):
+ players = self.get_players()
+
+ if self.dealing_direction == 'lhs':
+ players.reverse()
+
+ i = 0
+ for person in players:
+ if player == person:
+ break
+ else:
+ i += 1
+
+ dealing_order = []
+ for j in range(i, len(players) - 1):
+ dealing_order = players[j]
+
+ for j in range(0 , i):
+ dealing_order = players[j]
+
+ for instruction in self.dealing_instructions:
+ for j in range(instruction):
+ for person in dealing_order:
+ person = Deck(self.deck[0])
+ self.deck.pop(0)
+
+ def get_deck(self):
+ return self.deck
+
+
+class Belot:
+ def __init__(self):
+ Game(4, 'ltr', (2, 3, 3))
+
+
+class Poker:
+ def __init__(self):
+ Game(9, 'rtl', (1, 1, 1, 1, 1))