Wordle - The New York Times を解くとき、次のようにgrepしています。
ledsun@MSI:~/wordle_rb►grep -e '^\w\w\wt\w$' /usr/share/dict/words | grep -v '[o sclh]' | grep a | grep e | grep r Berta Greta Harte grate irate prate
exclude, included, correct_spots = ARGV correct_spots = if correct_spots correct_spots.gsub(/\*/, '[a-z]') else '[a-z]{5}' end dict = File.open('/usr/share/dict/words') do |f| f.readlines end matched = dict.grep(/^#{correct_spots}$/) .grep_v(/[#{exclude}]/) included.chars.each do |char| matched = matched.grep(/#{char}/) end matched.each do |value| value.chars.each do |char| if included.include? char print "\e[#{31}m#{char}\e[0m" else print char end end end
実行すると次のように候補が得られます。
ledsun@MSI:~/wordle_rb►ruby main.rb osclh aer '***t*' grate irate prate
色づけもしています。
引数の設計は適当です。 '*'はクォート必須になるから使いにくいかなあ?などと思っています。
grep使えばいいので、べつにRubyスクリプトにしなくても良かったです。 現に今までしていません。 24時過ぎて、wordleの新課題でているのには気がついているが、PCを開くのは面倒くさいことがたまにあります。 スマートフォンでやれば良いんですが、スマートフォンではgrepできません。 RubyスクリプトにするとWebAssemblyでブラウザで動かせます。 ブラウザで動けばスマートフォンからgrepできます。 やった!夜中でも出先でもwordleできます。
実際は目的と手段は逆です。 WebAssemblyを使ってブラウザでRubyスクリプトを動かすネタで、実装が簡単で自慢できそうな奴を探して出てきたアイデアです。