りにゅうしょく

競技プログラミング 日常

『Shadows of Doubt』の紹介と初心者向けのあれこれ

Steamで購入してアーリーアクセスプレイをしているのですが、面白さのわりに日本語でいろいろ書いている記事が少ないため、紹介&つまづきそうなところを簡単に解説します。
(私もまだ全クリアできたわけではないので、誤りがあればご指摘ください)

ゲーム概要

store.steampowered.com
一言でいうと、「自動生成された街で、探偵やって稼ぎつつFIREしたるぜ!」というゲームです。マップも住民も事件もすべて自動生成なので、プレイヤーごとに状況は異なります。
とはいえ、「殺人事件」「浮気調査」みたいなパターンがいくつかあり、それに当てはまる形で事件が生成されていくシステムになっています。

このゲームの最も魅力的な点は、事件の真相に迫るうえでの手段を好きに選べるところにあります。「草木も眠る丑三つ時」というチュートリアルの事件でもその特徴が如実に発揮されていて、加害者特定に向けて「被害者が最後に行ったレストランを訪れる」「被害者の勤務先を訪ねる」「凶器の出所を探る」などの選択肢から好きな方法で辿っていくことができます。

(ゴッチャゴチャですみません)
実際のゲーム内では、下記のようなボードにヒントを切り貼りしそれぞれにリンクをつなぐことで、状況を整理することができます!このシステムが面白くて、全然事件に関係ないキャラクターに対しても出生証明書だの銀行明細だのをついつい探し回りたくなります。
また、リンクは関連のあるものについてはある程度勝手に貼ってくれるので、手掛かりの整理なんてまだるっこしいことやってられっか~!!という人でもそれなりのボードになります。

序盤のヒント

説明がかなり不親切で、買っても脱落している方が多そうなので……。(Steamの実績がどれも大体一桁%)
私はめちゃくちゃヌルゲーにしてプレイしています。

新しい街の生成時

  • 街を生成するときは、とりあえず以下の設定がおすすめ
    • 大きさ:「小さい」
    • 難易度:イージー
  • 「ゲーム設定」は以下の設定にするのがおすすめ
    • サンドボックスモード開始時資金:300~1000
    • ステータス効果を有効にする:無効、もしくは肯定的なもののみ

街を小さくすると、単純に捜査する範囲も狭まるため楽です。
「イニシャルだけで犯人を捜す」といった状況で、あまりにも人間が多いと心が折れます……。

資金は少し進めれば困ることはないのですが、序盤は聞きこみなどでヘマをするとお金が足りなくなったことがあったため、300以上がよいかと感じました。

ステータス効果は、デフォルトだと雨の降る街を少し歩いただけで「濡れ」「凍え」状態に陥り、ごみ箱を漁れば「臭い」が発生して周りのキャラクターに遠巻きにされるというつらい状況が発生しがちなため、オフのほうがやりやすいです。

犯人の捕まえかた

捜査の時、最も役に立つのが役所にある「政府データベース」です。(監視カメラがフヨフヨ動いてる部屋なので入ったらシバかれそうに見えますが、普通に入って端末も触れる)

この「政府データベース」は名前さえわかれば、氏名・顔写真・指紋・身長・生年月日・性別・靴のサイズ・住所などが一発で取得できます。顔が分かれば道行く人に尋ねまくることもできますし、住所が分かれば家凸(してドアの前で待ち伏せしたり、お金を渡して部屋の中に入れてもらったり)もできます。

あとは、役所内の自販機で手錠を購入すれば捕まえられます。手錠を見せつけるとキレてくるキャラもいるため、後ろに回り込んでから手錠を出す→手錠をかける、の流れがよいです。

犯人のイニシャルが判明している場合、
①電話帳から該当イニシャルの人を全リストアップ*1
②政府データベースで全部検索
③それっぽい人だけ家凸
でだいたい逮捕できます。

そのほか

  • 会社は、営業時間内はエントランスまでは好きに入室可能
    • 鍵がかかっている場合、ノックして開けてもらえばOK
    • エントランス内のマイクロクランチャー(PC)も勝手に使って大丈夫
    • 従業員エリアに入りたい場合、30cr払うと大体入れる(2時間のゲストパスがもらえる)
  • 拾ったものは質屋(本のマークのところ)で売却可能
    • 企業の金庫にはダイヤモンドが入っていることがあり、盗むといい値段で売れる
  • 同期盤も高値で売られていますが、報酬でもらったり盗んだりできるので購入は不要
  • 同期盤は砂時計マーク(遺伝子マーク?)のところでインストール可能

  • 道行く人へ情報を訪ねたり、見知らぬ人の家に入れてもらうとき、金額交渉が決裂した場合は支払いなし
  • その辺の人の家の鍵は、たまに入り口マットの下に落ちている
  • このゲームはとにかく時間経過がゆっくりなため、1時間以上待ちたい場合は家に帰って寝たほうがいい

余談

不満の残るところ

  • 時間経過がゆっくりすぎて待ち伏せとかがやってられん
  • 日本語翻訳が怪しめ
  • 仕事場が商業ビル、という犯人を特定するために片っ端から企業のデータベース見たのに、結局犯人は居住部に住んでいて仕事場はビル内じゃなかった……(バグ?)
  • 小さい街でもそこそこカクカクするので、大きい街を作るには相当スペックがいるかも
  • NPCの反応はとても単調

しかし、これで2300円はめっちゃ安いなと感じるので、全人類買ってください!!!!!!!!!!!!!!!!!!!!!
お~わり

*1:作中の「名前のイニシャル」はファーストネームのことを指します。名前のイニシャルがJの場合、電話帳の「JKL」の項目を見るのではなく、すべての項目のうち頭文字がJのもの(「J.Daher」みたいな)を探す必要があります。

パソコンオンチ①

※isucon の過去問を解こうと、パソコンオンチがアワアワしているだけの記事です。アワついている人間を見たい人向けです。

WSL2上に↓を環境構築しようとしています
https://github.com/matsuu/wsl-isucon10-qualifier


①構築に失敗する
Microsoft StoreからWSLをインストールしたらなおった(なんか元から入ってるやつではだめらしい)
→エラーが出まくっているのはRustのビルド部分ぽいので、無視します。

ベンチマーク ではなく、初期化
先にベンチ回そうとして動かん動かんと嘆いていました。
isuumo/initial-dataで初期化が必要だよ(それはそう)
→pip3 install -r requirements.txt が権限でダメだよーと出るので--userをつけて実行します

→go get github.com/orisano/wayt をすると、unrecognized import path "io/fs": import path does not begin with hostname と怒られる
→Goのバージョンが古いのが原因なので、/home/isucon/local/goを削除してから、再インストールする

curl -LO https://go.dev/dl/go1.18.4.linux-amd64.tar.gz
sudo tar -C /home/isucon/local -xzf go1.18.4.linux-amd64.tar.gz

↑これがとてもつらかった。なぜかGoフォルダが二つある上に中身は同じっぽい(/home/isucon/goと/home/isucon/local/go)。go envを叩くとGOPATHは前者を、GOROOTは後者を指してて何が違うねんとなります。そして前者を入れ替えたら効果がなかった……。
ここで分からなかったので他人に丸投げして泣きつきます。3分クッキングか?
後者のGoを入れ替えて、もいちどgo getすると怒られます。getは使わないそうです。そこでgo installするとまた権限で怒られます。755してもまだ足りなかったので✨sudo chmod 777✨します。するとようやくio/fsのimportがうまくいきます。やったー

~ここまではブログを書く気が起きる前だったので全然スクショやエラー文がないです~

→makeするとdocker-composeがないぞ!と言われるので、Docker Desktopで下記の設定でチェック入れます

さらに、下記のエラー文が出た場合は、/isuumo/webapp/go/DockerFileのwgetcurl -LOに直します(なぜか分からないけれどChat GPTがそうしろと言っているから……)

 > [4/9] RUN wget https://github.com/jwilder/dockerize/releases/download/v0.6.1/dockerize-linux-amd64-v0.6.1.tar.gz     && tar -C /usr/local/bin -xzvf dockerize-linux-amd64-v0.6.1.tar.gz     && rm dockerize-linux-amd64-v0.6.1.tar.gz:
#0 0.749 --2023-06-10 19:22:09--  https://github.com/jwilder/dockerize/releases/download/v0.6.1/dockerize-linux-amd64-v0.6.1.tar.gz
#0 0.765 Resolving github.com (github.com)... failed: No address associated with hostname.
#0 0.871 wget: unable to resolve host address 'github.com'

これが無事通ったら/home/isucon/isuumo/webappに移動してREADMEの通りにしてあげると、

動いた!!!!!!!!!!

アプリ動いたしまずはベンチマークや!!!

キエ~~~~~~ッッッッッッ

go mod tidy で不足しているパッケージとやらを勝手に入れてくれました 賢いな……
そのあとにgithub.com/isucon10-qualify/isucon10-qualify/benchにあるscenario、client、assertを1こずつダウンロードしてからもう一回makeしたらビルドが通りました。
今度こそまわすぜ

やりました。こいつをどんどん直していけばいいわけですね!


②は、パソコンオンチがIikanji Speed Upをがんばります。以上!

新卒エンジニアのISUCON参加記(ISUCON12)

スギノキです。kakiraちゃん(kakira9618)、かいとさん(tran0826)と一緒に「kakipippi」というチームでISUCON12に参加しました。結果は振るいませんでしたが、とても勉強になった8時間でした。
忘れないうちに参加記を残して次に向けてのモチベーションを高めようね、という話になり3万年ぶりに宝塚以外の内容でブログを書くことに……(このブログは宝塚歌劇遠征の道中新幹線で書かれています)
この記事に特にためになることはありません 技術ブログではありませんのでご容赦ください こんな軽いノリで参加していいんやな~くらいに見てください 嘘を書いている部分があればご指摘くださるとうれしいです

チーム決め~事前練習のこと

いとさんは会社の先輩で、勉強したいからISUCON出たいな~と言ったらチームを組むことを快諾してくれました。ただ社内に共通の知り合いがいるわけではないため、残り1人が見つけられず、Twitterで募集を掛けたところkakiraちゃんがリプライをくれました。kakiraちゃんは競プロキャンプで少しお話したくらいでしたが、見るからに優しそうオーラがあったのでよっしゃこの3人で行くぜ~~!ということになりました。この時点で6月上旬と、予選まで1か月ほど猶予がありました。


事前練習(Discordで集まってワイワイ話すこと)は大体週1の頻度で本番までに5回行いました。と言っても、私がほんっっっっとうにWebド素人で何も分からない状態だったため、最初の3回は「kakiraちゃん先生によるWebのしくみ説明会」みたいな感じで座学を教えてもらっていました。


ISUCONはいくつかの言語で参考実装があるものの、どれもほとんどさわったことがなかった*1ため、「はやそう」「過去の知見が沢山ネットに落ちてそう」くらいの理由でGoに決めました。メルカリがSlackで公開している Gopher道場 を見ながら文法を勉強しました(と言いつつ、新卒研修も同時期にあったため全然勉強できていませんでした……)。


ISUCONの過去問にチャレンジするためのシンプルな環境構築 : ISUCON公式Blog
チームを組む前にさかのぼると、上記を参考に、かいとさんに教わりつつDocker上でISUCON7の環境を構築してみたりしました。と書くとさらっとやった感が出ますが、これすら苦戦しました。WSL2が入ってないと怒られて「ほんまか?」となりながらWSL2をインストールしなおしてそれでも直らず、自分のUbuntuのバージョンが謎に古い(18.04)ぽいことに気づき新しいやつをインストールして、それでも動かずdocker-composeにsudoをつけないとだめだと教わってようやく動かせました。
ベンチは回るようになったものの、2人ともWebサービスを高速化した経験/Zeroだったので、環境構築以降はとくにさわってないです……


本番が近づいてくると、もらったクーポン*2を利用してさくらのクラウド上でISUCON10の問題を3人でさわってみることになりました。
とりあえず計測をしないことにはボトルネックが見つけられないよね、ということで、alp・dstat・pprof・pt-query-digestの使い方を教わりました。

ここで困ったこととして、自分に知識や経験がなさ過ぎてkakiraちゃんの書いてくれた使い方説明書が全然読めない……ということがありました。インストール方法・使い方・注意点をgithubにまとめてくれていたのですが、そのコマンドをどこで打てばいいのか・適切なパスに書き換える必要があるのは分かるけどどこを指定すればいいのかなどが自分で考えても分からなくて、たくさんご迷惑をおかけしました……。

計測ツールの使い方だけをふんわり理解したところで、準備は終了しました。なんてこった。

本番当日

本番はかいとさんの家に3人で集まりました。

さっそくやることが無くなってしまいました。とはいえ、ぐーぐー寝るのもナメとんかお前となってしまうので、まずドキュメントをよく読みます。kakiraちゃんが環境構築をして、その間に私とかいとさんでコード読んだりドキュメント読んだり実際に触ってどんな動きをするのか試してみる、という戦法です(?)


アプリケーションマニュアルのほうは短いですね。予選当日マニュアルのほうは情報量が多くて、後ろの方にスコアの計算方法が書いてあって大事そうだねーと話していました。とくにCriticalなエラーを1つ踏んでしまうとそれだけで10%の減点ということでつらそう。


ところでちゃんと鍵の登録に成功していたのがかいとさんだけで(え?)、残る2人はサーバーにログインできなかったので改めてかいとさんに追加してもらいました。
ssh isucon1……よっしゃ開くぜ!VS Codeのリモートエクスプローラーで中身見るぜ!→接続できません……になりました。練習でも同じミスをしました。なぜか私のパヨヨンのいたるところに.sshフォルダがあるために(?)設定ファイルの指定を間違えていました。改めて正しいファイルを指定しなおすと、今度は3番目のサーバーだけリモートエクスプローラーで読み込めません。解決方法も分からなかったので、とりあえず2番目のサーバーだけ触ることにさせてもらいました。ごめんなさい。


中身を見てみると、ISUCON10ではMySQLやらNginxやらいろんなコンテナが立っていましたが、今回はGoの部分だけ(?)みたいでした。処理はisuports.goに集約されていて、正直まったく読める気がしませんでしたが親切にもたくさんコメントが付いていてふんわり掴めました。

まず目につくのは107行目のfor i := 0; i < 100; i++とかいうやつです。100回も何やってんねんと言うと、 システム全体で一意なIDを生成しようとしてるらしいです。stubとかいうよく分からないstringを持ってるけど'a'以外なんも入れてないし、これは何?という話になりました。
ただこの時点でまだ計測ツールが入っていないので、すぐ直すのではなくてとりあえず改善点メモに書きだすにとどめました(あと単純に二人ともGoを書く自信がない)

排他ロックを多用していてまずそうとかいとさんが教えてくれたので、使ってるところを列挙してみることにしました。確かにこんなんでいちいちロックアンロックとかやってたらよくなさそうだなとは思ったのですが、私は直し方が分かりませんでした。

あとはindex貼ると速くなるみたいな話があったな……と思って、SELECT ホニャララみたいなところでどういう並び順を指定してるのか読んだりしていました。


↑なにかメモを残そうと足掻いていた形跡がありますね。

他には、テナントが追加されるたびにファイルが追加されるのがヤバそう・そもそもSQLiteMySQLが混じってて大変、などという話をしていました。


とりあえず中身をいじっていいことになったので、適当な(そして私でも出来そうな……)改善を考えることにしました。

スギノキ「Nginxのチューニング試したいです」
kakiraちゃん「いいけど、NginxのフォルダはWebappの外にあってgitの管理外だから……」
スギノキ「(ここにチベットスナギツネの画像が入る)」

私がチベットスナギツネになっている間に、kakiraちゃんがシンボリックリンクを張って(?? 何をやっているのか分からなかったのでこの辺嘘かも)NginxのフォルダをWebappの中に移動させてくれました。

nginxのパラメータチューニングとh2o - Qiita
↑これを見ながらほぼコピペしました。
sudo systemctl status isuportsじゃ変更は反映されなくて、sudo systemctl restart nginxじゃないとだめだよーと教わりました。確かに元々Webappじゃないフォルダにあったんだからそれもそう……?

ここ(14時半ごろ)でようやく初ベンチを回してみると、2620点でした。特に変更の恩恵はなさそうですが、適当なブランチにpushしました。


15時ごろ、計測ツールが使えるようになりました。pprofで見てみると、明らかにSQLite部分の処理がクソ遅く、ここが足を引っ張っていることは明らかです。逆に100回for文とかの部分は全体的な比重としては食ってないぽいと。

いとさんSQLite部分を綺麗にMySQLに置き換えられれば速くなりそうですね」
kakiraちゃん「その実装はこの残り時間では無理です……」

それは一旦諦めて、かいとさんがindexを張ったりしてくれていました(たぶん)


いとさんがindex張ったりkakiraちゃんがアプリの内容を把握したり排他ロック外してみたりしてる間に、NginxとWebappがTCPで通信してるのをUnix Domain Socketで書き換えてみることにしました(これも自分一人では結局できなくて、kakiraちゃんにたくさん聞きました……)
Nginxのフォルダの隣に適当なフォルダを作って、そこにapp.sockを置いてyamlのvolumesに書き加えました。
ここでスコアが2852と若干の上昇を見せます。ベンチが通って若干上がったことを報告して、これも適当なブランチを切ってpushしました。


kakiraちゃん「なんかログ出ないなと思ったらNginxのaccess_logがoffになってる!!!!」
何も考えないでoffにしたスギノキ「!!!!!!!!!!!!!!!!!!!!!!!!」
本当にすみません すみません……


kakiraちゃんがロックを全部外してみたところ、スコアが5000超と元気に伸びましたが、10回に1回くらいしかベンチが通らなくなったことが発覚します。この時点で17時を過ぎていて、そろそろ終わりのことを考えないとまずいという状況でした。
さらに、私がmasterブランチにセルフマージした*3やつが、実は他の人がpullすると動かないということも発覚します。原因はapp.sockがなぜかpushできていなかったからです。
いとさんに謝りながら、とにかく時間がないので自分でapp.sockを置いてもらおうとすると、権限周りのエラーでファイルが作れないと出ます。死!

とりあえず、かいとさんが書いたindex張ったやつに一部だけ排他ロックを外した状態で提出しよう、ということになりましたが、間に合わず終了しました。

反省と次回に向けて

  • 何が分からないのか自分でも分からない
  • 環境構築パートを全てkakiraちゃんに押し付けてしまったので何もわからない
  • Goを書く自信がなくて全然触れなかった
  • DBの勉強を全くしていなかった
  • 優先順位をつけた実装ができなくて、意味があるのかもわからないままできそうなところから手を付けてしまった
  • 若さに甘えておやつにアイスを2個食べると腹を壊す


来年は"戦"の土俵に立てるように頑張りたいです。

他の二人も参加記を書いています!
kakira96.hatenablog.com
umineko-sephi.hatenablog.com

*1:しいて言うならJavaを研修で習いたてほやほやだったのですが、例年は参考実装にJavaがないので過去記事を参考にあれやこれやがしにくい

*2:ISUCONに申し込むと練習用に使うさくらクラウドのクーポン・本番用に使うAWSのクーポンがもらえます

*3:完全にいいわけですが一応許可は取った

自分用メモ VSCodeいれなおすとき

ンコソパなので自分用にメモを……。

まずこれをやる
Visual Studio Codeで競プロ環境構築(導入編) - Qiita
入れたい拡張機能はよくわからんので普通にインストールとWSL上でインストールのどっちもやる

Code Runnerが使えるようにする
【VSCode】Code Runner+wslで一発コードテスト - Qiita

配色 かわいいのでこれにした
Pop N' Lock Theme by Luxcium ✨ by Luxcium

フォント 前何にしてたか忘れてたので適当に選んだ
プログラミングフォント Myrica / Estable | Myrica (ミリカ)は、フリーなプログラミング用 TrueType フォントです。

デバッグ用のいろいろ
よくわからないのでいれてないぜ!!

21年の人生で出会ったオタクコンテンツたちの話(前)

書こうと思ったきっかけ

  • ちょうど今年オタクを自認して10年目だから。
  • Twitterで深夜に思い出したように狂ってツイートしてるけど、一度まとめた文章にして感傷に浸りたかった(?)から。
  • 「私もこれ昔好きだったな~」というフォロワーを発掘してオタクコンテンツの話がしたいから。

自分以外にあまり意味のある記事ではないと思うので、見てもとくに得はしないです。

~小学生

おこづかい制(月800円)だったので、この時に触れたコンテンツは特に記載がない限り既に家にあった(=母親の趣味の)もの。母親の娘でよかった~と思うときと何でこんなにキモいオタク英才教育みたいなマネしたんだろうと思うときがある。

漫画

これを読んで大学って面白そう!私は絶対大学に行きたい!(?)って思った。その時は知らなかったけど北海道大学ってことはハムテルや二階堂はめっちゃ賢いし、オーバードクターってことは菱沼さんもめっちゃすごいんだな……。

記憶の限り?多分5巻くらいからリアタイ。無畏さんがすごく好きだった。続編の「非ズ」も含めて、漫画の中でもかなり好きな作品。

10巻?くらいからリアタイしていて、将軍(茂々)が殺されたあたりで母親が買わなくなった。アニメも1期・2期は見てた覚えがある。読み返すと下ネタの意味を全然わかってなかったなーとなって感慨深くなる(ほんまか?)

いつからか分からんけど家にあって、藍染と決着をつけるあたりまでは買われてた。アニメも見てた。織姫が嫌いなのでキャラブック(なんか黒い表紙のやつ)で読み切り版を読んだとき「なんで本編でも死んでくれなかったんだ……」と嘆いてた。

親にねだって買ってもらってたけど、石油王とか出てきたあたりで興味が無くなった。忍が好きだった。

家に小学生の時誕プレで買ってもらっためちゃモテ委員長の香水があるのですが、処分方法が分からず一生置かれたままです。誰か引き取ってください。

ブラックムーン編」のどこか1巻だけが家にあった。その巻はプリンスデマンドがうさぎちゃんに無理やりキスするシーンがあって、これを読んだのは年長か小1のときだったんだけど、そこから金髪/銀髪の強引俺様白タキシード王子様が好きになってしまった。死あるのみ

  • ちゃお

上記に限らず、お小遣いで2,3か月に1回くらいちゃおを買っていた(期間は2年くらい?)。きらレボめちゃモテ委員長俺キン姫ギャルパラダイスとかが連載してた気がする。母親は花とゆめ派だったので私に「ちゃおか~(笑)」みたいな反応をしてた。ちゃおDXホラーに描かれてた「天狗の箱庭」という読み切りが異常に好きだった。

漫画から入った(当時まだ再刊されておらず原作の値段が買えたものではなかった)。小説は今でも何度も読み返すとても好きな作品。漫画は絵がこわすぎる。

当時隣に住んでた家族の父親がめっちゃオタクで、ほのぼのからグロいのまでいろんな漫画を持ってて読ませてくれた。そのうちの一つがフルバスで、長かったので何回も家に通って読んで最後は爆泣きした。一番泣ける&一番男がクソな少女漫画。紫呉が真人間だったらここまで話はこじれんかった。

幼稚園年長~小6までテニスをやってて、そのテニススクールに全巻置いてあった。人生のバイブルどころか第二の母親まである(オタク特有のクソデカ表現) はじめて通読したときは不二先輩が好きだった。
家には「氷帝夢想」という2003年に発売されたPC向け同人乙女ゲームがあった。これを母親のPCでやらせてもらったのが人生初乙女ゲームになった……(内容は氷帝学園にコネ入学した庶民が玉の輿を目指すというラブコメ)。

児童館で全巻読んだ。CLAMPの描く男の顔がとにかく好きでユエ激推しだった。今でもコスメコラボとかをたまに見かけるし、漫画内での細かなモチーフがとても乙女心をくすぐる作品だと思う。

母親が持ってた。小学生だったのでストーリーはあまり分かってなかったものの、とにかくメカニックデザインが綺麗・女性のキャラデザが神秘的で、画集のように読んでいた。

アニメ

アニマックスかなんかのケーブルテレビでよく再放送をやってた。スギノキ家はつけてていいテレビがとても限られていて数少ない「つけていて母親が不機嫌にならない番組」の1つだったと思う……。中身は正直覚えてないのでそこまで好きではなかった。

母親がTSUTAYAで借りてきた(グロいのが無理で途中までしか借りてなかったと思う)。これもハジさんが口に血?を含んで小夜にキスをするシーンが小学生にとってあまりにも衝撃的で、以降人外お兄さん×女子高生をめちゃめちゃ好きになってしまった。

小説・ラノベ

  • ふーことユーレイ

記憶にある限りでは初めて読んだ小説。幽霊の男×生きてる女という青い鳥文庫の児童文学。このころ(小学一年生)から既に死ぬ男(死んでる男)萌えを発症していた疑惑がある。

2巻まで家にあった。スニーカー文庫で女主人公ってもしかして珍しい?今ググったら人気なさ過ぎて3巻で打ち切りになっていた。

これで魔術とかオカルトにドハマりしてた……。pakoさんのイラストが大好きで猫屋敷さんにガチ恋だった。アディリシアと最後にくっついたのはえらい。

死ぬ男×残された女というカップリング観を植え付けた元凶。あざの耕平の最高作だと思う。ラノベだけど女主人公。異世界物がこんだけ流行ってる時代にはこういう感じの現代×ファンタジーな良作はきっと出てこないので、ゼロ年代回顧オタクになってしまう……。

これもあざの耕平で女主人公もの。ドラッグを飲むことで見える集団幻覚にバトルさせるという変わった設定。BBBほどは刺さらなかったけどサブキャラがとにかく魅力的で、短編集もかじりつくように読んだ。

「ママだけ読んでてずるい~」って言ったら「付箋を挟んだ部分(3巻「禁じられた数字」)は読むな」という条件付きで貸してくれた。読んだら教育によくなさそうな下ネタが飛び交ってて「こんなの今更気にするタイプだったのか……(びっくり)」ってなった。

ハルヒは私にとってずっと「なりたい女の理想像1位」なんだけど、ハルヒに憧れる女は地雷なので近寄ってはいけないとネットで揶揄されていることを知りわかるな~~となった。キョンのせいで男性向けはやれやれ系主人公ばかり好きになる。

196cm×191cmとかいうBLでもそんなないやろみたいな大柄カップルのNL。BL畑出身の作家が書くNLってなんでこんなに刺さるんだろうな……。珍しく女が死ぬタイプのカップリングだけどそれも含めて面白くて好きだった。ただ当時から「男装女子もの」や「体は女だけど心は男な受けキャラ」があまり好きではなかった覚えがあり、デルフィニア戦記は途中までしか読まなかった。

3巻くらいまでは家にあったので読んだけど嫌いな作品だった。今初見だったらあらすじからして絶対に読まないと思う。

「正義とはあたしが勝つことよ!」という名言(?)がめっちゃすき。金と権力を手に入れた涼宮ハルヒの厄介バージョンみたいな女で最高。母親とは男の趣味は合わないけど女の趣味は似ている……。

当時は臨也が好きだったけど今は付き合うなら絶対ドタチンか静雄。静雄とめちゃくちゃ付き合いたい。ケンカップル好きって豪語してるオタクは大体これか復活(骸×雲雀)で目覚めがち。

とにかくつまらなくて2巻で読むのをやめた覚えがあるので、アニメ化したときは「オタクってわかんね~~~~~」になった。今調べたら挿絵がメチャクチャ嫌いな人だった。

とにかく略。17巻も出てると知ってビビった。

ライトノベルというより児童文庫っぽさを感じませんか?(?)ハルヒが好きだったのに当時周りのオタクはみんなバカテス派で泣いてた。サブキャラの豊富さはいいと思う。

そのほか

小学5年生~6年生?の、イナズマイレブンにハマる前までは好きだった。母親も嵐が好きで、友達も好きだったので自然とハマったぽいけど全く記憶にない。「君と僕の見ている風景」のナゴヤドームのコンサートに行った。

多大な黒歴史を残してきたけどはてなが全部消し去ってくれた。小5か小6の初めごろにDSiで絵を描くようになって、うごくメモ帳経由で「オタク」という言葉を知った。ボカロや東方、BLに初めて触れたけど、最初はBLとNLの区別や受け攻めの概念が自分の中になくて、「好きなキャラと好きなキャラが恋愛してたら何でもいいや」みたいな感覚だったはず……。

  • 〇スペラーズ

小3~小4ごろ、活字中毒かつ夜いつも寝れなくて友達もいなくて、文字が読みたいと泣いてたら母親がPCでゴ〇ペラーズの夢小説を読ませてくれた(当時専業主婦なのに父親が倹約家で全然母親にお金を渡してなかったので、本をたくさん買うお金がなかったからぽい?)。夢小説という概念を知らなかったし、ゴス〇ラーズのことも詳しくなかったので、「面白い小説」としか思ってなかった。

Wiiのやつ(戦国BASARA3)を母親が買ってきたところ、ノキ家内で爆流行りした。元から家事やらない父親がさらにやらなくなって母親が大激怒してた。母親は猿飛佐助・父親は島津義久・私は石田三成が好きだった。ところでBASARAの夢小説は結構良作が多いのでオススメです。

特撮1期を母親がTSUTAYAで借りて全部見た。主人公カッコイイし恋愛要素もあるので、当時は普通に恋愛ドラマと同じ感覚で見てた。「銀色のほうかっこよくて好きだったな~」って母親に言ったら「アイツ演技クソ大根やったで。もう一度見直せ」と言われた。

中学時代

アニメ

好きな人が略。しかし当時からグロいのがめちゃくちゃ苦手で見ていて全然楽しくなかった……。オタクじゃないクラスメイトも見たりしててびっくりした。今でいう鬼滅っぽい流行り方をしてた気がする。

ドハマりした。オヤコロだのグラコロだの言ってた、死しかない。好きなキャラが赤司と花宮だったのがもうキモいオタク丸出しで、思い出しても穴に埋まりたい。脅迫騒動があったのでほとんど同人誌が買えなかった。

好きな人が好きだったのでアニメを見た。ドハマりはしなかったけど絵や設定が独特で面白いなと感じた。

アニメ2期で「ポワゾンKISS」を見て、ASを買ってそれからずーっとカミュ推し。思うことはあるけどここまでコンテンツとして走り続けてるのは本当にすごいし、2次元男性アイドルのレジェンドだと思う。これからも続いてほしい。

  • ハイキュー

ハマらなかった。というのも、黒バス熱からなかなか抜け出せず、アニメの1期は見てたけどイマイチのめりこめなかった。でも人気があるのはわかるなーの気持ち。

アニメ自体は小6のときに見てたはずだけど、その時は特に印象に残ってなかった(?)。母親がドハマりしてるのを見て自分も少しずつハマり、中学生になると面白さが分かるようになった。兎虎しか勝たん(ここにぴえんの絵文字)

Free!の制作発表の時、諸々の理由から「絶対コケるだろうな」と思ってたのに、予想に反して大人気コンテンツになってとにかくびっくりした。当時の男オタクの「京アニが腐媚びかよw」みたいな反応が一生忘れられん。

  • DIABOLIK LOVERS

ニコニコで毎週アニメを見てた。始まり方も終わり方も意味不明なのでオタクはダイナミックコードよりディアラバを見た方がいい。強いて言うならルキかリヒターが好き……。

「ある日突然13人の義兄ができる」というトンチキ乙女コンテンツ。絶対イケメン社会人一択なのによくわからん私大の男とくっつくオチがマジでだれも得しなくてゆるせん。Geroが歌うOPの「BELOVED×SURVIVAL」は良曲。

  • 神々の悪戯

アニメを見てた。が、乙女ゲームのアニメなのに結構BLぽい要素があったり、作画がヤバかったり、最終話もマジでトンチンカンな終わり方をしていて色々衝撃的なコンテンツだった……。カズキヨネ先生が原画のわりに知名度が低い作品。

めっちゃうろ覚えだけどOPは覚えてる。当時あまりガチガチの百合を見たことがなかったので「なるほどなー」くらいの気持ちだった。

トンチキさとしてはうたプリに近い面がある。幕末の偉人が突然ロックを歌いだすアニメ。声優はそれなりに豪華だったけどあまり人気はなかったように思う……。

アニメだけ見てたけど、笑いどころが分からなくてそこまで好きな話ではなかった。ただ安元の声がメッチャ好きで、主役を演じるのは珍しかったのでそれだけのために録画してた。

  • メガネブ!

金欠版Free!みたいなアニメ。検索サジェストで「爆死」って出てくる。作画は崩れているというよりとにかく手抜きで背景とかがロクにない。これで町おこしできると思ってた鯖江市は気が狂っている。

ちょうどアニメがやってて、おもに弟が熱心に見てた。ユニゾンの歌うアニメ関連曲の中でも「桜のあと」はとりわけ好き。原作がヤスダスズヒトなのでキャピキャピしてないのもよかった。

漫画・ラノベ

部活(美術部)の先輩経由で存在を知る。ちょうど5期のアニメもやってて、スペインと香港が好きだった。処分できず家に西ロマの同人誌がめっちゃある。カラオケで「マジ感動☆香港night!」とか歌ってた。当時からな~んも成長してない

好きな人が好きだったので略。当時は結構面白かったと思ったのに今は全然面白さがわからんので年を食ったなーになった。

母親がハマってたので漫画を読んだ。絵は苦手だけど話は鉄オタじゃなくても楽しめると思う。上越上官と日光推し。

好きな略。ロリがとにかく嫌いなので読んでいてストレスのたまる作品だった。主人公のことも好きになれない、今だったら絶対読まない作品。

1巻からずっと買ってる。面白いし千代ちゃんはかわいいし良い漫画だと思う。面食いなので真由が一番好きです。

これも1巻からずっと買ってた。アニメ化されると思ってなかったのでうれしかったし、狗神の声が櫻井孝宏なのも天才か?以外の反応ができない。

  • はたらく魔王様!

中2のときクラスで回し読みが流行ってた。真奥の性格も嫌いな感じではなくて、芦屋というイケメンの従者もいる構図がハルヒぽさがあって好きだった。去年完結したみたいなので買おうか悩んでる。

そのほか

おそらく初めて参加したイベントが2013年6月ごろにあったアイプロ・鎌倉あじさい巡りで、そこから1年半くらいはやってた。中学生だったので課金も全然できなかったし、チミチミスタドリ集めてフリトレでコスト15くらいのSRを買ってた。謎のこだわりで今でもデレマスと呼ぶのがあまり好きではなくてモバマスって呼んでる(?) 和久井さん・木場さん・服部さんが好きだった……。

幌筵泊地鯖が開放されたときに始めたのでおそらく2013年12月ごろ?に着任した。今見たら提督Lv.69・最高練度が赤城61Lvなのでマジで全然やってない……。高専に受かった日に大型建造を回したら大和が出てうれしかった思い出。

夜中寝れないときに打ってたけど、そもそもルールがあやふやで役も覚えてなかったのでいつもレートが1500を割っていた(ヤバ)。


思い出したら追記します。
想像の五億倍長くなってしまったので高専以降は後編(……?????)に続きます。

Codeforces Round #693 (Div. 3) DETANOJA...

システス落ちしなければA,B,C,Dの4完でレートは上がりそう!
Eも時間内に通したかったけど無限にバグらせてしまった……。

A. Cards for Friends

W×Hを何回2で割れるか数えて、その数えた2^{cnt}Nより大きければYES。

B. Fair Division

重さ1の飴も重さ2の飴も偶数個あったらYES。重さ1の飴が0個以上かつ偶数個以上あって、重さ2の飴が奇数個の場合もYES。それ以外はNO。

C. Long Jumps

前からdpで通る。最初にdp [i] = A [i] としてから、i+A_i≤Nのとき、dp [i+A_i] = max( dp [i+A_i], A [i+A[i]] + dp [i])でたぶんいけるはず……(ガチャガチャしてたらプレテストが通った)

D. Even-Odd Game

降順にソートして前から順にAlice→Bob→Alice……と取っていくのがお互いにとって最適ぽい?何でそうなるのか分からないけどとりあえず反例が思いつかなかったので投げたら通る(完)

E. Correct Placement

オンオン……。向きはどっちでもいいのでH>Wとして、indexを持っておいてHで昇順ソートして前から順番に見る。今見ているものよりHが小さいもののWとindexはmapに、Hが同じものはstackに入れておく。1つ前よりHが大きくなったらstackの中身は全部mapに移す。mapの中で一番Wが小さいもののindexが答えになる。

強くなりたいナーーー ポヤシミ……

第五回 PAST(アルゴリズム実技検定)感想

バチャ途中で2時間抜けるナメ腐ったマネをしたらFまでしか解けませんでした。
新年早々幸先の悪い感じです。

1回目はHまで、2回目はGまで過去問を埋めてて、3回目はリアタイ受験していて中級(64点)でした。
今回の気持ち
A~C:かんたん
D:むずかしい
E:やるだけなんだけど大変
F:Eより簡単
~~
G:解けなかった
H:Gよりかんたん
I:Gよりかんたん

B - 上書き

後ろから見て、まだ出てきてないアルファベットを末尾に足していって最後に反転する。

D - リーディングゼロ

どういう実装をしたら綺麗にできるのかわからん……(;;)
まず2次元配列(1~10^5)を持って、0を抜いた桁数ごとに分けてpairで格納。
最後に桁数ごとにソートすると、2つめのほうで-1をかけてるから同じ数でも前についてる0の個数が多いほど前に来るので、もう一度0をつけなおして出力する。

E - ハンコ

これも実装が下手だからすごく面倒くさくなってしまった……(;;)
Sは入力に加えて上下左右に+10ずつ余白を取る(余白は#で埋める)のと、外に関数(?)を書くのかなり苦手だけどチェック部分はそうするようにした(それでもめっちゃ汚い)。

F - 一触即発

制約が小さいので薬の組み合わせについてbit全探索をする。「新たに追加すると爆発するような薬品 x」についてはsetで管理する。

G - ヘビ

これも制約が小さいので何をやっても計算量は大丈夫そうで、どこを通ったかチェックしながらのdfsを書いてみるけど通らず……。
後で教えてもらうと、return;を書いているところが間違っていて(return;で再帰関数が終了しないので)、exit(0);にしたら無事ACできた。

H - コンベア

各点からゴールに向かってBFSをすると間に合わないので、ゴールからどこまで行けるかのBFSをする(ので、矢印のことは反対向きにとらえる)。

I - 避難計画

避難所について、標高が高いものから順にBFS。辺は逆に標高が低いほうから高いほうに張る。既に見たものでも、distの距離が今より遠い場合は更新する。計算量はわからない……。

アルゴリズム」の検定だからABCより実装が多くなるのかなーと思いました。算数できないのでこっちのほうが好き説はあります(?)
J以降もぼちもち見ていきたいです。