Comment detail
ポーカーの役判定 (Nested Flatten)すみません、1箇所ミスってました。
1 2 3 4 5 6 7 8 9 | @@ -8,7 +8,7 @@
case _ => false
}
val flush_? = cs.forall(cs(0)._1 == _._1)
- val st_? = (1 to 9).map(i=>cs(0)._2==i && cs(4)._2==i+4).exists(true==) || royalSt_?
+ val st_? = (1 to 9).map(i=>(0 to 4).forall(j=>cs(j)._2==i+j)).exists(true==) || royalSt_?
val p = (((List(List[(char,int)]())) /: List.make(2, cs)){
for(i <-_; j <-_) yield j::i
}.filter(c=>c(0)._2 == c(1)._2).size - 5)/2
|





yuin
#5156()
[
Scala
]
Rating6/6=1.00
パターンマッチって素晴らしい。
object Poker { def whatHand_?(_cs:String) = { val rank = Map((0 to 12).map(i => "A23456789TJQK"(i) -> (i+1)).toArray:_*) val cs = (0.until(_cs.size, 2)).map(_cs.substring). map{s=>(s(0), rank(s(1)))}.toList.sort(_._2<_._2) val royalSt_? = cs match{ case List((_,1),(_,10),(_,11),(_,12),(_,13)) => true case _ => false } val flush_? = cs.forall(cs(0)._1 == _._1) val st_? = (1 to 9).map(i=>cs(0)._2==i && cs(4)._2==i+4).exists(true==) || royalSt_? val p = (((List(List[(char,int)]())) /: List.make(2, cs)){ for(i <-_; j <-_) yield j::i }.filter(c=>c(0)._2 == c(1)._2).size - 5)/2 (royalSt_?, flush_?, st_?, p) match { case (true, true, _, _) => "Royal flush" case (_, true, true,_) => "Straight flush" case (_, true, _ ,_) => "Flush" case (_, _, true ,_) => "Straight" case (_,_,_, 6) => "Four of a kind" case (_,_,_, 4) => "Full house" case (_,_,_, 3) => "Three of a kind" case (_,_,_, 2) => "Two pairs" case (_,_,_, 1) => "One pair" case _ => "No pair" } } }Rating6/6=1.00-0+
1 reply [ reply ]