t = 17 set = [2.0,5.0,6.0,6.0] set.permutation(4).each { |s| [:+,:-,:*,:/].repeated_permutation(3).each{ |e| p s.zip(e).flatten.compact.join(' ') if ->(){o=s[0];(0..2).each{|i|o=o.send(e[i],s[i+1])};o}.call==t p ['(', '','',')','(','','',')'].zip(s.zip(e).flatten).join(" ") if eval(['(', '','',')','(','','',')'].zip(s.zip(e).flatten).join(" ")) == t } }