33 lines
849 B
Text
33 lines
849 B
Text
var formats = [
|
|
'((%d %s %d) %s %d) %s %d',
|
|
'(%d %s (%d %s %d)) %s %d',
|
|
'(%d %s %d) %s (%d %s %d)',
|
|
'%d %s ((%d %s %d) %s %d)',
|
|
'%d %s (%d %s (%d %s %d))',
|
|
]
|
|
|
|
var op = %w( + - * / )
|
|
var operators = op.map { |a| op.map {|b| op.map {|c| "#{a} #{b} #{c}" } } }.flat
|
|
|
|
loop {
|
|
var input = read("Enter four integers or 'q' to exit: ", String)
|
|
input == 'q' && break
|
|
|
|
if (input !~ /^\h*[1-9]\h+[1-9]\h+[1-9]\h+[1-9]\h*$/) {
|
|
say "Invalid input!"
|
|
next
|
|
}
|
|
|
|
var n = input.split.map{.to_n}
|
|
var numbers = n.permutations
|
|
|
|
formats.each { |format|
|
|
numbers.each { |n|
|
|
operators.each { |operator|
|
|
var o = operator.split;
|
|
var str = (format % (n[0],o[0],n[1],o[1],n[2],o[2],n[3]))
|
|
eval(str) == 24 && say str
|
|
}
|
|
}
|
|
}
|
|
}
|