RSS

 

RSS


 問題:5円玉の山二つ の答え合わせ。

 答えは c = a + b + a × b 。
 計算すれば、正しいことがわかるが・・・。

 論理演算の「and  と xor  を使って or を表す」のに対応している。

(x xor y) xor (x and y) = x or y

x  y    x xor y(①)  x and y(②) ① xor ② 
0  0        0       0         0
0  1        1       0         1
1  0        1       0         1
1  1        0       1         1

 5円の下一桁計算式では×がand 、+が xorの役割を果たしている。また、0は「10で割り切れる」、1は「10で割り切れない」を表している。

 not を実現するためには、「後で返すからさぁ、5円玉一枚貸してよ~」と頼む必要がある?(笑)

/////

 社内のWSSさんから投稿後間もなく正解メールを頂いた。反応があるのは嬉しい。あまりの素早さに「瞬殺ですね」と返信した。


  • コメント (3)
  • トラックバック (0)
トラックバックURL :
http://www.iwai-masaka.jp/tb.cgi/41920

コメント

「難易度は易しい」って書いてあったので。。。

Excelなんかで式(1行プログラミング)書く時、こういうアイディアが役にたつよね。

でも時間がたつと
自分でも判らなくなるんだけどね。

  • Posted by 瞬殺WSSです
  • at 2008/02/08 16:39:46

私は
c = not (not a and not b)
で考えました。
いわいさんが書かれているように not は5円足すのに相当するので、

c = 5 + ((5 + a) * (5 + b))
  = 5 + (25 + 5a + 5b + ab)
  = 30 + 5a + 5b + ab

問題の条件から 30 ≡ 0, 5a ≡ a, 5b ≡ b なので、
c = a + b + ab

山を増やすのも簡単で、上の式をc(a, b)とすると、山三つ(x, y, z)の場合は
c(x, y, z) = c(c(x, y), z)
           = c((x+y+xy), z)
           = (x+y+xy) + z + (x+y+xy)*z
           = x+y+z + xy+yz+zx + xyz
で、四つ以上の場合も容易に推測できます。

  • Posted by tioak
  • at 2008/02/08 17:09:18

瞬殺wssさん、tioakさんコメントありがとうございます。

問題作成時(数ヶ月前)はtioakさんと同じ考えをしたように思います。

でも時間がたって自分でも判らなくなり、今回の別解的解説になりました。

  • Posted by いわいまさか
  • at 2008/02/08 17:43:07