忍者ブログ
Новый порядок неба
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



リクルートホールディングス サマーインターンシップ 2014に挑戦してみました。浪人生ですが。ごめんなさい
これは、Web上でターミナルのようなものを操作して、用意された5つの暗号を解いていくというものです。詳細は実際にやってみたほうがわかりやすいと思います。
インターンシップの応募期間が過ぎたので、それぞれの問題の解法も(分かったところは)書いていきます。解答そのもののネタバレもありますので、ご注意ください。
ある程度真面目に解きましたが、チートやショートカットやその他正攻法でないと思われる解法も用いています。

挑戦開始とQ1

まずヒントにlsコマンドを使ってみようと書いてあったので、Linuxか何かの端末なんだなと
Linuxは多少使っていますが、lsコマンドとcdコマンド以外は毎回ググって調べる必要がある程度の知識しかありません。
ヒントにcatコマンドでファイルを出力できる、と書いてあったので、q1のQuestion.txtの内容を出力すると、Q1の問題が表示されました。
そもそもcatコマンドとか知らなかったので、この先大丈夫なのか、と思いましたが、結局ほとんどcatだけで最後まで進めました。
問題内容の詳細は実際のサイトで確認してください。

Q1-1は、Hintの通り、Javascriptの正規表現です。
F-12キーでChromeのJavascriptコンソールを開いて、問題文をそのままコピペで突破。

Q1-2は、左辺の2つの数を2進数化していけば、法則性が見えてきました。
真ん中の1を境にして、左側には左の数の2進数表記、右側には右の数の個数だけ0が並んでいるとか、おそらくそのような感じ。

Q1-3、これは与えられた数字を4bit化して、左右を並び替えたものが変換後の数字です。

Q1-4、ヒントにグレイコードと書いてありましたが、グレイコードが何なのかはよく知りません。
検索して5bitのグレイコード表か変換スクリプトだかを探してきて、とりあえず当てはめて突破しました。

Q1-1から1-4までで、4つの数値が得られました。
Q1の問題文は、
"Pick up characters from PATH."
だったので、PATHというものから、4つの数値に対応した文字を取ってこれば答えになるものと思われます。
pathというと、Windowsでは環境変数としてよく使用します。
Linuxでも同様のものがあるのではないかと考え、"Linux path"あたりで調べたところ、
echo $PATH
でPATHの確認ができることがわかり、PATHの取得に成功しました。
あとは適当にPythonのインタプリタなどを起動し、PATHの文字列を変数に放り込み、得られた数値の要素にアクセスすることで解答 "life" が得られました。
エンジニアらしく、最初の文字は0番目として数えないといけません。

Q2

コマンドの一覧が表示され、それに対応した数値が表として与えられます。
まず注目したのが、cdとcpのそれぞれに対応する数値の差が12であり、これはアルファベットのdとpの番号の差と一致することです。
そこで私は、少なくとも一番右の文字の文字コードと数値に関連性があると考えました。
これは間違いだったようで、aを97として数え始めてしまったためにそれ以上の法則性を見出すことができませんでした。実際にはaを0や1として調べたり、csやcmといった文字に対応する数値を求め、これとlsやrmとを比較することでルールが見出せるようです。
しかし私はこのルールを見つけることができませんでした。
代わりに、問題となっているコマンドの数値が1029、そしてrmコマンドの数値が994と、割と近いことに気付きます。
少なくとも26以上は差があるので、rの次のアルファベットであるsに見当をつけ、sa,sb,sc,...と総当たりでコマンド入力を開始。
slコマンドで汽車が走ったところで、もしやこれが正解ではと思い、案の定正解。
3回汽車を走らせると、汽車に "universe" という文字が書かれました。

Q3

ls -aオプションで、隠しファイルを見つけなければいけません。
実はQ5のヒントとして隠しファイルの存在が示唆されているのですが、同様にそれを用いなければならないQ3にそのヒントが無かったように思えるので、すぐこれを発見できたのは幸運でした。
とはいえ問題文はすべて一見して何の意味もないような文章です。
文字の出現回数を調べたり、大文字だけ取り出して並べ替えたりしてみましたが、大した成果は得られず。
時間だけを浪費した挙句、ふと文章全体を眺めたところ、答えが見えました。
文章の先頭の大文字が、順に"everything"となっていました。最初文章中のすべての大文字を取り出したり並べ替えたりしたときに気付かなかったために、かなり時間がかかってしまいました。

Q4

息抜きのゲームセンターです。すべてクリアすれば解答が得られます。
Q3で完全に詰まったと感じたので、Q3と並行して攻略しました。

Q4-1、Hit and Blow
聞き覚えはあるような気がするゲームです。数度挑戦してみましたが、どうも8回以内で当てるというのはこのゲームに慣れていない人間にやらせるべきチャレンジではないようです。
ググったところ案の定攻略プログラムが出てきたので、それに解かせて突破しました。

Q4-2、 Misere Nim
石を取っていって、最後に石を取った人が負けのゲームです。
石が2つのバージョンなら私もやったことがあります。
石が2つの場合はごく単純な必勝法がありますが、3つの場合はどうやら面倒なようです。
ググって情報を集めたところ、3つの数の排他的論理輪が0になるように石を取っていけば必勝となるらしいです。たぶん。
とりあえず書いてある必勝法の通りに取るべき石の個数を算出するプログラムをPythonで書き、それを用いて突破しました。
1手ごとに攻略関数に引数を3つ与えてやらないといけないのが一番面倒でした。

Q4-3、Misere Tic-Tac-Toe
逆マルバツゲームです。
3つ並べたほうの負けとなります。勝利条件は相手が負けるか、引き分けること。
プレイヤーは必ず先攻、つまり一つ多く石を置くことになるので、圧倒的不利です。
これが難問でした。実は解けていません。
ゲームセンターのソースコードは、問題ディレクトリに置いてあります。
そこでQ4-3のソースコードを拝借し、初期盤面に一つ石を配置する改造を施した後、コンパイルしました。
つまり相手が既に1手目を指した盤面からプレイヤー→AIと打たせることで、擬似的にAIが後攻となる状況を作り出し、それによってAIの手でAIを倒そうというわけです。
結果としては、勝てませんでした。というかプレイヤーが後攻をとると、人間の手でも普通にAIが負けます。
というわけで楽はできない様子。
知人はマルバツの全ての盤面を探索し、勝利条件を満たせる解法を導き出して突破したようです。
しかし私にそこまでの技能はないですし、なにより面倒そうです。
ここらでやる気がなくなってきました。やけになって、問題サイトのソースコードの解読を開始。
案の定"cheat"などというコマンドを発見して、ゲームセンターのすべてのゲームに勝利した状態にするチートコマンドを実行。なんとも情けない手段でゲームセンターを攻略しました。
全ゲーム攻略状態になっていたので、一番簡単だった4-1をもう一度クリアすると、解答 "ultimate" が得られました。

Q5

面倒な問題です。なんといっても解き方がさっぱりわかりません。
だいたいQ4の攻略中にチートコマンドなんてものを発見してしまったので、こんな問題を解かなくてもチートで全問題を解答済みの状態にしてしまえばいいのです。
というのも流石に味気ないので、とりあえずは攻略を開始。
この暗号を解け。
uJnuHuyofuyaHeHeyoK
隠しファイルにヒントが書かれており、こちらが問題の本筋の様子。
Hint 1:
next if (*it < 97);
97というのは、aの文字コードです。
aより文字コードの小さい文字、つまり大文字の場合に条件式が真となるものと思われます。
nextはおそらくcontinue文、つまりループを次の処理に持ち越す処理か何かだと推測。
よって大文字は無視するとか、そういった意味だと思われます。

Hint 2:
6002:1980
JIS X 6002-1980というのは、キーボードの日本語配列のもととなったもののようです。かな入力とか日本語入力に関連する事柄を示しているのでしょうか?

Hint 3:
Bil or Tim
誰だよ

Hint 4:
Alpine, Cupcake, Innsbruck, Jelly Bean
A,C,I,Jはアルファベット順ですね。Androidの10個目のバージョンのコードネームがJelly Beanだった気がします。
とはいえそれ以上はよくわかりません。

Hint 5:
2
それはどうも

Hint 6:
\prod_{k=1}^n k
数式ですね。
しかし何を示しているのかわかりません。

というわけで、ヒントの大半が意味すらわからないといった状況で、この問題を正面から解くには私の頭はあまりに弱すぎたようです。
だいたいチートコマンドの存在を知ってしまった時点で、正面から解く意欲は半減しつつあります。
よって手は動かさず、頭だけでうだうだと思考を続けましたが、当然良さそうな攻略法は思いつきません。
なんか調べたところソースコードに書かれているハッシュ値をググることで解答が得られるとかいう身も蓋もない情報は手に入りましたが、べつにチートコマンドを使えばいい話なのでちょっと違う気がします。
Twitterあたりで既に攻略した人のツイートを漁ったりしても有用そうな情報は得られず、夜も更けてきたので、風呂に入ることにしました。
風呂でぼんやりと解法について考えていたのですが、そこである情報を手に入れていたことを思い出します。


Q1からQ5までのすべての問題を解くと、最後に初期ディレクトリに最終問題の解答を入力するためのanswerファイルが出現するというものです。
5つの問題を解いたあと、さらにもう一つ問題を解かないといけないのか?
だとすれば、なんと面倒なことか。そもそも最初から6問構成にすればいいのでは。
そうでない理由があるとすれば、これまで解いた問題そのものが最終問題の内容あるいはヒントになっている、というものに他なりません。
それも、Q5だけでなくQ1からQ5まですべての問題が最終問題に繋がっていると考えるのが妥当です。
"life" "universe" "everything" "ultimate" ...?
銀河ヒッチハイク・ガイドですね。
よってQ5の解答にして、この質問を完成させるための最後の単語は"question"に他なりません。
ちなみに"question."も正解のようです。"answer"は間違いです。
そういうわけで、私は風呂に浸かりながらQ5と最終問題の解答を得たわけです。というわけで、最後の解答を入力する前にチートコマンドでタイマーリセットをかけたりしてしたり顔をしつつ、解けたのか解けてないのかよくわからないまま全ての暗号を突破しました。

Q5を正面から解く場合の解法は私には難しすぎたようです。このような推論によって無理やりスキップしてしまうことも問題の意図するところだったのではないかと思えるほどです。
拾い物のプログラムに問題を解かせたり、果てはチートコマンドを悪用したり直接答えを推測したりと無茶苦茶な解き方ですが、これが私が辿った流れです。
PR


https://twitter.com/m_06t625

生きています。
高校生活楽しんで、そして浪人しました。
この一年は勉強します。

お久しぶりです。

Windows7 Starter搭載のモバイルPCにFreeBSDをインストールしてデュアルブート環境を作ろうとしたところ少しハマったので、後続(いれば)のためも含めてインストール手順をまとめてみようと思います。
FreeBSDのインストール自体は解説されているサイトが多数あるので、そちらも参照しておくことを強くおすすめします。

まず、FreeBSDをインストールするための領域を確保します。
Windows管理ツールからディスクの管理を開き、既存のパーティションを縮小して未使用の領域を作ります。FreeBSDはこの領域にインストールします。
次にFreeBSDの入手です。この記事を書いた2011年9月現在では最新リリースはバージョン8.2となっていました。
FreeBSDは公式サイトよりダウンロードが可能です。
プラットフォームおよびインストール方法によってファイルが分かれているので、インストールするPCにあわせて選択してください。
プラットフォームがわからない場合、基本的にはi386を選んでおくと良いようです。
今回はCD/DVDドライブを搭載していないモバイルPCへのインストールだったため、i386-memstickのimgデータを選択。

適当なソフトを使ってimgデータをUSBメモリに焼き、FreeBSDインストール用のメモリースティックが完成したら、いよいよインストール作業に入ります。
メモリースティックを挿した状態でPCの電源を入れ、FreeBSDインストールディスクを起動。
インストール時の設定については他のサイトの解説を確認しながら進めるのが良いでしょう。
注意するべき点は、インストール先の確認で先ほど確保した未使用の領域にFreeBSDを割り当てることと、
ブートマネージャのインストールを聞かれた際に必ず"None"を選択することです。
一度ここでStandardを選択してしまったためにWindows7のMBRを破損していろいろと面倒なことになったのはまた別の話

インストールが完了しても、このままではPCの起動時にすぐFreeBSDが起動してしまい、Windowsが選択できない状態です。
そこで、 Configure -> Fdisk を選択して、起動時に読み込まれるドライブを変更します。
Windows7のMBRが書き込まれているドライブ(自分の場合は一番上でした)を選択し、Sキーを押して起動フラグをつけ、Wキーで反映することで、電源をつけた際にWindowsが起動するようになります。
なお、この作業はインストールしたFreeBSDではなく、インストールディスクを用いて行ってください。

Windowsが起動したら、とりあえずFreeBSDも選択できるようにMBRを弄ります。
EasyBCDというソフトを使用すれば、簡単に設定が可能です。この記事を書いた2011年9月現在では最新リリースはバージョン2.1となっていました。
EasyBCDを起動、"Add New Entry"よりLinux/BCDタブを開き、TypeにFreeBSD/PC-BSDを選択します。
Nameはお好みで、"FreeBSD"などと設定。DeviceにはFreeBSDのインストール先を選択してください。
そしてAdd Entryをクリックすることで、PCの起動時にWindows7とFreeBSDが選択可能になります。


#givemac2企画で入賞することができました。
MacBookはかなわなかったものの、図書カード5000円分をいただけるとのことです。
今回の企画では日本での寄付文化について深く考えると同時に、自分なりの意見も持つことができたので良い経験になったと思います。


高校1年生になりました。
京都市内の高校に通うため、バスや電車を乗り継いで通学に1時間ほどかかることに。
学校が始まるのに間に合うためには6時半前後には起きないといけないので、中学の頃から急に1時間起床時間が早くなる形に。
日によってはバスや電車の中で寝そうになるなど結構厳しい感じです。
部活動は週2回活動という兼部に最適なコンピュータ部に仮入部をしました。
部長さんが結構凄そうな人。初日にFirefox4.0のステッカーをもらえました。
勉強のリズムなどが一通り掴めてきたらプログラミングなどもやっていきたいです。
とりあえずは新しい生活に早く慣れたいです。


高校1年生になりました。


第二回givemac選手権 全国の22歳以下の大学生、小中高生一名にMacBookAirを進呈します
要するに、"小論文とかプレゼンとか暗号とかソースコードとかランドセルとか送りつけて一番スゴイ奴にMacBookあげるよ企画"です。
一人1作品まで、提出するファイルは100KB以下、という規定があります。

というわけで、「ドネーション(寄付)文化をより日本で広めていくためにはどのような方法があり得るか」という題で応募することにしました。
何気に第一回企画に読みにくさ抜群のtxtファイルで応募して轟沈していたのですが、それはまた別のお話。


プレゼンテーション形式での応募です。
MSOfficeが手元に無かったので、OpenOffice.org Impressを使用。
提出ファイルは以下。
http://m06t625.81.la/files/givemac2.odp
ファイルサイズは約16KB。

しかしわざわざOOoで開かせるのも不親切なので、さっさと見たい人のためにpdf化したものを用意しました。
http://m06t625.81.la/files/givemac2.pdf
100KB超えてますね本当にありがとうございました
あくまで提出するファイルはodpファイルのほうで、pdfを提出するわけではないと言い張る。
不満な人はzipにでも固めれば100KBより小さくなります。たぶん。

既に応募されている方の作品には、小論文を二進数化して提出したものや、自作のプレゼンツールをHTML+Javascriptで自作したもの、実際に使用できるアプリケーションを作ってしまったものなどがありました。
自分もはじめは何か趣向を凝らしたものを作ろうと思っていたのですが、第1回givemac企画優勝者のxrekkusu氏のn番煎じで終わってしまうのは嫌だと考え直し、結局何の工夫もないプレゼンテーションで勝負することにしました。技術力がないとかアイデアが浮かばなかったとか決してそういうわけでは

よろしくお願いします。
そしてMacください。


3月14日月曜日に中学校の卒業式がありました。

いつも通りの時間に起き、いつも通りに20分ほど歩いて裏門より登校。
教室では皆それぞれの卒業アルバムに一言ずつ書きあっていたので、それとなく参加。
隣の教室にそれとなく忍び込むなどして2桁に達する程度の数のメッセージをもらい、
その隣の教室にもそれとなく突入しようとしたところでそろそろ席に戻っておけといわれた。
自分の教室に戻ってまもなくして先生が入ってきて、卒業式まで30分ほどあるので待機しておけとの伝達。
先生からの話もすぐに終わり、また教室が騒々しくなりアルバムへの書き合いが続けられた。
案の定教室から出ることはできず。こんなことなら他の教室を先にまわっておけばよかった
卒業アルバムは隣の隣の教室の友達に渡しておき、書いてもらった後式が終わってから回収することにした。

体育館前の廊下で並んで待たされた。
自分のクラスは後ろから数えたほうが早い順番だったので、しばらく風に晒されることに。
組曲『惑星』/グスターヴ・ホルスト より『木星』の流れる中、せいぜい胸を張って堂々と入場。
校歌、国歌を斉唱し、卒業生全員の名前が呼ばれた後、お約束の祝辞3連発や記念品贈呈などで相当の時間を消費する。
慌しく立ったり礼をしたり座ったりを繰り返していた卒業生とその後ろでただ黙って座り続けていた在校生とではどちらのほうが楽だったんでしょうね
祝辞や来賓の紹介も済んだのでひと段落かと思えば、在校生からの送辞が送られた。
卒業生全員が起立して、『カノン』/ヨハン・パッヘルベル が流される。
ふと1年前に在校生として卒業式に出たときの事を思い出した。
そう、この送辞が馬鹿みたいに長い。
やっと送辞が終わったら、今度は卒業生からの答辞。知らない曲が流れた。
送辞に負けるとも劣らない長さ。結局、送辞と答辞を読み上げるのにあわせて15分かかった。
その後在校生からの歌、卒業生からの歌、『蛍の光』が歌われて式も終盤に。
最後は『威風堂々』/エドワード・エルガー が流れる。連盟よさらば!我が代表堂々退場す

教室に戻ると一人一人に卒業証書が渡された。
担任の先生の粋な計らいにより、卒業証書を受け取った人は何か一言、クラスのみんなに向けて言うことになった。
感謝の気持ちなどを告げ、そのたびに教室が拍手で包まれた。そして自分の番に。
卒業証書を手渡され、担任の先生と握手を交わした。
えーと、おほん。
「みなさま、どうかワタクシのことは末代まで忘れないでください。楽しかったよ!」

卒業式が終わって体育館から出てきた保護者の方々が教室の外に集まってきていた。
自分のクラスの担任の先生にとって、この学年は教師になって3年目の、始めて送り出す卒業生とのこと。
話の途中から泣き出していた。
そして写真を撮り、解散。みんな携帯電話持ち込みすぎ
一度中庭に出た後、クラスごとに校門への花道を通るということで大勢の卒業生が集まっていた。
写真を撮ってもらったりしながら、自分のクラスの順番になって校門へと向かった。
クラスごとというのはある程度形だけで、他のクラスの人も混ざっていたりした。
校門まで来たところで、担任の先生を発見した。
近くで母親とも合流し、須*君らと一緒に写真を撮ってもらった。
ふと思い立ち、おもむろに卒業アルバムを取り出し、担任の先生にも何か書いてもらうことにした。
先生はしばらく考え、書き終えると言った。

この言葉の意味はまだわからないだろうが、いつかきっと理解できるようになるだろう。
20年ほどして意味がわかるようになったら、また連絡してくるといい。


その後しばらく色々な人と話をした後、母親の車に乗せてもらって家に帰った。
あまり実感のようなものが無かったような気もした。
それではこれからもよろしくお願いします。


3月11日金曜日に京都府公立一般入試がありました。
前回の記事で書いたように、適性検査に合格しただけでは入学できないので、
一般入試を受けておく必要があるとのこと。

一般入試の2日前、3月9日。
少し腹痛がするなど体の調子が悪かったので、入試直前だからという口実で学校を休むことに。
熱は37度前後の微熱だったものの、翌日になっても体調が悪く、3月10日も学校を休む。
そして入試当日、体調も割と回復してきたように思えたため無理やり受験しに行って、
こじらせた。

帰宅すると38度ほどの熱。
夕方には40度近くまで体温が上がった。
翌日3月12日は土曜日、寝込む羽目に。
結局体温はその日の夕方まで一日中39度台後半を保ち続け、寝すぎで腰が痛くなった。
日曜日の朝になると体温は38度台前後まで下がったものの、日中はまた寝込むことに。
昼間に寝すぎて眠れなかったり腹痛頭痛が治まらなかったりでやっとのことで宵越し。
月曜日になると熱が下がってきたものの、腹痛のほうがきつかったので欠席。
火曜日も休み、最終的には8日休んで木曜日から学校に行くことになりましたとさ。



魔法少女まどか☆マギカにはまった

第一志望校に受かりました。
実際には「適性検査」の合格なので、しばらく後に公立一般入試を受ける必要がありますが、
ほぼ形だけとの事なので心配はなさそう。
いよいよ安心して遊び呆ける事ができるようになりました
サイトの更新なども気が向けば行うかもしれませんのでご期待ください。


あけましておめでとうございます。新年初の記事ですね。

ついに昨日、第一志望校の入学試験を受けに行ってきました。
受験勉強という言い訳が使えないようになってしまった
これで大々的に遊び呆けることができるようになり、うれしい限りです。

NewSkyOrderのデザインを少し変えました。
HTMLやCSSの仕様に準拠した形で。
更新日が受験日の前日なのは気にしたら負け



約2週間前。
PCの前でこたつに座りながら水を飲んでいたらこぼした。
一応拭き取ったものの、電源ボタンが逝ったらしく電源がつかなくなった。
修理費用約45,000でした

PCが復活しました。
修理に出したところ以前から不調だったDVDドライブや
反応が悪かったりキーが取れたりしていたキーボードも新調されたのはうれしい。
もう水はこぼしません


どうも最近のと言っても随分前の記事を見ていると、やけに長文化しているきらいがある様子。
長文を書くにはそれなりのやる気がいるわけで、その分更新頻度が落ちることも危惧されるので、
今後は記事あたりの文章量を減らしていこうかと思います。だからといって更新頻度上がるとはかぎらないけど


もとき「ファイト!Fight! 闘え!」
中*君「・・・で?」
も「それだけ」
中「君のことだから、また変な伏線でも張ってるんじゃないかと思ったんだけどね」
どういう意味でしょうかねそれ
も「ギャグは一切入ってないよ」
中「・・・」
も「オチもないよ」

じゃあ、あんたの存在価値無いじゃん!


正男大会が終了し、「東海道中膝栗毛」は3位に入賞することができました。
投票してくれた方はありがとうございます。
それではこれからもよろしくお願いします。


1 2 3 4 5 6 | NEXT
カウンター
プロフィール
HN:
もとき
年齢:
28
HP:
性別:
男性
誕生日:
1995/09/20
RSS
FeedWind
カレンダー
02 2024/03 04
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
最古記事
ブログ内検索
バーコード
CopyRight

Copyright(C) 2008 もとき All rights reserved.

OTHERS
Powered by [PR]
Templated by TABLE ENOCH