このページの本文へ

特別企画@プログラミング+ 第27回

高校生最後の夏をプログラミングに捧げた!

世界レベルの問題に挑戦しよう! パソコン甲子園2017潜入レポート

2017年12月28日 09時00分更新

文● 吉川あかり

  • この記事をはてなブックマークに追加
  • 本文印刷

 11月3日、4日、今年も全国の高校生が会津に集い、その技術を競い合う「パソコン甲子園」(全国高等学校パソコンコンクール)の本選が開催された。今回で、15回目となる本大会は、全国の高校生、高等専門学校生が情報処理技術を競うもので、予選を勝ち抜いたチームのみが会津大学で開催される本選に出場できる。

 今年は、46都道府県から663チーム1,659名が参加し、39チームが厳しい予選を潜り抜けた。大会本選は2日間にわたり、1日目はプログラミング部門、2日目はモバイル部門を開催。プログラミングは、与えられた問題を制限時間内に解く競技プログラミング、またモバイル部門はテーマに沿ったAndroid用アプリケーションをあらかじめ作り、その成果を競うものだ。

 例年この時期の会津は寒いことが多いが、今年は非常に暖かく、また1日目の夜には会津花火大会が開催されるということもあり、会津若松は非常に活気があった。そんな中開催された本大会の模様をお届けする。

本大会を主催する会津大学は日本初のコンピュータ専門大学として設置された公立大学

今年もやる気満々の筆者

プログラミング部門

 プログラミング部門本選は、同一校の生徒2名によるチーム戦で、各チームにつき1台のコンピューターを使い、制限時間内に問題に対する解答プログラムを作成し、提出する。提出された解答プログラムはルールに従ってコンパイル、実行され、その出力により審査される。正解した問題によって獲得した合計得点等を競う。

 各チームにつき1台のコンピュータを用い、使用できるプログラミング言語はC、C++、Java。何度でも回答の提出は可能だが、順位付けには誤答回数も関係してくるため、いかに誤答せずに正答するかも重要なポイントとなる。

 また、出題される問題は、初級者から上級者まで幅広いレベルの参加者が取り組めるよう難易度の異なる全12問で構成されている。第1問が最も易しく、第12問が最も難しくなっており、問題をクリアするごとに対応した風船が机にくくりつけられ、一目でどこまでクリアしたかがかわかるようになっている。

 さらに競技中盤からはその時点での1位にトロフィー型の風船が設置される。さらに会場のスクリーンには各チームの回答状況がグラフ化して示され、競技自体は地味な印象だが、外で観戦していても何が起きているかわかるようになっている。

これがプログラミング部門の問題だ!

 プログラミング部門の問題を紹介しよう。

問題1 旗を作ろう (3点)

 アイヅ放送協会の教育番組(AHK教育)では、子ども向けの工作番組「あそんでつくろ」を放送しています。今日のテーマは「自分の旗を作ろう」です。旗は長方形で、真ん中に自分のイニシャルを1文字書きます。

【課題】

 旗の大きさと旗の真ん中に書く文字が与えられたとき、右の図の例のような旗を描くプログラムを作成せよ。

【入力】

 入力は以下の形式で与えられる。

 1行に旗の幅Wと高さH (3≦W,H≦21)、旗の真ん中に書く文字cが与えられる。ただし、WとHはともに奇数であり、cは英大文字1文字とする。

【出力】

 指定された大きさを持ち、指定された文字が真ん中に書かれた旗を出力する。旗の四隅には「+」、横の辺には「-」、縦の辺には「|」、旗の内部(真ん中の文字以外)には「.」を使う。

【入出力例】

問題12 鉄の棒 (12点)

 PCK 君は 1 番から N 番までの番号が付いた N 本のまっすぐな鉄の棒を持っていましたが、運搬中に 1 番目から M 番目までの M 本が折れ曲がってしまいました(0≦M≦N)。折れ曲がった棒は、どれも1箇所で直角に曲がっています。

 PCK 君は折れ曲がった棒の中から X 本、まっすぐな棒から Y 本を、2X + Y = 12 を満たすようにそれぞれ選び、それらをすべて使って直方体を1つ作ろうとしています。ただし、棒をつなげるのは、直方体の頂点だけです。PCK 君は、そのようにして作ることのできる直方体の形がいくつあるか数えようとしています。

【課題】

 鉄の棒の本数と長さ、折れ曲がっている位置、直方体を作るのに使う棒の数が与えられたとき、作ることのできる直方体の形がいくつあるか求めるプログラムを作成せよ。ただし、ある直方体 i と別の直方体 j の幅、奥行き、高さをそれぞれ小さい順に並べたものを Ai,Bi,Ciと Aj,Bj,Cjとしたとき、Ai=AjかつBi=Bjかつ Ci=Cjとなる直方体は同じ形とみなす。また、どの鉄の棒も十分細いので、太さは無視することができるものとする。

【入力】

 入力は以下の形式で与えられる。

 1行目に、鉄の棒の数 N(6≦N≦6000)と折れ曲がった棒の数 M(0≦M≦N)、直方体を作るのに使う折れ曲がった棒の数 X(0≦X≦6)とまっすぐな棒の数 Y(0≦Y≦12)が与えられる。ただし、2X+Y=12、X+Y≦N、X≦M である。続く N 行に i 番目の鉄の棒の長さを表す整数 ai(1≦ai≦6000)が cm 単位で与えられる。続く M 行に、1 番目から M 番目までの鉄の棒が折れ曲がっている位置を表す整数 bi(1≦bi≦3000)が与えられる。biは i 番目の鉄の棒が端から bi cm のところで直角に折れ曲がっていることを表す。ただし、1≦ai-bi≦3000 である。

【時間制限】

 入力に対して、実行時間が4秒を超えてはならない。

【出力】

 直方体の形の個数を1行に出力する。

【入出力例】

 いかがだろうか。解答については、パソコン甲子園2017公式ホームページにて公開予定だ。今年の問題の他、過去問も掲載されている。ぜひチェックしてみてほしい。

経過

 競技時間は、4時間。13時45分、開始を知らせるホイッスルが鳴らされた。開始7分で問題をクリアするチームが出始める。灘高等学校、海城高等学校が1問目をクリア。続いて複数のチームが1問目を次々クリアしていく。開始15分、海城高等学校が2問目をクリアと同時に灘高等学校が4問目をクリア。開始20分、複数のチームが2問目をクリア。

用意された12種類の風船

29チームが一堂に会した

 競技開始30分、こう着状態。慶應義塾高等学校が3問目をクリア、同時に海城高等学校が4問目まで全てクリア、1位におどり出る。その時点で、海城高等学校、同率で灘高等学校、慶應義塾高等学校、ついで東京都立産業技術高等専門学校という順に。トップが入れ替わる激しい展開。

分担して問題を解くチーム

前面のスクリーンに現時点の点数が表示される

 開始1時間、4問クリアで複数チームが並ぶ中、宮崎県立宮崎西高等学校が6問目をクリアしてトップに。前回グランプリで、予選1位の開成高等学校は未だクリアなし。開始1時間20分、海城高等学校が7問目をクリアし僅差でトップに。次いで宮崎県立宮崎西高等学校と灘高等学校が同率で2位となる展開。1問差が多くまだまだわからない展開。

 競技開始一時間半、ようやく開成高等学校が動き出す。7問目まで次々クリア。一気に同率1位に。2時間経過。開成高等学校が9問目をクリアし頭一つ抜き出る。開成高等学校、灘高等学校、海城高等学校という順位。

開成高等学校のグラフがまさかの直角

風船が増えてきている

 3時間経過。開成高等学校が8問目もクリアしぶっちぎる。その後ろに北九州工業高等専門学校、海城高等学校、灘高等学校、帝塚山高等学校が続く。残り30分になると、スクリーンのグラフの更新が止まり、経過がわからなくなる。一体結果はどうなるのか。終了と同時に拍手が起こる。

各チームラストスパート

緊張の時間が続く

プログラミング部門、結果は…

グランプリ

『大好き、一面の雪』 開成高等学校 東京都

 問題を解く担当と確認担当に分かれるという作戦で攻めたという。誤答を少なくするため、最初の30分で問題の吟味をして、一気に問題を解いていった。実はこの作戦、昨年も実行していた。昨年もグランプリを獲得した高谷悠太さん(写真右)は今年で最後の参加だったが、大学生になっても競技プログラミングを続けるという。

準グランプリ

『solars』 北九州工業高等専門学校 福岡県

第3位

『Noyashi』 東京都立両国高等学校 東京都

審査委員特別賞

『C++Castle』  海城高等学校 東京都

モバイル部門

 モバイル部門競技では、Android搭載のスマートフォンを対象に、テーマに基づいた“夢のある”アプリケーションを企画・開発し、その総合的なプロデュース力を競い合う。今年のテーマは「友と学ぶ」。予選は、作成するアプリの企画書を提出、審査するもの。本選では、審査員と観客に向けたプレゼンテーションを行なったのちに、各ブースでセッションが行われる。作品とプレゼンテーションの両方において審査が行われ、審査基準は、企画力、インパクト、実現可能性、実用性の4点。毎年工夫を凝らした大人顔負けのプレゼンテーションで、観客を楽しませてくれる。プレゼンテーションでインパクトを残したチームが賞に食い込んでいる印象を受ける。

気になった作品をご紹介

 今年も各チーム力作が揃った。そんな中でも、特に筆者が気になった作品を紹介する。本選の様子については、パソコン甲子園2017公式ホームページに掲載されているのでチェックしてほしい。

『こたはるwith S』 福島工業高等専門学校 福島県 さくディべ

優勢と劣勢の判定もできる

ディベートのすごさを熱く語ってくれた

 ディベートの流れに則って、視覚的にディベートができるというアプリ。勉強系のアプリが多かった中で、ディベートに着目している点が特徴的だ。なんとこのチーム、もともとプログラミングはできなかったが、この大会に出ると決めて夏からプログラミングを勉強し始めて、このアプリを仕上げたという。

『うさぎさん』 久留米工業高等専門学校 福岡県 さーくらーにんぐ

コメント機能もついている

たくさんのギミックでゲーム性が抜群

 友達同士で問題を出し合い、ゲーム感覚でポイントを競うアプリ。問題を解くと、爆弾などのアイテムを手に入れることができ、使うことができる。イラストも本格的で、実際に遊びたくなるような出来だ。このチームには、プログラミング部門に出場した生徒もいる。

『ULANAND』 鈴鹿工業高等専門学校 三重県 NOTELOOK

パンダのTerasu。かわいい

ノートを読み取るだけでスキャンも簡単

 Terasuというデバイスでノートを読み取り、クラスの友達と共有するというアプリ。アプリ上でわからない問題について質問すると、その問題をわかる友達が自分のノートにデータを投影し、その上からコメントを書くことができる。その後、書き込んだコメントをTerasuで読み取り、質問した友達のノートに投影されるという仕組みだ。今回唯一ハードと絡めたアプリということもあり、注目を集めた。Terasuはそれぞれイラストが書いてあり、それぞれ可愛いデザインになっている。

『ちょこちっぷマフィン』 沖縄工業高等専門学校 沖縄県 おたすけじゅーる

シンプルなデザインで使いやすい

「おたすけ」のための機能も豊富

 発達障害の友人のために作ったスケジュールアプリ。学校生活の悩みを解決するため、時間のビジュアル化、サポーターの支援システムなど、友人を助けるための機能を盛り込んだ仕組みになっている。実際に作っては感想を聞き、何度も作り直してこの形に落ち着いたという。余計な情報を入れないよう、スッキリしたデザインになっているところも高評価だった。

モバイル部門、結果は…

グランプリ

『ULANAND』 鈴鹿工業高等専門学校 三重県

ベストアイデア賞

『こたはるwith S』 福島工業高等専門学校 福島県

ベストデザイン賞

『ちょこちっぷマフィン』 沖縄工業高等専門学校 沖縄県

 今回はテーマから突き抜けたアイデアの作品が評価されたという印象。来年以降参加する高校生諸君は、テーマにとらわれない自由な発想で勝負すると勝機が見えるのではないだろうか。

まとめ

 プログラミング部門では、年々出場生徒のレベルが上がっている印象を受けた。モバイル部門では、アイデアで突き抜けたチームが見られた。また、今年とくに目立ったのは、部活の先輩や先生に教わることなく、自発的にプログラミングを始めた高校生が多かったことだ。そのような生徒は、プログラミングを自己表現のための手段として選択していた。多様な個性を持った高校生がこのような大会に気軽に参加できるようになってきていることから、プログラミングの敷居が低くなっていることが伺われ、今後も大会への参加者数アップが期待される。また、大会を通して、志を同じくする仲間と出会えたことは、生徒達にとって貴重な経験となったにちがいない。彼らのさらなる飛躍に注目したい。

パソコン甲子園2018開催日程(予定)

・平成30年11月17日(土)・18日(日)
・会場:会津大学(福島県会津若松市)
・競技部門:プログラミング部門、モバイル部門、いちまいの絵CG部門
・応募資格:平成30年度において、高等学校及び高等専門学校の3年生まで並びにこれらと同等と認められる学校の者
・参加特典・各賞及び副賞 《こちらから》

【関連リンク】
会津大学:http://www.u-aizu.ac.jp/
パソコン甲子園公式ページ:http://web-ext.u-aizu.ac.jp/pc-concours/

カテゴリートップへ

この連載の記事
ピックアップ