1024個の箱からサンタクロースの汚れた靴下を見つけるための比較回数は7回

[`evernote` not found]
[`livedoor` not found]
[`yahoo` not found]

先日、チューリングの計算理論入門という本を読んでいたら、『サンタクロースの汚れた靴下』という話が書かれていました。

どういう話かというと、1024個のプレゼントの箱のうち、間違えて一つだけサンタクロースの汚れた靴下をいれてしまったのでその箱を探さなければいけないというもの。どうやらその汚れた靴下は他のプレゼントと比べて重いらしく、ちゃんとしたプレゼントは全て同じ重さらしい。なので、天秤が下がれば汚れた靴下が入っている箱がわかるということだ。

ただし、1個ずつ比較していくと最大512回かかってしまいます。そこで、ある子どもの妖精が1024個を2つに分けて512個ずつを天秤にかけたらいいとのこと。そしたら、重いほうのグループに汚れた靴下が入ってると分かるため、さらにそれを2つに分けて、256個の2つのグループに、それを繰り返して、128→64→32→16→8→4→2→1というグループで比較していけば、10回の比較で終わるとのことだ。

でもこれ、比較回数だけを考えれば、2等分ではなく、3等分にすればもう少し少ない比較回数で見つけることができます。

つまり、1024個を3等分して、a.341個、b.341個、c.342個のグループに分ける。この時、数が同じ341個のグループのaとbを比較して、aが重ければaに、bが重ければbに、吊り合っていればcに汚い靴下があるということが分かりります。ここで、cにあると分かったとして、さらにそれを3等分してd.114個、e.114個、f.114個として先ほどと同じ要領でdとeを比較、dにあると分かったとして、g.38個、h.38個、i.38個に分け、gとhを比較してgにあると分かったとして、j.12個、k.13個、l.13個に分け、同じ個数のkとlを比較し、kにあると分かったとしてm.4個、n.4個、o.5個にわけmとnを比較、oにあると分かったとしてp.2個、q.2個、r.1個に分け、pとqを比較。pにあるとわかればその2つを比較して重いほうに汚い靴下が入っているということが分かる。

というわけで汚い靴下が入っていたグループは342→114→38→13→5→2→1と減っていくので、最大でも7回の比較回数ですむことが分かる。

ただ、これは飽くまで比較回数の話であって、3等分するという点は少し効率が悪いかもしれませんね。後、もしもう少し比較回数が少なくなるような方法があれば教えて下さい。

昔書いたif文中の条件文が見づらい

[`evernote` not found]
[`livedoor` not found]
[`yahoo` not found]

仕事で過去に書いていたソースコードをドキュメント化する必要が生じ、昔書いたソースコードを見なおしてドキュメント出力用のコメントを付け足していってるのだけど、いろいろとひどい。
いろいろひどい点はあるのだけれども、特にif文中の条件文がところどころ見づらい(醜い)。
例えば下記のような感じ。

変数名は異なるけど、こんな感じの書き方だった。とりあえず、なんとか何をしたいのか分かったものの、正直見づらい。ただ、今の自分でもどうやったらもっとうまく分かりやすくかけるかも思いつかないし、今でもこうしてしまう時があるので今でも過去の自分に怒る立場ではない。

例えば、先日、コードのネストを深くするな | anoparaというページを見たのだけれども、この中のisValidという関数、自分なら多分、下記のように書いてしまう。

今思ったけど、最初に書いたコードだけど、関数化すれば少しはマシになるかもしれない。例えば、下記のような感じで。

うーん。ちょっとだけマシになったような気もするけど・・・。まだ何かダメな気も・・・。こういう複雑な条件文の解決策って何かないもんだろうか・・・。

それ以前に、ここまで複雑な条件にする必要があるのかどうかをまず考えなおす必要があるのかもしれないですね。ただ、上記のeとかは仕様変更に伴い、後で増えた変数なんですが・・・。

2014年やりたいことリスト

[`evernote` not found]
[`livedoor` not found]
[`yahoo` not found]

あけましておめでとうございます。
2014年の元旦は相変わらず、日本経済新聞の別紙のIT特集を読んですごしました。一年で一番好きな日経新聞の記事です。朝日新聞にも別紙でIT特集があったので読みました。本誌のほうの一面はある意味話題みたいですが、読んでません。
そして相変わらず、あけおめコールもあけおめメールもあけおめLINEもなく、元旦にポストをチェックしても自分宛ての年賀状は入っていませんでした。自分は職場の人全員に年賀状出したんですが・・・(今年はだすのが少し遅れて12月27日にだしたのですが、試しに妹宛ての年賀状をだすとちゃんと元旦に届いていたので、多分職場の人にも元旦に届いてるはず)。まあ、年賀状はたいしてきてなかったし、毎年来ていた人のうち二人が喪中なので、この状況はしかたありません。だいたい、年賀状の文化自体廃れてきていますしね。会社の人全員にだしている自分のほうが珍しいんじゃないかと思います(ちなみに、2日になって一通自分宛てに来ました。なんと昨年退職した人。自分は出してないという・・・)。

前置きはともかく、2014年、個人的にやってみたいことをあげていきます。やりたいことというより、目標のようなこともありますが。

ブログのレイアウトを変更する

このブログのレイアウト、WordPress標準のTwenty Elevenを少し変更したものなのですが、最近になってダサいと思うようになってきました。本当、なんでこれがいいと思ったのやら。
だいたい自分はデザインセンスは皆無なのだから、もっといいテーマを探して変更してみようと思います。
でも、これぐらいなら今でもすぐにできることなので、やっぱりオリジナルで作ってみようか・・・うーむ・・・。

Rを使いこなせるようになり、様々な統計解析を試す

現在、仕事でRを使っている自分ですが、まだまだ使いこなせているとはいえません。重回帰分析ぐらいならなんとなく分かってきたような気がしますが、因子分析など、他の統計解析手法については全くといっていいほど分かっていません。
後、統計解析ではありませんが、Rでウェブスクレイピング的なことももっとやれたらいいなと思っています。

登録してるウェブサイトのパスワード変更

いろんなウェブサービスを使っていますが、実は使い回ししているパスワードが多いのでなんとかしたいです。
ちょっとセキュアな「いつもの」パスワード – ぼくはまちちゃん!(Hatena)の中でサイトごとのパスワードの買え方が書かれていますが、その方法が便利そうなので、これを参考に変えていこうと思います。

クラウドソーシングをやってみる

先日のITフェスティバルでクラウドソーシングについてのセミナーがあったのですが、自分が思っていたよりもお金がたまりやすいのではないかと思い、興味がわきました。
例えば、有名ドコロのクラウドワークス(日本最大級のクラウドソーシング「クラウドワークス」)。ここで、プログラミング関連やウェブ制作、統計解析をもっとよく分かるようになってきたら統計解析の仕事を引き受けて副業として仕事をしていけたらいいなと思っています。
今でも、マクロミルや楽天リサーチなどのアンケートサイトや、ネットマイルやハピタスなどのポイントサイトでこつこつお金をためてはいるのですが、1ヶ月に2000円たまればいいほうなので、もう少し副業でお金をためることができたらいいなと思っています(本業が結構な危機的状況なので・・・)。
本当ならこのブログのアクセス数がのびてアフィリエイトでがつんと儲けることができたらそれがいいんでしょうが、途方もなく難しいと判断してそれは目標としていません。

GitHubを使いこなせるようになる

登録した時にちょっとだけ使って、それから全く使ってないGitHub。これをもうちょっといろいろ使っていきたいです。
GitHubを使うということは、プログラミングのソースコードを書くということになると思いますので、つまりGitHubをよく使うほど、趣味でもソースを書いていけたらいいなと思っています。

英語の勉強

仕事で分からないことを検索していると、Stack Overflowというサイトにいきつくことが度々あります。
が、中高大と英語が大の苦手だった自分には何を書いてあるのかちゃんと分かってません。
なので、英語の勉強をしたい。具体的にいうと、せめて高校レベルにまではなりたいです。
余談ですが、先日、英語が苦手なので速く・正確に読む ITエンジニアの英語という本を購入したのですが、読んでみると、書いている内容の半分も分からず、挫折しました。具体的にいうと、『この英文はよくこういう間違いをしますが、正しくはこうです』という項目がたくさんあるのですが、自分にはなぜそう間違いのかすら分からない状況です・・・。
本来ならここで具体的に『目標TOEIC◯◯点』というように書けたらいいのですが、そもそも自分が今どういう状況かも分かってないので、書かないでおきます。まあ、こういう目標のつけかたは挫折しやすいらしいんですが・・・。

ブログの更新頻度を増やす

一度書くと時間をかけてしまうことが多い自分。時間をかけるというのはそれほど悪くないかもしれませんが、自分の場合、できるだけまとまった時間にブログを書きたいと思うので、数時間の暇がなければブログを書けないという状態になっています。そうすると面倒になって書かずにズルズル・・・。
そして、効率もいいとはいえない(書きながら、書くことを考えるなど)。
なので、ブログはあまり時間をかけず、小ネタ的なことでもいいので昨年よりは多く書けたらいいなと思っています。さすがに、毎日更新とかは無理そうですが・・・。

Evernoteの整理や見直し

いつでもできそうな気はするんですけどね。できないEvernoteの整理。
せっかく、プレミアム会員になってるのでもっとうまく活用できたらいいなとは思っているんですが・・・。

ウェブサービスを作る

結構な人が毎年初めに思って、結局作らずに終わってしまうこの目標。自分もその一人です。
今年こそは!

積読解消

数年前に購入して読んでない本があるとかないとか・・・。

勉強会やセミナーなどの積極的参加

昨年は神戸ITフェスティバルぐらいしか行かなかったのですが、今年はもう少しいろんなITのイベントにいけたらいいなと思っています。
人付き合いは苦手なので、人と話すかどうかは分かりませんが、それも少し克服できたらいいなと思っています。
自分の場合、会社から名刺をもらってないんですけどね。うーん・・・。自分で作ろうかどうしようか・・・。


思いつく限り書いていったらキリがないのでこのあたりで。パスワードの変更とか、今すぐやれよ! と突っ込まれてもしかたがないようなことなのですが、なかなか動けないでいます。

後、上には書いてませんが、迷っているのが転職です。辞めたいかそうでないかといわれると、別に辞めたいわけではないのですが、会社自体が危機的状況にあるので、給料が少なくて・・・(それでも、残業や休日出勤がほぼ皆無というだけで、ブラック企業といわれている会社と比べると良い会社な気はしてます)。
理想としては、ブログを見てヘッドハンティングされるぐらのことを書けるようになることなんですが、さすがに現実的ではなさそうです。
とりあえず転職の情報を調べながらも、コツコツ現状の仕事をがんばって、会社の状況を様子見しておこうと思います。今年「退職しました」という退職エントリーを書かないことを願って。

それではみなさん。
こんな構成なんて全く考えていないようなブログですが、今年もどうぞよろしくお願いします。

○○プリン倶楽部というお土産に注意

[`evernote` not found]
[`livedoor` not found]
[`yahoo` not found]

1週間に1回更新を目指すと言いながら、2週間以上更新してませんでした。

ゴールデンウィークはどのようにお過ごしでしたが? 僕は、なぜかアンパンマンにはまってしまい、TSUTAYAでDVDをレンタルしたり、ニコニコ動画にあるアンパンマンの動画(MAD動画含む)を見て過ごしていました。

というのは半分冗談で、ゴールデンウィークのうち2泊3日は北海道に旅行に行ってました。なんと、自分の住んでいる地域が雨の時に北海道にいて、帰ってきたら北海道に雨が降ったようです(4月30日~5月2日)。
 なんといいますか、北海道は想像している以上に暑かったです。旅行前はダウンジャケットが必要だろうか? なんて心配してたものの、行ってみると半袖でも十分なぐらい(実際、半袖の人を多くみかけました。ただ、夜は少し冷えたように思います)。

それはともかくとして、北海道に旅行に行ったぐらいなので職場の人にお土産を買おうと思ったわけです。自分の働く職場は20人も満たない小さな会社なので、人数分小分けできるお菓子がいいかなと思ったわけです。

『白い恋人』などの無難なものはつまらないから避けたいと思って、お土産ショップで探してみると『北海道プリン倶楽部』というクッキーを発見(以下のサイトを参考)。
かわいいパッケージのクッキー プリン倶楽部は北海道土産販売店スノーショップ

で、このお菓子なんですが、月曜日に包み紙をとって誰でも気兼ねなく自由にとれるように棚の上にでも置いておこうと思ったのですが、包み紙をとって発覚しました。どこのお土産か全く分からないことに・・・。
 中に入っている小袋にはなぜか『プリン倶楽部』としか書いておらず、『北海道』の文字が書かれていない。そこでふと、土曜日に妹が放ったある言葉を思い出しました。
 土曜日、その日妹は神戸まで友達と遊びにいき、帰ってきた妹が言った言葉。「神戸にも似たようなのあったよ」

ふと、気になって、『神戸プリン倶楽部』で検索してみると・・・。

あった・・・。
『神戸プリン倶楽部』
神戸プリン倶楽部 【南京町の想い出】 心は舞浜/ウェブリブログ

もう少し調べてみた。
『軽井沢プリン倶楽部』
軽井沢プリン倶楽部 – * beans * – Yahoo!ブログ
『岩手プリン倶楽部』
救護帰りのお土産スイーツ色々❤ – くらちゃんの☆Happy Sweets Diary – Yahoo!ブログ
『八ヶ岳プリン倶楽部』
八ヶ岳プリン倶楽部|森の妖精のひとりごと
『松江プリン倶楽部』
松江プリン倶楽部 | 365days
『蒲郡プリン倶楽部』
天の丸ダイヤリー 蒲郡プリン倶楽部
『博多プリン倶楽部』
【楽天市場】博多プリン倶楽部 プリンタルト クッキー 【12枚入り】 お菓子 明太子 お土産 おみやげ 福岡 限定 ギフト プレゼント:博多桃太郎
『東京プリン倶楽部』
私には顔が3つ見える・・・???|BOO.店長BLOG (ぶ~てんブログ)
『奈良プリン倶楽部』
【奈良プリン倶楽部】プリンタルトクッキー 奈良の銘菓・みやげもの|クッキー 奈良みやげ 東大寺前 鹿屋

・・・。
 こういうのって他にもあるんだろうか・・・。
 ま、まあ素材は現地のを使ってるかもしれないわけだけど・・・。

「○○のまれを・・・」という勘違い

[`evernote` not found]
[`livedoor` not found]
[`yahoo` not found]

確か、半年ぐらい前のこと。会社である資料の作成を頼まれて作ったのだけれども、その資料を確認してもらった時にあることを言われた。

「この『まれ』って何? 方言か何か??」

具体的にどういうことを書いたのかは覚えてないのですが、そこではじめてそれが自分が何かを勘違いして覚えた言葉だと気づき、何とか誤魔化しました。
 どういう風に間違っていたかというと、「まれ」という言葉をなぜか、「概要」とか「趣向」という意味で使ってたんです。
 ネットで調べても自分のように「まれ」という言葉を使ってるところはどこにもないし、いったい何でこんな間違いしていたのやら・・・。

そして昨日の話。
 これは大惨事…MSが提供したコマンドを実行→大学の全アカウント消失 | ガジェット速報という記事が話題になっていたので何気なく読んでいると、「移行する”まれ”の連絡を・・・」と読める箇所が・・・。
 じゃない。何て読むんだこれ? 『旨い』の『旨』と書いていったいなんて読むんだ!?

「むね」でした。

なぜかこれを「まれ」と読んでいたようです。改めて自分がバカだなと思った今日この頃です・・・。