Add Me!Close Menu Navigation

ニートは職業ではない、生き方である

Add Me!Open Categories Menu

プログラミングコンテストの勉強をしないとまずい

Code Jam 2011が始まったが、Round 1敗退しそう。

Code Jamへの参加は3回目だけど、気づいたらまた翌年のコンテストが来てあたふたすることの繰り返しになっている。一度きっちりプログラミングコンテストの練習をしないと勝てない。

Code Jamの上位ってどのくらい意味があるのだろうか?

プログラミングをする人は多くいるけど、5歳の子供とか90歳の人は職業的にライバルにはなりにくいので、15歳〜65歳くらいまでの50年分を考える。Code Jamに参加する人はたぶん若年層が中心で10年分くらいの幅があるとするのなら、ライバルの1/5が参加していることになる。

Code Jamに参加しそうな年代でもコンテストなんかやらんという人も多くいるだろうから、さらに5倍見積もっておく。日本の下請けSEのようなプログラミングがそもそも趣味とは言えない人はここでは除外しておく。プログラミングに携わる人を全部集めたらもっと多いだろうから。

Round 1を通過する人は3,000人である。これが上位3,000位だとして、その5 x 5倍の75,000人くらいの位置にいるとしていいんじゃないか。世界で上位75,000人と言ったら結構自慢できそうだ。

ただ、にわかには信じがたい数値でもある。世界にこれだけ人口がいて75,000番目までに入るとしたら相当のこと。ただ、潜在的に才能があってもプログラミングに携わらない/携わることのできない人も世界には多いし、上述のようにプログラミングの仕事をしていても入社するまでプログラミングなんてろくにしませんでしたという人よりはモチベーションが高いのは確かである。

Code Jamは英語ゲー

毎度のことなんだけどプログラミングコンテストは英語力勝負のところがある。今年は特に顕著だった。Round 1BのProblem A. RPIの問題を一部抜き出すと

The NCAA tournament committee uses a formula called the RPI (Ratings Percentage Index) to help rank teams. Traditionally, it has been defined as follows:

RPI = 0.25 * WP + 0.50 * OWP + 0.25 * OOWP

WP, OWP, and OOWP are defined for each team as follows:

  • WP (Winning Percentage) is the fraction of your games that you have won. In the example schedule, team A has WP = 1, team B has WP = 0, team C has WP = 2/3, and team D has WP = 0.5.
  • OWP (Opponents’ Winning Percentage) is the average WP of all your opponents, after first throwing out the games they played against you. For example, if you throw out games played against team D, then team B has WP = 0 and team C has WP = 0.5. Therefore team D has OWP = 0.5 * (0 + 0.5) = 0.25. Similarly, team A has OWP = 0.5, team B has OWP = 0.5, and team C has OWP = 2/3.
  • OOWP (Opponents’ Opponents’ Winning Percentage) is the average OWP of all your opponents. OWP is exactly the number computed in the previous step. For example, team A has OOWP = 0.5 * (0.5 + 2/3) = 7/12.

Putting it all together, we see team A has RPI = (0.25 * 1) + (0.5 * 0.5) + (0.25 * 7 / 12) = 0.6458333…

直前で「CのWPは2/3」だと言っているのに、次のOWPを計算する段階では「CのWPは0.5だから」としている。わけがわからない。ちなみに解説では後者のWPはWP’として別のものとして説明されている。なお、前者のWPは勝率で、後者のWPは自分との対戦を除いた勝率である。

英語力が堪能ならきっとすぐに分かるのだろうし、そもそもアメリカ人だったらバスケットのランキングを決める式くらい説明を読まなくても知っているのかも知れない。この問題は簡単な問題で、単に言われた通りに計算するだけである。計算量も問題ないし、問題を読んだ瞬間に理解できる人なら10分程度で終わるだろう。しかし、英語が苦手な人はTwitterを見てもOWPの計算がわからないと1時間以上悩んでいる人は多かった。

こんなコンテストであるから、プログラミングの実力以外のものもかなり影響してきそうである。でも日本人のrng_58氏(りんごさん)はぶっちぎりの1位で通過しているし英語ゲーというのは言い訳かも知れない。

翻訳メモリという考え方

自然言語処理の有用な記事が多い生駒日記の「Microsoft Office IME 2010 はガチ」というエントリに

そういえば、Windows 7 をインストールしていて気がついたのだが、MS の Windows 7 のインストラクションのページは恐らく機械翻訳の結果である。たとえば、Windows Vista から Windows 7 へのアップグレードのチュートリアルを見てもらえれば、ところどころ変なところがあることに気がつくだろう。それがルールベースのものなのか、Microsoft Research で研究されている統計ベースのものなのかは分からないが、以前あった「自動で翻訳された結果なので、間違っている可能性があります」という但し書きが取れる程度にはかなり読める日本語になっている。というか、ほとんどの人は機械翻訳の結果だと思わないんじゃなかろうか。あの規模で機械翻訳を実用化している企業として、Microsoft はもっと評価されて然るべきだと思う。

もっとも、Microsoft ほど、自社内で他言語に翻訳してきた、そして今後も翻訳したいリソース(マニュアルとかヘルプとか)がある企業もそんなにたくさんあるわけではないだろうし、こういうデータ、そして欲求のある分野・企業を見つけて自然言語処理の技術で解決していけるというのは、研究者冥利に尽きるなぁ。

という興味深い記事がある。これをそのまま信じるのなら、Microsoft Researchで研究されている統計ベースの機械翻訳は技術系文書の日本語訳に限っては実用の域に達しているということである。

そういうわけでMicrosoft® Translatorを使ってみたが、まだまだ役に立つレベルではなかった。

自動翻訳がダメでも翻訳支援というのがある。翻訳支援はプロの翻訳家も積極的に利用するほど実用の域に達しているという。つまり、例文をガシガシしていって、一度翻訳したことのあるフレーズだと直ちに翻訳され、似ているフレーズは過去に記録したフレーズと比較しながら翻訳できるというもの。また辞書もついていていちいち辞書を引かなくてもいま薬草としているセンテンスの中にあらわれる単語は自動的に辞書引きされる。

そういうわけで、OmegaTというオープンソースのものを使ってみたが、確かになかなかいいかも知れない。しかしJavaで書かれていてインタフェースがかなり汚いのがやる気をなくす。

統合翻訳環境Bentenというのもある。これはまだ試していないが、マイコミの記事が興味深い。

ともあれ技術系の文章は文学作品のように叙情的に書いていないので、比較的パターンで訳せると思われる。もちろん英語が堪能な人の中にも下手くそな文章を書く人はいるので苦労することはあるのだけど。

IDEの工夫

プログラミングコンテストは時間制限があるのでできるだけ短い時間でコードを書きたい。コードを書いていると頻出するものもある。

for( vector::iterator it = hoge.begin(); it != hoge.end(); it++ ){ }

これを毎回手で書いていると手間がかかる。コンテストに出ている人の多くはこれをマクロで解決する。

#define PB push_back
#define MP make_pair
#define SZ(v) ((int)(v).size())
#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define REP(i,n) FOR(i,0,n)
#define FORE(i,a,b) for(int i=(a);i<=(b);++i)
#define REPE(i,n) FORE(i,0,n)
#define FORSZ(i,a,v) FOR(i,a,SZ(v))
#define REPSZ(i,v) REP(i,SZ(v))
typedef long long ll;

大抵こんな感じのマクロを事前に用意してあってそれで短くわけだ。マクロというのは自動的にコードの記述を置き換えてくれるもの。

個人的にはこれは好きではなくて、なぜならコードが読みにくくなる。自分のマクロは慣れているからいいんだけど、他人が読んだときによくわからない。for_eachとか定番のものはまだいいんだけど、人によってはいちいちマクロの定義を確認しないとコードが読めないほど簡略化されていることもある。

そういうわけで、できることならIDEとかエディタの補完(スニペット)で面倒臭い記述を一発でやってしまいたい。

いまどきのIDEで有力なのはVisual Studio, Eclipseなどであろうか。おいらはMacを使っているのでXcodeがあるんだけど、Visual Studioのほうが何となくよさそうな気がする。そうすると、VMwareに比較的軽いWindows XPを入れてその上でVisual Studioを使うことになるのか。ちょっと面倒臭い。

EclipseはJavaを使う限りはかなり優れた開発環境だと思う。C++だとちょっといまいちの感じだけど、最近はどうなんだろう?e4とかEclipse 4.0が出てきているらしい。

どうやって勉強しようか

やっぱり受験勉強の数学みたいにひたすら問題演習をやっていくことかな。

おいらはC++を昔から使っていて楽なのでこれを使っている。しかしJavaやC#の仕事も多く、それらにもなじんでいかないとなーって思っている。JavaはEclipseがあるからいい。C#はmonoかVisual Studioだろう。C#使うなら頑張ってVMwareかなあ。

コードは最初のうちは面倒臭いけど、何度も書いているうちに手が覚えるので、演習問題をC++, Java, C#の三種類の言語で書いていればそのうち覚えそう。C#は昔からハーバードシルトの本は好きなのと、ちょうど最近新版が出たので買ってみた。

独習C# 第3版

  • 著者/訳者:ハーバート・シルト
  • 出版社:翔泳社( 2010-12-03 )
  • 大型本:704 ページ
  • ISBN-10 : 4798122203
  • ISBN-13 : 9784798122205
  • 定価:¥ 3,990

内容はいかにも教科書という感じの本。あとプログラミングコンテスト向けの本は少ないので蟻本は外せない。

プログラミングコンテストチャレンジブック

  • 著者/訳者:秋葉 拓哉 岩田 陽一 北川 宜稔
  • 出版社:毎日コミュニケーションズ( 2010-09-11 )
  • 単行本(ソフトカバー):316 ページ
  • ISBN-10 : 4839931992
  • ISBN-13 : 9784839931995
  • 定価:¥ 3,444

アルゴリズムとかデータ構造の本って多いのだけど、この本のようにコンテスト向けに計算量とか意識したコードがたくさん載っている本ってあまりないような気がする。アルゴリズムの本はもっとアルゴリズムばっかりだし。

最近語学ばっかりやっているけど、将来はソフトウェアエンジニアとして身を立てたいと思っているので、Code Jam Round 2くらいまではあっさり行けるくらいの実力は持っておきたい。そうこう言っている間にRound 1Cまで1時間ほどである。

なぜ、週4時間働くだけでお金持ちになれるのか?

  • 著者/訳者:ティモシー フェリス
  • 出版社:青志社( 2007-09-21 )
  • 単行本:255 ページ
  • ISBN-10 : 490385311X
  • ISBN-13 : 9784903853116
  • 定価:¥ 1,470

「週4時間」だけ働く。

  • 著者/訳者:ティモシー・フェリス
  • 出版社:青志社( 2011-02-03 )
  • 単行本:640 ページ
  • ISBN-10 : 4905042097
  • ISBN-13 : 9784905042099
  • 定価:¥ 1,995

君が衛生兵で歩兵が俺で (スマッシュ文庫)

  • 著者/訳者:篠山 半太
  • 出版社:PHP研究所( 2012-06-16 )
  • 文庫:340 ページ
  • ISBN-10 : 4569678467
  • ISBN-13 : 9784569678467
  • 定価:¥ 720
Posted By onaneetX.Q

Leave a Reply




最近の投稿

最近のコメント

アーカイブ

カテゴリー

メタ情報

Twitter: honour_neat

  • AT&Tは腐っているから別のSIMカードを買った。25ドル損をした。それにしても4Gと出ているのは新鮮である。 http://t.co/BAor2ILR ReplyRetweetFavorite
  • アメリカ人のホストはテレビをつけたまま仕事に出かけてしまった。全体的に節電という意識がないのがアメリカ人だと思うが偏見だろうか。 ReplyRetweetFavorite
  • GP038: The activation has taken longer than normal. Please try again later. 色々と問題の多いAT&Tのサイトだな。 ReplyRetweetFavorite
  • We are currently experiencing a temporary system error that prevents us from retrieving your account information. 携帯の登録ができない・・・ ReplyRetweetFavorite
  • ホストのところに到着した。プエルトリコの人だった。ネイティブの英語はキツいけど彼の英語はむしろ自分には僥倖である。彼は近くのドアマンをやっていて、仕事は4時から深夜1時だそうだ。部屋はなかなか素敵なところだが、機械音痴っぽくてコンピュータ関係は手間取りそう。とりあえず無線LAN。 ReplyRetweetFavorite
  • よく見たらCantoneseと書いてある。広東語か。 ReplyRetweetFavorite
  • 中華料理屋のメニュー。中国語表記あり。アメリカの中国語は繁体字が多い。台湾人が多いというより文革前に移住した人が多いのだろうか。でも拼音も少し違うな。香港系なのかな? http://t.co/eGneKUIV ReplyRetweetFavorite
  • アメリカはチップ文化なのは知識としては知っている。で、4年振りくらいのアメリカだけどチップを渡すと躊躇なく受け取るところが新鮮である。トルコでもホテルでチップを渡したことはあるが、一瞬の戸惑いみたいなのがあってそれから受け取っていた。 ReplyRetweetFavorite
  • PPTPで日本にあるルータにVPNセッションを張って、FTPで録画したファイルをダウンロードしている。ホテルのロビーのWiFiだけど150KB/sくらい出ているのでまあまあ満足。台湾の方が早いけど距離的な問題もあるしまあ仕方ないかな。 ReplyRetweetFavorite
  • RT : 管直人前首相がこのあと16:00〜高知市内で講演をします。もちろん参加してきます!テーマは「若者、市民の政治参加とは」です。 ReplyRetweetFavorite
  • 慌ててチェックアウトしたがバスまで30分あるとはね。もっとゆっくりすればよかった。 ReplyRetweetFavorite
  • 今年はクレジットカードのコンシェルジェを使い倒してみることにした。で、シャトルバス(http://t.co/K5Dasvzk)の手配を頼もうと思ったけど、upper upper eastまでは結構高そうだから大人しくA線でちんたらいくことにする。AT&Tストアが近くにあるし。 ReplyRetweetFavorite
  • アメリカのいいところは人種が多いところだ。日本や中国語圏ではどれだけ中国語が上手くなっても外国人扱いである(結婚して台湾籍になっているアメリカ人はずっと美國人と言われる)が、アメリカは英語ができればおそらくアメリカ人と同等に見なしてくれる。これはフランスもそうだったと思う。 ReplyRetweetFavorite
  • 中国語は英語よりも下手と言っても喋った回数は中国語の方が多いため、話していて気楽なのは中国語である。アメリカに来ると別世界に来たと神経張り詰めているけど、台湾に行くのは国内旅行のように気軽に行ける。英語もここまでいければいいのだけど。大人になってから英語はどこまで身に付くかな。 ReplyRetweetFavorite
  • ニューヨークのホテルにいても外から中国語が聞こえる。しごく簡単な会話だけど内容が分かるのは嬉しい。以前、ほぼ海外童貞でニューヨークに来たときは日本人を見かけると「おお、日本語だ」と思ったけどそういう言語が1つ増えたことになる。もっとも中国語能力はまだまだ足りない。英語より下手。 ReplyRetweetFavorite
  • ホテルのフロントにイスラエルから来たという女性がいる。夫はドワンゴだとか何とか。肌が浅黒くてあまりイスラエルのイメージではないけど、いろいろな人がいるのだなと興味深い。 ReplyRetweetFavorite
  • ホテルの予約は何故か消えていたけど、クレカ会社に電話をしたら掛け合ってくれたらしく部屋には入れた。なんだ、部屋あるじゃないか。同じく締め出されたアジア系っぽい顔の人も一緒に別の部屋に案内された(彼は英語が流暢なようだけど最初は断られていた)。 ReplyRetweetFavorite
  • .@ykonda たぶんみんなで一緒に不幸になろうという考え方が日本人に広くあるからですね。一人だけ抜け駆けして幸せになるやつは許せないというわけ。気に入らないから寄付しないだけでは彼女の元に金が集まるのは阻止できないからできるだけ罵詈雑言を並べるのかと。社畜と同じです。 ReplyRetweetFavorite
  • ニューヨークに着いた。シャトルバスを呼ぶ電話は蚊の鳴くような声しか聞こえず日本語でも意思疎通に困難なレベル。やっと用件を伝えてバスを待つこと1時間。ターミナルには同じホテルの客が溢れて過積載状態で連れて行かれた。ホテルに行ったら予約ないぞってことでクレカ会社に掛け合って云々。 ReplyRetweetFavorite
  • 【画像あり】アメリカ人のゲーム部屋が凄すぎると話題に http://t.co/FeXtv52Q ReplyRetweetFavorite

RSS Tumblr

  • bbsmaster: 安藤遥 2012年4月27日
    bbsmaster: 安藤遥 […]
  • NVR500 PPTP設定 2012年4月8日
    PPTPでVPNを張ってDNSの通知をする。とりあえず ip route default gateway pp 1 pp select 1 pp always-on on pp enable 1 pp select anonymous pp bind tunnel1-tunnel2 pp auth username ID pass pp auth username ID2 PASS2 ppp ipcp ipaddress on ppp ipcp msext on pp enable anonymous tunnel select 1 tunnel encapsulation pptp pptp tunnel disconnect time off tunnel enable 1 tunnel select 2 […]
  • " 285 : 216  : 2011/02/17(木) 22:55:06 ID:tvQNovvz [7/7回発言] ..." 2012年4月6日
    “ 285 : 216  : 2011/02/17(木) 22:55:06 ID:tvQNovvz [7/7回発言] 相談に乗ってくれた方々本当にありがとうございます。 結論から言いますとリモートデスクトップで接続成功しました。 全部自分がアホなだけでした。 同じような人がいないとは思いますが経緯を報告します。 自分の環境はWin7x64だった為、Boncaslinkの64bit版を入れていたのが 原因でした。 最初TVTestの64bit版で再設定を行って設定したところ、Bancasproxyが 赤色に変わり使用中のアプリのリストにTVTestが表示されました。 もしやと思い、32bit版で全てのアプリ(TVTest、関係とBonCaslink)を統一 して、設定したところ正常に作動しました。 テストとして他 […]
  • 大学生に勉強させる?大学の時間とは何か 2012年3月20日
    大学生に勉強させる?大学の時間とは何か: 「勉強をしない」学生に勉強をさせるべく、国が重い腰を上げたのだという。繰り返すが、けっこうなことだ。ならば、国には、「シュウカツ」という名目のもとに大学生の時間を大幅に奪う企業に対して根本的な対策も取ってもらいたい。 人々は故意に目をそむけている。いわゆる有力大学の学生よりも、そうでない大学の学生のほうが、「三流大学」の学生のほうが、「シュウカツ」においてより多くの時間を取られ、より多くのエネルギーを費やしながら、より多く落とされ続け、より多く踏みつけられ続けているという事実に。 日本の問題の何割かは《醜活》に起因あるいは関係しているとすら思う。《醜活》があるから採用の混乱が起こるし、それゆえ企業の活力が落ちるし、その結果納税額は下がるわ、企業の業績が悪いから不景気にな […]
  • ウホッ!良い情報!! 2012年3月20日
    ウホッ!良い情報!!: 米・英・加についてですが、(これは個人的なバイアスがかかりますが 汗)その3カ国のなかでもしbeyond_NEETさんの目的がその国への移民・永住ということでしたら、一番達成しやすいのは加であると思います。 移民法が整備されており、公立(もしくは政府公認)の大学・専門学校で2年以上の課程を修了した留学生は、就職先が決まっていようと無かろうと最長で3年の就労ビザを取得でき、カナダ国内で自由に働けます。(公務員や役所仕事はさすがにカナダ永住者か国籍保持者を優先するとは思いますが) その後、カナダ政府が指定する職種内容で最低一年間就労すると永住権申請の資格が与えられます。 他にも有益な情報多数。 […]
  • 雇用推計:若者ミスマッチ鮮明 「即戦力」重視、構造的に 2012年3月20日
    雇用推計:若者ミスマッチ鮮明 「即戦力」重視、構造的に: 若者が即戦力なわけないじゃん。若者で即戦力になり得るとすれば、若さを活用するしかない。美人を雇用して営業させるとか(枕営業)、そこまでいかないにせよどぶ板営業に耐えられるようなノリのいいリア充でも雇うしかない。若さは魅力だから、くたびれたおっさんよりもかわいい子から買いたいと考える可能性がある。 一流企業の営業は比較的楽である。なぜならほっといても商品やサービスは売れるからだ。だから、二流以下の会社に入ると営業力で会社を維持しているようなところが結構ある。インターンした某ソフト会社も外に出て率直に意見を求めたら、社員が言うほどその会社の製品は優れていないことがわかった。つまり、あの会社の業績は技術力ではなく営業力で成り立っていた。 ほとんどの会社は製品や […]
  • 羽田→台北松山→台北桃園→ニューヨークのOPEN航空券。 2012年3月19日
    羽田→台北松山→台北桃園→ニューヨークのOPEN航空券。 […]
  • " 多分こういう食事がセブの一般の人の食事なんだと思う。味はまあまあ美味しい。食堂自体は不衛生ってわけではないけれど、建物はボロくてそんなに綺麗じゃないし、椅子や机も安っぽいプラスチック製でガタガタする。..." 2012年3月19日
    “ 多分こういう食事がセブの一般の人の食事なんだと思う。味はまあまあ美味しい。食堂自体は不衛生ってわけではないけれど、建物はボロくてそんなに綺麗じゃないし、椅子や机も安っぽいプラスチック製でガタガタする。でもそういうアジアの安食堂の雰囲気が僕は好きなので落ち着く。  対比して思うのは日本のことだ。日本でお金のあんまりない人が食べる安食堂といえば、松屋とか吉野家とかの牛丼屋チェーンが一般的になっていて、280円ぐらいの安い値段でそこそこの味のものが腹いっぱい食べられるのだけど、あの店舗の小綺麗さはなんなんだろう。貧乏人向けなのにピカピカでシステマチックにできている。よく考えてみると、日本では小汚いけれどその代わりに安く食べられる店というのがあんまりない(全くなくはないけどチェーン店の牛丼のほうが安い)。” - 確 […]
  • "突然ですが、問題です。 自己紹介の言葉として、適切なのはどちらでしょう? ○○大学経済学部に在籍(ア:させていただいております/イ:しております)。 上記の問題は、数日前の読売新聞の朝刊に掲載され..." 2012年3月19日
    “突然ですが、問題です。 自己紹介の言葉として、適切なのはどちらでしょう? ○○大学経済学部に在籍(ア:させていただいております/イ:しております)。 上記の問題は、数日前の読売新聞の朝刊に掲載されていた、就職活動をしている学生向けの「日本語教室」という記事より(日本語検定委員会協力)抜粋しました。敬語として正しいのは、ア、イのどちらでしょうか? 正解は以下から。 正解は「イ:しております」。この記事によると、「させていただく」という言葉を使うためには、以下の3点を満たしている必要があるそうです。 自分のことであること 相手の許可を得て行われていること それに対して感謝するという事実や気持ちがあること” - 敬語は誰に対して使っているかを意識すればOKでそう難しいものではない。「○○大学経済学部に在籍させていた […]
  • 世界の生活費 2012年3月19日
    元記事は比較的「だそうです」が多くてあまり役には立たない印象。 とりあえず海外の生活費について。台湾は家賃数千元からある。食費は一食60元〜100元くらい。1台湾元=2.6円くらいだった。贅沢をすれば青天井だけど。台湾の新卒者の給料が月給で2万元〜6万元くらいだから月2万元あれば生きていけるのだろう。自分の感覚だと2万元はちょっときつい。家賃6000元くらいの部屋で食費が1万元くらいで少し余裕がある程度か。携帯代とか交通費も必要なのでカツカツである。台湾の安い部屋は台所がついていないところが多く自炊は難しい。 中国は一食10元前後で拉面とか牛肉烩饭がある。ちょっと洒落たところだと30元くらいか。南京のアパートだと家賃数百元くらい。たしか上海の平均賃金が台北を超えたそうだ。たぶん今だと平均賃金が日本円で7万円くら […]

Facebook