すべての数字が異なるような日付を探す

リンク切れたときのために問題文引用しておくと

問題 本日は2019年8月7日だが、この日付に使われている数字はすべて異なる。次にこのような日になるのはいつか。

月とか日付がゼロフィルされてないところが微妙に面倒な問題。

C++で日付扱うのめんどくさいなーと思ったのでとりあえずJSで書きました。

let d = new Date(2019,7,7);
let flg = true;
while(flg){
  d.setDate(d.getDate()+1)
  const str = d.toISOString().replace(/-/g,"");
  const set = new Set();
  for (let i = 0; i < 8; ++i) {
    if (i == 4 || i == 6) {
      if (str[i] == 0) continue;
    }
    if (!set.has(str[i])) {
      if (i == 7) {
        flg = false;
      }
      set.add(str[i]);
    }
    else break;
  }
}
console.log(d.toISOString());

JS は JS でフォーマットが ISO と各地域の独自表記しか対応してないんですね。まあそういう npm モジュールあるだろうしね。