今日も陽気にアレグロ技研

allegorgikenの気が向いた時の日記です

2023年振り返り

早いもので2023年が過ぎ去っていきました。 2024年もよろしくお願いいたします。以下は2023年の振り返りです。

競技プログラミングを継続した

AtCoder歴は4年に達しました。昨年も参加できるコンテストはほとんど参加しました。 Algoのレーティングは2023年の間に Highest 更新できて、1,400台に入ることができました。 現在のレーティングは1,200台なので、このままの努力値では2024年に Highest を更新することは難しい気がしています。 ヒューリスティックも継続的に参加しましたが、レーティングの伸びはかなり穏やかになりました。

旅行に行った

稚内、帯広、八戸、福岡 などに行きました。

特に稚内は素晴らしかったです。「犬ぞり大会」を観戦する目的でしたが、このイベントがめちゃくちゃよかったです。2024年も見に行きたい。

虫歯の治療が完了した

2022年から歯科に通い続けて治療していた虫歯ですが、2023年春頃に完了しました。今後は低頻度の定期健診になります。

いろいろなゲームをプレイした

2022年は Splatoon 一色でしたが、2023年はいろいろなものをプレイしました。インディーズゲーム多め。

  • Cookie Clicker
  • ジラフとアンニカ
  • メルヘンフォーレスト
  • 溶鉄のマルフーシャ
  • TUNIC
  • Cassette Beasts
  • オクトパストラベラー2
  • アーマードコア6
  • Vampire Survivers
  • Cuisineer

ソーシャルゲームをやめた

プリコネ、ウマ娘 を継続的にプレイしていましたが最近はめっきりプレイしなくなりました。 気が向いたときに起動することはあるとおもいます。

log: 新型コロナウイルス感染症に罹患した

タイトルの通りですが、1月の頭から新型コロナウィルス感染症に罹患していました。 症状としては大したことはなかったのですが、流行に乗れたような気持ちで記録を残してみようと思います。

陽性がわかるまでの状況

  • ワクチンは4回目まで接種していて、4回目はBA5株対応のもの
  • 年末年始は実家に帰っていて、母が少し前に罹患していた模様
  • 2023/01/03 に実家を離れましたが、その日から体の調子に違和感を覚え始めた
  • 2023/01/05 に抗原検査キットを申し込み、翌日に届く。その日の検査ですぐに陽性が発覚

症状

  • 焼けるような喉の痛みで声も出しづらい
  • 高熱(38.0)と関節痛、軽い頭痛

熱は2日間で引き平熱に戻り、喉は3日間ほどで解消しました。 痰が絡むような感覚がしばらく続いていて、それについては現時点でもまだ軽い違和感があります。 コロナでよく話に出る味覚・聴覚への異常は感じず、今のところも問題はなさそうです。

検査について

私は北海道札幌市在住なのですが、札幌市のホームページでは検査キットの配送をしてくれる薬局が一覧で記載されています。 中には Google Form で一定の入力をすればその日に発送してくれる・・ というようなありがたい薬局もあり、 今回はそのような流れで検査キットを取り寄せました。初回は無料ですし、申し込んだ翌日にはレターパックで検査キットが届きました。

検査の手順はそこそこ複雑で、丁寧に進めると30分くらいの時間は必要でした。 検査液を垂らした瞬間から陽性ラインが出ていて面白かったです。 札幌市の場合、検査キットの写真を専用サイトにアップロードすると専門家?によるチェック結果をメールで返してくれます。同時に罹患者の管理もされるのでしょう。

FitBit Sense2 による体温メトリクス

私は普段から FitBit Sense2 を身につけており、このデバイスでは「表面皮膚温度」を計測してくれます。 普段はあまり体温の変化がないので面白くないグラフしか見れないのですが、発熱のある期間はしっかりと劇的な変動が見られたのもよかったです。 劇的な変動があっても通知などは来ないので、積極的に見にいく習慣をつけても良さそうです。

罹患した感想

少し強い風邪くらいの症状で終わって良かったなあという気持ちでした。 2023年にはもう5類となることが決まっているようですが、体感した結果としては納得感があります。

現時点で市の案内に従うと、1週間ほどは自宅療養期間があります。 私の場合、もとから無駄に食料をたくさん備蓄しているのでほとんど困ることがなくて素晴らしかったです。 冬の北海道はとても寒いので、インスタント的なカップスープがたくさんあると嬉しいですよ。

2022年振り返り

早いもので2022年が過ぎ去っていきました。

AtCoder継続した

3年以上続けている計算になるようです。2021年の間に水色に到達していました。 順調に右肩上がり、というわけにはいかず最近はレートも停滞気味です。 めちゃ努力しているわけでもなく、悪く言うとコンフォートゾーンに浸っているという段階なのかもしれません。 ただ、ヒューリスティックには力をそこそこ入れていてそちらは青色相当のレートになりました。 atcoder.jp

‘## Splatoon2, Splatoon3 をたくさんプレイした Splatoon2 ではガチマッチ、リーグマッチを中心にプレイして全ルールXに到達できました。 Splatoon3 ではサーモンランを中心にプレイしています。 難破船ドンブラコを除くステージででんせつ600(銀バッジ)に到達して満足しています。

社内異動した

アジャイルエンジニアリングを中心にしていた部署からインフラ領域に近い分野の部署に異動しました。 個人的には組織が大きすぎると面白さが減っていくと感じるので、より小さいほうに流れたという感覚が強いですね。 かと思えば業務ではPM業みたいなことをしており、キャリアがよりよくわからなくなってきています。

資格をとった

社内ニートの期間がそこそこあり、その間に集中して資格勉強することができました。 AWS の Solution Architect (Associate), Developer (Associate), Hashicorp の Terraform Associate などを取りました。

健康を維持した

2020, 2021 年では秋ごろに肌が荒れまくったり体が壊れたりしたのですが、2022 年は一年を通して健康度合が高かったように感じています。 また、しばらく放置していた虫歯の治療も始めてもらって絶賛治療中です。 2023年の初めころには完治する予定なので、その後は定期健診という形におさめようと思っています。

旅行した

2022年は全国旅行支援があったり、なくても宿が手ごろに取れたりすることがあっていくつか旅行しました。 具体的には稚内、登別、小樽に行きました。小樽はとても近いけど楽しく、軽い気持ちで行くのがとても良いことがわかりました。 稚内はとても遠いけど、1泊2日でもなんとかなることがわかりました。

scrapbox で日記をつけた

結構前から雑多なメモとして使っていたScrapboxですが、日記として使う例をいくつか見たので便乗してみています。 いまのところ、習慣としてなんとかなりそうな感じで運用を続けられています。 allegrogiken journal

Oxygen Not Included のDLC「Spaced Out!」をご紹介

2年間で総プレイ時間が 1,200 時間を超えてしまった Oxygen Not Included というゲームがあります。 今回は唐突ですが、このゲームの追加コンテンツ(DLC)である「Spaced Out!」を詳しく紹介します。

対象読者

下記のような方を想定しています。

  • Oxygen Not Included を購入し、ある程度プレイしている
  • DLC「Spaced Out!」をプレイしていない

Spaced Out! とは

2020年末にリリースされたDLCです。こちらで購入できます。 store.steampowered.com

「リリースされた」と記載しましたが、状態としては早期アクセスです。 バギーな挙動・仕様変更はそこそこの頻度で発生します。 概ね2週間に1度のサイクルで大きめの機能追加を伴うリリースが行われています。 リリース当初は「ゲーム要素の不足」みたいなものを感じましたが 2021/08 現在ではかなり遊べるようになっていると思います。

DLCが適用されていないゲームを「バニラ」と呼ぶようですが、DLC購入後にバニラとDLCを共存させることは可能です。 新規ゲームを開始するときに選択することができます。(既存セーブデータをどこまで引き継いで使えるかは自信がないです)

ゲームの変更点

早速内容に触れていきましょう。変更点のまとめを列挙します。

  • 「硫黄」を取り巻く作物や動物が追加された
  • 冷えた汚水・塩水の間欠泉が増えてコロニーの冷却が簡単になった
  • 複数の惑星がコロニーの対象として登場するようになった
  • 放射能の概念が追加された
  • ロケットの作成がやりやすくなった
  • ロケット内の生活スペースを作成できるようになった
  • 宇宙がグリッド状のマップとなり、ロケットの移動経路が自由になった

個別に解説をしていきます。

「硫黄」を取り巻く作物や動物が追加された

硫黄は従来では特に用法のない副産物でしたが、DLCでは自然タイル・間欠泉から取得できる資源になりました。 用法としては、 sweetle というテントウムシっぽい動物の餌になり、 grubfruit という作物の肥料にもなります。

f:id:VVani07:20210830014650p:plain
sweetle
f:id:VVani07:20210830014733p:plain
grubfruit と、sweetleから派生するイモムシ(grubgrub)

sweetle は作物の成長をスピードアップさせる能力を持ち、さらに grubfruit を特別な状態にクラスアップさせてくれます。 grubfruit は硫黄だけで育ち、40℃までの環境に耐えることができます。カロリー量も十分で、序盤から終盤まで安定して使える作物です。

冷えた汚水・塩水の間欠泉が増えてコロニーの冷却が簡単になった

-10℃の汚水が沸き出すのは「雪氷間欠泉」ですが、-10℃の濃塩水が湧き出す間欠泉が実装されました。 実装されただけではなく、間欠泉として確実に登場する(最低保証)ようです。これにより、序盤の熱問題を楽に緩和できるようになりました。

f:id:VVani07:20210830014909p:plain
冷えた水を下さい

濃塩水からは塩が抽出できて、塩は砂に変換できます。濾過剤の供給としても非常に助かります。

複数の惑星がコロニーの対象として登場するようになった

画像を見て頂くのが早いと思いますが、右上のメニューに惑星のリストが出ています。

f:id:VVani07:20210830015156p:plain
惑星とロケットが一覧で表示される

スタート時点では惑星は1つですが、掘り進めていくうちに「テレポーター」なるものを見つけることができます。 テレポーターでは複製人間を特定の別惑星に転送することができ、そこから新たな惑星でのコロニー構築が始まることになります・・

惑星はそれぞれで特徴を持っており、場合によっては生活できるだけの資源がないような惑星もあります。 惑星間での資源転送も専用の施設で行うことができますので、それらをうまく使って不足資源を補いあうと良いですね。

f:id:VVani07:20210830015757p:plain
謎の資源転送施設

放射能の概念が追加された

ウィーズウォート・シャインバグなどの動植物が放射能を発するようになりました。 大きな放射能を発生させる素材として「ウラン鉱石」とそれにまつわる動物も登場しています。

f:id:VVani07:20210830020008p:plain
放射能ビュー

放射能radbolt という単位で収集できて、研究ツリーや宇宙開発を進めるのに必要です。

f:id:VVani07:20210831233354g:plain
収集した radbolt をロケットエンジンに射出している様子

上の動画ではウィーズウォートが発する放射能を収集して射出し、エンジンの燃料として蓄積させています。 中盤の研究でも radbolt が必要で、専用の施設に蓄積させることで研究を進めることが出来ます。

f:id:VVani07:20210831234103p:plain
ウィーズウォートで空間を冷やしつつ、放射能を集めて研究施設で使う

radbolt は専用の施設で反射させることもできて、画像のようなデザインも組めます。 放射する点から受け取る側までの距離に比例して減衰しますし、複製人間にぶつけてしまうとダメージになるので短いほうが効率良く安全です。

ロケットの作成がやりやすくなった

Rocket Platform の設備でロケット構成要素の追加・変更・削除・入れ替えが容易にできるようになりました。個人的に最も推せる要素です。

f:id:VVani07:20210831234930g:plain
ロケットのモジュールを上下に入れ替える様子
工事のしやすさだけではなく、Spaced Out! ではロケットの開発を早い段階から実施できるように、下記の通り色々な仕様が変わっています。

  • 表土の温度がマイナス30℃くらいまで下がり、隕石が降らなくなった
  • 二酸化炭素、砂糖をロケットの燃料として使えるようになった
  • アトムスーツが無くてもロケットに搭乗できるようになった
  • 研究を進めるためにロケットを繰り返し発射させる必要が無くなった

ロケット内の生活スペースを作成できるようになった

従来仕様ではロケットを飛ばしたら帰ってくるまで待つだけでしたが、だいぶ変わりました。 Spaced Out! ではロケットが飛んでいる間も搭乗員はコロニー上と同じように生活を行うようになりました。そのための空間作りもロケット毎に必要です。

f:id:VVani07:20210901001259p:plain
広いロケット生活空間

これは3人乗れる設計で、トイレとベッド、冷蔵庫、発電機をロケット内に用意しています。 ロケット向けの壁付けトイレなども新規実装されていますので、限られた空間でも結構いろいろな設計ができます。 酸素は事前に気体ボトル開けを使って高圧状態になるまで放り込んでいます。鼓膜は破れますが、命には代えられません・・

画像にはありませんが・・ 宇宙空間の観測を行うテレスコープを置いたり、宇宙空間でしか行えない研究施設を置いたりすることがゲーム道中で必要になります。従来では仮想プラネタリウム + データバンクで宇宙系の研究を進めていましたが、データバンクの概念はなくなりました。宇宙空間上にあるロケットの中で研究を進めることが出来ます。

ロケット内で水・食物・酸素の生成が完結できれば、無限に宇宙空間を漂い続けることもできそうです。こういったチャレンジも楽しいですね!

宇宙がグリッド状のマップとなり、ロケットの移動経路が自由になった

f:id:VVani07:20210901002411p:plain
Spaced Out! の宇宙マップ
画像の通りですが、宇宙空間は二次元に拡がり、そこに複数の惑星が存在するようになりました。 ロケットは発射された後で、このマップ上を自由な経路で移動することができますし、「移動せず漂うだけ」ということもできます。 燃料は移動する際にしか消費しないので、宇宙空間に永くいても食料や酸素が保つ限りは問題ありません。

ロケットでやることはたくさんあります。

  • 宇宙空間に漂い続けて、研究ツリーを進める
  • 宇宙空間を縦横無尽に移動しつつ、テレスコープでマップを解明していく
  • 近くの惑星に遠隔操作用のロボットを投下する
  • 近くの惑星に資源を届ける
  • 近くの惑星に複製人間を投下する
  • 宇宙空間に漂ってる資源・アーティファクトを回収する

ロケットから惑星に何かを投下する際は「表土」にしか届けられないので、新惑星の開拓は表土から始まります。このプロセスが非常に楽しいです。

  • 遠隔ロボットを投下し、惑星の様子をうかがう
  • ロケットの土台作成に必要な資源を届ける
  • 複製人間を投下し、ロケットの土台を表土に作成する
  • ロケットを着陸させる

このような手順を踏むと、新しい惑星に本格的な開拓を始められます。 惑星によっては生活すら困難なケースがあり、その場合はロケットが惑星上での生活スペースとして活躍できます。

まとめ

Spaced Out! ではその名の通り、宇宙関連のゲーム性が大幅に拡大されています。 フラーレン・ニオブといった特殊素材も点在する惑星で採掘可能な素材として登場しており、終盤の楽しみ方もだいぶ変わっています。

リリース当初はロケット内生活空間の作成が非常に大変だったのですが、2021/08 時点では非常にやりやすくなりました。 惑星関連の劇的なアップデートも落ち着いてきており、完成度もかなり高まってきていると感じています。

宇宙開拓というロマンを具体的に体感できる Spaced Out! ぜひ始めてみませんか?

2020年振り返り

AtCoderずっと続けた

1.5 年間ほど続けて、ダレたり頑張ったりしました・・ 最近は会社の同僚とかも巻き込んで競争できたりしている。幸甚。 https://atcoder.jp/users/allegrogiken

f:id:VVani07:20201231233107p:plain
実績

この 1.5年間でも参加者の水準はけっこう上がっているなぁということを思います。 レーティングは相対なので、勉強し続けても平気で下がりますね・・ とはいえ、ゆるく続けるのはわりと得意なのでやっていく。来年は4桁に届かせたい。

引っ越しした

夏が暑すぎて無理だったので、関西圏から北海道に引っ越しました。今はマイナス15℃とかいってて大変寒い。 気温湿度もろもろが急変した結果、体がカリッカリに乾燥して死にかけました。今は小康状態。

時代的に在宅勤務の割合が高くなったので、家はそこそこの広さを確保しています。 今のところもてあまし気味だけど、はたらくスペースとリラックスするスペースとか分けていく所存。

勉強会で登壇した

関西での「Kubernetes超入門勉強会」で声をかけてもらって登壇しました。 その節は大変お世話になりました。

Splatoon2 でウデマエXになった

ヤグラだけXに到達できました。ずっとダイナモローラーを握っています。ときどきわかばシューター。 また、ペアのリーグマッチで金メダルも取れたりしています。圧倒的成長。

Splatoon2はけっこうやり続けていて、最近はリーグマッチできるメンツが揃いました。ペア、チームともに結構な頻度でリーグマッチに参戦しています。真面目にPvPのゲームをやると、人の性質がそのままプレイに現れるなーということをよく感じます。私は反射神経だけでプレイするタイプなので、チームメイトにはいつもケアしてもらって感謝の極みです。

デレステ、ピンポイントでイベント参加した

担当の市原仁奈さんがつい最近のイベントに出演したので、そこそこ尽力しました。

最近実装された「プロデュース方針」によって営業でのエンブレム稼ぎが捗ります。 イベント走るのがだいぶ楽になったと思いますね・・

AtCoder Regular Contest 105 出場記

AtCoder を初めて一年以上経つけれど、Regular Contest は初めての参加。 自分のレートは想定されるレンジよりも低めなので気軽なお気持ちで臨んだのだけど、久々にレート上昇させることができたのでちょっとテンションが上がった。 今回のARCはC以降がすごい難しくて、強者でもB完で速解き勝負っぽくなっていたもよう。

A - Fourtune Cookies

なつかしさを感じるタイトルだけど、Fortune と4枚を示す Four がかかっている。 4枚のうち 1, 2, 3 枚クッキーを食べたときのパターンを計算すればよい。 bit全探索とか呼ばれるやつで 4つのBooleanを全パターン上げてACを得た。 ABCのA問題よりはさすがに難易度が上という印象。

B - MAX-=min

データの扱い方を最初に考えて、以下を試みた - 数列のうち重複は取り除いても良さそうだったので最初に省いた。 - 最小値は滅多に動かず、最大値は頻繁に入れ替わりそうだったのでバイナリヒープを使った。

あとは問題の通りに計算をしてサンプルの入出力が一致させることができた。 ここまで早めに実装できたので、AC取れたらおいしいなーと思って投げたけどTLEになった。なるほど。

最大値が1億、最小値が1だとそれだけで1億ループしてしまうことになるので、 Max -= min の繰り返しをできる限り掛け算で省略してやることが必要とされる。どこまで省略するかの閾値を「次の最大値まで」「最小値まで」どっちにするかで迷った。

「次の最大値まで」だとあまり計算量が縮まらないケースもありそうなので、思い切って「最小値を超えない」とこまで一気に引き算してみた。この結果サンプルはいずれも通っていたので提出してみたところACを得た。あまり深く考えていないのでラッキーACという印象。あとで解説を読む。

C - Camels and Bridge

時間いっぱいつかってWAだった。脳みそはたくさんつかったので記録を残す。

考えたこと

  • 橋のパーツのうち、ネックとなる部分さえ通せればとりあえず良さそう
  • ラクダは最大で8頭いて、1個から8個のグループに分けることができれば良さそう
    • グループ内のラクダは間隔0, つまり密着した状態
  • このグループのうち、合計重量が最大のものがネックとなる橋を通れたら良さそう
  • 通れた時、 (グループ数 -1) * ネックとなる橋パーツの長さ を解とすれば良さそう

これらをコードに落としたのは下のもの。 atcoder.jp

そもそもサンプル4が合ってないので、前提として考えたことのいくつかが間違っているようだ。 答えのずれ方からして、ネックとなる橋以外についても考慮する必要がある気がする。解説を読んで復習する。

D以降

未だ見ず

HHKB プログラミングコンテスト 2020 出場記

atcoder.jp

遅めのC完でレートを落としてしまった。 誤読というよりは純粋に文の理解力が落ちている気がするので、問題を解くことに触れる時間を少しずつ増やしていきたい。

A - Keyboard

HHKBコンテストなのでキーボードのふるまいっぽい問題。 SHIFTキーが押されているか?のフラグと英子文字が入力として来るので、適切に小文字か大文字を出力してやればOK。

B - Futon

冬支度を感じる問題。 縦か横に2マス連続した「散らかってないマス」のパターン数を数え上げる。 入力のマス目は [100, 100] と小さいので雑に全探索して十分に間に合った。

C - Neq Min

盛大に誤読して40分くらいかかってACを得た。 0..200,001 までの数値を用意しておいて、数列に登場したものをマークしていく。マークされていない数のうち最小を出力することを繰り替えせばよいのだけど、これは 0 から初めて 0 がマークされたら 1, 1もマークされてるなら 2, .. という感じの振る舞いをするだけで十分に間に合う。

D - Squares

解けなかったし、なぜか青と赤の正方形は全体の周上だけにしか設置できないという誤読をしてた。 解説とかを見てもわかったようなわからんような、という感じで数学力が足りないことが分かった。

解説を見ていて、正方形の重なり合いを計算するとき縦と横は独立した事象と考えてよいというのは頭良すぎるなーと思った。つまり、線と線同しの重なり合いを計算して、その結果を二乗すれば正方形同士の重なり合い方を求められるということ。

E - Lamps

見るからに難しそうな問題、コンテスト中は見れず。 解説をたくさんみて模倣したコードを書いてみたけど、配列の操作が遅いせいかTLEがどうしても解消しない・・

F

未だ見ず