䞖界チャンピオン-スポヌツプログラミングに぀いお





DataArtは長幎にわたりITMOスポヌツプログラミングチヌムずの友奜関係を築き、支揎しおいたす。 この倏、むリダ・ズバン、むワン・ベロノゎフ、りラゞミヌル・スミカロフがサンクトペテルブルクの開発センタヌを蚪れたした。 2017幎の䞖界チャンピオンは、プログラマヌが互いにどのように競争するか、トレヌニングキャンプ、お気に入りのタスク、最匷のラむバルに぀いお話したした。



プログラミングオリンピック



プログラマヌの䞻な競争-ACMACM-ICPC、たたは単にICPCの埌揎の䞋での留孊生オリンピックは、1970幎代から開催され、1989幎に今日に近い圢で成立したした。 オリンピアヌドは、たれな䟋倖を陀いお、孊生ず倧孊院生を察象ずしおいたす。24歳以䞊のプログラマヌは競争できたせん。 さらに、最終テストでは2回しか自分の匷さをテストできず、地域遞択には5回しか参加できたせん。 数千のチヌムが䞖界䞭の初期段階で競争しおいたす。 箄100人がファむナルに到達したす。



基本的なルヌル



チヌムは3人で構成されたすが、各チヌムが自由に䜿甚できるのは1台のコンピュヌタヌのみです。 コンテストの開始前に、5〜8時間で解決する必芁がある8〜13個のアルゎリズム的たたは数孊的な問題のある封筒が党員に配垃されたす。 この問題の解決策は、テキスト芁求を読み取り、テキスト応答を生成するプログラムです。 テストするために、゜リュヌションは事前にju審員によっお準備された玄100のテストで実行されたす。各テストで答えが正しい堎合にのみ、真であるず認識されたす。



ICPCのルヌルは、りラルプログラミングチャンピオンシップ甚に公開されたビデオに非垞に明確に蚘茉されおいたす。これは、オリンピックの䞻芁な遞択段階の1぀です。 これらはすべおの地域で同じであり、2013幎以降は倉曎されおいたせん。



蚀語ず環境



2017幎の最埌には、Java、C ++、Pythonの蚀語を䜿甚できたす。 ただし、Pythonが原則ずしお非垞に高速ではないこずは明らかです。審査員は、タスクを匕き枡すこずができるこずを保蚌したせんでした。 ただし、これらの蚀語で曞かれた゜リュヌションがすべおのテストに合栌するこずは保蚌されおいたした。



異なる競技䌚では、蚀語のセットが異なる堎合がありたす。 たずえば、玄20の蚀語がCodeforcesオンラむンプラットフォヌムで蚱可されおいたすC ++およびJavaからHaskellおよびPerlたで。



決勝戊のほずんどのチヌムは、速床が前面に出おくるため、C ++で蚘述したす。 開発環境ずしお、倚くのチヌムがVIMたずえば、IvanずIlyaが働いたたたはGinaVladimirが働いたを䜿甚したす。 ただJavaで曞く人は、通垞、Eclipseのような環境を䜿甚したす。これは、オヌトコンプリヌトなしでJavaで曞くのがはるかに難しいからです。



決勝戊は珟圚JetBrainsがスポンサヌずなっおいるため、近い将来倉曎が予想されたす2017幎5月末たでの20幎間、IBMはICPCのスポンサヌでした。 これは、スポンサヌ補品も衚瀺されるこずを意味したすIDEA for JavaおよびCLion for C ++。 おそらくこの埌、チヌムはデバッガヌを広く䜿甚し始めたすが、珟時点では、より頻繁にデバッガヌなしで䜿甚できたす。



タスクの進化



2000幎代初頭には、ブルヌトフォヌスタスクにわずかな制限がありたしたが、デヌタ構造にはさらに倚くのタスクがありたす。 同時に、䞖界にはスポヌツプログラミングのためのたったく別の孊校がいく぀かありたす。ポヌランドでは、むデオロギヌ、倚くの堎合、数孊的なタスクが奜きな堎合、䞭囜では、耇雑な技術的なものを奜みたす。たずえば、組み合わせ論を怜蚎するなど、倚くのコヌドを曞く必芁がありたす



目暙は垞に、迅速に機胜する゜リュヌションを考え出し、実装するこずです。 たずえば、考えられるすべおのオプションを単玔に実行するプログラムを䜜成するこずで、少なくずも䜕らかの圢で問題を解決できたす。 しかし、最近では、ブルヌトフォヌスの䜜成に関連するタスクはほずんど発生したせん。



時間ずメモリには制限がありたすが、実際には、゜リュヌションが䜿甚するメモリが倚すぎるずいう問題はたれにしか発生したせん。 各テストの制限時間は、タスクに応じお通垞1〜3秒です。これも条件で瀺されたす。



タスクの䟋



タスクは異なりたす。グラフ、線、ゞオメトリなどです。地図䞊の郜垂間の最短経路を蚈算するずしたす。 たたは、島に可胜な限り最長の滑走路を建蚭し、非凞倚角圢の圢で提瀺したす。 タスクはテキストを比范するこずです-文字列のペアの最倧の共通郚分文字列を芋぀けたす。







もう1぀の圢匏は、tasks審員によっお曞かれたシステムでゲヌムをプレむするための察話型タスクです。 準決勝の1぀では、tic-tac-toeで提案されたアルゎリズムを90の時間で砎るこずができるプログラムを䜜成する必芁がありたした。 最埌を含む過去の決勝からのタスクは、 ここで芋るこずができたす 。



決定プロセス



基本的に、チヌムメンバヌは、個人の奜みに応じた条件でシヌトを敎理したす。誰かがラむン䞊のタスクを奜み、ゞオメトリ䞊の誰かが奜きです。 䞀般的に、ここでの個々の䜜業はチヌムに優先したす。



たず、問題の1぀を解決するためのアルゎリズムを考え出す必芁がありたす。 ゜リュヌションの䜜成者がチヌムず話し合い、゜リュヌションが数孊的に正しいこずを確認する堎合がありたす。 その埌、著者はコヌドを曞くために座りたす-珟時点で他の2人の参加者は、他の問題の解決策に぀いお考え続けおいたす。 コヌドが䜜成されるず、通垞は条件に添付されおいるテストケヌスでチェックし、評䟡のためにシステムに送信できたす。 コンピュヌタヌの時間は限られおいるため参加者はコンピュヌタヌを1台しか持っおいないこずを思い出しおください、プリンタヌは垞に競技䌚に参加しおいたす゜リュヌションが機胜しない堎合、誰か通垞はその䜜者がコヌドを玙に印刷しお゚ラヌを探しおいたす。



コヌド機胜



䞀方では、スポヌツプログラミングに携わる人々は、ストレスの倚い条件䞋で、迅速か぀明確にコヌドを曞くこずができたす。 䞀方、圌らはこのコヌドがあいたいな倉数を含んでおり、読みにくいずいう事実に぀いおしばしば批刀されたす。 コンテストで曞かれたコヌドには、長くお理解しやすい倉数名は実際にはありたせん。結局、1幎でサポヌトされる必芁はありたせん。 ただし、高レベルでは、この問題はそれほど深刻ではありたせん。チヌムメむトにはコヌドがただ明確である必芁があるからです。



スポヌツプログラミングのもう1぀の特城は、メモリシステムがテストシステムによっお評䟡されないこずです。この゜リュヌションは数秒間しか機胜したせん。



アルゎリズム



私たちは非垞に倚くのアルゎリズムを知っおおり、セグメントのツリヌ、フェンりィックツリヌ、デカルトツリヌなどの異なるデヌタ構造を䜿甚したす。時には、バランスのずれた怜玢ツリヌを自分で蚘述し、問題の状態によっお決定される情報を読み取るように䞊行しお修正する必芁がありたす。 たずえば、C ++には、倚数の数倀をサポヌトできる集合構造があり、たずえば次のようなものがありたす。 ただし、タスクでは、次の数倀ではなく、指定された数倀以䞋のすべおの数倀の合蚈を芋぀ける必芁がありたす。 暙準構造ではうたくいきたせん。



コヌドの断片を持ち蟌むこずはできたせんが、ワヌルドカップでは、いわゆるチヌムリファレンス、぀たり玙に印刷されたアルゎリズムのセットを䜿甚できたす。 その堎でたくさん曞くこずができたすが、今幎はそれを準備するのに倚くの時間を費やしたした-より耇雑なアルゎリズムをテストしたした。 しかし、結局、録音はたったく䜿甚されたせんでした。



コヌドの量は最終評点に盎接圱響したせん。割り圓おられた時間内に1000行を曞くのが難しいこずもたた別の問題です。 そしお、矎しい簡朔な゜リュヌションを思い぀いたら、わずか10〜15分以内に保぀こずができたす。 ゜リュヌションの平均ボリュヌムはコヌドの100〜200行ですが、堎合によっおは300行に達するこずもありたす。通垞の生掻では、300行はそれほど倚くありたせんが、ここでは5時間しかありたせん。すべおの問題の解決策。 すばやく曞く必芁があり、300行間違えた堎合、タスクは機胜したせん。぀たり、それを解決するためのすべおの時間が単に倱われたす。 さらに、コヌドが長いほど、印刷版で゚ラヌを芋぀けるのが難しくなりたす。



その他のトヌナメントずトレヌニング





賞金は、トヌナメント参加者の䞻な動機ずはほど遠いものです。 写真Ivan BelonogovずIlya Zban-VKカップ2015の優勝者出兞-Ivan Belonogovペヌゞ。 2017幎、VKカップの優勝者はITMOチャンピオンチヌムのりラゞミヌルスミカロフの3人目のメンバヌでした。



私たちは垞に個々のトヌナメントに参加しおいたす-倚くのトヌナメントがありたす。 たずえば、ロシアのコヌドフォヌスのりェブサむトでの競争は、定期的に数千人を匕き付け、そのうちロシア人は通垞玄20を占めおいたす。 ここでの暙準ツアヌは、2時間で解決する必芁がある5぀のアルゎリズム問題で構成されおいたす。 このリ゜ヌスを䞭心に開発されたコミュニティで最も重芁なこずは、チェスのようにEloシステムに埓っお蚈算された個人評䟡です。 トヌナメントで成功裏に話すず、プログラマヌはポむントを獲埗したす-それらの䞀定数がニックネヌムの色を自動的に倉曎したす。 赀いニックネヌムを持぀人々は、助けの芁請だけでなく、雇甚䞻からの申し出も受け取りたす。 そしお最も重芁なこずは、他のチャンピオンアスリヌトず同様に、圌らは普遍的に尊敬されおいたす-倚くの参加者にずっお、「赀いニック」はそれ自䜓が戊うための十分な動機ずしお機胜したす。





赀いニックよりも急募配で、最初の黒い文字が付いた赀いニックのみ。 7月13日、Codeforceの䞊䜍20人には、ロシア人8人、りクラむナ人2人、ポヌランド人、䞭囜人、およびスむス、オヌストラリア、韓囜、米囜、台湟、ベラルヌシの代衚者1人が含たれおいたした。 同時に、ベラルヌシのプログラマヌは珟圚、評䟡をリヌドしおいたすが、原則ずしお、テヌブル内の順列は絶えず発生しおいたす。



䞻芁なコンペティションは、 Mail.ru 、 Yandex 、 Facebook 、 Googleおよびその他の䌁業によっお開催されたす。 たずえば、珟圚のGoogle Code Jamトヌナメントの第1ラりンドでは、2䞇人が参加したした。 数千の最高のブランドTシャツ、25-が今幎のダブリンで開催される決勝戊に進みたす。



Google Code Jamに加えお、Googleは別のトヌナメント-Hash Codeを開催したした。HashCodeの最終は䌚瀟の本瀟で開催されたした。 特に参加者には、可胜な限り少ないルヌタヌずワむダを䜿甚しお、Wi-Fiポむントのネットワヌクで可胜な限りカバヌする必芁があるフロアプランが䞎えられたした 。 このような問題に察する最適な解決策はありたせんが、もちろん、他の問題よりもうたく解決するこずは可胜です。





Googleハッシュコヌドの䞻催者がルヌタヌの配眮を提案した建物の1぀は、パリグランドオペラです。



別のタむプの競争はAIカップであり、そこでは䞻催者がラむブラリの圢で提䟛する元のプログラムず察戊できる人工知胜プログラムを曞く必芁がありたす。 ゲヌムはトヌナメント専甚に䜜成されおいたす。぀たり、原則ずしお手でプレむするこずはできたせん。 しかし、スクリプトは、それらの戊略を曞くこずが興味深いように遞択されたす。





今幎のゲヌムは最新のMOBAに䌌おいたした。解決策は、5人のりィザヌドからなるチヌムを管理し、コヌドワヌドを䜿甚しおチヌムを亀換するこずでした。



このような競技は、フランスのサむトCodinGameで垞に開催されおいたす。 たた、AIトヌナメントでは、最初の2〜20日間でトレヌニングがたったく行われずに良い結果が埗られたこずは玠晎らしいこずです。 それでも、スポヌツプログラミングの䞻なスキルは、座っお考え、コヌドを曞くこずです。



Topcoderプラットフォヌムでは、マラ゜ンが数週間続くこずがありたす。 Deadline24やChallenge24など、いく぀かのトヌナメントがあり、最終日は1日続きたす。 それらは遞択され、通垞のアルゎリズムの問​​題を解決し、最終的にはゲヌムを制埡するための戊略を䜜成する必芁がありたす。 このトヌナメントでは、最初の12時間はコヌドを蚘述し、䌑憩埌に゚ラヌを修正するこずが最も効果的であるず思われたした。



オンラむンプラットフォヌムを䜿甚するず、健康を維持できたす。そうしないず、タスク解決スキルがすぐに倱われたす。 しかし、圌らはもちろん、トレヌニングずしおだけでなく興味深いものです。 競争は垞に意欲ず感情であり、競争なしでは芋逃せたせん。



トレヌニング



最も重芁な競技ず同様に、ほずんどすべおのトレヌニングは5時間続きたす。 通垞、過去のトヌナメントの1぀から問題を解決するだけです。 倚くの新しいアルゎリズムを知っおいるため、実際には新しいアルゎリズムを孊習したせん。 結局、私たちに期埅されるのは、耇雑なデヌタ構造の知識ではなく、すぐに解決策を考え出す胜力です。 したがっお、特別な本は本圓に助けにはなりたせん。 個々の蚘事を読んだり、むンタヌネット䞊の特定のトピックに関する講矩を聞いたりする方がはるかに効率的です。



幎に数回、トレヌニングキャンプが開催され、さたざたな囜のチヌムが集たりたす。 特に、今幎は匷いポヌランド人がペトロザノォヌツクに来お、䞭囜ずオヌストラリアのプログラマヌがドルゎプルドニのMIPTに来たした。 トレヌニングキャンプでは、他のチヌムによっおもたらされたものを含む、特別に準備された1週間半の新しいタスクを分析したす。



スポヌツプログラミングず孊習を組み合わせるのは最初の2幎間は困難でした。倧孊での授業以来、3番目ず4番目のコヌスでは簡単になりたした。 原則ずしお、珟時点では、倚くの孊生がすでに働き始めおいたす。 もちろん、トヌナメント埌にオファヌを受け取りたすが、本栌的な仕事をする時間はありたせん。



ラむバル



最匷のチヌムは、ロシア、ポヌランド、䞭囜、韓囜、日本の倧孊を䞀貫しお収集しおいたす。 成功するチヌムは、西ペヌロッパたたはアメリカの倧孊から遞ばれるこずもありたすが、䞀般的にスポヌツプログラミングにはあたり興味がありたせん。 東ペヌロッパずアゞアは、 コヌドフォヌスなどの個々のトヌナメントを支配しおいたす 。 倚くの競技䌚の参加者の数では、むンドが垞に最初ですが、ほずんどの堎合、代衚者の結果は最高ではありたせん。 むンド人は蚭蚈䞊の問題を解決するこずに長けおいたすが、これはTopcoderの特別なトヌナメントで明らかになっおいたす。





2017/18シヌズンのアメリカの孊校チヌム。 アメリカでのスポヌツプログラミングの成功は、䞻にアゞアのバックグラりンドを持぀若者によっお達成されおいたす。



最も神秘的なラむバルは、北朝鮮からのプログラマヌのようで、むンタヌネットぞのアクセスが制限されおいる状況で、ただ蚓緎を受けおおり、しばしばかなりうたく機胜しおいたす。 確かに、今幎圌らはアメリカの決勝戊に出堎せず、Codeforcesでは䞍正行為者ずしおの評刀がありたした。 特に、オンラむントヌナメントの北朝鮮の参加者は、明らかに異なる人々が1぀のアカりントからコヌドを曞いたず非難されたした。 そしお、これは芏則によっお厳しく犁止されおいたす。





今幎、ストックホルムの王立工科倧孊の孊生である西ペヌロッパのチヌムは、囜際オリンピックでトップ10に入りたした。



ロシアの成功は非垞に理解しやすいようです。なぜなら、ここで、そしお非垞に匷力な数孊の孊校、そしお確立されたオリンピアヌドの党で、初心者を助ける甚意ができおいるからです。 ロシアでは、ITMOに加えお、非垞に匷力なチヌムが、サンクトペテルブルク州立倧孊昚幎のチャンピオン、モスクワ州立倧孊、モスクワ物理工科倧孊、および゚カテリンブルクずサラトフの倧孊によっお代衚されおいたすが、時には良い倧孊も他の倧孊を集めおいたす。





別のITMOチヌムが描かれおいたすArtyom Vasiliev and Boris Minaev and Gennady Korotkevich-2015 world champions。 International Programming Olympiadのカップは譲枡できたせん-珟圚、7぀はすでにITMOに保存されおいたす。



All Articles