MN-Core Challenge (original) (raw)
お知らせ
2024/10/03 賞金受け取り方法
ログインすると、対象者にはメニューバーの Tips の横に「Get Prize」の項目が表示されます。
そちらのフォームに必要情報を記入し、10/18中(JST) までにご送信ください。
2024/09/24 アンケートご協力のお願い
MN-Core Challenge のコンテストが終了しました。
長期間のご参加ありがとうございました。
今後の改善のため、以下のアンケートにご協力いただければ幸いです。
https://forms.gle/UPPSG5ALgSksLsWk8
※特別賞のためのアピールをされる方もこちらからお願いします
なお、順位表の凍結解除は 9/24 中を予定しております。
2024/09/19 懇親会募集開始のお知らせ
コンテストの振り返り・解説・懇親会の募集ページを公開しました!
下記connpassページよりぜひご参加ください。
https://preferred-networks.connpass.com/event/331402/
過去のお知らせ 2024/09/18 許容誤差についての補足
特に許容誤差の書かれていない問題については、テストケース入力に対する出力が正解値と完全一致する必要があります。
正確には、浮動小数点数はfloat(HalfおよびFloatの場合)またはdouble(Doubleの場合)に変換されて比較され、MN-Core上で複数の表現がある0や無限大は同一視されます。
2024/09/13 懇親会の告知
コンテスト終了後の9月25日(水)19時より、MN-Core Challengeのコンテスト振り返りなどを行う懇親会を開催する予定です。
大手町のオフィスでのオフライン参加に加え、配信も予定しております。ぜひご参加ください。
後日に参加のための Connpass ページを公開します。
2024/09/13 入力依存解について
現在、テストケース依存解が少々確認されておりますが、正答として扱います。
これ以降テストケースを変更してのリジャッジは行いません。
なお、現在の の解法はテストケースに依存していません。
2024/09/12 L1BM、L2BMのラップアラウンド動作について
PE命令によるL1BMおよびL2BMへのアクセスで、ラップアラウンド動作(アドレスがメモリサイズを超える場合にアドレス0側に戻る動作)せず意図しないアドレスにアクセスすることがわかりました。
仕様としてはラップアラウンドするのが正しく、将来的にはエミュレータを修正予定ですが、修正版のエミュレータが提供されるまでの間は、お手数ですが利用するL1BMやL2BMのアドレスを全体的にずらすなどして、ラップアラウンド動作が発生しないよう対処していただくようお願いいたします。
なお、L1BM全域を利用しているなどでそのような対処が難しい場合はご相談ください。
2024/09/12 Tipsのリンク修正
行列演算の図まとめページからのリンク先を一部修正しました。
2024/09/06 SDM更新と問題ページへの説明の追記
ソフトウェア開発者マニュアルを更新しました。
日付が9/6になっているものが最新版となります。
更新内容は以下のとおりです。
- 並列実行条件にマスク適用語長が一致していることを追加
floor
命令の説明の更新d{m,v}{fma,mul}
の使用例の追加{f,h}v{add,passa}
の説明、L1BM 命令式のリスト、ブロックフロート化のタイポ修正
また、問題ページに説明を追記しました。詳細は以下のとおりです。
- 問題「Square Sum」へ、倍精度乗算命令
dvmul(u|d)
の解説を追加しました。 - 問題「Square Sum」と、問題「A + B」へ、図を追加しました。 2024/09/03 Transposeのテストケースの変更
参加者より、Transposeにおいて入出力条件を満たさないコードが一部通りやすい状況である点をご指摘いただきました。
これを利用した入力依存解が入力非依存解よりも短くなることはないと考えておりますが、参加者の方々が入力依存解を心配して取り組むのは望ましくないため、テストケースの変更を行い、リジャッジを実施しました。
リジャッジの結果、16行以上の一部提出の正誤判定が変化しました。
お手数ですが各自 Submissions よりリジャッジ結果をご確認いただければと思います。
2024/08/30 機能追加と修正
- discord にて最短行数の更新通知botが稼働し始めました。
- コードテストで
quit
命令が使用できるようになりました。 - Square Sum の Explanation の一部誤りを修正いたしました。 2024/08/29 SDM更新
ソフトウェア開発者マニュアルを更新しました。
日付が8/29になっているものが最新版となります。
更新内容はp60-p61「3.6.1.6 m - LM0 (ベースアドレスレジスタ書き込みを除く)」のアドレス計算式にあった誤りの修正です。
2024/08/29 wait命令に関する補足
count upの問題文にMV命令・wait命令について追記しました。
本コンテストではwait命令なしで問題を解くことができます。
2024/08/28 練習問題の想定解とヒントの公開
練習問題のヒントと想定解を各練習問題ページの下部に追加しました。
2024/08/28 Tipsへの追記
Tips集 に、MN-Coreの機械語と構造に関する解説を追加しました。MN-Coreの理解向上にぜひお役立てください。
- VLIW と MN-Core 2024/08/28 オファーに関する記述の追加
賞金のセクションに以下の一文を追記しました。
「さらに、上位入賞者にはコンパイラエンジニア採用で選考過程の一部免除のオファーをさせていただきます。」
2024/08/27 練習問題の模範解答掲載の予告
本番開始1時間前の 8/28 12:00(JST) 頃に各練習問題ページの下部に模範解答を掲載いたします。
2024/08/27 アセンブラ修正
アセンブラの軽微なバグを修正しました。
お手数をおかけしますが、ローカル環境を構築されている方は judge.zip の再ダウンロードをお願いします。
なお、これまでの提出には影響はなく、また練習問題に挑戦する際に大きな影響のある修正ではありません。
2024/08/27 練習問題のヒントの補足
練習問題は MN-Core の動作について順を追って理解していただくために、Plus 2 は複数 PE ではなく単 PE 用に入力を小さくしています。
そのため、公開されているテストケースに依存した解法を用いることで、\(5\) 行で解答できます。
\(3\) 問目の A+B 以降ではテストケースが十分に大きくなり、また強固なテストになるように作成されているため、テストケースの内容依存で短くする解法は無いと考えています。
そのためテストケースに依存せず、問題文や入力の制約だけ考慮した考察で楽しんでいただけると考えております。
なお、弊社の不手際によりテストケースに問題が見つかった場合には、テストケースを修正しリジャッジすることがあります。その際はご了承下さい。
2024/08/26 練習問題のヒント
練習問題には説明順序の都合上、テストケースの弱さを利用することで現在の \(2\) 行, \(6\) 行, \(6\) 行 よりさらに短くできる問題が存在します。
本番ではそのような問題は無いつもりです。もしあればテストケースを修正して rejudge する可能性があります。
一方、問題の Input に書かれている制約(例えば Welcome では \(0 \le X[i] \le 50\))に依存した解法で Accept する事は問題ありません。
期間
- コンテスト期間は 2024/8/28 13:00:00 (JST) から 2024/9/24 0:00:00 (JST) です。
- 2024/9/23 0:00:00 (JST) 以降、順位表が凍結されます。
- 自分の最短行数、得点については凍結中も更新されます。
- コンテスト終了後も提出は可能ですが、最終スコアには反映されません。
- コンテスト開始前からも \(3\) 問の練習問題に挑戦できます。
SNS・公式 Discord 等の利用について
コンテスト開催中に、SNSなどでコンテストの問題について言及していただいて構いませんが、ソースコードや方針を公開するなどの直接的なネタバレ行為はご遠慮ください。
ただし、練習問題に関しては相談・協力・ネタバレ可能です。
ハッシュタグは #MNCore をご利用ください。
「MN-Core 勉強会 Discord」内にて、MN-Core Challenge のお知らせの通知や質問対応などをいたします。こちらのリンクより、ぜひご参加ください。
参加資格
以下の例外をのぞき、どなたでも参加可能です。
- 開催期間内のいずれかの日において、インターンも含む、株式会社Preferred Networks、株式会社Preferred Robotics、及び株式会社Preferred Elementsの役職員、被雇用者である方
また、主催者や他の参加者等の迷惑になる、若しくは本イベントの円滑な運営を妨げるような振る舞いがあるなど、本イベントへの参加が不適当であると合理的に当社が判断した方については、コンテスト参加後に参加資格の取り消しを行うことがあります。
入賞者
順位賞
1位 | sosuupoyo |
---|---|
2位 | logicmachine |
3位 | tails |
4位 | sakeikuratarako |
5位 | angel_p_57 |
6位 | risujiroh |
7位 | yupiteru |
8位 | mujc14 |
9位 | v |
10位 | dnek |
最短賞
Transpose MAB | sosuupoyo |
---|---|
Inversion Small | tails |
Inversion | sosuupoyo |
FizzBuzz | tails |
Par賞
mm_mm, rk222, Rssll_Krkgrd, ryuz, hogemiz
特別賞
spica314 | FizzBuzz用にRust製のvsm生成器を作成して解いたことと、将来の最適化への展望を示されていたことから |
---|---|
Fuyuru | Absで行列レジスタ経由の2回転置によるコピーで最短タイを達成されたことと、Convert Endianの定数16008(10進)のユニークさから |
sakeikuratarako | mshiftの2長語動作が仕様通り実装されていないことを指摘し、仮に使用可能であった場合のゴルフへの活用方法についても言及されていたことから |
賞金・抽選
賞金は、コンテスト終了時点の凍結解除後の順位表をもとに、以下のとおりとします。
順位賞
1位から10位までの方々に以下の賞金を贈呈します。
1位 | 400,000 JPY |
---|---|
2位 | 200,000 JPY |
3位 | 100,000 JPY |
4位 | 50,000 JPY |
5位 | 30,000 JPY |
6-10位 | 20,000 JPY |
最多最短賞
下記の最短賞に該当しない問題において、101点を獲得している問題数が最も多い方上位3名にそれぞれ 20,000 JPY を進呈します。
そのような問題数が同じ場合、最多最短賞に該当する問題の中でより後の問題でを獲得している方を優先とします。
最短賞
Transpose MAB, Inversion Small, Inversion, FizzBuzz の 4問 それぞれについて を獲得している方に 10,000 JPY を進呈します。
Par賞
最終問題以外の全問題(練習問題を含む)をパー 以下の行数で正答した方の中から抽選で決定した5名にそれぞれ 10,000 JPY を進呈します。
他の賞金の対象となっていない方を優先します。
100位賞
オンラインジャッジシステムの順位表において100位の方に 5,000 JPY を進呈します。
特別賞
コンテスト終了後にご提出いただいた解法アピールや、解法の面白さなどに基づいた審査で決定した最大3名に総額 30,000 JPY を進呈します。
さらに、上位入賞者にはコンパイラエンジニア採用で選考過程の一部免除のオファーをさせていただきます。
コンテスト期間終了後、2024/10/4 23:59 (JST) までに賞金対象者を確定してオンラインジャッジシステムでお知らせし、ユーザーIDを掲載いたします。
賞金対象者につきましては、各該当者のみにオンラインジャッジに掲示されるフォーム宛に必要に応じて賞金等のお渡しに必要な情報を提示頂く必要があります。
指定した期日までに賞金の進呈に必要な情報の提供がなかった場合は、賞金を放棄したものとみなします。
なお、賞金対象者の繰り上げや再抽選は行いません。
また、賞金の進呈は日本の居住者に限ります。
いずれの賞金も計31点以上を得点した方のみが対象となります。
順位
ジャッジ
- テストケースのvsmの
YOUR CODE WILL BE INSERTED HERE
と書かれた行を提出されたvsmで置換して実行し、期待される出力が得られた場合正答とします。 - 提出されたvsmを機械語に変換した後、
m
またはj
で始まる行以外は無視されます。(コードテストではDebug get文・Debug set文が使用可能) - 正確には、judge.zip 内のスクリプトを用いて次のコマンドが正常終了すれば正答とします。
$ python3 judge.py -v 2>&1
※Ubuntu 20.04.6 LTS で動作確認済 - ただし、実行時間が \(30\) 秒を超えた場合実行を中断し、誤答として扱います。
- また、judge.py の出力が \(10\) MiB 以上になった場合も実行を中断し、誤答として扱います。
- 不正・実行環境のバグ・問題不備等の対処が入る可能性があります。更新はオンラインジャッジおよびDiscordでお知らせします。
- 公平のため、テストケースの変更やリジャッジ、正答の取り消しなどを行う可能性があります。
入出力に関する共通ルール
- 各入力について、出現しないレベル(
L2B
L1B
MAB
PE
W
)は放送されています。すなわち、例えばL2B
が出現しない場合どのL2B
についても同じデータの並びになっています。 - 各出力について、出現しないレベル(
L2B
L1B
MAB
PE
W
)は \(0\) 番目の値のみを比較します。すなわち、例えばL2B
が出現しない場合 \(0\) 番目のL2B
の値のみが合っていれば正答になります。 - 各浮動小数点数の入力は正規化されています。すなわち、指数部が \(0\) なら全ビットが \(0\) になっています。
- 入力部分以外の領域は \(0\) で初期化されています。
ジャッジ結果
- Accepted: 正答したことを表します
- Wrong Answer: 出力された値が間違っていることを表します
- Time Limit Exceeded: プログラムの実行が \(30\) 秒以内に終了しなかったことを表します
- Runtime Error: 実行時エラーが発生したことを表します
- Output Limit Exceeded: judge.py の出力が \(10\) MiB 以上になったことを表します
禁止事項
下記の禁止事項に該当するとみなされたとき、正答の取り消しやアカウントの削除を行う可能性があります。
- 練習問題以外の問題を複数人で協力して解くこと
- 複数アカウントを作成すること
- 短時間に何度もサーバにリクエストを投げること
個人情報の取扱い
- MN-Core Challenge(以下、本コンテスト)参加者は、本コンテスト開催時に提供されるオンラインジャッジシステムにユーザー登録を行う必要があります。
- 登録の際にはユーザ名とパスワードのみが必要です。
- 賞金対象者につきましては、各該当者のみにオンラインジャッジに掲示されるフォーム宛に必要に応じて賞金等のお渡しに必要な情報を提示頂く必要があります。
- その際に提示された個人情報は賞金贈呈のためにのみ使用します。また、個人情報の取り扱いに関しましてはプライバシーポリシーに則ります。
イベント規約・お問い合わせ
本コンテストにご参加いただくには登録時にイベント規約に同意していただく必要があります。
その他、本イベントに関連するお問い合わせはMN-Core Challenge 事務局までお送りください。