技術にゃんこの混ぜご飯

関東某所でITエンジニア生活を送るブログ主がチラ裏メモを放り込む場所

【Python100本ノック】02. 「パタトクカシーー」の問題はほんの入口に過ぎない

最低限はクリアしたので、飛ばして次に進みます(´ε` )

カテゴリ:Python100本ノック
sipaによるPixabayからの画像 (蛇に遭遇したサバトラ猫

github.com

そもそも「パタトクカシーー」とは

簡潔に言うと『2つの単語の文字を交互に組み合わせて、別の文字列を作る言葉遊び』です。

「はむみしがばき」「パタトクカシーー」

メソッドが満たすべき要件は?

100本ノックを解くだけであれば、「パタトクカシーー」のみ満たせれば良いです。なので組み合わせる前の単語の長さが同じという条件下でのみ、成立するようにしてあげればいいです。

元々、そういう問題なので、先を考える必要は微塵もありません。しかし普通に問題を説いても何百番煎じなので、今回は色々と突っ込んで考えてみようと思っています。

長さの違う文字列の場合

コンソールアプリケーションにして、2つの単語をユーザに入力してもらうことを想定してみます。

「はみがきこ」「むしば」を組み合わせることはできません。単語の文字数の差が2以上の時は、エラーを返す必要があります。また「はむみしがばき」で「むしば」が先になってしまうと、交互に組み合わせることができなくなります。

長さを判定して自動で正しく組み合わせて返すか、ユーザーに誤った入力であることを知らせるかしなければなりません。

拗音の問題

  • 撥音「ん」
  • 促音「っ」
  • 拗音「ゃ」「ゅ」「ょ」「ゎ」

「ブシャラモシジ」「プチリョンコ」

上記のバリエーションがあります。「プチリョンコ」の時、小さい「ョ」は1文字とみなされているのに対して、「ブシャラモシジ」の「ャ」は「シャ」を一音節と見て組み合わせられています。

プログラム側からこれを決定することは困難なので、もし対応するとしたら考えられる組み合わせを全て吐き出す形になるんでしょうか。つまり「サトウ」「シャモジ」であれば、「サシャトモウジ」「シャサモトジウ」「シサャトモウジ」などの複数のパターンが考えられます。

「サャ」を許容するかどうかについては検討の余地ありですが、いずれにしても文字数判定が少々込み入ったことになります。

issueだけ作ってあります

github.com

github.com

更新履歴

  • 2018/07/20
    • 拗音・撥音・促音の説明を追加しました。
    • 「サスンリダッルパ」は例として適切でないので削除しました。
      ※小文字と拗音では定義に違いがあるので、意味を混同しないように注意です。