メモ@inudaisho

君見ずや出版 / 興味次第の調べ物置き場

paiza と AtCoder をちょっとやってみた

 今年の三月頃に Aidemy なるWeb学習サービスをやってみて、これはかなり社会貢献度が高いと思った事があったが、それよりももっと求職と教育が結びついたサービスがあった。paiza だ。

paiza.jp

 入門者向けに声優をつかったビデオ教材のようなものなどが大量に揃えてあり、いきなりン十万要求してくるAidemy よりも敷居が低い。まぁもちろん敷居が低いのは広く浅く初歩の初歩からできるからというのもある。Aidemy は jupyter notebook をユーザー向けに公開している形だった。paiza の教育系サービスは使ってないのでよくわからない。とりあえずスキルチェックなるものがあってそれをやってみたら、これは競技プログラミングの形式をとりいれているようだ。まずお題があり、それを処理するプログラムを書き、複数のテストケースを通せるか否かで点数が付くという形式。提出時間の配点もある。スキルチェックのレベルは低い方から D C B A S と各ランクある。自分の課題としていまだに Python2 から 3 へ移行できていないというのがあるので、Python3 に慣れるのにちょうどいいと、とりあえず順番にやっていったところ、六つ目でSランクに到達してしまった。まぁスキルチェックといっても S とか A のあたりは頓知力あるいはアルゴリズムの知識の有無を問うようなものかもしれない。たまたま相性のいいの(S010)にあたって一番上のSランクに到達したのでいい気になって他のSランクの問題をやってみると次は50点(S015)。なんだ簡単だなと計算量を甘くみたせいだ。評価に関係ないが再挑戦はできるので意地になって100点になるまでやりなおし、勢いでその次も選ぶと、経路探索問題のようなもの(S013)にあたった。眠かったので一時間くらいあれこれやっても出口が見えずなげだして寝てしまったが、起きてから地道にやったらちゃんと通るものを書けた。寝てる間に時間切れとなり0点。ここでさすがに反省してとりあえず手を止めた。

f:id:inudaisho:20180907081355p:plain

問題 副題 点数 時間 提出日時
D007 N倍の文字列 100 2m58s 20180901 1729
C016 Leet文字列 100 10m53s 20180901 1744
B012 チェックディジット 100 39m59s 20180901 1828
A004 あみだくじ 80 54m25s 20180901 2241
A003 盤面ゲーム 86 191m15s 20180902 1216
S010 ひとりすごろく 100 17m9s 20180902 1339
S015 ABC文字列 50 7m40s 20180902 1401
S013 理想のタイムトラベル 0 459m15s 20180903 0440

 paiza の Sランクについて市中の声をググるとそこまで凝ったものでもないようだ。ピラミッド図がありSランクは上位2%となっているがどうもこの図は昔から変わってないのでこれくらいになるよう問題を作っているつもりという理念図かもしれない。おもしろいのは昔1%だったが競技プログラミングやってる人が大量に流れこんできて2%になったみたいな言説がある事だが、そんなこまかいところまで調整してるならもっとその下の方の大雑把な数字も変化するだろう。やはり人間、ピラミッドの上にいるように見せかけられると勘違いするものらしい。それはそれとして競技プログラミングなるものが流行っている実態をそこで知ったので、その巣窟である AtCoder もちょっとやってみた。といっても AtCoder 初心者向けのもの( AtCoder Biginners Selection )しかやってない。やりかたはお題がありそのお題を処理できるようなプログラムを書き、テストケースを通ってはじめてAC(ACcepted)となる。全部公開されてるので中には人のをコピペしてる奴もいるが、お題が公開されてからの時間も記録されているので本番の競技(コンテスト)の場合提出までの速さが評価のうちに入るんだろう。まぁ既に公開されてから半年たっているのでそんなのどうでもいいことだが、paiza とちがって実行速度が詳細に出てくるので、ついついそれを最速に近づけるまで何回もやってしまった。Python3は所詮インタプリタなのである程度以上は速度があがらない( AtCoder の場合17ms)。それに、これでやってみてはじめてよくわかったが、Python3はプログラムの記述を短くしても冗長に書いてもあんまり実行速度に差がない。どうやっても17ms以上にはならず、どういうロジックで処理を組み立てるのかが重要になる。そういう意味では教育言語としてかなりよいようにおもった。

 それはそれとして AtCoder の ABS の Python3 で最速目指していろいろやってるうちにあることに気付いた。テストケースが甘い。たぶん paiza よりも甘い。業務的には問題があるレベルだ。paiza のは境界値とか最大値とかをチクチクついてくるがやはり業務経験者が作ってるんだろう。AtCoderのは初心者向けだから手抜いてあるのかもしれんがあれではいかんな。 (20180914追記 入門向けのところだから甘かっただけでAGCだとちゃんと境界値とかチクチク突くようなテストケースが組んであった。つらい)

 といいつつもAtCoderのABCでヒーヒー言ってるレベルなのでエラそうなことは言えない。

 あと、習性で paiza の背景をしらべたらそれもおもしろかった。運営会社のギノの100%株主がエムアウト社で、スタートアップ支援会社ということのようだが、沿革をみるとどうみてもIT系という感じではなく手当たり次第に出資しているようにもみえ、IT系に手を出したのは2010年代だ。この会長田口弘がおもしろかった。もともとミスミという部品商社の社長だったようだが2000年代の初頭にコンサル集団に会社をあけわたしている。エムアウトが当初ジュエリーやアートに凝っていたのは社長やめた田口氏の趣味だったんだろう。この田口氏はミスミ時代から人材育成ということに力をいれていたらしいので、今のギノの路線もなるほどというところがある。

 ところでミスミのその後についてコンサル集団がうまいことやって急成長した、みたいな記事をみたのでそうなのかとおもっていたのだが、田口時代を詳細に分析した論文をみつけた。それをみると、コンサル集団の功績とされているものもどうも田口氏のグランドデザインの延長上にあるようだった。コンサルはゲスなやりかたで低迷から急成長へ一時的に持っていっただけか。田口氏は見事に禅譲したみたいな言説もみかけるのだが、案外部品業界に見切りを付けて調子のいいコンサルにあけわたしただけなのかもしれない。

(追記 : AtCoderも職業案内やりだしたらしい。まぁそらそうだろうなあ。プログラマってできるできないが結構はっきりしてるし。)

プログラミングコンテストチャレンジブック [第2版] ?問題解決のアルゴリズム活用力とコーディングテクニックを鍛える?

プログラミングコンテストチャレンジブック [第2版] ?問題解決のアルゴリズム活用力とコーディングテクニックを鍛える?

世界で闘うプログラミング力を鍛える本 ~コーディング面接189問とその解法~

世界で闘うプログラミング力を鍛える本 ~コーディング面接189問とその解法~