ABC329 振り返り

総評

ABCD完。なんとかギリギリレーティングが上がるくらいのパフォーマンスを出したという感じ。
今回の問題はなんか不思議な感じだった。D問題も350点とちょっと低め。灰色でもD行けるというチャンス回。

お仕事でJavaライクな言語を使うのだけれども、いまいち書けなくなってるのでJavaで書くというトライを継続している。

A問題

もうなんかJavaで書くと面倒なので、あっけなくPythonに転んだ。
ワンライナーで書けてしまう感じ。

B問題

ここからJavaで書いた。 エッジでもないケースを見逃して、思いっきりWAを連打した。

C問題

同じ文字が続いているならそれをSetに入れていって、Setの個数を表示すれば終わり。と思って実装したら、見事にメモリが溢れた。2秒かからずに1GBを食い尽くしてるのでJavaすごいなという感じ。よく考えると、そもそも同じ文字が何文字まで続いているかだけを数えれば良いということに気がついたので実装しなおしてACした。

D問題

なんかC問題より簡単なような…? とりあえず全員の票数は覚えておくけれども、トップになれる人はさっきまでトップだった人、もしくは今、票が入った人のいずれかでしかないのでそこだけ比較すればおっけー。あっけなく解けてしまった。

この時点で残り7分だったのでEとかは見るまでもなく投了。
パフォーマンスは茶色。レーティング+11 316 → 327 に上がった。
そろそろ400点の問題を3割くらいの確率で解けるようになって、茶色を目指したい。

最終更新 2023/11/19 15:59:00 JST

ABC327振り返り

ABC 327

今回は、AC完 という微妙な成績だった。今回から仕事の都合でJavaで書くことにした。
Pythonはとても良いのだが、業務でApex(Javaの亜種)を書こうとしたら全然コードが出てこないのでちょっとこれはまずいなと思い始めた。

A問題

まず、Javaのボイラープレートを用意していないのでそこから。
とはいえ、標準入力はScannerクラスで楽に読めるのでちょっと無駄な行があるかな。くらいの感覚。 public class Main にしないとMain.javaというファイル名で保存されるのでアウトになるのがポイント。

問題自体はいつものA問題。

B問題

これが本当に解けなかった。Math.pow すれば良いんでしょと思っていたが…
なんとなく、引数がdoubleな時点でヤバそうだないう感覚はあったのだが、そのまま書いていった結果、4WA していてドハマリ。時間を浪費した挙げ句にPythonで書き直したものの、結局powを使ってしまったので同じ結果に… Math.powだろうとpowだろうと計算誤差があったのが原因。
pythonでループしたコードを書いたら見事にTLEを食らって本当に???だった

コンテスト終了後に、素直に整数で計算するようにしたらあっという間にACだった。

C問題

ナンプレっぽいなにか。配列をガチャガチャやる感じ。この時点で残り20分となっており、Javaだと間に合わないなと思ってPythonに切り替えた。結果は1分残してAC。
こればかりはJavaだと間に合わなかったな…という感触がある。

最終更新 2023/11/05 16:24:00 JST

テレビを入れ替えた

とうとつ

知人宅がテレビを入れ替えて、古いテレビを持って行ってくれということなので持っていくことにした。箱は、知人が購入した新しいテレビの箱を使って、古いのを梱包した。

運び方が問題だが、とりあえず3案考えていた。

  1. レンタカー借りる
  2. タクシー
  3. 電車

レンタカーは確実だけれども近所によさげなのがない。カーシェアはあるが車が小さくて厳しそう。というか割と競争率が高くまいどまいど借りられている。

電車は… やらなくてよかった。50インチのテレビを電車で運ぶのは悪夢だった。

結果、タクシーを使ったが、ギリギリだった。
kmタクシーは電話をかけるとアルファードのようなミニバンを呼べる(らしい)が、電話を書けてみてもオペレーターに繋がらないので諦めた。 S.RIDEアプリからJPN TAXIを指定してお願いした。

結果は… ギリギリ。 幅135cm、高さ83cmの箱だったが、後部座席のスペースギリギリだった。
普通にドアはしまっていたのでまぁ… 大丈夫だと思うがそこが心配になるレベルだった。
当然後ろには乗れないので助手席行きである。

そして、1Fから5Fまでハンドキャリーしたがこれが一番つらかった。
…なんにしてもテレビが大きくなって大変満足。 寝室にもテレビがやってきたが、何に使うんだろう。という感じ。

最終更新 2023/11/05 16:43:00 JST

財団のビルドが壊れていたので直した

いつもの

原因1 なんかDockerのコンテキストの扱いが変わった?

いつの間にやら、 docker buildx build -f aarch64/Dockerfile とやったとき、カレントディレクトリ以下がcontextになっていたが、Dockerfileが存在するディレクトリ以下がcontextになるように仕様が変わった? ログを見るとそのような動きになっていたので、それに対応した。

原因2 Psychのインストールができずにビルド失敗

Railsのバージョンが上がったからか、 _Psych _を入れようとして bundle install が失敗していた。解決法は libyaml-dev をインストールすること(debian / Ubuntu の場合)なのでDockerfileに追加した。

その他修正

独自バージョン番号を入れる

いままでは、 version.rb を文字列置換して無理やり、ビルド日とgitのコミットIDを入れていたが、いつの間にか、 MASTODON_VERSION_METADATA という変数が定義されていれば自動的に表示されるようになった。かと言っても、それを実行時に入れていたら意味がないので、コンテナイメージのビルド時に含めるようにした。(また文字列置換である)

かわりに、version.rb を触るのはやめた。

shallow clone するようにした

なぜか git clone を普通にやっていたので depth=1 を追加した。
なぜ今までやってなかった…

最終更新 2023/11/05 16:32:00 JST

ABC324ふりかえり

A問題

解くだけ。にしてもちょっとAにしてはむずかし・・・そうでもないか

B問題

難しかった。2と3で割れるだけ割りまくって、最後に1になっていればOKとした。
処理速度遅いだろうなぁと思ったけどよく考えたら速度が求められる問題ではなかった。

C問題

これ、文字列の距離が1のやつ的なアルゴリズムがあればあっという間に解けそうな気がした。
ようするに did you mean ? のアレみたいな実装になるんじゃないかなと。
だがしかし、そのアルゴリズムを知らないので、まず文字数が = か 増えているか減っているかで場合分けして、先頭からそれぞれ1文字ずつ比較していった。一回だけ不一致でも許す。みたいな感じ。

D問題

問題文が理解できなかった… 解説を読んだら、結局平方数 0^2 1^2 … を作り込んでおいてそれと一致するかどうかで判断すればよかったらしい。なるほど!それなら簡単

とりあえずレーティングは 352 に上がった。ABC完でも茶色までは行けそう。
そして、今日のD問題は…解けたよね感がある。

最終更新 2023/10/15 14:46:00 JST

Fortigate 50EにOpenWRTを入れて遊ぶ

最初に

前に、OSPNでおすすめされてから、実際に買うまでこんなに時間が空いてしまった。
本当に大破さんには足を向けて寝られない。ありがとうございます。

インストールのしかた

大破さんのブログ参照。で終わってしまうので割愛。

やらかしたこと

最初のTFTPでOpenWRTのイメージをロードするところで、W/B/R のどれかを聞かれるシーンがある。ここで間違えてWを押してしまった。すると、プライマリの起動パーティションにOpenWRTの最小のものが書き込まれてしまい、たしかにOpenWRTは起動できるものの、sysupgradeでイメージを書き込んでも反映されずにドハマリした。

なお、ここで落ち着いて、kn2 パーティションの中身を kernel パーティションに書いてやりなおせば良い(このやり方も大破さんのブログに書いてある)

そして、テンパってTFTPのメニューのformat なんたらを実行したせいで、一台おしゃかにしてしまった。(後に復活させているが)

二台目を購入

ACアダプタはあるので、ACアダプタなしの安いものを購入。
手順通りにOpenWRTを起動して、とりあえずmtdの中身をバックアップした。
で、このバックアップを前述の壊した個体に書き戻して…1台目も復活。

で、何に使うの?

…ただのスイッチングHUBとして使っている。7ポートある、VLANが使えるマネージドなHUBだと考えると安い。そしてUSBメモリを指して記憶領域を広げれば、2GBもRAMがあるので、dockerでなにか遊べるだろうという魂胆である。

2台もあるのでどうしたものか… 本体よりACアダプタのほうが高いし。

スマホ買い替えた

新しいスマホが届いた

機種はXperia 5。初見、めっちゃ細長い。
サイズ感はなんというか、テレビのリモコンな感じ。

今まで使っていたXperia XZ1と比べると、ものすごい細長い。
そして、電源ボタンに内蔵された指紋認証がなくなってるというか、電源ボタンと指紋認証に分かれている。なんてこった。使いにくい。

そして初期設定。AndroidはiPhoneと比べて移行が大変…と思っていたが、いつの間にやらAndroidスマホ同士でデータがコピーできるようになっていた。iPhoneほど完璧ではないが、実用上十分なコピーができていた。

にしても、またしてもキャリア版Xperiaの悪癖というか、毎度そうというか… 初期設定のときにSIMをさしていないと通信事業者設定が再起動するたびに実行されてしかも、失敗するという罠にハマった。
これを解決する手段は… 工場出荷時に初期化して、初期セットアップのときにSIMを刺すしかない。
旧機種からのコピーがいい感じに動くので耐えられたけど、後でやり直そうとしたら偉いことになるので、Android機は本当に再起動テストしたほうがいい。

ちなみに、この個体はアップデートが全然されてなくて初期状態はAndroid 9だった。 そこから16回くらいのアップデートを経て、やっと最新に… もちろんサポートは切れているのでちょっと古い状態だけども。

速度的な話。 Snapdragon 835から855への乗り換えだけれども、まぁ早い早い。メモリが6GBになったのもデカいのかもしれないけど、なんか早いな。という感触。

にしても、またしてもサポートが切れていてうーん。という感じ。
SlackがAndroid9を切ると言っているので10になればいいかと思って買ったけれども、なんともはや。

カメラはすごい。光学ぽい2倍ズームがあり、広角レンズまでついてる。なんなんだこれは… な感じ。

とりあえず、重さもあまり変わらないし満足している。
ただ、Xperia 5IVほしいな感はある。(Vは重くなったのでいらない)

最近のお仕事

最近のお仕事周りの話

9月からチームリーダー的なポジションになった。
序盤は立ち上がり期なので現状を把握しましょう。という感じで静観していたものの、あまり状況がよくないなぁ…ということだけはわかった。

中旬から色々と打ち手(これ、一部界隈ですごい使われているんだけど流行り?)をやっていって、効果はまだ実感できていないものの、改善の兆しは見えてきたかもしれないなぁ…
という状況。

個人的には、技術というかコードを書くところから離れてしまっていて寂しさを感じる反面、なんかこういう仕事も悪くないかもしれない。という感じがしている。自分の作業をこなすというよりチームの作業がうまく行くようにお膳立てをするみたいな感じ。

ここ10年くらいで一番仕事を楽しんでいるかもしれない。
なんかこう、仕事をゲームみたいに捉えるというか、ネトゲやってるような気分。ヘソを曲げたりしないように気を使いながら自分のやりたいゴールを提示しつつ、多少の回り道をしながら、望むような形を作っていくみたいな… コードで何かを作るのではなくて、ふわっとした人間系のなにかでチームを作っていくみたいな…

コードと同じでチームにも仕様書がいると思うので(ようするにどういう将来を求めているのか)そういう文章をたらふく書いてみたり、チケットのステータスならこういう状況で、その時点の担当は誰で、こういう状況になったらステータスを変えてね。みたいなことを書いたり…

今はまだ、こうしたい! どうしたら良いですかね?って相談をして、やり方を考えてもらったりアイデアをもらっているけれども、このあたりも少しは自分で考えられるようになりたいなーとか思ってる。

しかし、優柔不断が売りなのに決定をゴリゴリしないといけないのは楽しいけど疲れるなぁ…
という思いもちょっとある。何より今は割と激務。いろんな負債が溜まっていて本当に首が回らないような状態。幸い、怒られが発生しているとかではないものの、

最終更新 2023/10/01 16:08:00 JST

2023/09の振り返り

誕生日記念(16日)ではないけれども久しぶりに振り返りを書く。

9月になったので試用期間が終了した。だからといって何も変化はないはずだが… なんか色々とあってチームのリードになってしまった。
スケジューリングできない系魔族にやらせるのはアサインミスな気がものすごくするが、今のところめちゃくちゃメンバーに頼りまくってなんとかやっている感じ。

にしても、せっかくやるなら少しでもいい感じになるようにしていきたいなぁと思っている所存。

とりあえず、直近3年はいい感じの方針っぽいのでなんとか3年くらい生き延びられるようにしたいなと思っている。

最終更新 2023/09/18 14:45:00 JST

ABC317の感想

TL;DR;

大敗北。 AB完というちょっとイマイチな結果。

なので個別問題の振り返りはなし。

C問題はどうすりゃいいんだこれ? となり、D問題を見たらこれは解けるか・・・?と思って実装したもののDPが必要だったようであえなく時間切れ。

ちょっと体調悪かったとはいえ、いまいち過ぎる出来栄え。

なお、それでもレーティングは上がった模様。

最終更新 2023/08/27 12:31:00 JST

ABC312振り返り

サマリ

今日のABC、出来が悪かった。とはいえ、昼間の作業考えたらそりゃそうよね。という感じ

A Chord

解説放送読んだら和音だった。単純に配列作って in でチェックして終わり。

B TaK Code

QRコードっぽいやつ。 配列の添字でいい感じにアクセス。

1
2
3
4
###.
###.
###.

こんな感じのを配列にしておいて比較。添字の操作ムズカシイネ

C Invisible Hand

見えざる手。売り手と買い手の配列を作って、ソートをかけてから売り手の値段がこれだったら買い手は何人?みたいな判定をした…が。
エッジケースが2件、売値がみんな高くて誰も買えない場合と買値が安すぎて誰も売らない場合があった。とりあえず、+1円して全滅させることで帳尻が合う。みたいな… にしても、TLEから始まりエッジケース部分を異常終了にしてたせいでREが起き、それを直してもWAでクリアできなかった。すごい敗北感

最終更新 2023/07/30 15:35:00 JST

体のメンテしてきた

AtCoder 311を完全にスルーしてしまったのでがっかりしている。

にしてもまぁ、先週は出社が2日もあってしんどかったので土日は大人しくしている感じ。
久しぶりに脱毛エステに行ったら(2年ぶり)すごい制度が変わっていてびっくりした。施術後に保湿ジェル塗ってくれるのが気に入ってたのになくなってた。
なんかこう、色々と変わるんだなぁ…

あと、指にイボみたいな出来物ができてちょっと張ってる感じがしたので皮膚科に行ってきた。相変わらず先生が一言二言しか言わなくてなんというかこう、変わってないなーという感じ。ただ、その医者の先生でも今回は異物か、イボか悩んだみたいでとりあえずイボだと仮定してやってみましょ。っていう感じで液体窒素をじゅわーっと。 大して痛くないと思ったらあとからヒリヒリする系だった。
そして、これは数回やらないとダメらしくて来週また来てね。ってボソっと言われた。なお、ここまで診察室入ってから5分かかってない気がする。本当にめちゃくちゃ速い。この医者の先生、すごい勢いで診察して処置を決めるのですごいなと毎度思ってる。 看護師さんが二人とか三人助手にいるのもわかる。そりゃあの速度だとそれくらいいないと足りない…

最終更新 2023/07/23 15:47:00 JST

AtCoder Beginner Contest 310感想

まとめ

今回はABC3完、ノーペナルティでした。
昼間の用事で疲れ果てていた割には想定通りの成績が出せているので及第点だと思っている。

今回のコンテストはなんか全体的に問題の難易度がひねくれてるような気がした。

A問題 Order Something Else

何も考えずに計算して一番安いのを出すだけ。
とってもA問題っぽい。ちょっと好き。

B問題 Strictly Superior

めっちゃ分かりにくかった。とりあえず値段が高い順に並び替えて、一個ずつ着目してチェックする感じで実装した。着目中のより安いやつ〜で上位互換があるかないかをチェックした。

今思うと、この実装バグってる可能性がある。同一価格で上位互換が出ちゃったときに並び順次第ではスルーしちゃう気がする。 何も考えずに全チェックした方がよかったかも。TLEするほどの件数にはなっていないので。ちょっと反省

C問題 Reversible

B問題より簡単な気がする。文字列を反転させたのと反転していないののうち、文字コード順で若い方を採用してsetに格納するだけ。setは中身がユニークになるので、最後に len(set) を出力すればOK。 …やっぱりB問題より簡単では

D問題

眠気とだるさで問題文を見てあ、DPだこれ無理だわ。と諦めた。実がDFSで解けるというツイートを見たのでなんというか諦めちゃだめだったかー。という感じ。

最終更新 2023/07/16 10:48:00 JST

CodeQUEEN 2023 予選 (AtCoder Beginner Contest 308) 感想

トータルの感想

今回は、ABDの3問正解できた。疲れ気味でコンディションが万全という感じではなかったがなかなか良くできたと思う。

A問題 New Scheme

A問題にしてはむずかしくない?な印象。それでもまぁ…
A問題としての難易度ではあるけれども。125点くらいくれてもよさそうな中身だなーとは思った。が、特筆するようなところはない。

B問題 Default Price

問題名そのまま。とってもB問題らしいB問題だなーという感じ。
書いてあることをそのまま実装すればOK

C問題 Standings

コードとしてはかけていたものの数ケースでWAが出るという状態でとても謎。
30分くらい悩んだが結局飛ばした。
…で、解説を読んでみると普通に実装すると誤差が出てWAになるようなケースが入っているらしい。分母を払って比較すれば良いとのことなんだけれども…
どうやってやるのそれ?状態だったので上位の人のコードを見てみたら、Decimalを使っていた。Decimalなら簡単にACできた。Decimal使ったらTLEするかと思いきや、全然問題ない感じ。
むしろ、文字列結合をループでやったらそれが原因でTLEになってしまいびっくりした。’ ‘.join() にしたら早くなってびっくりだった。

D問題 Snuke Maze

またでた謎の文字列Snuke。なんとなく見た瞬間に深さ優先探索を実装するんだなと思った。C問題で時間を浪費したので残り40分くらいだったが、なんとか実装できた。最初、すでに探索済みの場所を飛ばす処理がバグっていてTLEしたのは焦った。最終提出は残り1分4秒だったのでホントギリギリ。でも、ACできてほんとに良かった。

最終更新 2023/07/01 16:09:00 JST