yyyymmdd形式で8個の数字が2種類の数字だけで表される日

中学時代の塾の数学講師がこんなツイートをしていました。


そこでRubyでプログラムを書いてみました。コードは以下のとおり。
8個の数字が2種類で表せるときの日付はcsvファイルに書き出すようにしました。

# -*- coding:utf-8 -*-
# 2022-02-23
require 'date'
require 'csv'
st = Date.new(0001,01,01)
en = Date.new(9999,12,31)
dmax = (en-st).to_i # 返り値がRationalなので整数にする
n = 0 # counter
arr = Array.new
f = CSV.open('test.csv','w')
header = ["n","date"]
f.puts(header)

for d in 0..dmax
  date = st+d
  str = date.strftime("%Y%m%d")
  str2 = str.split(//)
  count = str2.uniq.count
  if (count==2) then
    n +=1
    sdate = date.strftime("%Y/%m/%d")
    sn = sprintf("%3d",n)
    #f.puts ["n = #{sn}", "date = #{sdate}"]
    f.puts [sn, sdate]
    arr.push(sdate)
  end
end
f.close

puts "#### 2022-02-22 ####"
i = 391
si = sprintf("%3d",i)
puts "n = #{si}", "date = #{arr[i-1]}"

実行したときの結果は次のとおり。

matsuba@debian:~/tmp4$ time ruby main.rb
#### 2022-02-22 ####
n = 391
date = 2022/02/22

real	0m28.204s
user	0m28.163s
sys	0m0.020s

8個の数字が1種類の数字だけで表される日は 1111/11/11 の1回だけ

というところまでは検証していませんが、これは自明ですから省略します。
ちなみに実行環境は次のとおりです。

matsuba@debian:~/tmp4$ uname -a
Linux debian 4.19.0-18-amd64 #1 SMP Debian 4.19.208-1 (2021-09-29) x86_64 GNU/Linux
matsuba@debian:~/tmp4$ cat /etc/debian_version 
10.11
matsuba@debian:~/tmp4$ ruby -v
ruby 2.5.5p157 (2019-03-15 revision 67260) [x86_64-linux-gnu]