2016-10-28 3 views
0

Ruby에서 배열의 배열을 받아 들여 해시로 변환 할 수있는 함수를 작성하려고합니다. 이것은 문장을 시뮬레이트하고 임의의 단어 순서를 생성하는 데 사용됩니다. 결과지도는 현재 문장 규칙에서 사용 가능한 모든 문장 조합을 생성하는 데 도움이됩니다.Ruby에서 배열 배열로지도 만들기

어떻게해야합니까? 나는 어디에서 시작 해야할지에 관해서는 조금 잃어버린다.

+0

안녕하세요. 우리는 코드 요청 대신이 문제를 해결하려는 시도를보고 싶습니다. 연결된 페이지, "[mcve]"및 "[Stack Overflow 사용자에 대한 연구 노력의 정도] (http://meta.stackoverflow.com/q/261592)"를 포함하여 "[ask]"를 읽으십시오. 현재 귀하의 질문은시기 상조입니다. 시도해보십시오. 좀 더 시도해보고 코드의 한 부분에 대해 특정 질문을하십시오. –

답변

2

이 시도 :

arr = [ ["<start>", "The <object> <verb> tonight."], 
     ["<object>", "waves", "big yellow  flowers", "slugs"], 
     ["<verb>", "sigh <adverb>", "portend like <object>", "die <adverb>"], 
     ["<adverb>", "warily", "grumpily"] ] 

arr.map { |ar| [ar.shift, ar.map { |str| str.split }] }.to_h 
#=> 
#{ "<start>" => [["The", "<object>", "<verb>", "tonight."]], 
# "<object>" => [["waves"], ["big", "yellow", "flowers"], ["slugs"]], 
# "<verb>" => [["sigh", "<adverb>"], ["portend", "like", "<object>"], ["die", "<adverb>"]], 
# "<adverb>" => [["warily"], ["grumpily"]] } 

ar.shift는 각 서브 어레이의 첫 번째 요소를 가져. ar.map과 함께 사용 된 블록은 (공백에서) 나머지 요소를 배열로 나눕니다. 마지막으로 to_h은 결과 배열을 해시로 변환합니다.

+0

감사합니다. 작동 중! 무슨 일이 일어 났는지에 대한 설명을 조금 주시겠습니까? – FlameDra

+0

@FlameDra 확실하게, 나는 나의 대답을 업데이트 할 것이다 : –

+0

@ sagarpandya82 나는 당신의 대답을 업데이트했다. 나를 위해 이런 식으로 더 낫다. 당신이 그것을 좋아하는지 확인하십시오;) – Ursus