2013-04-30 2 views
0

내가 가진 값을 반환과 같은 매트릭스 :프로세스 행렬의 각 요소에 뭔가

내가 첫 번째 요소는 '일반'또는 '보상'인 경우 확인하고, 각각의 날짜를 확인해야
my_matrix = [['regular', '16/03/2009', '17/03/2009', '18/03/2009'], 
      ['regular', '20/03/2009', '21/03/2009', '22/03/2009'], 
      ['rewards', '26/03/2009', '27/03/2009', '28/03/2009']] 

첫 번째 요소, 무언가를 처리하고 값을 반환합니다. 예를 들어

:

['regular', '20/03/2009', '21/03/2009', '22/03/2009'] 

첫번째 요소 'regular'이며 각 날짜 다음 주중 또는 주말과 공정 일 경우, I가 검증 어레이의 나머지 부분을 통해 반복 할 필요가있다. 주중에 평일보다 더 많은 주말이 있다면, 다른 일을 처리하십시오.

나는 이것을 시도했다 :

HOTELS = { 
    :RIDGEWOOD => 'RidgeWood', 
    :LAKEWOOD => 'LakeWood', 
    :BRIDGEWOOD => 'BridgeWood' 
} 

def weekend?(date) 
    datetime = DateTime.parse(date.to_s) 
    datetime.saturday? || datetime.sunday? 
end 

def find_the_cheapest_hotel(text_file) 

    @costumer_request = File.open(text_file){|io| io.each_line.map{|line| line.split(/[:,\s]+/)}} 

    @costumer_request.each do |line| 

    line.each do |value| 
     if line.shift == 'regular' 
      if weekend?(line) 
      print 'weekend regular' 
      else 
      print 'weekday regular' 
      end 

     elsif line.shift == 'rewards' 
      if weekend?(line) 
      print 'weekend rewards' 
      else 
      print 'weekday rewards' 
      end 
     end 
end 

그것은이 ['regular', '16/03/2009', '17/03/2009', '18/03/2009']을 얻고, 내가 처음에뿐만 아니라 각 배열 뭔가 전자를 처리 할이 평일 주중 평일 를 반환합니다.

+0

멋진 소리! 바로 가서 그렇게해라. (질문이 있습니까? 시도해 보았습니까? 작동하지 않았습니까?) – matt

+0

질문에 내 소스 코드를 넣어주세요. –

답변

2

아직 문제가 무엇인지는 언급하지 않았으며 코드가 초기 설명과 잘 일치하지 않습니다. 하지만 처음에는 일이 잘못 될 수있는 곳을 분명히 가리킬 수 있습니다.

if line.shift == 'regular' 
     # ... 
    elsif line.shift == 'rewards' 
     # ... 
    end 

생각해보십시오. 처음 ifshift이며 따라서 은 실제로 배열을 시프트합니다. 배열의 첫 번째 요소는 이제 영원히 사라졌습니다. 따라서 이 아닌regular이라고 가정합니다. 이제 우리는 elsif 상태가됩니다. 그러나 배열의 첫 번째 요소가 rewards 인 경우이 조건은 이 아님을 의미하므로이 참이라고 말할 수 있습니다. 이제는 손실됩니다. 배열에서 제거되었습니다 (첫 번째 요소는 현재 날짜 임).

따라서 이동하는 대신 두 조건 모두에서 line[0]을 검사하면됩니다. 나중에을 배열의 나머지 부분을 이동할 때 이동할 수 있습니다.

+0

여기 또 다른 질문이 있습니다. 정렬. 나머지 배열을 어떻게 확인할 수 있습니까? –

+0

다른 질문 인 경우 다른 질문으로 질문하십시오. – matt

관련 문제