ヘッダーをスキップし、本文へ

GO FOR IT -コードで世界は変えられる- ソフトウェアスペシャリスト認定コンテスト

結果発表

たくさんのご応募ありがとうございました。
ソニーのソフトウェアエンジニアが「是非お話させていただきたい!」と思った優秀者は下記の方々です。

優秀者
akihin88さん chen_jiさん gavotteさん
gwさん hajimesさん Hi-kingさん
ke888さん kohyatohさん ku__maさん
kusanoさん Linda_ppさん miru_kuさん
ONUさん sfuji00さん shogo82148さん
swing-byさん Tomozさん tottori3inさん
ygussanyさん yoshioさん さとこーさん
たいぞう2012さん まこにぃさん 空歩さん
冷淡なる...戦士さん    

以上の方々にはソニーで開催されるディスカッションへのご案内をお送りします。
ディスカッションの結果、「ソフトウェアスペシャリスト」に認定された方は認定証、記念品を差し上げます。詳細は別途お知らせします。

出題者のコメント

問題1)

問題が簡単でしたので多くの人に解答いただき、競争率の高い問題でした。
せっかく問題を解いたのに、テストが不完全で答えが正しくない方、アルゴリズムに無駄が多い方については、もったいないと感じました。
ただコードを書いて終わりではなく、きちんとコードをテストして整理をした方を優先的に評価しました。

問題2)

プログラムの知識だけではなく数学的な知識も要求される問題でした。
答えをチェックするのが簡単なためか、解答者の正解率がとても高かったです。
この問題を解いた人はアルゴリズムの考察などをしっかりしている人が多く、非常に面白い解答がたくさんありました。

問題3)

30万文字からsonyとalphaを検索した時間と出力結果を調べてみました。全体で約半数の方が正しい結果を出力していましたが、高速化を行うとプログラムが複雑化するためか、高速化に伴い出力が正しくなくなる傾向がみられました。

設問(i)では、応募のうち約半数がスクリプト系言語を使用し、Pythonで10行程度という短いプログラムを作成した方もいらっしゃいます。

一方、設問(ii)ではIntel Core2 Duo E6550を搭載したPCで実行時間を測定したところ、応募者の約半数が15秒を切る結果となり、15秒以下の全員がC/C++を採用しています。一方、マルチコアCPU用の並列アルゴリズムを採用したプログラムも数個あり、これらについては8コアのPCでも測定しました。

上位のプログラムでは約1秒〜2秒の実行時間となり、これらのプログラムでは、1文字目と2文字目に着目し、それらの位置を記録することによって検索回数を減らしていることがポイントでした。

問題4)

第4問の旋律問題は、正答者数が非常に少なく、皆さんを苦しめたようでした。挑戦いただいた全ての皆さんに感謝します。
本問は、コーディングに必要となる論理的な整理能力の他に、感覚的な部分や別の角度からの視点が求められています。AV機器という論理だけでは魅力を創り出せない製品の開発に必要な力だからです。

直線的・連続的な論理の積み上げでは解けず、何度かは一から戻って考える必要があります。
楽譜を単に記号や暗号とみると、行き詰まるようになっています。旋律、音の集合であることを忘れないことが正答への分かれ道になります。
音の「高さ」と「長さ」という二つの情報をいかに考察し、処理しているかという点を中心に評価させていただきました。高さを考慮する際には全音、半音の違いに注意する点をひねりの要素としています。この考えにはほとんどの方が辿りついていました。力尽きた方には、特に音符の長さを考慮されなかった方が多かったようです。上記の特徴について、素晴らしい考察を示してくださった方も複数いらっしゃいました。私たちも驚いております。

問題5)

普段我々が直面している物事に対して、ふと改善するアルゴリズムを考えてしまうような方こそソフトウェアスペシャリストに相応しいと思いエレベータという題材を選びました。

さて、問題内容についてですが他の問題と比べて深く考えこんでしまう方が多かったのではないでしょうか。まず気づいて欲しかったのが問題としての複雑性です。簡単な探索では解けないように設定しました。このことに気づくと、次に取るべきアクションが見えてきます。ヒューリスティックな評価関数をどのように定義することができるかがこの問題の真の問いになります。

その中でも申告制(事前に全ての入力が把握できること)の優位性をいかに利用できるかがポイントでした。また、考えられる各コードが正常に動作するかをテストするプログラムを作成し、 品質を守ることも大事なことなので問題として出題しました。

皆さんの回答から、評価関数では遺伝的アルゴリズムや制限付き深さ優先探索など、テストプログラムではシミュレータや可視化など、様々なアプローチを見ることができ、採点者としても楽しむことができました。回答された方々ありがとうございました。

ページの先頭に戻る