2014-11-20 5 views
1
myArray = ["1324","11455","2234","55345", "1234", "54321"] 

각 배열에서 5 문자 중 하나를 포함하는 5 개의 배열로 나누는 방법은 무엇입니까?Ruby에서 다른 배열의 특정 위치에 단일 문자 배열을 생성하십시오.

구인 결과는

firstCharacterArray => ["1","1","2","5","1","5"] 
... 
fifthCharacterArray => ["","5","","5","","1"] 
입니다
+2

무엇을 시도 했습니까? 시도한 내용을 표시하는 것이 중요하므로 코드를 작성하도록 요청하는 대신 해결할 수 있도록 도와 줄 수 있습니다. 또한 Ruby에서는 camelCase가 아니라 snake_case를 변수 이름으로 사용합니다. –

답변

1
first_character_array = myArray.map{ |e| e[0] }.map{ |e| e.nil? ? "" : e } 
=> ["1", "1", "2", "5", "1", "5"] 
... 
fifth_character_array = myArray.map{ |e| e[4] }.map{ |e| e.nil? ? "" : e } 
=> ["", "5", "", "5", "", "1"] 
1

I 좋겠 시작 지점으로 사용해보십시오 :

arrays 
# => [["1", "3", "2", "4", ""], 
#  ["1", "1", "4", "5", "5"], 
#  ["2", "2", "3", "4", ""], 
#  ["5", "5", "3", "4", "5"], 
#  ["1", "2", "3", "4", ""], 
#  ["5", "4", "3", "2", "1"]] 

그리고 여기 :

여기
my_array = ["1324", "11455", "2234", "55345", "1234", "54321"] 
max_size = my_array.max_by{ |s| s.size }.size # => 5 
arrays = my_array.map{ |s| s.split('') }.map{ |a| 
    (a.size < max_size) ? 
    a += ([''] * (max_size - a.size)) : 
    a 
} 

arrays처럼 보이는 무엇 원하는 a 얻는 방법 rrays :

arrays.transpose 
# => [["1", "1", "2", "5", "1", "5"], 
#  ["3", "1", "2", "5", "2", "4"], 
#  ["2", "4", "3", "3", "3", "3"], 
#  ["4", "5", "4", "4", "4", "2"], 
#  ["", "5", "", "5", "", "1"]] 

또는 :

arrays.shift.zip(*arrays) 
# => [["1", "1", "2", "5", "1", "5"], 
#  ["3", "1", "2", "5", "2", "4"], 
#  ["2", "4", "3", "3", "3", "3"], 
#  ["4", "5", "4", "4", "4", "2"], 
#  ["", "5", "", "5", "", "1"]] 

이 숙제 또는 자습서 할당 냄새. 숙제 인 경우 교사가 쉽게 여기에서 답변을 검색하고 찾을 수 있다고 생각하십시오.

2

이 작업을 수행 할 수 있습니다

def extract_n_character(arr, n) 
    arr.map { |c| c[n] || '' } 
end 

extract_n_character(myArray, 0) 
# => ["1", "1", "2", "5", "1", "5"] 

extract_n_character(myArray, 4) 
# => ["", "5", "", "5", "", "1"] 
0

첫째, 내가 Enumerable#max_by를 사용하여 배열에서 가장 긴 문자열의 length을 얻을 것입니다.

그런 다음 더 짧은 문자열을 String#ljust으로 채 웁니다 (모든 길이가 동일하므로) String#chars을 사용하여 각 문자열에 대한 문자 배열을 가져옵니다.

마지막으로,이 2 차원 배열의 행과 열 transpose입니다.

array = ["1324","11455","2234","55345", "1234", "54321"] 

max = array.max_by(&:length).length 
array.map { |s| s.ljust(max).chars }.transpose 
#=> [["1", "1", "2", "5", "1", "5"], 
# ["3", "1", "2", "5", "2", "4"], 
# ["2", "4", "3", "3", "3", "3"], 
# ["4", "5", "4", "4", "4", "2"], 
# [" ", "5", " ", "5", " ", "1"]] 
0

다음과 같이 시도해 볼 수 있습니다.

firstCharacterArray = [] 
firstCharacterArray = myArray.each{|firstCharacterArray.push(a[0])} 
관련 문제