벼룩시장에서 멋진 빈티지 타자기를 헐값에 발견했어요! 신이 나서 집으로 달려가 종이 한 장을 끼우고 타자를 두드리기 시작했어요. 그런데 출력된 결과를 보고 나니 신바람이 가라앉았어요. 모든 단어가 뒤죽박죽이었거든요! 예를 들어 "post" 대신 "stop"을, "stale" 대신 "least"를 찍어 냈어요. 조심스럽게 다시 시도해 봤지만 이번에는 "spot"과 "slate"를 찍어 냈어요. 몇 번 실험해 보니 글자마다 인쇄되기 전에 무작위 지연이 생겨서 순서가 엉망이 되는 거였어요. 이제 왜 그렇게 싸게 팔았는지 이해가 됐어요!
이 특이한 점 덕분에 애너그램, 즉 다른 단어의 글자를 재배열해 만든 단어를 만들 수 있다는 걸 깨달았어요. 발견이 기뻐서 남은 하루를 애너그램 수백 개를 만들며 보냈어요.
목표 단어와 하나 이상의 후보 단어가 주어졌을 때, 목표 단어의 애너그램인 후보 단어를 찾는 것이 과제예요.
애너그램은 글자를 다시 배열해 새로운 단어를 만드는 것이에요. 예를 들어 "owns"는 "snow"의 애너그램이에요.
어떤 단어는 자기 자신의 애너그램이 아니에요. 예를 들어 "stop"은 "stop"의 애너그램이 아니에요.
목표 단어와 후보 단어는 하나 이상의 ASCII 알파벳 문자(A-Z와 a-z)로 이루어져 있어요.
소문자와 대문자는 서로 같은 것으로 취급해요. 예를 들어 "PoTS"는 "sTOp"의 애너그램이지만, "StoP"은 "sTOp"의 애너그램이 아니에요.
찾아야 할 단어는 후보 단어 중에서 골라야 하며, 후보 단어의 대소문자를 그대로 사용해요.
목표 단어 "stone"과 후보 단어 "stone", "tones", "banana", "tons", "notes", "Seton"이 주어졌을 때, 찾아야 할 애너그램 단어는 "tones", "notes", "Seton"이에요.
아나그램은 후보 단어에 나열된 순서와 같은 순서로 반환해야 해요.
Exercism에 가입하고 Ruby 트랙을 개념 21개연습 문제 121개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.