sky’s 雑記

主にAndroidとサーバーサイドの技術について記事を書きます

koinのインスタンス管理について

Android開発していて体験的に特に不満はないんだが,単体テストの書き味だけはrspecに劣るなと思っている.特にfactory_botによるテスト用のオブジェクト生成はtraitによる拡張とか含めシンプルで好きだった.サーバーサイドだとDBという状態の塊をテストする必…

ARC 042 A - 掲示板

atcoder.jp ギョームでも取り扱いそうな問題. diff 855 回答時の方針 Submission #12993816 - AtCoder Regular Contest 042 まずは全探索. 愚直にやると書き込みがあったスレッドのインデックスを0にしてそれ以外のインデックスを+1する,これをm回繰り返せば…

三井住友信託銀行プログラミングコンテスト2019 D - Lucky PIN

atcoder.jp diff 836 回答時の方針 Submission #12909261 - Sumitomo Mitsui Trust Bank Programming Contest 2019 N個の数字の中から3個選んで3桁の数字を作ろうかと思ったがとなり筋が悪そうだと思い別の方法を検討した.暫くして3桁としたときにN個の数字…

4月の振り返りと5月の目標

Android koinとdagger2の比較記事を書こうと思っていたらレシーバー付きラムダの記事になっていた. 5月こそはこれについて書きます. また仕事をしていて解決していない疑問が2つあって年末のアドベンドカレンダーの記事は以下のどちらかについて書くべく調査…

ABC 125 D - Flipping Signs

atcoder.jp 回答時の方針 Submission #12828298 - AtCoder Beginner Contest 125 最初に全探索を考えたの符号を反転する/しない操作をの範囲で行うと計算量はで間に合わない.次に局所的にの反転操作を考えたときにのときに反転が必要だと思った,これをi=0か…

ABC 165 C - Many Requirements

atcoder.jp 毎回至らなさしか感じていないが圧倒的にこなしてる数が足りていないので粛々と向き合い続けるしかない. 道具としては一度くらいは触ったことがあるものでもセンスが良いほうでもないので応用が効かず解法を覚えていくしかないように思う.とはい…

レシーバ付き関数リテラルのおさらい

kotlin製ライブラリを読んでいると頻出の文法だが,混乱して毎回復習してる気がする. レシーバ付き関数リテラルの説明のためにletとapplyの比較が良くされており, 実装でも良く使う文法で馴染み深いから混乱したらここに立ち返ると良い. public inline fun <T, R> T</t,>…

ABC 057 C - Digits in Multiplication

C - Digits in Multiplication 久々に頭悪すぎて涙出そうになった... 初手の方針 Nを素因数分解してA,Bの桁数の差が最小になるように貪欲に取っていけばいけるかなと思った. 制約もなので素因数分解の計算量はで十分間に合う. Submission #12467047 - AtCode…

緑になるために必要なパフォーマンス

今400の茶コーダー. 緑コーダーがレート800-1200. AtCoder Rating Simulator 5回連続で1200パフォでやっと緑. 1200パフォにはABC161を参考にするとDifficulty1100のD問題を開始1時間くらいまでに解く必要がある. ということで早解は得意じゃないのでA-Cまで…

ABC 164 D - Multiple of 2019

atcoder.jp 高校のときから整数問題苦手だったんだけど10年以上経って改めて苦しめられている... ちなみに4月中に茶色くらいはいけるだろうって言ってたのはなんとか滑り込みで今回達成しました. 初手の方針 そもそも整数問題っていうことに気づかなかった. …

ABC 128 C - Switches

atcoder.jp ABC147-C,ABC159-Eについで3度目のbit全探索が題材 初手の方針 N,Mが最大で10なのでスイッチのon/offパターンは全列挙しても,それぞれの電球が繋がるスイッチを1つずつ走査してもで余裕で間に合いそうということで全探索することにした。 [WIP] …

モジュラ逆数(逆元)と組み合わせ

競技プログラミングでよく見るの余りを出力せよについて, 初めの頃(今も初めの頃ではある...)は32bit,64bitに収まらないから大きめの自然数で割るくらいにしか考えていなかったが組み合わせを求める問題でより深い理解が必要になったのでまとめる. 導入 以下…

ABC 016 C - 友達の友達

atcoder.jp kenkoooo.comのdifficulty同じ数値でも最近の問題と昔の問題で難易度に差があるように感じるんだけど、こんなもんなんですかね 初手の方針 まだ知識がないので少ない中で知っている知識に帰着させようとしてUnionFindで実装しようとした。 が、繋…

AGC 043 A - Range Flip Find Route

atcoder.jp ルートの網羅をどう実装してよいか定まらずめちゃくちゃ手こずった 初手の方針 マス目の . -> # への変化をカウントしようとした。 例えば S[i-1][j] -> S[i][j] で . -> # と変化する場合カウントは count[i][j] = count[i-1][j]+1 といった感じ…

3月の振り返りと4月の目標

2020年抱負 - sky’s 雑記 これの月別版。 Android jetpack composeについて全然手がついていない。 記事はspekとkoinの単体テストについて1つ書いた、引き続き現プロダクトで使用している技術スタックについては実装レベルで理解できるようにする。dagger2と…

ABC 161 D - Lunlun Number

atcoder.jp D問題というか緑レベルの問題にも慣れてきた感はあるんだけど、なかなか解ききるまでは至らずもう少し時間がかかりそう。 初手の方針 0から9までの数字で差の絶対値が1以下になるものをそれぞれvectorで定義する。 あとはK回に達するまで列挙して…

ABC 159 E - Dividing Chocolate

atcoder.jp 初手の方針 総当りで間に合いそうだなと思ったものの実装が全然手つかず。 発想も実装もまだまだ精進が足りないなと感じた。 正答 Submission #11377582 - AtCoder Beginner Contest 159 縦方向をbit全探索しつつ固定して考え、横方向について貪…

Spekラムダ内でKoinモジュールをinjectする

Androidのユニットテストネタ. TL;DL KoinTestを継承したRootクラスと、それをレシーバとするラムダを引数に持つ抽象クラスを実装する。 class KoinRoot(val root: Root) : KoinTest, Root by root abstract class KoinSpek(koinSpec: KoinRoot.() -> Unit) …

ABC 158 D - String Formation

atcoder.jp まだ道具としてのcppを使いこなせていないと感じた。 初手の方針 Submission #10661717 - AtCoder Beginner Contest 158 string ac,adにそれぞれ反転したものと反転していないもの両方を常に保持 、stringの連結は+演算子で行う。 業務でプログラ…

ABC 157 D - Friend Suggestions

atcoder.jp 初手の方針 隣接リストを作ってdfsでカウントするような方針。 グループに属する人数を求めると計算量は(n^ 2)かな? 今回はnが10^ 5なので間に合わず後述するUnion-Findというデータ構造で工夫する必要がある。 Submission #10513724 - AtCoder …

JAIST社会人コース特別選抜合格にあたり

北陸先端科学技術大学院大学合格していた。 面接直後の所感も以下の記事に残していて、手応えとしては普段の仕事から自分の至らなさに気付かされるレベルで色々とフィードバックを受けて正直全然手応えはなかった。この歳で改めて体系的に勉強する機会をいた…

ABC 151 D - Maze Master

atcoder.jp 初手の方針 蟻本のDFS/BFSで迷路探索問題は見ていてアルゴリズムはわかっていたが実装力が足りなくて手が出せなかった。 幅優先探索について 幅優先探索の実装において抑えておくポイントみたいなものを記しておく。 以下のような迷路を例にとっ…

院試の振り返りと過程で学んだこと

今日でJAIST社会人コース特別選抜の院試の面接が終わったので過程で学んだことをまとめておく。 総括すると普段の仕事への取り組み方から改めて考えさせられることが多く非常に良い経験だった。大学院で学ぶにしろ学ばないにしろ以下の点を意識して普段から…

Android SDK platform toolsを手元でビルドするときの覚書

droidkaigiのissueにあがってたSHA256withDSAでapkに署名できない問題を調査したときの派生ネタ。 replace SHA256withRSA debug.keystore by sdsd08013 · Pull Request #536 · DroidKaigi/conference-app-2020 · GitHub Android SDK platform Tools android.…

1月の振り返りと2月の抱負

振り返り 2020年抱負 - sky’s 雑記 Android droidkaigiのアプリにコントリビュートしていた。 イベントの登壇と宣言的UIについて記事を書くという観点で今注目されてるjetpack composeで既存画面を置き換えるというissueに一番手をつけたかったが手つかず。d…

ABC 152 C - Low Elements

atcoder.jp 初手の方針 ぱっと見lower_bound使いそうだなと思ってvectorに詰める方向で諸々思考錯誤した。 最終的に順列Pのi番目の要素p[i]としたときi番目までの集合Piの最小pc[i]がp[i]と一致すればカウントするという方向でコードを書いてLTE。ソート1回…

jqで整形したjson出力

小ネタ。 テスト書くときにサーバーレスポンスの生データを利用したいとき用途。 curl https://xxx -H "Authorization: Bearer yyy" | jq . > foo.json

CODE FESTIVAL 2016 Final B - Exactly N points

atcoder.jp かなり明確に方針が立ってそのとおりにコードを書いてAC出せて手応えを感じた問題なので記事にしておく。 初手の方針(+思考の流れ) とりあえず{1,2,3}のパターンを列挙した。 {1},{2},{3},{1,2},{1,3},{2,3},{1,2,3} 同様に{1,2,3,4}のパター…

ABC 111 C - /\/\/\/

atcoder.jp cpp力の無さで解けず、 解法わかってるのにコードに起こせないのは凹む。 初手の方針 inputを偶奇で分けてそれぞれ頻度の高いものを比較して差分を出力すればいけそうかなと思った。 が、それをどう書いていいかがわからなかった。 vector<ll> v; REP</ll>…

ABC 122 C - GeT AC

atcoder.jp 初手の方針 ぱっと見で累積和で解こうとなった、結果的にこの方針は正しかった。 ARC098の問題もそうだが、1次元のある区間の値を求めるような問題は累積和にパターンマッチできるようになってきたように思う。 C - Attention Submission #932035…