I wonder for 4x4 the total solution is 16 * 4! = 384

My solution about check_fold is try to find all combinations possible.

Below is modified version of my check_fold, it will print out all

possible combinations and total count number.

However I found for 4x4 there is only 96 possible not 384.

Can someone tell me that I am wrong ( missing some combination ) or

the previous math formula is not correct ?

Thanks,

def check_fold(row, col, result)

# find all combinations with binary 0 for row and 1 for column

operation

def all_orders(r, c) #

return [2**c - 1] if (r <= 0) # c bits of 1 is 2**c-1

return [0] if (c <= 0) # r bits of 0 is 0

table = []

all_orders(r-1,c).each { |t| table << ((t << 1) + 0) }

all_orders(r,c-1).each { |t| table << ((t << 1) + 1) }

table

end

=begin

if row <= 0 ||

col <= 0 ||

row * col != result.size ||

2 ** (Math.log(row)/Math.log(2)).to_i != row ||

2 ** (Math.log(col)/Math.log(2)).to_i != col

raise “Error: Parameters are not correct.”

end

=end

r = Integer(Math.log(row) / Math.log(2))

c = Integer(Math.log(col) / Math.log(2))

all_rc_orders = all_orders(r,c)

count = 0

row.times do |tb_operation|

col.times do |lr_operation|

all_rc_orders.each do |order|

operations = ‘’

tb_op = tb_operation

lr_op = lr_operation

(r+c).times do

if (order & 1 == 0)

operations += (tb_op & 1 == 0) ? ‘T’ : ‘B’

tb_op >>= 1

else

operations += (lr_op & 1 == 0) ? ‘L’ : ‘R’

lr_op >>= 1

end

order >>= 1

end

puts operations

count += 1

# return operations if fold(row, col, operations) == result

end

end

end

p count

end

check_fold(4,4, nil)

#==================================#

The output:

TTLL

TLTL

TLLT

LTTL

LTLT

LLTT

TTRL

TRTL

TRLT

RTTL

RTLT

RLTT

TTLR

TLTR

TLRT

LTTR

LTRT

LRTT

TTRR

TRTR

TRRT

RTTR

RTRT

RRTT

BTLL

BLTL

BLLT

LBTL

LBLT

LLBT

BTRL

BRTL

BRLT

RBTL

RBLT

RLBT

BTLR

BLTR

BLRT

LBTR

LBRT

LRBT

BTRR

BRTR

BRRT

RBTR

RBRT

RRBT

TBLL

TLBL

TLLB

LTBL

LTLB

LLTB

TBRL

TRBL

TRLB

RTBL

RTLB

RLTB

TBLR

TLBR

TLRB

LTBR

LTRB

LRTB

TBRR

TRBR

TRRB

RTBR

RTRB

RRTB

BBLL

BLBL

BLLB

LBBL

LBLB

LLBB

BBRL

BRBL

BRLB

RBBL

RBLB

RLBB

BBLR

BLBR

BLRB

LBBR

LBRB

LRBB

BBRR

BRBR

BRRB

RBBR

RBRB

RRBB

96