친구가 컴퓨터에 익숙하지 않아서 실제 농담으로 누군가가 키보드에서 문자 (az)를 뒤섞 었습니다. 그가 앉아서 키보드를 보면서 그의 이름을 입력하려고 할 때 그는 글자가 뒤섞여 도움을 요청한다는 것을 깨달았습니다.
그는 자신의 이름을 입력 한 다음 화면에 나타나는 이름 대신 화면에 나타나는 내용을 반복해서 다시 입력하면 결국 자신의 이름을 입력하는 데 성공할 것입니다. 당신은 또한 친절하고 키를 재정렬하지만 성공하기 위해 얼마나 많은 턴이 필요한지 알고 싶습니다.
당신의 임무는 글자를 섞고 친구의 이름이 회전 수를 계산하는 프로그램이나 기능을 작성하는 것입니다.
입력 세부 사항 :
- 사용자의 언어에 편리한 구조로 두 개의 문자열이 입력으로 제공됩니다.
- 첫 번째 문자열은 이전 소문자의 알파벳 순서로 새 소문자 목록입니다. (첫 번째 문자는의 위치에
a
있고, 마지막 문자는의 위치에z
있습니다.) 문자열에서 일부 변경이 항상 발생합니다. - 두 번째 문자열은 이름입니다. 인쇄 가능한 ASCII 문자를 포함 할 수 있지만 대문자와 소문자의 알파벳 문자 만 섞습니다. 이름 자체는 알에서 섞이지 않을 수 있습니다.
출력 세부 사항 :
- 출력은 최소 회전 수가 필요한 단일 정수입니다. 줄 바꿈은 선택 사항입니다.
예 :
입력 :
'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
)의 사이클로 구성되며 각 사이클에서 하나 이상의 문자를 포함하는 모든 이름은 1260을 생성합니다. 그리고 알파벳 자체를 입력으로 사용하는 것 같습니다. 또는 영향을받지 않는 이름을 사용하는 것도 중요한 경우입니다.