分散知能団体PTSDによるスカウティングICO!
今回もWeb散らばる頭脳に対し挑戦を行いました。ブロックチェーン上の会員権のパスワードに問題をセットし、10問同時に公開し、3日持たせられるかどうかを試してみたところ、わずか3時間半ですべての問題が解かれてしまう結果となりました。
10問の解説の前にまず、このシステムの解説を手短にします。
会員権は分割不可能なコイン(というよりメダル)を10個用意し、こちらの機械的なアカウントを代理所有者にします。
この所有権・操作権限はこの機械的なアカウントではなく、パスワード(問題の答え)によって行うため、ブロックチェーンのアカウントを作っておらず、ウォレットもなくても、正解者ならば知らず知らずのうちにブロックチェーンを利用しているという仕様です。この古いパスワードを使って、新しいパスワードに変更するというのが、正解者が水面下で生むトランザクションです。
このコイン保有者には暗号学的に安全に認証ができるため、宿泊などの外部サービスがどんどん簡単につけることができるため、強い優待機能が今後付与されます。
では解答解説です
====解説===
2時が隠れていることが多いですが、2だけ特別なのです。他に12個数字があって2が特別なものはなんでしょう?2月だけは28日(あるいは29日)しかありません。この時計は各月の日数を時で割った余りです。最初はすべて1で割り切れるため、0になります。
王様のワイナリーには沢山のワインがある。ここに1滴でも飲んだら死ぬワインが投げ込まれた。そして1滴でもどんな強い毒でも打ち消せる解毒薬入のワインが1本もともとあったかもしれないらしい。30人の奴隷にワインを飲ませて毒入りワインを特定できるためには、もともとワインの本数は何本以下である必要があるか?
(ただし、ワインの毒が効くには23時間かかり、王様は1日しか待てない)
====解説===
まず、解毒ワインがなければどうでしょう?
1人の奴隷がワインを飲むと生死の状態により、2通りの表現ができるわけですから、X人奴隷がいると、2のX乗のワインを調べることができます。1000本のワインならば、10人の奴隷で調べることが可能です。
奴隷30人の生死の状態を順に並べた配列(長さ30のデジタルデータ)の表現能力というわけです。
具体化すると、4本のワインの毒検査は2人の奴隷だけで済みます。奴隷1人が1本目と2本目を飲む、2人目が2本目と3本目を飲むだけで済みます。2人とも死んだら2本目が毒入り、1人目だけ死んだら1本目、2人目だけが死んだら3本目、どちらも死なないなら4本目が毒入りです。
ここからが難しいのですが、ここに解毒剤入りのワインが1本入っているかもしれないとなると、上の例で、どちらも死なないときに、2本目が解毒剤入っていて1本目か3本目の毒が無効になっている可能性があり、4本目が毒入りかどうか分かりません。
奴隷30人の生死の状態を順に並べた配列(長さ30のデジタルデータ)に1箇所誤りが生まれると考えればよい。つまりこれは答えは、長さ30のデジタル符号を用いてハミング距離1の誤り訂正をした時の表現能力である。
ハミング符号の解説はこちら
ハミング距離1を訂正する長さ30のハミング符号には
符号長n
情報数 k
をもちいて、30>2^5-1 よりk = 30-5=25
2^25まで表現可能となる。
投げ込まれたワイン1本を含めてこの数であるため、答えは2^25-1
捜査員が明らかな詐欺っぽいセミナーを見つけた。参加してみたところ、スーツの男が大げさな身振りをしながら話を始めた。
「ピルガイツ財団は経済を回すために勇気ある者にお金を渡したいのです!!」
「(あなたが貰える報酬)=(あなたが投資した額)✕(全員の報酬合計)- 2億円 !!」
「みんなが勇気を出してお金を賭ければ、みんなを助けれる上、あなたはより多くの報酬をもらえる仕組みです!!」
「全員で勇気をだして、2億円の壁を超えてピルガイツたちと友情を築きましょう!!」
捜査員は笑いそうであったが、すぐにその笑みは消えた。喜びに涙する初老の女性や、焦りながら契約書に名前を書こうとする中年の男、連れてきた友達に得意そうな笑みの大学生の男。
1年後、スーツの男には罵声が飛ばされていた。どうやらこの男も利用されていた人らしい。
「お前らはいくら集めたんだよ!!?」
「財団は10万人から100億円と言っており、これは確かな情報にございます」
「詐欺だろっ!!!???」
「しかし、皆様にお伝えした計算式は確かに守られたものですし、契約書にもサイン頂きました。同意の下でございます・・・。」
さて、「財団」が得た利益はいくらか。
===解説===
個人それぞれの報酬が全員の報酬の合計によって導かれるが、全員の報酬の合計は個人それぞれを足したものであるというループが詐欺の核となっている。
男「(あなたが貰える報酬)=(あなたが投資した額)✕(全員の報酬合計)- 2億円 !!」
これをある人Nがg(N)円投資した時の報酬 f(N) と考えると次のように表現できる
f(N) = g(N)・Σ(n=1~100000) f(n) - 200000000
これでは計算できないので、報酬合計Σ(n=1~100000) f(n) = M と定数でおくと、
f(N) = g(N)・M -200000000 = g(N)・Σ (g(n)・M -2000000000) -200000000
よって、 M = Σ(g(n)・M -2000000000) = MΣg(n) -200000000*100000
Σg(n)=100億円より、
M=2000円
つまり報酬は10万人に合計2000円しか払われていない。
差し引いて9999998000円が財団の利益。
まるで、人が集まれば集まるほど利益が上がるような口ぶりだが、実際は人数の増加が報酬の減少に寄与する。
上の図形を下の4×4×2の図形に当てはめました。
===解説===
イメージの問題であるため、解答だけ記す。
下段が
IOOL
IOOC
IDSS
ISSY
上段が
TLLL
TTCC
TDCY
DDYY
である。
これは、サイコロの展開図が全く余りなく敷き詰められたものです。展開図同士の境界線を引いていき、各ア〜トに線が入れば1、なければ0を割あててください。ア〜トの01の順番がパスワードです。
===解説===
基本的に、端からあり得ない場合をを除去していき、消去法で精密にやるしかない。
別解があったらtwitter @leo_hioまでDMを
「聞く必要もなかったから知らなかったけど、そう言えばあなた、どこの人?」
「イギリスさ」
「生まれはロンドン?」
「よく分かったね!キングスクロスのあたりに昔住んでたよ。」
「そんな都会っ子が、よくもまーね。どんなカンジで街を出たの?」
「僕が私用の時の話だったんだけど」
「え、聞きたい!」
「大きなキャンペーンに出向くことになって」
「どこにいたの?」
「だいぶ前の方」
「そりゃ大変だ!」
「苦労しながら、人生を大切にしたからこそ今があるよ」
「偉くなったもんね」
「まー、同じところに10年もいりゃ3回くらいは出世するもんさ」
この男の方の肩書を答えて下さい。全て小文字スペースがあれば抜いて下さい。
===解説===
イギリス出身であることから察するにこの会話は日本語ではなく英語でされたものかと勘ぐることができる。
つまり、日本語に直した際に違いが生まれる。
私用はprivate
キャンペーンはcampaign
前はfront
人生はlife
であり、この男は軍人である。privateは二等兵の意味であり、その後イギリス陸軍内で3回出世したことが分かる。つまり軍曹sergeantが答えである。
2 ✕2✕ 2の立方体格子のすべての辺が黒く塗られている。
初め角の頂点にいる人が辺を通って隣の頂点に移動したい。移動しながら必ず、通過する辺を黒か白のペンキで塗らなければならない。隣の頂点に移動する時に黒で塗るなら10分、白で塗るなら30分かかる。すべての辺を白く塗るために必要な時間は何秒か??
(ただし、もう白い辺を白で塗る時も30分、もう黒い辺を黒で塗る時も10分かかる)
===解説===
一筆書きは不可能である。簡単な閉路図を頭に描いて想像して頂きたいが、接続する辺が奇数である辺が0個か2個でないと閉路を一筆書きをすることはできず、コレ以外の場合その頂点の数だけ無駄が生じる。
一筆書きできない分は黒で塗ったあと白で塗らないといけない。
1つの頂点に接する辺の数が奇数であるような頂点は8+6で14個
スタートの角と終わりの角は取り除けるので無駄な数は12辺
10分×12辺 + 30分で54辺 の合計時間を秒数に直すと答えになる。
検索エンジンを使って下さい
===解説===
色の革命である。
起きた年(20XX年)、起きた国の頭文字、起きた場所の座標が記されている。Xはキエフの座標である。
これらの革命は米国資本が入った政治工作的要素を孕むが、特にウクライナのオレンジ革命においては、民主党外交戦略顧問の地政学者ズビグネフ・ブレジンスキーがピンポイントでウクライナを戦略の核だと設定したことから、米露両者の最も激しい代理紛争の抗争地となった。2014年、軍事行動を起こしにくいソチオリンピック開催期間に米国がウクライナの反新露デモを支援した際、オリンピックとパラリンピックの合間を縫って露軍がクリミア半島を占領。同時に露潜水艦がキューバ沖に展開された。クリミア半島はロシアに併合され、2000年以降最も大きな地政学的イベントとなり、2014年7月17日の民間機撃墜事故につながる。これが同日のイスラエルのガザ地上部隊大規模侵攻などのドミノ的現象を引き起こしたことから、現在の状況への分岐点といえる事象である。
ある米政権関係者のemailがwikileaksに大量に流出し、これらの介入の様子やジョージ・ソロスの財団への接触などが記されている。(リスト)
ブレジンスキー氏の死後、トランプ政権ではシンクタンクによる政策への影響が排除された。
図のゼロ秒目の状態(t=0)のように、5×5のマスの四隅が欠けたフィールドがある。各マスa~vに21人の人がいる。1秒ごとにその場にとどまるか次の場所を隣の4マスから1つ選択できるが、各秒目には常にすべてのマスに人が一人ずついなければならない。最初 b にいた人がuに、uにいた人がbに、iにいた人がmに、mにいた人がiに移動したいとする。この時間は少なくともX秒である。最初kにいた人がX秒後にいる可能性のあるマスはアルファベット順にYである。
パスワードはXとYをつなげたもの(例:200abc)である。
===解説===
以下の厳密なパズルを解いて下さい
生物学者がある生物(※実在しません)について研究していたとき、その模様に規則性のあることを発見した。 この生物の体は細長く、白い部分と黒い部分があり、生後からちょうど 1 週間ごとに脱皮して模様が変化するのだが、脱皮前の模様が同じ個体は、脱皮後の模様も同じだったのである。 模様の種類には限りがあることがわかったので、それぞれの模様に 0 から 255 までの番号を与えた。 模様の規則性を探るべく、生後 1 週間以上経った模様番号 177 の個体 α を観察したところ、
177, 108, 91, 54, 173, 90, 53, 170, 85, 42, 149, 74, 37, 146, 73, 36, 147, 74, 37, 146, ...
という順に 1 週間ごとに変化した。 どうやらある部分の脱皮後の色は、脱皮前にその周辺がどのような模様だったかで決まるらしいと推論した。 また、別の模様番号 91 の個体 β は生後 13 週間以上経っていると判明した。 模様を見ただけでは何週間生きた個体かは判別できないようだった。
以下の A, B に当てはまると予想される模様番号をドットで連結した文字列がパスワードになっている。 例えば、 A = 0, B = 255 が答えならば、 0.255 (すべて半角)がパスワードになっている。 A = (模様番号 177 の個体 α の直前の模様番号) B = (模様番号 91 の個体 β の直前の模様番号)
===解説===
ライフゲーム、セル・オートマトンの問題である。
模様の黒を 1 , 白を 0 で表す。
体を 8 つの部分に分けて 1列に並べる。
この 0,1 から成る文字列を 2 進数として解釈したものが模様番号である。
000 001 010 011 100 101 110 111 (脱皮前)
1 0 0 1 1 1 0 0 (脱皮後)
ただし、文字のないところは 0 とする。例えば、
01011011 (模様番号 91)
00110110 (模様番号 54)
最初の観察では、 111 が何に変化するか判断できないが、 個体 α が既に脱皮を経験しているという条件から 0 だとわかる。 1 にしてしまうと、脱皮したら 177 になる模様番号が存在しなくなる。 この規則のもとで脱皮したら 177 になるのは 222 しかないので、
A = 222 である。
また、 脱皮したら 91 になるのは 108 か 172 だが、
108 は高々 3 週間生きた個体しか存在しない。
(216, 183, 108 か 222, 177, 108)
172 は 12 週間生きた個体が存在しうる。
(0, 255, 128, 127, 64, 63, 160, 95, 48, 175, 88, 55, 172)
よって、該当するのは B = 172 となる。
(が、 2 通りしか可能性がないため、どちらも試してしまえば良い)
パスワードは 222.172 である。
Javascriptコード
const trans = [1, 0, 0, 1, 1, 1, 0, 0];
function shed(pre) {
let post = 0;
for (let i = 0; i < 7; ++i) {
post |= trans[(pre >> (6 - i)) % 8];
post <<= 1;
}
post |= trans[(pre << 1) % 8];
return post;
}
const pattern = Array.from({length: 256}, (v, i) => shed(i));
const parent = Array.from({length: 256}, (w, j) => {
return pattern.reduce((acc, v, i) => {if (v === j) acc.push(i); return acc;}, []);
});
const A = parent[177][0];
const B = parent[91].filter((v) => v !== 108)[0];
console.log(`${A}.${B}`);