競プロにおける Processing の利用+おまけ

この記事は

Competitive Programming (2) Advent Calendar 2018 - Adventar 6日目の記事です。

先日は Mister さんの 

超自己流! 競プロ解説記事の書き方 - Mister雑記 でした。

 

こんにちは、初めまして ty70 です。

競プロの皆さんは 日々精進していると思いますが ちょっと横道に逸れて「Processing」というプログラミング言語を紹介したいと思います。

 

Processing とは

Processing - Wikipedia を引用すると” 電子アートとビジュアルデザインのためのプログラミング言語であり、Java を単純化し、グラフィック機能に特化した言語といえる。”とあります。

要するに、簡単に絵が描けるという事で、昔 BASIC で絵を描いた時の様な ワクワク感が楽しめるという事です。(歳がバレる)

例えば、

これくらいのコード量で

f:id:ty70:20181205160551p:plain

で、こんな事が出来る。

f:id:ty70:20181205160734p:plain

 

競プロで「Processing」をどう使うの?

自分が作成したコードの結果を 何かしら視覚化して確認したい場合があります。

「Processing」をビジュアライザとして利用します。

下の図は、Marathon Match 93 - CrossStitch で実際に作成したものです。

f:id:ty70:20181206083849p:plain

MM93 - CrossStitch のビジュアライザの結果

ラソンマッチにはテスターが付いていて その中にビジュアライザがあるのですが、自分が知りたい部分を強調したいとき、威力を発揮します。

 

シミュレータとして

また、シミュレータとして「Processing」を使うことも出来ます。

AtCoder のABCの問題をやっていると、「ふむふむ解答は分かった、でも本当にそう動くの?」という事がたまにあります。

最近の問題だとABC111 D - Robot Arms がそうでした。

入力が以下の様で

10
-8 -30
-2 -32
-6 -26
-15 -11
-15 -3
2 4
10 26
0 -6
19 -13
14 -2

その結果が以下の様で

7
32 16 8 4 2 1 1
DLRUDRL
DLRRRRL
DUDLDLL
LRDDRUL
LRDURUL
UDDDRRL
URDLULL
DUUUDRL
RDLLUUL
RLDUULL

のとき、これを視覚化すると

f:id:ty70:20181206055304p:plain

 

の様になります。

終わりに

ここまで読んで下さってありがとうございます。

他にも色々あるのですが、どれも「帯に短し襷に長し」で今回は紹介する事が出来ませんでした。

文章も短いわけで、おまけに「ABC問題達成表(仮称)」を紹介して終わりにします。

 

おまけ:ABC問題達成表(仮称)

外見はこんな感じ。

f:id:ty70:20181206095437p:plain

ABC問題達成表(仮称)

ただ、枠内の問題をクリックすると

f:id:ty70:20181206100717p:plain

ピンク -> 黄色

f:id:ty70:20181206110316p:plain

ピンク -> 黄色

と変化します。

クリックする度に

白 -> 緑 -> ピンク -> 黄 -> 白

と変わります。

https://github.com/ty70/Processing

に Processing のコードを上げます。

 明日は、__tatamo__ さんの

コマンドラインツールatcoder-cliを公開しました | わたしろぐ です。

 

追伸:

Processing が今まで無料の枠があったのだが、

Processing.org に行ってみると なくなっていた!

お金がある人は 払ってもいいかも、お金のない人は Processing ダウンロードでググ...ゲフンゲフン...