This comment is reply for 6478 genzou: 問題のご認識があるかもしれません。 気...(トランプの和と積のパズル). Go to thread root.
genzou #6484(2008/06/13 18:49 GMT) [ Groovy ] Rating0/0=0.00
トランプが9マイしかないロジックになってしまっていました・・・・ 修正。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
// 準備 def patterns = [] (1..13).each{ x -> (x..13).each{ y -> patterns << [x:x, y:y, a:x*y, b:x+y] } } println "=====シミュレーション=====" patterns.each{ pattern -> try{ // ■Aさんから見た回答 def avalue = pattern.a def potentialsA = patterns potentialsA = potentialsA.findAll{ it.a == avalue } if( potentialsA.size() == 1 ){ throw new Exception("わかってるジャン!") } // ■Bさんから見た回答 def bvalue = pattern.b def potentialsB = patterns potentialsB = potentialsB.findAll{ it.b == bvalue } if( potentialsB.size() == 1 ){ throw new Exception("わかってるジャン!") } //println potentialsB.size() //println potentialsB // Aさんの回答として2つ以上あるものを抜き出し if( potentialsB.collect{ it.a }.unique().size() <= 1 ){ // 回答がわかっている throw new Exception() } // ■結果 def potentials = potentialsA.intersect(potentialsB) if( potentials.size() >= 2 ){ throw new Exception() } println "■カードは ${pattern.x} と ${pattern.y}" } catch ( Exception ){ // 次へ } }
Rating0/0=0.00-0+
[ reply ]
genzou
#6484()
[
Groovy
]
Rating0/0=0.00
トランプが9マイしかないロジックになってしまっていました・・・・ 修正。
// 準備 def patterns = [] (1..13).each{ x -> (x..13).each{ y -> patterns << [x:x, y:y, a:x*y, b:x+y] } } println "=====シミュレーション=====" patterns.each{ pattern -> try{ // ■Aさんから見た回答 def avalue = pattern.a def potentialsA = patterns potentialsA = potentialsA.findAll{ it.a == avalue } if( potentialsA.size() == 1 ){ throw new Exception("わかってるジャン!") } // ■Bさんから見た回答 def bvalue = pattern.b def potentialsB = patterns potentialsB = potentialsB.findAll{ it.b == bvalue } if( potentialsB.size() == 1 ){ throw new Exception("わかってるジャン!") } //println potentialsB.size() //println potentialsB // Aさんの回答として2つ以上あるものを抜き出し if( potentialsB.collect{ it.a }.unique().size() <= 1 ){ // 回答がわかっている throw new Exception() } // ■結果 def potentials = potentialsA.intersect(potentialsB) if( potentials.size() >= 2 ){ throw new Exception() } println "■カードは ${pattern.x} と ${pattern.y}" } catch ( Exception ){ // 次へ } }Rating0/0=0.00-0+