早くも毎日更新が辛くなりサボりがちになってきました。
今日はキリの良い所まで行きませんがご容赦を。
さて、気を取り直して正規表現によるパズルゲーム? Regex Golf 10問目 "Triples" に挑戦です。
お題は "Triples" です。3の倍数を検索です。
以下、ネタバレ
3の倍数をなんて検索なんて無理じゃない?と思いましたが、3の倍数は各桁の和も3の倍数になるという性質を使って検索すればよいみたいです。
各桁の和が3で割り切れるということは、各桁を3で割った余りの合計が3で割り切れるということなので、単純に考えるために数字を3つのグループに分けて考えます。
1桁の数字を3で割った余りで 3 つグループに分けます
- A:余り0のグループ(0, 3, 6, 9)
- B:余り1のグループ(1, 4, 7)
- C:余り2のグループ(2, 5, 8)
- A は何回現れてもよい
- B と C が現れる回数により 3 の倍数か否かが決まる
- B が現れる回数を 3 で割った余りを b 回
- C が現れる回数を 3 で割った余りを c 回
- b と c が同じ
後はこれを正規表現でかけばOK!
正規表現を考えるのは次回に持ち越します。
ということで次回、13 回目は 10 問目 "Triples" の続きです。
0 件のコメント:
コメントを投稿