Re: [其他] 翻譯: 超難的謎題 (Impossible puzzle)

看板Math作者 (LCamel)時間11年前 (2013/06/04 00:47), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/4 (看更多)
※ 引述《LCamel (LCamel)》之銘言: : 翻譯: 超難的謎題 (Impossible puzzle) : 人物: 我, 小雞, 小河 : 我: 已知 x, y 是整數, 1 < x < y, 且 x + y < 100 : 雞, 河: OK : 我: 接下來我只告訴小雞 x * y 是多少, 小河請等一下 : 河: OK : 我: (在小雞耳邊說了 x * y 是多少) : 雞: 收到 : 我: 接下來我只告訴小河 x + y 是多少, 小雞請稍等 : 雞: OK : 我: (在小河耳邊說了 x + y 是多少) : 河: 收到 : (一陣子之後) : 雞: 我算不出 x 和 y 是多少. : 河: 其實你開口前, 我就知道你算不出來了. : 雞: ... 聽你這麼一說, 我就算出來了. : 河: ... 聽你這麼一說, 我也算出來了. : 請問, x 和 y 到底是多少? : ===== : 原題: : http://people.sc.fsu.edu/~jburkardt/fun/puzzles/impossible_puzzle.html : http://en.wikipedia.org/wiki/Impossible_Puzzle : LCamel 自問自答一下: 以下為 scala 直譯題意版 object ImpossiblePuzzle extends App { type XY = (Int, Int) val xys0 = for { x <- 1 to 100 y <- 1 to 100 if 1 < x && x < y && x + y < 100 } yield (x, y) def sum(xy: XY) = xy._1 + xy._2 def prod(xy: XY) = xy._1 * xy._2 def sumEq(xy: XY) = xys0 filter { sum(_) == sum(xy) } def prodEq(xy: XY) = xys0 filter { prod(_) == prod(xy) } val xys2 = xys0 filter { sumEq(_) forall { prodEq(_).size > 1 }} val xys3 = xys2 filter { prodEq(_).intersect(xys2).size == 1 } val xys4 = (xys3 groupBy sum values) filter { _.size == 1 } println(xys4) } LCamel -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.42.47.117

06/28 13:16, , 1F
竟然在這裡看到Scala...
06/28 13:16, 1F
文章代碼(AID): #1HhCYQ_P (Math)
討論串 (同標題文章)
文章代碼(AID): #1HhCYQ_P (Math)