この記事はSSSRC Advent calender 2023 7日目の記事として書かれています。

 

どうも~Ashaです。

前に投稿したのは5月のそとろぼ!に初参加してきました! になるので、半年くらい空きましたね。

実は僕、6日目の先輩と同く、毎年アドカレの7日目を担当していたりします。

 

 
3年目となる今年は、競技プログラミングと人工衛星について書きたいと思います。
 
競技プログラミングとは、ざっくり言うと問題を解くプログラムを作って、その正答数や時間で競う競技(ゲーム)です。と言っても、僕はその中でもAtCoderしかやっていないので、AtCoderについて書いていこうと思います。
 

 

AtCoderとの出会い

競技プログラミングとの出会い自体は、実は結構早くて中高生の時に存在自体は知っていました。当時、数学オリンピック物理オリンピックには(実績は何も残せませんでしたが)取り組んでいて、その系列として情報オリンピックの存在を知りました。

ですが、当時は授業で慣れてる数学や物理と比べ、プログラミングはあくまでも趣味でやっていたので、ハードルを感じて受験することはありませんでした。勿体ない...

 

大学1年生になって、夏インターンのコーディングテストで競技プログラミングっぽい問題が出て、全く手も足も出なかったので「これはやらなきゃ!!!」って感じで始めました。

当時、SSSRC内で憧れてた先輩もAtCoderを過去にされていたので、とりあえずその過去だけでも追い抜きたい!!!みたいなモチベも結構ありました。

 

 

Ashaの進捗

AshaはどれくらいAtCoderできるの?って話ですが、アルゴリズムが緑色、ヒューリスティックが水色という、AtCoder内ではなんとも微妙なラインです。

AshaのAtCoderのレート推移

緑色ってどれくらい?というと、

  • 学生ならかなり優秀。
  • エンジニアとしてもある程度の安心感がある。論理的に複雑な処理の実装に対応できない、なんてことはなさそう、くらいには思える。データ量が多い現場など、計算量の多い処理が要求される現場でなければ、このレート帯以上を求める必要はほぼない。

chokudaiさん(AtCoderの社長さん)のブログより 

 

 

と言われるくらいではあるのですが、AtCoderユーザーの中では上位30%ほどと、ちょっとできるくらいのラインです。それ以上を目指すとなると、結構ちゃんとグラフアルゴリズム等が使える必要が出てきます。

 

 

 

AtCoderの特徴と衛星

実際の問題は他のサイトなどで紹介されていますし、過去問はAtCoderのホームページにあるのでそちらをご覧ください。

 

 

 

AtCoderの特徴として、「計算量に制約がある」があげられます。AtCoderではほとんどの場合、

  • 実行時間制限: 2 sec
  • メモリ制限: 1024 MB

の制約があり、この制約を満たさないと誤答になってしまいます。

実際の衛星では、放射性体制や使用実績の問題から、PIC16F877をはじめとした少ない計算資源で制御や通信を行うことが多く、また、ウォッチドックタイマーを用いるので、似たような制約を気にする必要があります。

 

 

じゃあAtCoderをやった方が良いのか

じゃあAtCoderをやった方が良いのかというと、やったからと言って衛星のコードが書けるわけではありません。どちらかというと、通信系や姿勢系といった他の機能のことへの理解や組み込みプログラミングについての理解の方が大事です。SSSRCには今100人近くのメンバーがいますが、僕が把握している限りではAtCoderをしているのは3人くらいしかいません。

でしかし、競技プログラミングには競技性があり、楽しみながら成長することができるので、もし良ければ始めてみてください。

 

以上、Ashaからお送りしました!

明日のアドカレもお楽しみ下さい~