回答編集履歴
1
月に関する仕様齟齬を反映 + 微調整
    
        answer	
    CHANGED
    
    | 
         @@ -14,11 +14,11 @@ 
     | 
|
| 
       14 
14 
     | 
    
         | 
| 
       15 
15 
     | 
    
         
             
            ...
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
       17 
     | 
    
         
            -
            day, month, year = *elm.split('/').reverse
         
     | 
| 
      
 17 
     | 
    
         
            +
            day, month, year = *elm.split('/').map(&:to_i).reverse
         
     | 
| 
       18 
18 
     | 
    
         
             
            month ||= today.month
         
     | 
| 
       19 
19 
     | 
    
         
             
            year ||= today.year
         
     | 
| 
       20 
20 
     | 
    
         
             
            d = Date.new(year, month, day)
         
     | 
| 
       21 
     | 
    
         
            -
            d = d.next_year if  
     | 
| 
      
 21 
     | 
    
         
            +
            d = d.next_year if d < today # 過去の日付になったら翌年
         
     | 
| 
       22 
22 
     | 
    
         
             
            ```
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
24 
     | 
    
         
             
            とすれば、目的の日付が1つ得られると思います。
         
     | 
| 
         @@ -26,4 +26,29 @@ 
     | 
|
| 
       26 
26 
     | 
    
         
             
            - 分割代入を上手く使うとデータの分解が上手にできることが多いです
         
     | 
| 
       27 
27 
     | 
    
         
             
            - デフォルト値を取り扱う時は、`||=` が活きます。
         
     | 
| 
       28 
28 
     | 
    
         | 
| 
       29 
     | 
    
         
            -
            あたりがポイントかと思います。
         
     | 
| 
      
 29 
     | 
    
         
            +
            あたりがポイントかと思います。
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            ---
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            条件を誤読していたので修正します。
         
     | 
| 
      
 34 
     | 
    
         
            +
            前に設定された情報の中に「月」等があれば、継続してそれを用いる、ということなので、
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            ```rb
         
     | 
| 
      
 38 
     | 
    
         
            +
            today = Date.today
         
     | 
| 
      
 39 
     | 
    
         
            +
            prev_month = nil
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
            array1.each do |elem|
         
     | 
| 
      
 42 
     | 
    
         
            +
              day, month, year = *elem.split('/').map(&:to_i).reverse
         
     | 
| 
      
 43 
     | 
    
         
            +
              month ||= prev_month || raise("一度もmonthが指定されなかった")
         
     | 
| 
      
 44 
     | 
    
         
            +
              year ||= today.year
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
              d = Date.new(year, month, day)
         
     | 
| 
      
 47 
     | 
    
         
            +
              d = d.next_year if d < today # 過去の日付になったら翌年
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
              prev_month = d.month # 次のelemの処理のために保持
         
     | 
| 
      
 50 
     | 
    
         
            +
              array2 << d
         
     | 
| 
      
 51 
     | 
    
         
            +
            end
         
     | 
| 
      
 52 
     | 
    
         
            +
            ```
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
            というところかと思います。
         
     |