あなたの友人はコンピューターがあまり上手ではないので、実際の冗談で誰かがキーボードの文字(az)をスクランブルしました。彼が座ってキーボードを見て名前を入力しようとすると、彼は文字がスクランブルされていることに気づき、助けを求めました。
あなたは賢いので、彼が自分の名前を入力してから、彼の名前の代わりに画面に表示されるものを繰り返し再入力すると、彼は最終的に彼の名前を入力することに成功することを知っています。また、親切でキーを再配置しますが、成功するのに何ターンかかるかを知りたいです。
あなたの仕事は、文字をシャッフルし、友人の名前がターン数を計算するプログラムまたは関数を書くことです。
入力の詳細:
- 2つの文字列が、言語に便利な構造の入力として与えられます。
- 最初の文字列は、古い小文字のアルファベット順の新しい小文字のリストです。(最初の文字はの位置にあり
a
、最後の文字はの位置にありz
ます。)文字列には常に何らかの変更が発生します。 - 2番目の文字列は名前です。印刷可能なASCII文字を含めることができますが、大文字と小文字のアルファベットのみがシャッフルされます。名前自体はalでシャッフルされないかもしれません。
出力の詳細:
- 出力は、最小限必要な巻き数の単一の整数です。改行はオプションです。
例:
入力:
'abcfdeghijklmnopqrstuvwxyz' 'Mr. John Doe'
(d、e、fの位置が変更されました)
出力:(
3
表示される名前はMr. John Fod
=> Mr. John Eof
=> Mr. John Doe
)
入力:
'nopqrstuvwxyzabcdefghijklm' 'Mr. John Doe'
(ROT13暗号)
出力:(
2
文字を含むすべての入力名は2
、元の名前を生成するためにラウンドします。)
入力:
'aebcdjfghiqklmnopzrstuvwxy' 'John Doe'
出力:
140
これはコードゴルフなので、最短のエントリが優先されます。
EOF
は完全に素晴らしいです!
aebcdjfghiqklmnopzrstuvwxy
出力1260Mr John Doe
)。これは最大の可能性です-順序4、5、7、9のサイクル(および変更されていないa
)で構成され、各サイクルから少なくとも1つの文字を含むすべての名前は1260を生成します。または、影響を受けない名前を使用することも重要です。