aboutsummaryrefslogtreecommitdiff
path: root/challenge-087/roger-bell-west/ruby/ch-2.rb
blob: 639dc490fb70873eeb0a225b121c067dde17383a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#! /usr/bin/ruby

def lr(*s)
  maxx=s.length-1;
  maxy=s[0].length-1;
  maxa=0;
  c=Array.new;
  0.upto(maxx-1) do |x|
    0.upto(maxy-1) do |y|
      if (s[x][y]==1)
        (x+1).upto(maxx) do |tx|
          (y+1).upto(maxy) do |ty|
            valid=true
            x.upto(tx) do |sx|
              y.upto(ty) do |sy|
                if (s[sx][sy] != 1)
                  valid=false
                  break
                end
              end
              if valid==false
                break
              end
            end
            if valid
              l=[tx-x+1,ty-y+1]
              a=l[0]*l[1]
              if (a > maxa)
                maxa=a
                c=l
              end
            end
          end
        end
      end
    end
  end
  if (c.length > 0)
    o=Array.new
    1.upto(c[0]) do
      o.push([1] * c[1])
    end
    return o
  end
  return 0
end

require 'test/unit'

class TestLr < Test::Unit::TestCase

  def test_ex1
    assert_equal(
      [
        [1,1,1,1,1],
        [1,1,1,1,1],
      ],
      lr(
        [0,0,0,1,0,0],
        [1,1,1,0,0,0],
        [0,0,1,0,0,1],
        [1,1,1,1,1,0],
        [1,1,1,1,1,0],
      ),
    )
  end

  def test_ex2
    assert_equal(
      0,
      lr(
        [1,0,1,0,1,0],
        [0,1,0,1,0,1],
        [1,0,1,0,1,0],
        [0,1,0,1,0,1],
      ),
    )
  end

  def test_ex3
    assert_equal(
      [
        [1,1,1,1],
        [1,1,1,1],
      ],
      lr(
        [0,0,0,1,1,1],
        [1,1,1,1,1,1],
        [0,0,1,0,0,1],
        [0,0,1,1,1,1],
        [0,0,1,1,1,1],
      ),
    )
  end

end