赤い星と強い星

ディズニーとかその他の趣味とか

競技プログラミングを控えます

こんにちは

 

 みなさん競技プログラミングってご存じですか?与えられた問題に対して,コンテスト時間内に正しい答えを返すアルゴリズムを考えてそれをコードに書き起こして提出する.問題の難易度に応じて点数が付き,点数と提出時間によって順位が出てそれによってレートが変動する.そんなものです.

 

 僕はめちゃくちゃ競技プログラミングが好きなんです.

 基本的に家ではパソコンの前に座っています(そもそも布団に入るかパソコンの前に座るかの2択しかない).ただ座っているだけだと暇なのでとりあえずAtCoder Problemsを開いて「なんか解こうかなー」と思って物色して,まだ解いてない問題・もうすでに解いたことがある問題問わず考えてコードを書きます.

 授業があるときはiPadでノートを取ります.ぼーっとしながら気づいたらAtCoder Problemsを開いて,家にいるときと似たようなことをしています.

 逆にアルバイトをしている最中や人と話しているときなどのインターネット環境がない場面では一切競技プログラミングのことを考えていません.

 

 物凄く暇なときにこの生活をしているというのならいいと思うのですが,学校の課題をしないといけない時間だったり,授業中だったり,そういった時間を競技プログラミングに費やしてきました.

 

 これがよくないということに1年かけて,留年して今更気づいたのでさすがに競技プログラミングから意識的に離れようと決意しました.

 

 ただ,Twitterを見ているとそれなりの頻度で「競プロやめます」みたいなのとともにアカウントを消すという場面にFF内外問わず遭遇したことがあります.そういう人間はだいたい「これから長い期間は競技プログラミングにかかわらないと思います」みたいなこと言ってるくせしてすぐにアカウント作ってコンテストに出て満足したり自虐かましたり.僕そういうのすごく嫌いなんですよね.なので,僕はアカウントを消したり「生涯競プロから足を洗います」みたいなことは言いません.むしろ月1くらいでコンテストに出ます.

 

 ちょっと前から「もう1回AtCoder水色になったら控えよう」と決めていたので,新学期になる前に水色に戻れてよかったなあという感じです.

 

 とりあえず3月中はダラダラと今までと同じような競技プログラミング生活を送って,4月になったら競技プログラミングをする時間を週に1日数時間みたいな感じにしたいなーと思っています.これが「控える」というとどうなのかみたいなところがあるんですが,僕にとっては十分控えている気がするのでこれで行きます.

 また今と同じような生活に戻るのは,4年生への進級が決まったタイミング(早くて2021年度前期の成績発表,遅くて後期の成績発表)にしたいと思っています.

 

 最後に,なんでこんなのを書き記しているかというと,自分の宣言みたいなものが人に見える状態にないとすぐやめる気がしたからです.そもそもこの記事を読んでくれる人がそんなにいないことは承知しているんですが,誰が見ているかわからないので「誰かに『結局競プロだらだらとやってるじゃん』みたいなこと言われたくないな」という意識が持てる気がしているのでこうして書き記しています.

 

 

進級できることが決まったらお祝いしてください

そして一緒に競技プログラミングの話をしましょう

 

RedSpica

留年宣告を受けました

こんにちは

 

 「留年した」という文章ってどの時系列を指しているかよくわからないですよね.単位が認定されずその学年をもう1度繰り返すことが確定した瞬間なのか,その繰り返した学年が終わったときのことなのか.

 その点では「留年しそう」という文章は時系列がわかりやすく,確実に「その学年をもう1度繰り返す前」のことを指していることがわかります.

 

 僕の今の状態は少なくとも「留年しそう」ではなくなりました.悪い意味で...

 

 「単位が認定されずその学年をもう1度繰り返すことが確定した」ので,なんでこうなっちゃったかなーと反省しながらこれまでの大学生活を振り返ります.

 

 

 

 

1年生前期

 授業開始日を間違えて,初日の授業を知らぬ間に切ります.は?この時点で今後の大学生活がかなり不安になりました.

 

 そして,友達ができません.新入生の知り合いを作ろう会みたいなものにことごとく出ていなく,自分から他人に話しかける勇気もありません.「まあひとりでもなんとかなるでしょ」と思っていたのですが,大学生活で友達がいないというのは余程強い人間でもない限り詰みます.このことを詰んでから知りました.履修登録のこと,授業開始までのイベントのこと,授業開始日のことはすべて自分で把握しておく必要があります.

 幸いにも学科の授業が始まった時に出会いがあります.前の席に座っていた学生が,僕の書いたアンケートの名前をみて「ツイッターのアカウントこれでしょ」と告げてきます.彼と仲良くなり,彼伝いでいろいろな人間と出会います.

 人との出会いに,感謝______

 

 それから割と生活は順調だったのですが,GWが明けたあたりからいろいろと考え込んでしまい学校に行かなくなります.たぶん五月病というやつです.1か月半くらいの間あまり学校に行かない日々が続きます.7月の頭くらいからまた学校に行き始めるのですが,時すでに遅しといった感じで単位が死にます.明らかに出席日数が足りてないのとか,明らかにテストの出来が悪いのに単位が出た授業もあって「なんだこれ」となっていましたが,最初の1か月まじめにやっていた貯金だと思ってありがたく受け取りました.

 

 

1年生後期

 1番順調だったと思います.1年前期で何も学べなかった解析学を教科書読み込んで前期に授業でやったところまでは理解して,後期の解析学にもついていけておもしろかったなーと思いました.

 

 僕が所属する学部では「英語コミュニケーション(英会話の授業)」と「英語リテラシー(座学の授業)」の2種類を1年の前後期併せて4つとらないといけません.しかし,TOEICで規定の点数以上を取るとそのうちの何個かを単位認定という形で消すことができます.

 僕は偶然にも前期に受けたTOEIC IPテストで規定以上の点数を取っていたので,後期の英語コミュニケーションを消すことにした(コミュ障なのでできるだけ会話型の授業は避けたいから)のですが,英語リテラシー初回の授業で「この授業の目標は英語を理解することではなく楽しく話せるようになることです」みたいなスライドを見せられて「?????????」となり,僕が単位認定によって出なくてよかった英語コミュニケーションの授業はガッツリ座学という話を友達に聞き「??????????」となりました.結局英語リテラシーは15回中2回くらいしか行かず単位を落としました.

 

 

2年前期

 2年生が始まりました.2年生が始まる前にアルバイトとAtCoderを始めました.競技プログラミングを始めたことにより,起きてる時間は常に競技プログラミングの問題の考察をすることになります.これがかなり最悪で,これのせいで学業と生活習慣が破滅します.

 決して勘違いしてほしくないのは「悪いのはすべて僕で,競技プログラミングは節度を守ってやればとても面白いコンテンツ」ということです.

 競技プログラミングをやってたおかげで,数学科で開講されたプログラミングの授業で大学生活初の秀という成績がでました,やったね!

 

 

2年後期

 再履修の英語はリテラシーでもコミュニケーションでもいいというガバガバルールなので,2年後期で英語リテラシーを履修しようとするのですが,履修登録をしようとしたら英語の登録期間がすでに終わっているという罠.なんでミスったかというと,周りの友達は1年生の時に1発で取っている,ないしは2年前期までに取り終わっているという状況だったので英語を取り残しているのは僕だけだったんですね.

 

 相変わらず競技プログラミングに熱中し,生活が壊れています.半分も出席していないような授業でもとりあえずテストを受けに行ってなぜか成功しちゃうみたいなのが3つくらいあったきがします.

 

 

3年前期

 カリキュラム上必修の授業は2年生までで,必修・選択のそれぞれの単位を3年後期までに揃えないと留年が決まります.つまり,2年前期に取るべき授業の再履修を3年前期で落とすと(少なくとも)その時点で確定です.

 

 結果から言うと,再履修で負けます.

 2年後期にもプログラミングの授業があったのですが,皆欠席・テストの出来もビミョウというフルコンボを決めたのにもかかわらず良という評価が出ました.その先生が持った線形代数の授業が再履修のうちの1つだったので完全に甘く見て,それを落として3年前期で留年が決まりました.

 逆に,他の「これが落ちて留年になるかもしれない」と思った科目は普通に通っていて,しっかり勉強したと思っていた(留年になるかどうかは直接関係ない)科目が落ちてそれも少しショックでした.

 

 

その後

 留年が決まる瞬間ってマジでこんな感じなんです.

youtu.be

 「まあさすがに単位出てるんじゃない?」みたいな気でいたら落ちていて,頭が真っ白になった覚えがあります.

 

 成績が出てから1週間くらい留年したことを引きずっていたんですが,時間が経つにつれあんまり気にしなくなりました.母親から「どこかにいってしまったんじゃないか」と本気で心配されたんですが,さすがにそこまで思い込んだりはしませんでした.

 

 柄にもなく7月末に3日間のインターンに参加したんですが,その会社から「めちゃくちゃよかったよ,ぜひうちの会社受けて」みたいなメッセージや「10月から22卒の面接あるから受けない?」ってメッセージがPaiza経由で3件くらい来ました.留年確定した次の日には「10月〇〇日に面接やるよ,当然応募するっしょ?」みたいなメッセージがきたのですが,「留年したので来年普通の枠で応募します」という旨のメッセージを送りました.一生懸命就活をしている友人曰く,これはどうやら内々定というやつらしく,大きな獲物を逃したなーといった感じです.

 

 3年後期が始まってすぐに助言教員と面談があって(これは留年が決まったからとかではなく定期的にあるもの),その数日後に「線形代数の救済措置がとられるかもしれません」というメールが来たのですが,「企業からの誘いを蹴ってしまったのでそのまま留年します」という返信をしました.

 

 別に数学が嫌いというわけでは断じてないのですが,正直学びたいものと今学んでいることが少し離れているなと思っていたので大学を辞める考えがないわけでもなかったのですが,「大卒と高卒じゃ給料にだいぶ差が出る」みたいな話を聞いたり,数学科の卒業研究で計算機のゼミが去年からできたりしてそれに参加したいと思ったので学校をやめるのはやめました.

 

 

最後に

 数学科には「線形代数ε-δ論法は最低限できるようになったほうがいい」みたいな言い伝えがあります.これは本当にその通りで,線形代数の授業についていけないのはもちろんのこと,様々な分野で急に行列が顔を出してきて先生方も「当然これは知ってるよね?」みたいな感じで授業を進めるので線形代数でつまずくと死にます.本当に線形代数はしっかりやったほうがいい!!!!!!

 それから,当たり前ですが留年はしないほうがいいです.僕のように天から降ってきた内々定をドブに捨ててしまうことになる人はもう見たくないです.

 そして,学業以外の何かに打ち込むときには休学という手もありだったのではないかと思っています.国立大学の場合には無料で休学ができるらしい(僕はしたことがないのでわかりません)ので,研究や開発だけでなく,そういう制度がある以上「ゲームを本気でやるために休学する」みたいな理由があってもいいんじゃないかなと思っています.

 

 

ここまで読んでいただきありがとうございました

この記事を読んで留年する人がひとりでも減りますように

 

RedSpica

ゴッドフィールドって知ってる?笑

こんにちは

 

オススメのゲームの話をする Advent Calendar 2020 - Adventarの19日目の記事を担当します.次の日担当のにぼしの記事はコチラ(書いてくれてありがとう).去年はポケモンの記事を書いたのでよければそちらもご覧ください.

 

 

 今年もいろいろなゲームをやりました.パソコンではFall Guys,Valorant,CS:GO,Rocket League,Ultimate Chicken Horseをやり,現実世界(?)ではコヨーテというボードゲームやCHUNITHMという音ゲーをやったりもしました.

 

 

 そんな中でも今回紹介するゲームはGod Fieldというゲームです.

godfield.net

 

 ゲームの内容を端的に説明すると,様々なカードゲームの面白い要素を集めてきたものみたいな感じです.

 

 

 もう少し詳しく説明します.

 ゲームは個人戦,チーム戦の2つがありますが,基本的なルールは変わりません.ゲームの開始時にそれぞれのプレイヤーはHPが40,MPが10,お金が20円配られます.MPやお金やカードを駆使して,相手を攻撃し,HPが0になったら(基本的には)負けです.

 

 説明が下手なのとぜひとも皆さんにやってもらいたいので「とりあえずやってみて」のスタンスで書いているんですが,これだけは知っておいたほうがいいみたいなのを書いておきます.

 

”はね返す” と ”弾く” の違い

 すごく似ているフレーズですが,少し意味が違ってきます.”跳ね返す”は攻撃してきた相手にそのまま返すことを指します.”弾く”は攻撃をランダムで1名にそのまま返すことを指します.つまり,”弾く”は自分に攻撃がそのまま通ることもあれば,全然関係ない第三者を巻き込むこともあります.”跳ね返す”は”弾く”の上位互換だと思っていればいいかもしれません.

 ”はね返す”という能力を持った武器があるのですが,そのカードをそのまま使うのは基本的におススメできません.

 

災い

 ポケモンでいうところの特殊状態です.災いを持っていると場の進行がかなり不利になります.回復できるアイテムをどこで使うか(使った直後に「もうアイテムがない」と読まれて別の災いをつけられる作戦をとられることもあるので)もとても重要です.

 いのちのたまのように「わざと不利な状況になるが,大幅な利益を得ることもできる」というカードもあります.回復アイテムを持っているならそのようなカードも有効的と言えます.

 

属性

 基本的にはほとんどの武器が無属性の攻撃なんですが,属性がついた攻撃方法もカードによっては存在します.属性攻撃は(闇属性以外は)限られた属性の防具でないと攻撃を防ぐことができないため,「ここでHPを削っておきたい」というときにはとても刺さります.注意してほしいのが,「異なる属性の武器を一緒に使うと(基本的に)無属性になる」という点です.

 そして,1番気をつけなければならない属性は闇属性です.闇属性の攻撃はどんな防具でも守ることができるのですが,攻撃を守り切れなかった場合即死となります.つまり,相手が闇属性のカードを持っているときに防具がないことを知られてしまうと実質負けです.

 

お金・MP

 カードの中には「自分のアイテムを相手に売りつける」というカードが存在します.売りつけられたものは絶対に買わなければいけないのですが,お金がない時に売りつけられると1MP=1円換算でMPから削られていきます.MPもない時は1HP=1円換算でHPから削られていきます.つまり,お金もMPもない時に高額なものを売りつけることで回避不可能なダイレクトアタックを相手にすることができるので,この手でトドメを指すことも作戦のひとつです.

 また,両替というカードも存在していて,「(HP+MP+お金)の値を保存したまま好きに数値を変えることができる」というものもあります.お金を貯めて一気にHPやMPに両替して場を動かすという戦略を取るときに使えます.

 

 

さいごに

 どうですか?やりたくなってきませんか?そんなあなたに朗報です!なんと超超超最近スマートフォン向けのGod Fieldのアプリがリリースされたのです!!!

  

 そして新機能として勝負の結果に応じてレートがつく真剣タイマンモードも追加されています!

 

 

古よりインターネットに伝わるゲーム†God Field†を一緒にはじめてみませんか...?

 

RedSpica

ABCのAをPythonで,1行で書く

 タイトル通りです.

 自分のためのアーカイブみたいな感じで,新しいものを書き次第追加していきます.

 

ルール

・できるだけ他人の提出を見ないようにする

・できるだけ短く書く

セミコロンは使わない 

・全部埋めるのを目指す!

 →全部埋まった!(2020/10/25)

 

 アドバイスがあったら随時教えてください.

 

 

190~198

ABC198 Div

atcoder.jp

ABC197 Rotate

atcoder.jp

ABC196 Difference Max

atcoder.jp

ABC195 Health M Death

atcoder.jp

ABC194 I Scream

atcoder.jp

ABC193 Discount

atcoder.jp

ABC192 Star

atcoder.jp

ABC191 Vanishing Pitch

atcoder.jp

ABC190 Very Very Primitive Game

atcoder.jp

 

180~189

ABC189 Slot

atcoder.jp

ABC188 Three-Point Shot

atcoder.jp

ABC187 Large Digits

atcoder.jp

ABC186 Brick

atcoder.jp

ABC185 ABC Preparation

atcoder.jp

ABC184 Determinant

atcoder.jp

ABC183 ReLU

atcoder.jp

ABC182 twiblr

atcoder.jp

ABC181 Heavy Rotation

atcoder.jp

ABC180 box

atcoder.jp

 

170~179

ABC179 Pular Form

atcoder.jp

ABC178 Not

atcoder.jp

ABC177 Don't be late

atcoder.jp

ABC176 Takoyaki

atcoder.jp

ABC175 Rainy Season

atcoder.jp

ABC174 Air Contitioner

atcoder.jp

ABC173 Payment

atcoder.jp

ABC172 Calc

atcoder.jp

ABC171 αlphabet

atcoder.jp

ABC170 Five Variables

atcoder.jp

 

160~169

ABC169 Multiplication 1

atcoder.jp

ABC168 ∴ (Therefore)

atcoder.jp

ABC167 Registration

atcoder.jp

ABC166 A?C

atcoder.jp

ABC165 We Love Golf

atcoder.jp

ABC164 Sheep and Wolves

atcoder.jp

ABC163 Circle Pond

atcoder.jp

ABC162 Lucky 7

atcoder.jp

ABC161 ABC Swap

atcoder.jp

ABC160 Coffee

atcoder.jp

 

150~159

ABC159 The Number of Even Pairs

atcoder.jp

ABC158 Station and Bus

atcoder.jp

ABC157 Duplex Printing

atcoder.jp

ABC156 Beginner

atcoder.jp

ABC155 Poor

atcoder.jp

ABC154 Remaining Balls

atcoder.jp

ABC153 Serval vs Monster

atcoder.jp

ABC152 AC or WA

atcoder.jp

ABC151 Next Alphabet

atcoder.jp

ABC150 500 Yen Coins

atcoder.jp

 

140~149

ABC149 Strings

atcoder.jp

ABC148 Round One

atcoder.jp

ABC147 Blackjack

atcoder.jp

ABC146 Can't Wait for Holiday

atcoder.jp

ABC145 Circle

atcoder.jp

ABC144 9x9

atcoder.jp

ABC143 Curtain

atcoder.jp

ABC142 Odd of Oddness

atcoder.jp

ABC141 Weather Prediction

atcoder.jp

ABC140 Password

atcoder.jp

 

130~139

ABC139 Tenki

atcoder.jp

ABC138 Red or Not

atcoder.jp

ABC137 +-x

atcoder.jp

ABC136 Transfer

atcoder.jp

ABC135 Harmony

atcoder.jp

ABC134 Dodecagon

atcoder.jp

ABC133 T or T

atcoder.jp

ABC132 Fifty-Fifty

atcoder.jp

ABC131 Security

atcoder.jp

ABC130 Rounding

atcoder.jp

 

120~129

ABC129 Airplane

atcoder.jp

ABC128 Apple Pie

atcoder.jp

ABC127 Ferris Wheel

atcoder.jp

ABC126 Changing a Character

atcoder.jp

ABC125 Biscuit Generator

atcoder.jp

ABC124 Buttons

atcoder.jp

ABC123 Five Antennas

atcoder.jp

ABC122 Double Helix

atcoder.jp

ABC121 White Cells

atcoder.jp

ABC120 Favorite Sound

atcoder.jp

 

110~119

ABC119 TBD

atcoder.jp

ABC118 B +/- A

atcoder.jp

ABC117 Entrance Examination

atcoder.jp

ABC116 Right Triangle

atcoder.jp

ABC115 Christmas Eve Eve Eve

atcoder.jp

ABC114 753

atcoder.jp

ABC113 Discount Fare

atcoder.jp

ABC112 Programing Education

atcoder.jp

ABC111 AtCoder Beginner Contest 999

atcoder.jp

ABC110 Maximize the Formula

atcoder.jp

 

100~109

ABC109 ABC333

atcoder.jp

ABC108 Pair

atcoder.jp

ABC107 Train

atcoder.jp

ABC106 Garden

atcoder.jp

ABC105 AtCoder Crackers

atcoder.jp

ABC104 Rated for Me

atcoder.jp

ABC103 Task Scheduling Problem

atcoder.jp

ABC102 Multiple of 2 and N

atcoder.jp

ABC101 Eating Symbols Easy

atcoder.jp

ABC100 Happy Birthday!

atcoder.jp

 

090~099

ABC099 ABC

atcoder.jp

ABC098 Add Sub Mul

atcoder.jp

ABC097 Colorful Transceivers

atcoder.jp

ABC096 Day of Takahashi

atcoder.jp

ABC095 Something on It

atcoder.jp

ABC094 Cats and Dogs

atcoder.jp

ABC093 abc of ABC

atcoder.jp

ABC092 Traveling Budget

atcoder.jp

ABC091 Two Coins

atcoder.jp

ABC090 Diagonal String

atcoder.jp

 

080~089

ABC089 Grouping 2

atcoder.jp

ABC088 Infinite Coins

atcoder.jp

ABC087 Buying Sweets

atcoder.jp

ABC086 Product

atcoder.jp

ABC085 Already 2018

atcoder.jp

ABC084 New Year

atcoder.jp

ABC083 Libra

atcoder.jp

ABC082 Round Up the Mean

atcoder.jp

ABC081 Placing Marbles

atcoder.jp

ABC080 Parking

atcoder.jp

 

070~079

ABC079 Good Integer

atcoder.jp

ABC078 HEX

atcoder.jp

ABC077 Rotation

atcoder.jp

ABC076 Rating Goal

atcoder.jp

ABC075 One out of Three

atcoder.jp

ABC074 Bichrome Cells

atcoder.jp

ABC073 September 9

atcoder.jp

ABC072 Sandglass2

atcoder.jp

ABC071 meal Delivery

atcoder.jp

ABC070 Palindromic Number

atcoder.jp

 

060~069

ABC069 K-City

atcoder.jp

ABC068 ABCxxx

atcoder.jp

ABC067 sharing Cookies

atcoder.jp

ABC066 ringing

atcoder.jp

ABC065 Expired?

atcoder.jp

ABC064 RGB Cards

atcoder.jp

ABC063 Restricted

atcoder.jp

ABC062 Grouping

atcoder.jp

ABC061 Between Two Integers

atcoder.jp

ABC060 Shiritori

atcoder.jp

 

050~059

ABC059 Three-letter acronym

atcoder.jp

ABC058 ι⊥l

atcoder.jp

ABC057 Remaining Time

atcoder.jp

ABC056 HonestOrDishonest

atcoder.jp

ABC055 Restaurant

atcoder.jp

ABC054 One Card Poker

atcoder.jp

ABC053 ABC/ARC

atcoder.jp

ABC052 Two Rectangles

atcoder.jp

ABC051 Haiku

atcoder.jp

ABC050 Addition and Subtraction Easy

atcoder.jp

 

040~049

ABC049 UOIAUAI

atcoder.jp

ABC048 AtCoder *** Contest

atcoder.jp

ABC047 キャンディーと2人の子供

atcoder.jp

ABC046 AtCodeerくんとペンキ

atcoder.jp

ABC045 Trapezoids

atcoder.jp

ABC044 Tak and Hotels

atcoder.jp

ABC043 Children and Candies

atcoder.jp

ABC042 Iroha and Haiku

atcoder.jp

ABC041 添え字

atcoder.jp

ABC040 赤赤赤赤青

atcoder.jp

 

030~039

ABC039 高橋直

atcoder.jp

ABC038 お茶

atcoder.jp

ABC037 饅頭

atcoder.jp

ABC036 お茶

atcoder.jp

ABC035 テレビ

atcoder.jp

ABC034 テスト

atcoder.jp

ABC033 暗証番号

atcoder.jp

ABC032 高橋くんと青木君の好きな数

atcoder.jp

ABC031 ゲーム

atcoder.jp

ABC030 勝率計算

atcoder.jp

020~029

ABC029 複数形

atcoder.jp

ABC028 テスト評価

atcoder.jp

ABC027 長方形

atcoder.jp

ABC026 掛け算の最大値

atcoder.jp

ABC025 25個の文字列

atcoder.jp

ABC024 動物園

atcoder.jp

ABC023 加算王

atcoder.jp

ABC022 Best Body

atcoder.jp

ABC021 足し算

atcoder.jp

ABC020 クイズ

atcoder.jp

 

010~019

ABC019 高橋くんと年齢

atcoder.jp

ABC018 豆まき

atcoder.jp

ABC017 プロコン

atcoder.jp

ABC016 12月6日

atcoder.jp

ABC015 高橋くんの研修

atcoder.jp

ABC014 けんしょう先生のお菓子配り

atcoder.jp

ABC013 A

atcoder.jp

ABC012 スワップ

atcoder.jp

ABC011 来月は何月?

atcoder.jp

ABC010 ハンドルネーム

atcoder.jp

 

001~009

ABC009 引っ越し作業

atcoder.jp

ABC008 アルバム

atcoder.jp

ABC007 植木算

atcoder.jp

ABC006 世界のFizzBuzz

atcoder.jp

ABC005 おいしいたこ焼きの作り方

atcoder.jp

ABC004 流行

atcoder.jp

ABC003 AtCoder社の給料

atcoder.jp

ABC002 正直者

atcoder.jp

ABC001 積雪深差

atcoder.jp

イ日記

こんにちは

 

 暑い日が続いていますね,RedSpicaです.

 

 先日柄にもなくインターンに参加してきました.その感想を書き連ねていきます.

 

 

 ITで建設現場を楽にしようみたいなポリシーを持っていろいろなものを開発している静岡の会社に行きました.もしかしてこれは一意に定まってしまうでしょうか.また,日数は3日間でした.初めてインターンに参加したので普段はどんな感じなのかがわからずです(人事の方が「3日間だとあんまり来る人がいない」みたいなことを言っていたので長いのかもしれません).

 

1日目

 事前にメールで参加者が1人ということを伝えられていたのですが,訪れてみると「やっぱもう1人いるよ」ということを伝えられました.

 

 午前中は会社の説明を聞きました.また「実際にこんな感じに使うよー」みたいな感じで機械を触らせてもらいました.初めてドローンを触って「すげー」といったお気持ちに.

 

 お昼休憩ではとても豪華なお弁当が出ました.オフィスがめちゃくちゃ綺麗だったりお茶を出してくれたりお弁当を出してくれたりこの会社は金持ちか?(お弁当は3日間とも出ました,すごい!)

 またお昼休憩の間に簡単な自己紹介みたいなことをしたんですが,一緒に参加した方が情報系の専門学校に所属しているらしく「(よく聞く単語)やったことあります,(聞いたことある単語)とか(知らん単語)もやったことあって(なんかよくわからん単語)も少しだけできます」という強さを見せつけられてしまいました.ぼくはもちろんそういったことは一切やったことがないので「あーえっと競技プログラミングってのをちょっとだけやってて,C++とCとPythonがほんの少しだけ書けます」といったことしか言えず,会社の方もお察しムードといった感じでした.ぼくはこの日流した涙を決して忘れることはありません.

 

 午後はブロックリーゲームというものを用いたアルゴリズムの研修をしました.

blockly.games

 

 アルゴリズムの研修と言われていたので「あ,これAtCoderでやったやつだ!」ってなるかと思ったんですが,ボコられました.ぼくは今までなにをしてきたんでしょうか.

 

 「学歴なんてどうでもよくて,行った学校でなにをしたかがマジで大事なんだな」とこの日以上に強く思った日はありません.

 

 

2日目

 1日目の終わりに「常識の範囲内だったら私服でいいよ」みたいなことを言われたので,この日からは私服での参加です.そもそも1日目は何も考えずに下はスーツのズボンで上はワイシャツ(ネクタイなし)といった格好だったのであまり変わらないかもしれません.

 

 この日の研修内容はHTMLとJavaScriptを用いたウェブページの作成,もっと詳しくいうとウェブ上で動く電卓と,自分の自己紹介ページを作るといったものでした.HTML自体は大学の授業で本当に少しだけやったことがあって「ウェブページを作ることができる何か」ということは知っていましたが,どうやって書くとかどんな感じで表示されるみたいなのは全く知りません.しかし,超親切丁寧に教えてもらえたので,ほとんど詰まることなく電卓は作ることができました.

 問題は自己紹介ページの作成です.HTMLの書き方というか,かっこいい感じのページを作れなくて困ったのもそうなんですが,自分のことについて書くことが本当に無い.人に言えるような趣味とか特技とかが欲しいなあと思いました.競プロのことを書いたり,虹のコンキスタドールのことを書いて事なきを得ました.

 

 2日目の総評

 

 

3日目

  最終日です.朝早く(自分比)に起きて大学の課題と戦っていたので少し眠かった覚えがあります.

 

 この日の内容はC#を使ってゲームを作るといったものでした.”ゲームを作る”といっても,グラフィックの部分はあらかじめ用意されていたので,ボタンを作ったりボタンを押したら動くようにしたりすることをC#を使って実装していく感じでした.ゲームの内容は,グリッド上を動くマシンを操作して,グリッド上に置かれたリンゴをすべて集めようというものです.

 C#は一切書いたことがなかったので不安だったんですが,会社の方々がとにかくほめる.ことあるごとにいい感じの事を言ってもらえるし,「毎回コピペのやり方もわからない人がくる」みたいなことを言っていて「そんな人も来るのか」といったお気持ちになりました.普通にゲームが成立するところまで実装したら「予定より早く進んだのでオートモードを実装してみましょう」ということになりました.ここでようやくAtCoderで習得した実装力の出番です!実家のような安心感で実装をします.クリアしたのでさらに追加の課題を与えられます,実家実装をします.クリアしたのでさらに追加の課題を与えられますが,ここで時間切れ.

 最後の課題はざっくりいうとこんな感じでした.dpとかをしてやるのかなーと思ったりもしましたが,偉そうにしていた割にはこれを実装する力はないです(かなしい).

 最後に少しだけ実際の業務を見学させてもらい,これにて3日間のインターンが終了しました.インターンシップ修了証なる立派なものをいただき,お礼をして会社を去りました.

 

 3日目の総評

 

 

まとめ

 ぼくはこの1社しかインターンにいったことがないので他の会社はどんな感じなのかはわかりませんが,とても充実していたんじゃないかなーと思います.普段競プロをしているだけではわからない実務向けの基本的なこと,例えば「変数名をわかりやすくつける」だったり「リファクタリングをしてコードをよりよいものにする」といったことを身をもって知ることができました.

 今まで1年ちょっと競プロをやってきて身に着けたことは無駄ではなかったような気がしています,chokudaiさんいつもありがとうございます.

 

 競プロの実力がぼくと同じくらいの方は自己肯定感を上げるためにインターンに参加してもいい感じかもしれません.

 

 ブログの最後にふざけた文章を書くことを生きがいにしているのにそれっぽい文章が思いつきません,困った.

 

RedSpica

AtCoderで緑になってもうすぐ1年になります

A: こんにちは

 (解説: RedSpica)

  プログラミングの学習を始めたばかりで何から手をつけるべきかわからない方は,まずは「practice contest」の問題A「はじめてのあっとこーだー」をお試しください.言語ごとに解答例が掲載されています.

atcoder.jp

 

 最近は天気が悪い日が続いていて,なんだか嫌な気持ちになりますね.いろいろなことがあり積極的に外出しようとは思えない今皆さんはなにをして時間を過ごしているのでしょうか.

 

 僕は競技プログラミングを始めて1年とちょっとが過ぎ,AtCoderのレート帯が緑になってからもうすぐ1年になろうとしています.「ほぼ1年このレート帯にいるんだし,それくらいの適正はさすがにあるでしょう」ということで,偉そうに競プロのことを語る記事を書いていこうと思います.色変記事みたいなものだと思って読んでください.

 

 

スペック

 国立大学の数学科に所属して3年目になります.AtCoderのレートは1185(7/11時点),第3回アルゴリズム実技検定中級(64点)です.

f:id:RedSpica:20200716034244j:plain

 競プロをするための基本的な文法は1年の時の春休みにAtCoder Programing Guide for beginnersで学びました.

atcoder.jp

 こういった「問題を解いて人と競う」というタイプのものは(受験を除けば)実は競プロが初めてではなくて,数学オリンピックの予選を2回(Cランク1回,Bランク1回)受けたことがあります.このことは次のところで書きます.

 

 競プロで使える言語はC++(メイン),Python(ときどき),C(一応書けるレベル),Brainfuck(ACランキング7th)です.言語の仕様とか未定義動作とかは全く知りません.あくまで筆記用具と解答用紙がプログラミング言語になったくらいの気持ちでこれらの言語を使って競プロをしています.

 

したこと

 競プロを始める前に数学オリンピックの予選の勉強を少しだけしました.自慢できるほどの勉強量と点数ではありませんが,それなりに役に立っていると思います.やったことは予選の問題を数年分解く,数学オリンピックへの道(組合せ論と数論はそれなりに熱心に,三角法はほとんどやってない)を基本問題だけ解くという感じでやりました.組合せ論と数論の証明問題は競プロに活きているなーといった感じです.ちなみにマスターオブ整数/場合の数はやりませんでした.存在を知らなかったのもあります(これは嘘で,Amazonのほしいものリストに高1の頃マスターオブ整数を入れた覚えがあって最近消した).

 競プロユーザーがマスターオブシリーズをやるかどうかみたいなのは賛否両論あると思うんですが,個人的には「組み合わせは過去問埋めのほうが効く,整数は受験で使わなかったならやる価値がある」んじゃないかなあと思っています.まあやるに越したことはなくて,やってない人間の意見なのであまり参考にしないほうがいいです.

 

 そろそろ競プロのしたことを書きます.APG4bはテキストとしては1章だけやりました.1章だけやってしまえばABCの過去問はBとかCくらいまでなら戦えるのでとりあえず1章やったら過去問埋めに移ってもいいと思っています.2章の内容をやってから過去問をやったほうがいいのはそれはそうなんですが,僕は待てませんでした.実際,2章でやるべき内容は各項目の題名を見る感じ過去問を埋めて習得できている気がします.

 

 一般に精進と言われることですが,緑になるまでは緑になるための精進を,緑になってからは一切の精進をやめました.

 緑になるための精進は「これをコンテスト中に解けたら大幅にレートが上がるであろう問題を時間をかけて解く」といった感じです.体感,APG4bの1章をこなせば平成ABC(ABC125以前)ならB問題まで,令和ABC(ABC126以降)ならC問題までならほとんどの問題が難しいアルゴリズムやデータ構造を知らなくても解けるので,それくらいのレベルの問題を1時間くらい考察して,それでもダメなら自分が知らない知識を使う可能性が高いのですぐに答えを見ました.それくらいのレベルの問題がすらすら解けるようになると,現行のABCのDくらいなら戦える力がついてくるのではないでしょうか.緑になってからは毎週開催されるコンテストの問題を解くくらいのことしかしていません.強いて言えばBrainfuckのAC数が100くらい増えました.

 

問題を解くときに考えること

 コンテスト中ではない時と考えてください.

 まずABCのAやBを解くときです.問題を完全に理解しなくてもいいので,とりあえずさーっと問題を見ます.よく見るべきなのはサンプルです.1つめの入出力例と「なぜそれが出力されるのか」といった感じのコメントをよく見ると解法が浮かび上がってきます.そこまできたらもうやるだけです.あとは,だいたいの問題が制約に十分余裕があるので何も考えずにループ構文を書いて全探索するというのも1つの手です.

 次にCやDを解くときです.こっちは逆に問題文を完全に理解するまで何度も読みます.問題文を読んだらサンプルを見てまずは「自分が本当に問題文を理解したのか」を確認します.この時点で解法が浮かんでいるならすぐにコーディングに移るべきですがそうではないときはまず紙に書いて考察をします.

 愚直では通らないので計算量を削減するというタイプの問題は,いきなり減らそうとするのではなくとりあえず愚直で考えてみて,計算量が減らせそうなところを減らしていくという感じです.

 構成とかYesかNoの判定みたいなやつはまずケースが小さい例で書いて試します.なんとなくいけそうな気がしてきたらあとは与えられた条件式とにらめっこをします.また,条件を満たさない構成/Noになる場合を自分で考えることもとても大事です.「これを満たしてたらYes,そうじゃなければNo」という考えも大事ですが「これを満たしてたらNo,そうじゃなければYes」という視点をもつといいと思います.

 考えても解けそうにない問題や,初手がわからない問題はすぐに解答を見るかブラウザバックします.

 解けたと思ったらとりあえずコーディングをして,とりあえず提出をします.ACでもWAでもすぐに解答を見ます.

 

 このすぐ解答を見るのは数学オリンピックの勉強をしているときからのくせなのであまりいいことではないかもしれませんが,自分にとってはこれが最善だと思って続けています.というのも,「自分が知らない公式,データ構造,アルゴリズムを使う問題だったら無駄に時間を消費したくない」という気持ちが強いからです.

 

コンテスト中に考えること

 ほとんどの人がレートを下げたくないと思っているはずです.僕は一切精進していないくせしてそういった思いは人一倍強いので常に逃げることを考えています.といってもABCでNoSub撤退をしたことは3回くらいで,だいたい何かしらの提出をして,なにかしらのレート変動をしています.

 問題を解くときは丁寧丁寧丁寧にやります.具体的には

  • 簡単な問題だったとしてもコードが正しい答えを返すかを確かめる
  • しっかり問題を読む

 といった感じです.だいたいは問題を解くときに考えることで書いたことと同じですが,ペナルティには細心の注意を払います.何も確認せず提出して1ペナをもらうよりも,しっかり確認してノーペナでACをしたほうが確実に結果はいいはずです(簡単な問題のコードチェックは5分もかからないはずなので).

 

競プロをする環境

 エディタはVisual Studio Codeを使っています.特にこだわりはなく,設定もほぼすべて親友にしてもらったので便利な機能とかはほぼ無視している気がします.ただ,かっこを自動で補完してくれたりネストがどこまで続いているのかを線で教えてくれたり,あとは変数名とか型名に色がつくのは全部同じ色よりは便利だなとは思います.

 

 キーボードはFILCO Majestouch茶軸というものを使っています.日本語配列です.側面印字のキーキャップと追加で買った無刻印のキーキャップを混ぜて使っているのですが,かっこいいし使いやすいのでとても良いです.

 マウスは最近Logicool G Pro Wirelessというものを使い始めました.ゲーミングマウスなので遅延も全くなく,ワイヤレスなのでコードを気にせず使えて僕の狭い机ではとても助かっています.ただ,ゲーミングマウスのなかでも群を抜いて値段が高いです.余談ですが,左右クリック以外のボタンがついているマウスを使っている方はそのボタンにEnterキーを振り当てると人生が数倍豊かに暮らせると思います.

 モニタは20よりちょい大きいくらいのインチのやつを使っています.左側に問題,右側にエディタといった感じでコーディングをしています.

  考察ノートはすべてiPadとApplepencilとGoodnotesというアプリを使っています.方眼用紙にするととても便利です.

 競プロをしているとき(というより作業をしているとき)はいつもすきな音楽をかけています.歌いながら考察をするとなんかはかどるきがしています.勉強をするときはoff vocalの曲を流すのが1番いいらしいということを高校の時に聞いたことがありますが,真偽はよくわかりません.

 

 さいごに

 ここまで読んでいただきありがとうございました.少しでも参考になった部分があれば幸いです.なんでこんなまじめな文章書いているんでしょうか.おしえてウッウ笑ちゃん笑

ファストパスとか,ファストパスとか

こんちには

 

 この記事は東京ディズニーリゾートの楽しみかた - 限界大学生の書き溜めの追加コンテンツ的なものです.その記事と合わせてお楽しみください.

 

f:id:RedSpica:20200206061445j:plain

 

 主な内容はファストパスの取る順番についてです.先述のブログでも描きましたが,ファストパスによってなくなる速さはマチマチです.すぐになくなってしまうものもあれば,昼過ぎまで残っているものもあります.今回は各アトラクションがどれくらいの時間まで残っているかを経験と勘でまとめていきます.

 

 

取り方

 ファストパスを取ることができるアトラクションを,ファストパスがなくなる速さでいくつかの集合に分けます.

 

S:入園してすぐとらないとなくなってしまう

A:すぐにとらないとなくなってしまう

B:少し余裕はある

C:かなり余裕がある

D:日によっては発券なしレベルに混まない

 

 閑散期はSからDの順に1枚ずつ,繁忙期はS or Aから1枚→Bから1枚→Cから1枚→残っているDくらいのイメージで取ります.乗りたいアトラクションのFPから取るのが当然ベスト(なくなってしまったら元も子もないので)なのですが,あくまで目安として考えてください.「今日人多そうだし,Bレベルを2枚目でもちょっと渋いから先に取ろう」という選択肢もアリです.

 

 度々になるのですが,SやAレベルのアトラクションにスタンバイする(並んで乗る)ことは本当におススメできません.

 

東京ディズニーランド

S:プーさんのハニーハント

A:モンスターズ・インク”ライド&ゴーシーク!”,スプラッシュ・マウンテン

B:ビッグサンダー・マウンテンバズ・ライトイヤーアストロブラスター

C:スペース・マウンテン,ホーンテッドマンション

D:スター・ツアーズ

 

 モンインが1番最初になくなる時代も過ぎ去って,今ではプーハニが真っ先になくなるんですね.バズがBTMと同じくらいなのにも正直驚きでした.あと,知らない間にイッツアスモールワールドがFP対象外になっていました.FPあるとそれなりに助かってたんですけどね...

 

東京ディズニーシー

S:ソアリン:ファンタスティック・フライト,トイ・ストーリー・マニア!

A:センター・オブ・ジ・アース

B:インディ・ジョーンズ・アドベンチャー

C:レイジングスピリッツ,タワー・オブ・テラー

D:ニモ&フレンズ・シーライダー,海底2万マイル,マーメイドラグーンシアター,マジックランプシアター

 

 2/6からタートル・トークもFP対象アトラクションになります.まだデータがないのでどれくらいの速さでFPがなくなるのかわかりませんが,おそらくCかDあたりになると思います.ランドのほうでプーさんをSにしたのは正直ビミョウなんですが,シーのソアリンとトイマニは本当に開園直後(1時間くらい)でなくなってしまうので注意が必要です.

 

 おわりに

 ソアリンはマジで良い.FP秒でなくなるから8時より前に待機列に並ばないとちょっと厳しいね.ランドのBレベルはほぼ確実に2枚目でも取れるよ,経験に基づく勘がそう言ってる.