Это довольно грубый подход, но обратите внимание, что ваша таблица истинности для данного n
соответствует битовым значениям чисел 0...2**n
.
def create_table(n)
(2**n).times do |i|
n.times { |shift| print "#{(i >> shift) & 1 == 0 ? 'T' : 'F'} " }
puts
end
end
create_table 3
Больше рубина и, несомненно, быстрее:
def create_table(n)
%w{T F}.repeated_permutation(n).to_a.each { |perm| puts perm.join(' ') }
end