코드에 문제가있어서 변경할 필요가없는 것 같습니다. 여기에 3 개의 파일이 있으며 맨 아래에 오류가 있습니다. 정확한 코드는 18 번이고 그 중 절반은이 오류입니다. 순위, 소송을 초기화단위 테스트 에러가 정의되지 않았습니다. 메소드 'rank'for 1 : Fixnum
및 기호
def initialize(the_rank, the_suit)
@rank = the_rank
@suit = the_suit
@symbols = [nil, nil, '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A']
end
새 파일 Pokerhand.rb
: 는 필요한 는 "./Deck"을 요구 는 "./Card을"필요 "./Constants"을 "이 필요합니다./CardSpaceship "class PokerHand < Deck
include Constants
attr_reader :hand_type
def initialize(the_cards)
@cards = [ ]
@hand_type = UNCLASSIFIED
for card in the_cards
@cards << card
end
end
# Straight
elsif @cards[0].rank == @cards[1]+1.rank &&
@cards[1].rank == @cards[2]+1.rank &&
@cards[2].rank == @cards[3]+1.rank &&
@cards[3].rank == @cards[4]+1.rank
@hand_type = STRAIGHT
end
end
새 파일 test2.rb :
class PokerHand < Deck
include Constants
attr_reader :hand_type
def initialize(the_cards)
@cards = [ ]
@hand_type = UNCLASSIFIED
for card in the_cards
@cards << card
end
end
# Determine hand type of PokerHand object.
def classify
@cards.sort!
# Straight
def test_7
arr7 = [Card.new(2, "C"), Card.new(3, "S"),
Card.new(4, "H"), Card.new(5, "D"),
Card.new(6, "S")]
ph7 = PokerHand.new(arr7)
ph7.classify
assert_equal STRAIGHT , ph7.hand_type
end
점점 오류 : 시작을 위해
TestClass#test_7:
NoMethodError: undefined method `rank' for 1:Fixnum
PokerHand.rb:79:in `classify'
test2.rb:76:in `test_7'
많은 시스템에서 카드는 '2D', '3C', ... 'TH', 'AS'와 같이 표현됩니다. 'T'는 모두 10 개의 문자를 일관되게 유지하기 위해 10을 나타냅니다. – tadman
'@ cards.map (& : suit) .uniq.length == 1' 같은 스트레이트 플러시를 테스트 할 수도 있습니다. 모두 동일한 슈트를 가지고 있음을 의미합니다. 순차적 인 카드의 경우'rank'를 정렬해야합니다. "똑 바른 플러쉬"코드가 작동하는 유일한 방법은 똑같은 카드 다섯 개가있는 경우입니다. – tadman
내 코드를 수정했고 그 중 1/3은 괜찮 았지만 다른 코드는 동일한 오류가 발생했습니다 – Julian