Re: [其他] 翻譯: 超難的謎題 (Impossible puzzle)
※ 引述《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
06/28 13:16, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 4 篇):