제공된 배열에서 어나그램이 무엇인지 확인하고 그 결과를 출력 내의 하위 배열로 그룹화하는 방법을 작성하도록 요청하는 문제를 해결했습니다.Ruby Anagram String # sum
단어를 정렬하고 정렬 된 문자를 기반으로 해시로 그룹화하는 것이 일반적인 방법 인 것처럼 보이는 방법을 사용하여 해결했습니다.
처음에이 작업을 수행하기 시작했을 때 각 문자의 서수를 함께 추가하는 String#sum
이 있음을 발견했습니다.
sum
을 사용하여 분석기를 결정하는 방법을 알아 보려고합니다. 예를 들어 "자동차"와 "상처"에 대한 아나그램하고 자신의 sum
(나는 이미 해시 솔루션을 사용하여 얻을 수) %w[cars scar for four creams scream racs]
예상되는 출력의 입력 주어진 425
입니다 : [[cars, scar, racs],[for],[four],[creams,scream]]
. '당신에게 상처를 키 "425"의 값이 ['자동차 ','RACS '는 해시를 제공하는,
input.each_with_object(Hash.new []) do |word, hash|
hash[word.sum] += [word]
end
갈 방법입니다 :
이 같은 일을 것 같아 ']. 내가 잃어버린 것 같아요 출력 예상 된 형식으로 이동합니다.
그게 일반적으로 인정되는 해결책 인 것 같습니다. 처음에 문제가 시작될 때 나는 합계가 그것을 공격하는 대체 방법처럼 보인다고 생각했습니다. 내 원래의 솔루션은 당신만큼 웅변하지는 않지만 동일한 단어를 사용합니다 .chars.sort 아이디어. 그냥 신선한 유지하려고 : –
또한 내 gisted 솔루션을 제출하고 그것은 내 원래의 솔루션 않습니다 autograder에서 사용하는 사양을 통과 시켰습니다. 올바른 구현이 파일에 포함되도록 원본 솔루션을 다시 제출했습니다. 실험하는 것은 항상 재미 있습니다. –