Puzzle:[OpenSource Institute 攻略 Bonus編]

Bonus問題。といっても簡単なわけではない。本編との違いは問題が選べるところかな。

Bonus.1 SuperStego

言われたとおりにファイルを処理すればいい。

Where theres a difference, in one, move after and XOR.

暗号化はきっと、適当に選んだ数バイトとメッセージをXOR演算し、 さらに各位置の一つ前の1バイトを結果で置き換えたのだろう。

Bonus.2 Mersenne Twister

関数MT(seed)について、下の作業を一サイクルとする。

  1. seedを入力する
  2. 出力MT(seed)を記録する
  3. MT(seed)を新しいseedとする

このサイクルを13回繰り返し、それぞれの数のmod 6をとった数列が与えられたとき、一番初めのseedを 求めよ。

function MT(seed)
{
  s1 = seed
  s1 ^= (s1 >> 11)
  s1 ^= (s1 << 7 ) & 0x9d2c5680U
  s1 ^= (s1 << 15) & 0xefc60000U
  s1 ^= (s1 >> 18)
  return s1
}

seedは大きな数字になるので、unsigned long intを使う。

また、与えられた数列になるseedは複数ある。1つ目でダメなら2つ目、3つ目を試す。

Bonus.3 Big Numbers

RubyはBignumに対応している。しかも、基数を指定した文字列→整数変換もできる。 あとは結果を眺めるだけ。

Bonus.5 Evil Pyramid

1
11
21
1211
111221
...

44番目の数列の数をすべて足した値を求めよ。 各数列は、前の数列で、ある数字が何個連続しているかを表している。 たとえば、1211は1個の1、1個の2、2個の1なので111221となる。

少し考えると分かるように、1からはじめると、3より大きい数(4,5,6,..)は出てこないので、 左から順に数字が1個の場合、2個の場合、3個の場合に場合分けして考えたらいい。

Bonus.9 Brute Force

MD5.dllを使うと楽。

文字列の生成は、forループを重ねてもよいし、再帰関数でつくってもいい。 文字数もそれほど多くはないし。

Bonus.11 The Birds

ある場所にはいくつかの木があって、それぞれの木には二羽以上の鳥がいるのだという。 しかも、それぞれの木の鳥の数はみんな同じと言うけったいな状況。さらに、そこにい る鳥の総数を聞けば、木が何本生えているか分かるらしい。鳥の数は200から300の間。 さあ、鳥の総数は何羽?

[鳥の総数] = [木の本数] * [それぞれの木にいる鳥の数]

ふつうなら、鳥の総数が分かっても、それぞれの木にいる鳥の数が分からなければ、木の本数は分からないはず。それが分かるということは?木の本数が一通りに決まることに注意!

Bonus.12 Bathtime

熱いお湯の蛇口だけ出すと、4分でお風呂がいっぱいになる。冷たい蛇口だけ出すと5分かかる。 また、いっぱいの状態で栓を抜くと、10分で空になる。

では、栓を抜いた状態で、両方の蛇口から水を出すと、いっぱいになるのに何分何秒かかるだろう?

1分あたり、どれだけ水が溜まるのかを考える。

Bonus.13 Maximizing a Cone

問題は難しくないのだけれど、答え方で戸惑うかも。

まずは、元の円の半径を1、円錐の半径をrとして体積を求める式を書くと楽。 あとは、最大値をとるrを計算して、角度に直すだけ。rは数値計算でないと出ない。

ちなみに、答えは小数点以上を含めて4桁に丸める。(e.g. 123.45 => 123.5)

Your answer should be rounded to four significant figures

Bonus.15 Logic Cards

2から10までの数字の書かれた9枚のカードが3行3列に並べてある。

ABC
DEF
GHI

それぞれのカードの場所について、以下のことが分かっている。

  1. FとAは奇数
  2. Dは2でない
  3. B+E+H = 19
  4. D+E+F = 11
  5. The combined value of B and C is 10. ( B + C = 10? )
  6. G > I

同じ数はないはずだから、2から10の順列をつくって確認すればいい。

戻る

2007-07-15 公開 2007-09-06 更新 Copyright(C) 2007 tar0t All rights reserved.