パターン・ファインダー
CoddyのRubyジャーニー「基礎」セクションの一部 — レッスン 87/88。
チャレンジ
簡単入力から文字列を読み込み、その文字列全体を構成する最小の繰り返しのパターンを見つけてください。
有効なパターンは以下の条件を満たす必要があります:
- パターンの長さが、文字列の全長の約数であること(割り切れること)
- 適切な回数繰り返したときに、元の文字列を正確に再現すること
文字列が繰り返しのパターンで構成されている場合は、その最小のパターンを出力してください。繰り返しのパターンが存在しない場合は、元の文字列を出力してください。
パターンが機能するかどうかを確認するには、文字列の乗算を使用できます。pattern * count は、パターンを繰り返して新しい文字列を作成します。
例えば、入力が abcabcabc の場合、出力は以下のようになります:
abc入力が xyxyxyxy の場合、出力は以下のようになります:
xy入力が aaaa の場合、出力は以下のようになります:
a入力が hello の場合、出力は以下のようになります:
hello入力が abcdef の場合、出力は以下のようになります:
abcdef自分で試してみよう
# 入力文字列を読み込む
s = gets.chomp
# TODO: 以下にコードを書いてください
# 文字列全体を構成する最小の繰り返しパターンを見つける
# ヒント: 文字列の長さを割り切ることができるパターンの長さを確認する
# 文字列の乗算 (pattern * count) を使用して、パターンが機能するかどうかを確認する
result = s # これをあなたの解決策に置き換えてください
# 結果を出力する
puts result