2023-02-16 Node.js で ESM を使う際の nyc の設定を直した / diverta 2019 Programming Contest 2 の A を解いた
Node.js で ES Modules を使用した場合の npm:nyc の設定を直した。よく分からないままに。
node --loader @istanbuljs/esm-loader-hook
してやると動く。きちんと理解はできていないものの、モジュール解決に処理を挟み込むことで nyc が動くようにしているのだろう。 experimental な flag に依存していて怪しい。実装も babel を使っているっぽくて怪しい。きちんと理解して babel の設定を書くほうが良さそうではある。
この方法 (npm:@istanbuljs/esm-loader-hook) だと Node.js v14.x では動かないっぽい。 https://nodejs.org/dist/latest/docs/api/esm.html#loaders によると v16.x で挙動が変わっているようなので、その変更に依存しているのかもしれない。 Node.js v14.x は 2023-04-30 で End-of-Life (https://github.com/nodejs/Release) なので、あと数ヶ月も立てば正式に切っても良さそう。 CI 的には切っておいても物としてはたぶん問題なく動く。問題があるとすれば ES Modules only にしているのでその影響のほうがよほど大きい。
ts-node/esm などを使う方法もあるようなのだけど、もういいかな……という気持ちになっている。
nyc のドキュメントには TypeScript と Node.js の両方で ESM を使用する例があまりきちんと書かれていないように思う。
diverta 2019 Programming Contest 2 の A を解いた。
- A - Ball Distribution
https://atcoder.jp/contests/diverta2019-2/tasks/diverta2019_2_a
- 提出: https://atcoder.jp/contests/diverta2019-2/submissions/38928471
K <= N
から必ず 1 個ずつは配れる- 1 個ずつ配ったあと、残った分を一人に集めると答えを最大化できるので
N - K
- ただし、
K = 1
のときは最大と最小の差は0
になる if k == 1 { 0 } else { n - k }
use proconio::input;
fn main() {
input! {
n: usize,
k: usize,
};
let ans = if k == 1 { 0 } else { n - k };
println!("{}", ans);
}
今日のコミット。