aboutsummaryrefslogtreecommitdiff
path: root/challenge-109/abigail/ruby/ch-2.rb
blob: faaa7b8489f5cdb8b55d1ab3eb6fe4d0a5704b1d (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
#!/usr/bin/ruby

#
# See ../README.md
#
 
#
# Run as: ruby ch-2.rb < input-file
#

SIZE = 7

#
# Brute force all possibilities, with early returns.
#
ARGF . each_line do |_|
    numbers = (_ . split) . map {|_| _ . to_i}

    numbers . each_with_index do |a, a_i|
        numbers . each_with_index do |b, b_i|
            next if a_i == b_i
            target = a + b
            numbers . each_with_index do |c, c_i|
                next if a_i == c_i || b_i == c_i
                numbers . each_with_index do |d, d_i|
                    next if a_i == d_i || b_i == d_i || c_i == d_i
                    next if target != b + c + d
                    numbers . each_with_index do |e, e_i|
                        next if a_i == e_i || b_i == e_i || c_i == e_i ||
                                d_i == e_i
                        numbers . each_with_index do |f, f_i|
                            next if a_i == f_i || b_i == f_i || c_i == f_i ||
                                    d_i == f_i || e_i == f_i
                            next if target != d + e + f
                            numbers . each_with_index do |g, g_i|
                                next if a_i == g_i || b_i == g_i ||
                                        c_i == g_i || d_i == g_i ||
                                        e_i == g_i || f_i == g_i
                                next if target != f + g
                                puts "#{a} #{b} #{c} #{d} #{e} #{f} #{g}"
                            end
                        end
                    end
                end
            end
        end
    end
end