2019-03-25 bouzuya/purescript-npm-bin-google-tasks 0.2.0
bouzuya/purescript-npm-bin-google-tasks 0.2.0 をつくった。
google-tasks は Google Tasks の CLI 。 2019-03-17 に 0.1.0 をつくったもの。
0.2.0 では google-tasks task list
とそのオプションを追加した。
w010 のものは 1.0.0 にしているけどこれはすこし刻んでみる。
bouzuya/purescript-at-coder 。 ABC121 をひととおり解いた。
C 問題で詰まった。アルゴリズムによるものではなくて PureScript への慣れによるもの。 Array (Tuple Int Int)
として解釈したあとソートして先頭から要求数まで取るだけ……なんだけど TLE になってしまう。
こうなるとあらゆる処理が遅いんじゃないかと疑ってしまう。 Data.String.CodePoints
が遅いんじゃないかとか。厳密に計測したわけじゃないけどおそらく purescript-precise の HugeInt
まわりが致命的だったのだと思う。
Int
の範囲を超えてしまう箇所があった。 precise の HugeInt
で良いと思って使ったのだけどまずかったようだ。最終的には purescript-bigints の BigInt
を選んだ。 precise (HugeInt
) → longs (Long
) → bigints (BigInt
) と移った。ちなみに Long
は npm:long を使い BigInt
は npm:big-integer を使う。 long は内部で WebAssembly を使っているため Node.js v5 になっている AtCoder では動かない。 long および bigints 採用時には node_modules を含めた bundle をつくらないといけないため bundler が必要になる。 parcel を使って bundle した。
いろいろ準備が足りてない。過去問題を解いていくうちにある程度は慣れると思う。
テストでテキストファイルを読む形に変更した。毎回テストファイルをつくらなくてもデータを置くだけにするのも良いかもしれない。
明日は ABC122 から何問か解く。