村瀬さんロジックをベースに極限までリファクタリング

indexを使って文字を入れ替えるのではなく、正規表現 + `sub`で文字を入れ替えるようにしてみました。
あと、削れそうなところは徹底的に削ってます。