2016-10-09

高専プロコンの問題がクソすぎるのでプログラミングを放り出して人力に走るのは最適解であり協賛企業はプログラミングを軽視する企業として唾棄されるべき

第27回高等専門学校プログラミングコンテストが不評を買っている。プログラミングコンテストと名前が付いているのにもかかわらず、本選の上位入賞者は、人力で問題を説いたという。特にコンピューターを持ち込んですらいないチームまでいたという噂まで流れている始末。

なぜそんな残念な結果になるのか、高専生のアルゴリズム力が低いからこうなったのだろうか。この謎を改名すべく、筆者は課題を確認した。

http://www.procon.gr.jp/uploads/procon27/1_Apply27.pdf

課題を要約すると、以下の通りだ。

問題

「一枚の木の板(中密度繊維板)を切り出して、50個以下のピース(凹多面体を含む多角形)に分割する。このピースを枠内で組み合わせて板にせよ。正しい位置のピースの数が得点となる」

制限時間は10分から20分。

その他:コンピューター類を持ち込んでよい。ただし競技ブースに電源はない。外部との通信は認めない。

まるでプログラミングするなと言っているような課題だ。要するに、問題は多角形のパズルを解くものであるが、それは問題の最も簡単な部分である。

ピースは物理的に与えられるので、プログラミングで処理するためには、これを何らかの方法でデータとして表現しなければならない。ピースが十分に薄ければスキャナーが使えるかもしれないが、会場に電源はない。したがってスキャナーのような大電力の装置を稼働させるには、大容量バッテリーか発電機を持ち込む必要がある。

なるべく電力を消費しない方法としては、無地単色の布などを背景に、距離を固定したカメラでピースを一つづつ撮影する必要がある。しかし、制限時間は最大でも20分、ピースは最大50個。撮影装置を一台用意した場合、何のトラブルも起こらずに撮影しても10分から20分の制限時間を超過してしまうだろう。

すると、ピースをすべて並べて一度に撮影して、複雑な画像処理をする必要があるが、カメラの角度がピースに対して正面ではない、レンズの歪み、ピースの加工精度など、様々な要因がピースをデータで表現して処理する際の面倒事となる。

外部との通信が禁じられているので、たとえば画像処理に外部のクラウドサーバーのインスタンスを立ち上げるといったこともできない。

それ以外でも、極めて短い制限時間はやはり問題だ。機器のわずかなトラブルにより、10分、20分程度の時間は容易に失われる。

さて、ここに人間という計算機がある。人間は高精度なカメラ、マイク、スピーカー、多関節脚、マニピュレーターを取り付けられた計算機である。人間は完全に自律移動できる。人間は極めて正確なピースの移動操作ができる。人間のパターン認識能力は極めて高く、完全な乱数列に対して存在しないパターンを見出してしまうほどである。この人間を訓練すれば、パズルを高速に解くことができる。人間はコンデンサの破裂、接触不良、宇宙線によるソフトメモリエラーを起こしたりしない。人間のバッテリー容量はとても高く、外部から燃料を一切供給せずとも長時間稼働できる。

したがって、この問題を解くのに人間を使うのは当然の最適解である。ちなみに、同点の場合、勝敗はサイコロを振って決定される。実際に優勝者はサイコロを振って決定されたそうなので、この戦略は適切であったことが実証されている。

明らかに、この問題と制約(電源なし、制限時間10分、外部通信禁止)はプログラミングコンテストにふさわしくない。この内容でプログラミングをさせたいのであれば、競技ではなく、課題公開から半年から1年ほど問題を解けるシステムを開発させたうえで皆で集まって成果報告会を開くべきである。競技には競技として適切な課題がある。この課題は競技に向かない。

高専プロコンの上位入賞者が人力解答者で占められたのは今年が初めてではない。高専プロコンの課題作成者は競技プログラミングを理解していないとしか言いようがない。この課題は、少し考えただけでも、純粋なプログラミング以外の部分が困難である。課題作成者は自分で課題を解いてみたのだろうか。

そして、この高専プロコンを協賛した企業は覚えておくべきだ。これらの企業は、プログラミングコンテストと銘打ちながら純粋なプログラミング力を競う競技のための課題を作成できず、至極自然で適切な戦略として人力解答者が上位を占めるという失態をしでかしたイベントの恥ずべき協賛者である。これらの協賛企業のプログラミングの認識と熱意と尊敬は、こんなイベントを協賛したレベルである。

全国高等専門学校プログラミングコンテスト - 協賛企業 - 第27回大会

協賛企業

プログラミングコンテストは情報関連企業のみなさまの多大なご協力により運営されています。

これらの企業はプログラミングコンテストの目的や高専教育に対して理解を示して下さっています。皆さんも就職対象として検討されてはいかがでしょうか。

上に引用した内容によれば、これらの協賛企業は、プログラミングコンテストに不向きで人間が最適解である見当違いの課題を設定するこのような謎のイベントの目的に理解を示しているようだ。イベントの実際の内容から考えるに、これらの協賛企業はプログラミングに理解は示しておらず、人間が頑張って単調作業をすることが最適解となることに理解を示しているのだろう。プログラマーの地位と尊厳を重要視する人間はこの事実を踏まえて、就職対象として検討するべきである。

なお、信じられないことに、高専プロコンのWebサイトはこの2016年にもかかわらずTABLEレイアウトを使っていた。繰り返す。TABLEレイアウトを使っていた。お後がよろしくなさすぎる。

32 comments:

  1. 競技部門がクソだったことになんの反論もありません。しかし、プロコンには競技部門以外にも自由、課題部門というものがあります。その内容にも触れずに協賛企業を晒すのは如何なものでしょうか。

    ReplyDelete
  2. >実際に優勝者はサイコロを振って決定
    優勝者の決定ではなく、
    7位と8位が同着だったのでサイコロ勝負でした。

    ReplyDelete
  3. > この内容でプログラミングをさせたいのであれば、競技ではなく、課題公開から半年から1年ほど問題を解けるシステムを開発させたうえで皆で集まって成果報告会を開くべきである。

    競技部門の競技内容は4月の上旬に要項が伝えられ、ある程度の解決法をプログラムしたものの提出で予選がされていたはずです。一応、本戦はおっしゃる通りの成果報告会ということになると思います。

    ReplyDelete
  4. 開発したシステムによって問題を解くということなので、人が介在しても問題ないという出題側の考えなのでしょうね。

    ReplyDelete
  5. TABLEタグ使ってるのはXOOPSだからなんじゃ

    ReplyDelete
  6. ×改名
    ○解明

    ですね。

    ReplyDelete
  7. そんな唾棄ずべき協賛者のシステムを使ってC++の参考書を厚顔無恥にも公開しているのはどこの誰でしょうか。

    ReplyDelete
  8. たいした実力もないくせに、本物のプログラマーを募集しているドワンゴについて一言お願いします。

    ReplyDelete
  9. わざわざ協賛企業名を書いてくれて親切じゃないか

    ReplyDelete
  10. くっそ、私の会社入ってる笑。
    来年からクソイベントに協賛しないよう上司に提言しときますね。協賛企業は金出してるだけのとこが多くて、内容は知らないと思いますよ。判断力は身につきそうなイベントですがね笑。私もこんなクソ問題なら人力にはしりますわ( ^ω^ )

    ReplyDelete
  11. とても共感します。しかし、協賛企業については、課題部門と自由部門のみ審査しています。競技部門に企業賞がないのもそのせいです。その点、協賛企業に関しての考えはお間違えかと。

    ReplyDelete
  12. 「正しい位置の」ピースの数がカウントされるのでしたらここまで大きな問題にはならなかったでしょうね。
    問題は「人力で完全回答よりたった1少ない回答を出すのがあまりに簡単すぎた」ことにあると思います。
    機材のセッティングと読み込みにかかる1分で一番大きなピースを外して適当に詰め込めば悠々と一位通過できた問題が敗者復活に一つあり、他の問題もそこまでひどくはなくとも同じような感じでしたから。
    参加学生より。

    ReplyDelete
  13. webサイトのmetaの管理もできない運営らしいので、仕方ない。コピーライトが2001〜2003だそうだし、XOOPSさんが著者らしいし、仕方ない。

    ReplyDelete
  14. 頭の程度の低い記事ですな。
    これでエバンジェリストを名乗るたぁ、笑わせる。

    ReplyDelete
  15. 通りすがりの高専生ですけど、プロコンの競技部門の課題策定に協賛企業は一切絡んでないはずですよ。
    そのあたりは開催校の裁量に任されていますから。文句を言うべきは協賛企業では無い気がします。
    協賛企業は純粋な大会運営に対する資金提供しかしていません。協賛金が多いと企業賞を与える権利を得られるようです。

    それに現状として協賛企業は競技部門ではなく、課題部門と自由部門に対して興味を持っているようで「競技部門を応援したいから協賛になっている」って感じじゃなさそうです。現に企業賞は課題部門と自由部門にしか今年は出ていません。

    競技部門ばかりが悪い面で本大会では目立ってしまっており、高専生としては寂しい限りです。
    また江添さんのような影響力のある方が、あまりそのあたりに関して調査せずに感情的な記事を書かれてしまい、それもまた寂しい限りです。

    ReplyDelete
  16. なんか酒飲んだ勢いで書いたとしか思えない批判

    ReplyDelete
  17. 協賛企業は競技部門の実務(審査)に関ってない、課題部門と自由部門~(ry っていう指摘こそ見当はずれでしょ笑
    協賛っていう言葉の意味もわからないとか高専生の国語力の低さは相変わらずだね

    ReplyDelete
  18. 文句言うのは協賛企業じゃない、ってのはまあその通りではあるけど、こういうクソ課題が生まれないようにするにはスポンサーから攻めるのが一番効果高いだろう。
    実際に課題を作っているところに文句言ったって、スポンサーが金だすなら蛙の面に小便でしかない。

    ReplyDelete
  19. 直接言って聞かないからスポンサー攻めようは正しい方法論でしょう。スポンサーが内容に関知してなくてクソイベントになってるならなおさら必要なのでは

    ReplyDelete
  20. 課題制作者が競技プログラミングを理解していなかったのはその通りでだが
    この記事の筆者は「協賛」という制度と、まともな文章の書き方を理解していなかったと見える

    「協賛企業から金をもらえなくなれば開催できないor改善を余儀なくされる」という戦略は正しいけど、
    「協賛企業はクソな運営と同罪。むしろ悪の枢軸である」と現状と全くそぐわないことを言っているこの記事に賛同しているコメント欄のお馬鹿さんは、
    国語力も低ければ社会経験もないだろうね

    ReplyDelete
  21. >「協賛企業から金をもらえなくなれば開催できないor改善を余儀なくされる」という戦略は正しいけど、
    今後も参加資格のある学生の立場を少しでも考えられれば、そもそも「開催できない」なんて戦略は除外されるはずなんですがね。

    仮にも所属する会社の名前を出してまでブログ運営しているのであれば、TABLEレイアウトなんて指摘して悦に入っていないで、
    「会社に働きかけて、来年の大会は特別協賛して競技部門の監督出来ないか提案してみます」くらいは言ってほしかった。
    ...ネットで少し調べただけの情報で、大会の全体像も把握できていないような人が書いているのだから、高が知れてるけど。

    ReplyDelete
  22. 問題がある事がスポンサーに知れる=開催されなくなる となるほど短絡的に物事は動かないですよ
    社会経験が無いのはあなた方では?

    運営者が改善することをしなければ開催されないかもしれないですけどね…

    ReplyDelete
  23. まあ言いたいことはわからなくもないし,確かに正しい部分もあるが,多くの人が誤解しているであろう部分について補足する。

    1. ルール自体は4月上旬に公開されている
    2. 10月までの半年間で問題を解くためのプログラムをかいたり,競技の練習をしたりする
    3. 電源を用意できなかったのはおそらく会場の制約的問題では?(例年は用意されているし,今年は全体として会場が狭かったためやむを得なかった可能性がある)

    手動については公式に許可されている
    (公式FAQ; http://www.procon.gr.jp/modules/procon27/category.php?categoryid=37 参照)

    とは言え,半年間の期間があった上,「プログラミングコンテスト」に参加する者としてプログラミングせずに参加した参加者も反省の対象ではなかろうか。プログラムに依る回答を行えないのであれば(完全手動で参加するのであれば),棄権すべきだったのではないかと思う。
    高専プロコンの恥であるのはもちろんだが,手動による勝利はその学校自体の恥でもあるし,またその行為によって高専プロコンの名にも泥を塗ったわけだから。

    まあ,江添氏のような影響力の大きい人間が中途半端に,そして適当に殴るだけ殴るような記事を書いて炎上するのはそれこそ恥ずかしいことではあるが。江添氏にも大いに反省していただきたい。

    ReplyDelete
  24. 競技に景品出とらんやん
    問題がクソだったのは確かだけどちゃんと調べて書かんか

    ReplyDelete
  25. 協賛企業は競技部門の問題作成に絡んでないから関係ないって擁護してるバカがいるけど、おいおい笑

    口出せよ。

    同じ名前で開催されてるイベントで自分の担当しか興味ないということは、それらの企業もそういう縦割りの会社であることが示唆されている。
    自分の会社がこんなプロコンの協賛企業に載っていたら恥ずかしくてたまらないのだが、擁護している人は恥ずかしくならないの?苦笑

    ReplyDelete
  26. 一枚の木の板(中密度繊維板)を切り出して、50個以下のピース(凹多面体を含む多角形)に分割する。このピースを枠内で組み合わせて板にせよ。正しい位置のピースの数が得点となる」

    正しい位置のピースの数が得点じゃないですね、競技を見ましたか?全員バラバラに埋めてませんでした?正しい位置のピースはありましたか?

    ReplyDelete
  27. 調べたらわかることを、調べもせず書いていらっしゃるんですね。残念です。

    ReplyDelete
  28. 通りすがりで失礼します。クイズ好きなので、つい読んでしまいましたが、私は個人的にこの設問はスキャナやカメラが必要な問題とは思いません。関係者ではありませんので推測ですが、出題者は日本のトップクラスの生徒であれば満点続出と思ったのではないでしょうか?満点続出じゃなかったのはちょっとがっかりですね。
    画像で何とかしようなんて、ネタですか?もちろん人手は必要ですし、解法がわからなければ人力に頼ることになるかもしれませんが、そんなに難しい問題ではない(と出題者側は思ったはず)ですし、”分度器(5つくらい)”とノートPCにエクセル+VBで50x角の数の組み合わせであれば十分に時間内に解けるものです。ただし、人が測定した誤差をどの様に扱うかが回答時間の制約になると思います。頭がよければ360の倍数からの乖離を誤差係数として、組み合わせ候補を複数挙げるようなアルゴリズムにするとよいのですが、実践的な経験が少ないとそれもちょっと難しいかもしれません。また、組み合わせ候補を確認するのに時間がかかりますね。このあたりのことまで考えた設問だと思うのですが、大人(や職業プログラマ?)の方で大体どれくらいの人がこの問題の解法を理解できなかったのでしょうか?(日本のトップの学生を決めようというのですから。わからない人がいても当然ですし、それが悪い事だと言っているのではないです。)何度も言うようですが、誤差を含めたアルゴリズムを考えるにはそれほど難しくはないです。問題の解き方がわからなかったからといって、出題者側を非難してはいけないと思っています。

    ReplyDelete
  29. 実際の競技の様子を見ずに書いていることが,バレバレのブログですね。
    山のように間違いがあるが,思いつきで批判を書く,この人の人となりがよく表現されている文章です。

    次のような経歴の方が,
    ----
    自由ソフトウェア主義者
    C++ Evangelist
    C++標準化委員会の委員
    ドワンゴ社員
    C++11本を執筆した。
    株式会社ドワンゴで働いている。
    ----

    このようなブログを書く時代は恐ろしい。
    核融合と核分裂を同様に記事にして,核融合がけしからんと訴えるような記者とかわらん。
    地下ピットの水がリトマス試験紙で赤くなったと騒いで,いかにも危険であるかのような報道をする,
    高校の化学さえ理解できてない,記者達と同じです。

    ReplyDelete
  30. 批判記事を書くのであれば,ちゃんと調べて確認しているかと思えば,かなりの部分想像で書いてる.
    ネット検索すれば,想像がいかに間違っているか,すぐに分かるものを.

    文献・資料調査もできない人が,標準化委員会の委員?
    人選間違ってるな.

    ReplyDelete
  31. >この内容でプログラミングをさせたいのであれば、競技ではなく、課題公開から半年から1年ほど問題を
    >解けるシステムを開発させたうえで皆で集まって成果報告会を開くべきである。

    あんたのいうとおり、そうなっているんだが...

    確認もせず、想像で物書きをする浅はかなやつ...

    ドワンゴって、こういうやつを養ってるのか...

    ReplyDelete

You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.