2015-01-05 2 views
0
I는 다음과 같은 배열

다른 배열 및 반환 값 루비

prime_arr = [2,3,5,7,11,13] 

을 가지고 있고이 어레이 (3)가 있는지 여부를,도 5 내지도 7을 확인 값 (들)을 리턴 할 필요가 다를

을 사용하여 조합에 따라 함께 배열 값 비교 이있는 경우 [3,5] 복귀 "예 그것이"은 3 만 창 "예"5 만 창을 가지고 있다면 존재에 기초

"는 인"7 단독 '완료'를 리턴하고

이 경우 [3,5,7]이 복귀

반환 값이 조합 사전에

감사에 따라 다릅니다한다 "네, 수행됩니다."

+0

다른 세 가지 조합은 어떻게됩니까? – sawa

답변

2

숙제와 비슷해 보이므로 (여기에 아무도 당신을 대신하여 코드를 작성하지 않으므로) 실제 답변을 제공하지 않을 것입니다. 그러나 나는 당신에게 퍼즐 조각에 대한 몇 가지 조언을 해줄 것입니다 - 당신이 그들을 함께 조각 낼 수 있기를 바랍니다.

두 배열 간의 교차점은 #& 메서드를 사용하여 찾을 수 있습니다. 그래서 :

prime_arr = [2,3,5,7,11,13] 
# => [2, 3, 5, 7, 11, 13] 
prime_arr & [3] 
# => [3] 
prime_arr & [3,5] 
# => [3, 5] 
prime_arr & [3,5,7] 
# => [3, 5, 7] 
prime_arr & [4] 
# => [] 

사례 성명과 같이, 배열 값을 전환 할 수 있습니다 :

a = [1,2] 
case a 
    when [1]; "just one" 
    when [1,2]; "both" 
end 
# => "both" 

행운을 빕니다!

+0

도움을 주셔서 감사하지만 여기 코드가 좋은 냄새가 나지 않는 모든 조합에 대해 사례를 써야합니다. : ( – Sai

0
words = ['Yes', 'it is', 'done'] 
prime_arr = [2, 3, 5, 7, 11, 13] 
target = [3, 5, 7] 

words.take((prime_arr & target).size).join(" ") 

편집 :

prime_arr = [2, 3, 5, 7, 11, 13] 
mapping = { 
    [3] => 'Yes', 
    [3, 5] => 'Yes it is', 
    [3, 5, 7] => 'Yes it is done' 
} 

mapping[prime_arr & [3, 5, 7]] # => 'Yes it is done' 
mapping[prime_arr & [3, 5]] # => 'Yes it is' 
mapping[prime_arr & [3]] # => 'Yes' 

당신은 전무을 얻을 때 mapping 경기에서 키의 없음.

+0

답변을 주셔서 감사합니다.하지만 5와 7의 경우 혼자서는 "예"를 반환합니다. 우리는 크기에 따라 다릅니다. 모든 대체 감사합니다. – Sai

+1

아, 이것을 고려하지 않았습니다. 대답을 편집 할 것입니다 – avlazarov

0

당신이 명확하게하지 않은 다른 세 가지 경우에 대해 잘 모르기 때문에 추측하고 있습니다.

[[3, 5, 7], ["Yes ", "it is ", "done"]] 
.transpose.each.with_object(""){|(i, w), s| s << w if prime_arr.include?(i)} 
+0

먼저 도움을 주셔서 감사합니다 실제로 주어진 수의 프라임 팩터를 하나의 배열로 가져옵니다. . (prime_arr) 지정된 값 이외의 값이 있으면 주어진 수를 리턴해야합니다. – Sai