成長観察日記

競プロとかPythonとかに関しての成長記録

ABC283で入茶しました!〜成長日記〜

華麗なる右アッパー(©︎Ruteさん)で、ついに照り焼き色になりました〜!!!

すごい、どこもかしこも茶色でうれしい!!

うれしいので、わたしのAtCoder歴を辿る、成長観察日記をお届けすることにしました。
ひとりじゃ絶対無理だったーので、お礼も込めて、アカウント名を出したりしてしまってます…もしよろしくなかったら消すので、教えてください!

というわけで、お見苦しいところもある日記ですが、どうぞ行けるところまでお付き合いください



第一部

2021年

11月

伝来

プログラミングは、JavaScriptがちょっとできる。
学校行ってなかったから、算数は割り算も怪しい。

そんなぽやぽや社会人に、当時青色erの神より †きょうぷろ† の存在が伝えられる
やってる姿がかっこよすぎて憧れて、アカウント登録をする



12月

12/11(土) はじめてのAC、そしてはじめてのWA

チュートリアルをやってみる
はじめてのもんだいを、はじめてのC++でとく

Submission #27812359 - C++入門 AtCoder Programming Guide for beginners (APG4b)



にもんめ、はじめてのWA

Submission #27812427 - C++入門 AtCoder Programming Guide for beginners (APG4b)

AtCoder! って、hello world!のびっくりをとりわすれたんですね。おちゃめ


12/15(水)〜12月末

四則演算で電卓を使う始末、というか()かっこのある四則演算の存在を知らなかった。
やばい、このままじゃきょうぷろできない…と、6年分の算数をちびむすドリルで初履修


iPadでやる、という発想がなく、全て印刷し、12月末日までに無事履修完了。



2022年

1月

01/02(日)〜01/04(火)

2日間で20問ちょいのチュートリアルをすすめる。



01/08(土) はじめてのコンテスト はじめての0完

総AC29 チュートリアルEX11 まで進み、C++でのforとifを会得しいざコンテストへ!

さあ、いざコンテスト開始!ご覧ください!!
はじめてのA問題が、こちらっっ!!

A - Weird Function



burioden選手、100分間紙にひたすらfと()とxを書き続け、問題の理解すらできず、0完!!!


AtCoderって、プログラミングって、むずかしいんだなあ…(頬濡らす涙)」

この頃は他人の解答を見るとか、解説の存在も知らなくて、ただ枕を濡らすだけの日々を月末まで続けました。

後日、神から
「関数の中には、関数を入れられるのじゃ」
と教えていただき「そうだ関数じゃん!!」と、経験言語のJavaScriptでAC

アドバイスいただきJavaScriptでやることはせず、C++Pythonに完全移行
次のコンテストに向けて、アルゴ式でPython文法と基本的な計算を学びはじめました。



01/30(土) 2回目のコンテスト はじめてのコンテスト中AC

Pythonに切り替えてからはじめてのコンテスト
19分 1完

この時のA問題は…こちら!!!

A - Not Overflow

べき乗を知らず「なんだこの、ちっちゃい数字は…?」とググり、なんとか答えを導き出しAC

B問題は80分いすをあたため続ける
おそらくこの頃には解説の存在と、他の人の解答の見方を教えてもらったか学んで、コンテスト後にzipの存在を知り、無事にAC



2月

02/05(土) 3回目のABC はじめてのTLE 再びの0完


ん?A問題で3ペナなんてあるんでしょうかねえ?
実はですね、ご覧ください、この日のA問題!



A - Exponential or Quadratic

「この前やったべき乗ってやつだ!よおし、解けるー…あれ??TLEってなんだ??」

計算量を知らなかった魚、またしても数学に殺されるの巻



02/13(日) はじめてのARC

ABCとの違いがわからず無謀にも参加、A問題を開き唸り続けて気絶



02/19(土) 4回目のABC はじめての2完(ノーペナ)

すごいでしょう?!ノーペナで2完しました!
でも、A問題がえらい時間かかってますね…何を隠そう、この日のA問題はこちら!!


A - Horizon

何度でも言う。私は算数を学び終えたばかりである

「あ、この記号…あれだ…大学の時の統計学で出てきて、そして…寝たやつ……(フッ)」

となった後、意識を取り戻し、死ぬ気でググってAC

この日、B問題も数学チックだったので、綺麗に数学セットの回でした。よく解いたなあ

しかし、わたしの心は数学によりちゃっかりと折られ……



03/05(土) 5回目のABC

unrated未参加

04/09(日) 2回目のARC

unrated未参加

04/10(土) 6回目のABC

unrated未参加


そして、わたしは…競プロをあきらめました


〜終〜 ©︎BRI.



第二部

6月

06/17(金) 茶色宣言

神様とめっちゃ酒飲んだ。
どうやらこの時「茶色になる!!」を記憶の彼方で宣言したようです。
潜在意識に刷り込まれ、この後から急に予定を調整し、AtCoderのために土曜日を捧げる人になりました。

ちなみに翌日は…友達と旅行だったため、ABCには未参加



7月

07/02(土) 7回目のABC 復活

1完、Bは1回WAでタイムアップ

Twitterをはじめ、いっぱい泣いて、いっぱいこわがって、いっぱい悔しがるをはじめる



07/09(土) 8回目のABC 算数が、できぬ

算数ができず2ペナ1完



07/16(土) 9回目のABC B問題が、解けぬ

ノーペナ1完!



07/23(土) 10回目のABC なんとか、2完

1ペナ2完

7月は、全体的に「コンテストに出て、問題を解く」くらいしかできてなかった



8月

08/06(土) 11回目のABC 引っ越し疲れた1完

引っ越しを終えた後参加、疲労で2ペナ1完



08/13(土) 12回目のABC よし2完

1ペナ2完



08/21(土) 13回目のABC(Unrated)

1ペナ1完
Summer Sonic2022を観に行ったためUnrated
21時に宿に辿り着けなかったので、携帯でA問題だけ通す



08/27(土) 14回目のABC(Unrated)

1完 B問題はWA終わり。
Sweet Love Shower2022を観に行ったためUnrated
普通に参加するつもりだったけれど、宿がガチ山の中で、デザリングでも提出不可能だったためUnratedに変更
先週と同じく、携帯でコードを打って、提出した。

ところで、私はかなり本を読むタイプなのです。
E8さんのアルゴリズムx数学本は、数学がまだわからない私には計算量のところで挫折してしまった苦い思い出があり…
ところが、タイミングばっちりで出たけんちょんさんの鹿本は、読破することができて、とても自信になった。

そして月末、AtCoder ProblemsのA問題埋めにハマる。



9月

09/03(土) 15回目のABC 北海道飲酒事件

忘れもしない…
旭川で朝から3軒はしごして酒を飲み、夕方にイオンシネマ異動事例は音楽隊を観る。
ホテルにチェックインをして「よっしゃー仮眠取ってからABC出るぞお」と、目を閉じ、次の瞬間



夜中の2時でした。
レートは下がっていました。

そう…愚かなことに、Rated参加をしたまま、仮眠をしてしまったのです。

悔しさに身を委ねながら、100ACめの問題を解きました。ここでやっと辞書型を知ったようです。

以後、コンテストに出る日は絶対に飲酒をしない人になりました。
翌日のARCにRated参加して+6をするねずみおとこみたいなこともしました。



09/10(土) 16回目のABC(飲酒Unrated)


昼から終電まで、ビアガーデンで友達とすごくすごい飲酒をしたため不参加。
爆裂に酔っ払いながら携帯でA問題は通していた。
終了後順位表を見たら、神が黄色になっててうれしくて爆発し、HHKBを献上することに。



09/17(土) 17回目のABC 座標め、お前はどっちが列でどっちが行なんだ


1完。B問題は苦手な座標問題であったことと、zipをうまく取り扱えなかったようで死亡。



09/24(土) 18回目のABC 最高の0完

コンテスト前に総AC200を突破

神にHHKB献上ついでに、はじめていっしょにABCにチャレンジしたら…復活後初の0完

くやしすぎた
1問も解けないなんてかっこわるすぎた
めっちゃ泣きながら7km歩いて帰った
半分くらい飲み干したお酒も🤤(自主規制)した
ぎゃーぎゃー言ってたらRubyさんに「精進が足りないからですよ」と優しく厳しく諭していただき、精進グラフの存在を知った。

「なるほど、いっぱい問題解けばいいのか!」

そして †異常精進マン† は生まれたのであった…



10月

10/01(土) 19回目のABC つよくなりたい、でも、何からはじめよう

久しぶりのノーペナ2完。
今見てみると、解いた問題数は200問なのに、コンテストの成績としては2月とそう成長してないんですよね…そりゃ0完もするや。
茶色になるには国公立合格レベルの数学力が必要って見たことがあったため、数学力を上げることが必要だな、と、中学数学のテキストを進めることにした。
始めてみたら自分が無知すぎて恥ずかしくなって荒れた時、fujikawaさんからの「Twitterは恥を晒すところ」というお言葉に、大変元気付けられました…!ありがてえ
AtCoder ProblemsのTraning Boot camp for Beginners Easy埋めを主に、とにかくいろんな問題に触れることにした。



10/08(土) 20回目のABC はじめての3完

99:42っていう、超ギリギリで提出した3完がうれしすぎて踊った。このあたりから精進の結果が出始める。
るかごんくん主催のバチャが気になり、はじめて参加した。かなり大きな転機だった!
Discordにも参加したり、など、交流を少しずつがんばりはじめた。



10/15(土) 21回目のABC 偶数丸めの恐怖

かなしみの1完。
B問題でmath.roundの偶数丸めをこわがり使わず、結果失敗した。



10/22(土) 22回目のABC 早解が開花

2完だけど、C問題は3回提出できた
早解きが頭角を表し始め、2完なのにレートがわりと上がってよろこぶ。 企業コン、特にキーエンスは過去問を解いてて変なのが多くて身構えていた。けれど、自分的には納得いく感じでできた!



10/29(土) 23回目のABC はじめての茶パフォ

2完。C問題がむずすぎてD問題を開いたら「ん?これは解ける…?(勘違い)」をした。
が、秘技卍早解き卍のおかげではじめての茶パフォをとった!

結局10月は300問ほど解いて、総AC500を突破。



11月

11/05(土) 24回目のABC Pythonの挙動に苦しむ

1完…B問題がグラフで、連結リスト作ろうとした時に[[0]*n]と書き、数字が更新されなくて死んだ。[0]という配列をコピーしてるから、全て同じ値で更新されるという地獄を見た。
Pythonにはこういう挙動の謎があって、11月はそれでかなり苦しめられた月だった。
「絶対に動くコード」をスニペット登録、または常に隣に開いておける「使う.py」というアホファイルを置き、さらに早く解けるように整備し始めた。



11/12(土) 25回目のABC 2度目の茶パフォ

2度目の茶パフォ、早解き2完。



11/19(土) 26回目のABC 3度目の茶パフォ 2度目の3完

Cで2ペナしているのが痛いが、たしかに、なんだこの1ヶ月での急成長は?!?!



11/26(土) 27回目のABC 因縁のトヨタコン 3度目の3完

0完の悔しさをトヨタグループへ向けて放った結果、爆上がり!
安定して茶パフォ取れるようになってきたのは早解きのおかげ

11月は100問くらいしか解かなかったけれど、ただサクッと解ける問題が減っただけで…茶diffが自力ACできるようになった!
中学数学のテキストも、Boot campのEasyも終わって、いろんな解き方がわかるようになった。



12月

12/03(土) 28回目のABC 茶パフォ、3完の安定

1ペナ3完。この辺りから難易度傾斜が変わり、安定してD問題に進み椅子を温める人になる。
Twitterで「1いいねで何かしらをやりたいなあ」とつぶやいたら、鬼教官のRyusukeさんが「1いいねにつき1レート上げる」と返してくださり、震えた。おもしろそうだからやってみた。
ら、思いのほかいいねがめっちゃ来て(最終的に87)達成できるか不安になった…

でも、その不安が、火力になったんだぜ🔥

どうしたら達成できるかなーって考えながら温泉ぽちゃんしてて「おそらく自分の武器は早解きで、今日の難易度傾斜みたいな日にCまでをクレバーに速く通す練習、できたらいいな…あ、バチャ」と思いつき、Dまでの35minバチャを毎日立てるという暴挙に出る。



12/10(土) 29回目のABC ペナのデカさよ

Bで4ペナというひっどいことをして、久しぶりの灰パフォ…
個人的に300の壁は大きいなと思っていたので、目前にして失敗したのつらかったけれど、なんとか300には乗っていた。
早解きに助けられてばかりであるため、ペナは痛すぎるな、と学び、提出前に絶対見返す癖をつける。



12/17(土) 30回目のABC はじめてのノーペナ3完

ノーペナ、早解き、D問題もテストケースは通せて満足の飲酒!飲酒!!いんしゅ!!!
年内入茶が現実的になってきて、すこし怖気付き始める。
相変わらずいろんな方に勇気づけられて、がんばる。負けない。



12/24(土) 31回目のABC はじめてのノーペナ4完 \入茶/

いやあ、荒れましたね。荒れた回でしたね。
私も荒れてました。
Bまでを通した時点で、順位表を見に行ったら、いつも上にいるはずの黄色い神様の文字が…な、ない

え、まさか、クリスマスデートとかしてるから出てない、のか??!?
競プロはじめてからずっと、毎週欠かさず出てるって言ってたABCよりも、大切なものが…え、もう、一緒にコンテスト走れな…いっ…(目の前真っ暗)

1分間くらい、ひよこがぴよぴよと空を飛んでた

はっ と我に返り、そういや今のパフォは…?predictor、ん、あれ??APIエラー??
まあ、わかんない方が逆にノイズ減っていいか…いやでも、神様、えええ…とぐるぐるし始めてしまったので、友達に文章で泣きついて落ち着かせた。

ここまでで3分のロス。
深呼吸をして「そうだよ、こんな状況だからこそ、やるしかねえ!!」と、C問題に向き合うが、さっきまでの思考力と明らかに違う。問題文を読んでも、手からするすると、砂のように零れ落ちていく。
困った、もういいや、落ち込もう。と、友達に泣き言をびえびえと送りつける。結構やばい妄想レベルまで吐き出して真っ暗な世界に浸ったら すっ と冷静になって「よし」と、C問題に取り組む。

iPadに書いて実際にシミュレーションしたら、ただの文字列の長さ調整だったため、ちゃんと提出前に確認をし、AC。

9分5秒、よし。茶パフォは取れそう。
D問題に進む、たぶん解けないけど…

と、先ほどのショックが再び蘇る。問題文を読んでも頭に入らず、きつい、と、初めてコンテスト中にお花を摘みにいった。
コンテスト中に友達に連絡したのも、お手洗い(あ)行ったのも、はじめてだった。

初めて出た01/08(土)のコンテストからずっと、100分間諦めずに考え続けてきた。
1度だって、途中で離脱したことなんてなかった。

ここまで、よく頑張ったよ。
ここで抜けたって茶パフォは取れるから、レートは上がるよ。

って聞こえたのは天使の声だと思っていた。

でも

「は?ふざけんなよ、これくらいのショック、あの時の屈辱に比べたら…蚊に刺されたレベルだぜ」

私の中のインテリヤクザが、日本刀抱えて陰から顔を見せた。

「ねえねえ!次はどんな問題なの?はやく解きたいよー!」

私の中の幼女も、D問題を考えることを、何より楽しみにしてる。


そうだ、私は…今、戦っているんだ。
なんとしてでも、22:40までは戦い抜くんだ。絶対に

決心がつき、ちゃんと手を洗ってPCの前に戻る。


ここで運命の女神が私に微笑む。

いつもだったら見逃すはずのない、というか、見逃さないからこそ悩んで時間をかける箇所をすっ飛ばし、嘘解法でD問題を一発ACしてしまったのだ。
冷静なふりをするものの、やはりショックで頭が回ってなかったから、気づけなかった。

「気付かされなかった」と言ってもいいかもしれない。

そして私は、30:52でD問題を通してしまうという、とんでもないパフォーマンスを叩き出してしまった。

これは夢なのか…?と、ふわふわした気持ちでTwitterを見る。
ちなみに、コンテスト中にTwitterを見たのも初めて。

そして目に飛び込んでくる、何やらざわついたTL。これは…いや、今はいい。まだ私には闘うべき時間が60分も残っているんだ!!

と、そんな強い意志など実は持ってないので、不安を吐き出すだけ吐き出してE問題に突入する。
そういうクソなところも味だと思ってます。よろしくお願いします。

E問題は「bit反転かなあ」という気持ちで、テストケースは通るものは書けてよかった。
塗り潰せないかと、WAになったコードを数回回して、どこかのWAがとれるかの実験をして歴代最長コードを提出したら、波乱のABC283〜クリスマスイブ〜が終わりました。

そうして、私は 照り焼き色 になったのです。



ところで

実は、これくらいの精進は異常と思ってない

まだまだ頑張りが足りないなと思ってます。今でも。
精進量の権化である神の様子を見ちゃってることと、本当に一生懸命に頑張った!って実感がまだ、ないです。
「もう無理ー!」ってくらいに頑張りたい。だから、緑になるまでに、そういう日を積み重ねていきたいと思っています。



実は、今年最後のコンテストで茶色になる予感はしてた

半分トラウマみたいな話なのですが、以前いた職場の退職日に、過去最高の売り上げを叩き出して辞める、ってめっちゃかっけえことをしたことがあります。
溜まりに溜まってたマイナス感情が「売り上げ」という形で放出して、終わった後すぐに飲酒をしました。焼き鳥がめっちゃおいしかったです(なんか、ずっと酒飲んでますね)

ここ一週間その時のことが頭によぎることが多くて、もしかしたら、もしかするかもなーと思っていました。スピリチュアルは大嫌いだけれども、勘は当たるし運はいいから困った。

今回の緑パフォも、完全に運の力が大きいです。
だからこそ、実力で緑パフォが出せるまでは、成長を止めることなどできやしないんだぜ。

だから、これからも、たくさん教えてくれたら嬉しいです!
めざせ翠富士のみどりいろ〜!!!



最後まで読んでくださった方へ〜ささやかなクリスマスプレゼント〜

わたしのPythonはやときを支えてくれているVScodeスニペットたちです!
よろしければ、クリスマスプレゼントとしてお受け取りください。

{
    // 整数 1項 input
    "int(input())": {
        "prefix": "ii",
        "body": "int(input())",
 },
    "int n": {
        "prefix": "n=",
        "body": "n = int(input())",
 },
    "int q": {
        "prefix": "q=",
        "body": "q = int(input())",
 },
    "int d": {
        "prefix": "d=",
        "body": "d = int(input())",
 },
    "int r": {
        "prefix": "r=",
        "body": "r = int(input())",
 },
    "int k": {
        "prefix": "k=",
        "body": "k = int(input())",
 },
    "int x": {
        "prefix": "x=",
        "body": "x = int(input())",
 },
    "int m": {
        "prefix": "m=",
        "body": "m = int(input())",
 },
    
    // 整数 2項 input
    "int n,m": {
        "prefix": "nm=",
        "body": "n,m = map(int,input().split())",
 },
    "int n,q": {
        "prefix": "nq=",
        "body": "n,q = map(int,input().split())",
 },
    "int n,k": {
        "prefix": "nk=",
        "body": "n,k = map(int,input().split())",
 },
    "int n,x": {
        "prefix": "nx=",
        "body": "n,x = map(int,input().split())",
 },
    "int l,r": {
        "prefix": "lr=",
        "body": "l,r = map(int,input().split())",
 },
    "int a,b": {
        "prefix": "ab=",
        "body": "a,b = map(int,input().split())",
 },
    "int c,d": {
        "prefix": "cd=",
        "body": "c,d = map(int,input().split())",
 },
    "int h,w": {
        "prefix": "hw=",
        "body": "h,w = map(int,input().split())",
 },
    "int x,y": {
        "prefix": "x,y=",
        "body": "x,y = map(int,input().split())",
 },
    // 整数 3項 input
    "abc": {
        "prefix": "abc=",
        "body": "a,b,c = map(int, input().split())",
 },
    "xyz": {
        "prefix": "xyz=",
        "body": "x,y,z = map(int, input().split())",
 },
    // 整数 4項 input
    "abcd": {
        "prefix": "abcd=",
        "body": "a,b,c,d = map(int, input().split())",
 },
    // 整数 list in
    "int list 2項〜li": {
        "prefix": "a=",
        "body": "a = list(map(int,input().split()))",
 },
    "n行 int 1項リスト []": {
        "prefix": "ni1li=",
        "body": "n = int(input())\na = [int(input()) for _ in range(n)]",
 },
    "int 行 1項リスト []": {
        "prefix": "i1li=",
        "body": "a = [int(input()) for _ in range(n)]",
 },
    "n行 int 2項〜リスト [[]]": {
        "prefix": "nili2=",
        "body": "n = int(input())\na = [list(map(int, input().split())) for _ in range(n)]",
 },
    "int 2項〜リスト [[]]": {
        "prefix": "ili2=",
        "body": "a = [list(map(int, input().split())) for _ in range(n)]",
 },
    "n行 zip in": {
        "prefix": "nzip=",
        "body": "n = int(input())\nx, y = zip(*[map(int, input().split()) for _ in range(n)])",
 },
    "zip in": {
        "prefix": "zip=",
        "body": "x, y = zip(*[map(int, input().split()) for _ in range(n)])",
 },
    "int list sort": {
        "prefix": "ilis",
        "body": "a = sorted(list(map(int,input().split())))",
 },

    // 文字列 input
    "input()": {
        "prefix": "si",
        "body": "input()",
 },
    "str s in": {
        "prefix": "s=",
        "body": "s = input()",
 },
    "str t in": {
        "prefix": "t=",
        "body": "t = input()",
 },
    "str n in": {
        "prefix": "sn=",
        "body": "n = input()",
 },
    "str st 1行2項 in": {
        "prefix": "st1=",
        "body": "s,t = input().split()",
 },
    "str st 2行2項 in": {
        "prefix": "st2=",
        "body": "s = input()\nt = input()",
 },
    "intN strS in": {
        "prefix": "ns=",
        "body": "n = int(input())\ns = input()",
 },
    // str list in
    "str list 2項〜li": {
        "prefix": "sli=",
        "body": "a = list(input().split())",
 },
    "n行 str 1項リスト []": {
        "prefix": "ns1li=",
        "body": "n = int(input())\na = [input() for _ in range(n)]",
 },
    "str 改行 1項リスト []": {
        "prefix": "sbrli=",
        "body": "a = [input() for _ in range(n)]",
 },
    "n行 str 2項〜リスト [[]]": {
        "prefix": "nsli2=",
        "body": "n = int(input())\na = [list(input().split()) for _ in range(n)]",
 },
    "n行 str 1項リスト [[]]": {
            "prefix": "ns1li2=",
            "body": "n = int(input())\na = [input() for _ in range(n)]",
 },
    "str 2項〜リスト [[]]": {
        "prefix": "sli2=",
        "body": "a = [list(input().split()) for _ in range(n)]",
 },
    "str 1項 [[]]": {
            "prefix": "s1li2=",
            "body": "a = [input() for _ in range(n)]",
 },
    "str sort": {
        "prefix": "ssort",
        "body": "s = sorted(input())",
 },
    "str list sort": {
        "prefix": "slisort",
        "body": "s = sorted(list(input().split()))",
 },

    // 変数
    "cnt": {
        "prefix": "cnt",
        "body": "cnt = 0",
 },
    "ans": {
        "prefix": "ans",
        "body": "ans = 0",
 },
    "flag true": {
        "prefix": "flg1",
        "body": "flg = 1",
 },
    "flag false": {
        "prefix": "flg0",
        "body": "flg = 0",
 },
    "空list": {
        "prefix": "li",
        "body": "a = []",
 },
    "count-list 10": {
        "prefix": "cnt",
        "body": "cnt = [0]*9",
 },

    // for文
    "for i": {
        "prefix": "fori",
        "body": "for i in range(n):",
 },
    "for j/2": {
        "prefix": "forj",
        "body": "for j in range(n):",
 },
    "for k/3": {
        "prefix": "forkk",
        "body": "for k in range(n):",
 },
    "for l/4": {
        "prefix": "forl",
        "body": "for l in range(n):",
 },
    "for enumerate":{
        "prefix": "forie",
        "body": "for i,d in enumerate(a):",
 },
    "for reversed":{
        "prefix": "forir",
        "body": "for i in reversed(range(n)):",
 },
    "for i in a":{
        "prefix": "foria",
        "body": "for i in a:",
 },

    // print 出力系
    "print Yes": {
        "prefix": "priy",
        "body": "print('Yes')",
 },
    "print No": {
        "prefix": "prin",
        "body": "print('No')",
 },
    "print ans": {
        "prefix": "pria",
        "body": "print(ans)",
 },
    "print cnt": {
        "prefix": "pric",
        "body": "print(cnt)",
 },
    "print flg": {
        "prefix": "prif",
        "body": "print('Yes' if flg else 'No')",
 },
    "print list 改行": {
        "prefix": "priabr",
        "body": "print(*a, sep='\n')",
 },
    "print list 連結": {
        "prefix": "priaun",
        "body": "print(*a,sep='')",
 },
    "else print no": {
        "prefix": "elsen",
        "body": "else:\n\tprint('No')",
 },

    // リスト・辞書(初期)
    "int list": {
        "prefix": "ili",
        "body": "list(map(int,input().split()))",
 },
    "str list": {
        "prefix": "sli",
        "body": "list(input().split())",
 },
    "辞書": {
        "prefix": "dic",
        "body": "d = {'in': ans, 'in': ans, 'in': ans}",
 },

    // ライブラリ読み込む系
    "defaultdict": {
        "prefix": "dict",
        "body": "from collections import defaultdict\ndi=defaultdict()",
 },
    "sys.set": {
        "prefix": "sys",
        "body": "import sys\nsys.setrecursionlimit(10**5)",
 },
    "出現回数数える":{
        "prefix": "count",
        "body": "import collections\n\nc = collections.Counter(a)",
 },

    // inf mod
    "INF":{
        "prefix": "INF",
        "body": "INF = float('inf')",
 },
    "mod":{
        "prefix": "mod",
        "body": "mod = 998244353",
 },
    "MOD":{
        "prefix": "MOD",
        "body": "MOD = 1000000007",
 },

    // 高橋さんと青木さん
    "高橋": {
        "prefix": "ta",
        "body": "'Takahashi'",
 },
    "青木": {
        "prefix": "ao",
        "body": "'Aoki'",
 },

    // 小技系
    "重複抽出":{
        "prefix": "doub",
        "body": "l1 = []\nl2 = []\n\nl1_and_l2 = set(l1) & set(l2)\n\nl1_and_l2_set = list(l1_and_l2)\n\nprint(l1_and_l2_set)",
 },
    "素数判定":{
        "prefix": "prime",
        "body": "prime = 1\nif n == 1:\n\tprime = 0\nelse:\n\tfor i in range(2, n):\n\t\tif n % i == 0:\n\t\t\tprime = 0",
 },
    "約数判定":{
        "prefix": "div",
        "body": "for i in range(1, n+1):\n\tdiv = 0\n\tfor j in range(1, i+1):\n\t\tif i % j == 0:\n\t\t\tdiv = 1",
 },
    "約数出力":{
        "prefix": "divp",
        "body": "for i in range(1, n+1):\n\tif n % i == 0:\n\t\tprint(i)",
 },
    "回文判定":{
        "prefix": "loop",
        "body": "flg = 1\n\nfor i in range(n):\n\tif s[i] != s[(n-1)-i]:\n\t\tflg = 0",
 },
    "階乗":{
        "prefix": "fac",
        "body": "def fac(n):\n\tv = 1\n\tfor i in range(n, 1, -1):\n\t\tv *= i\n\treturn v",
 },
    "dicで条件分岐":{
        "prefix": "dicif",
        "body": "s = input()\nd = {'in': ans, 'in': ans, 'in': ans}\n\nif s in d:\n\tans = d[s]\n\nprint(ans)",
 },
    "累積和 a":{
        "prefix": "asum",
        "body": "for i in range(1, len(a)):\n\ta[i] += a[i-1]",
 },
    "各けた和":{
        "prefix": "11=2",
        "body": "a = []\n\nfor i in range(1, n+1):\n\tli.append(sum(map(int, str(i))))",
 },
    "差分を取る":{
        "prefix": "xor",
        "body": "s1 = []\ns2 = []\n\nans = set(s1) ^ set(s2)",
 },
    "平方判定":{
        "prefix": "sq",
        "body": "flg = 0\n\nfor i in range(1, n):\n\tif i*i == n:\n\t\tflag = 1\n\n",
 },
    "lambda i-1": {
        "prefix": "lai",
        "body": "lambda x:int(x)-1",
 },
}

茶色になるまでに関わってくださったみなさん、本当にありがとうございました!

ぶりの次回作(入緑)にご期待ください!