BookmarkSubscribeRSS Feed
Ksharp
Super User

I thought a puzzle from a post of IML . Just have a fun .

Suppose we have a 3*2 matrix

x11 x12

x21 x22

x31 x32

They are all positive integer (i.e.  1 2 3 4.....). If we know its column total and row total. How many matrix are there ,could be satisfied with this condition?

                                 col_total

                 x11 x12      5

                 x21 x22      5

                 x31 x32      7

row_total      8      9

Xia Keshan

5 REPLIES 5
Ksharp
Super User

Nobody ? Actually it is easy just brute enumerate (greedy algorithm) .  it is 15 .

data _null_;
do x11=1 to 5 ;
 do x12=1 to  5 ;
  do x21=1 to 5 ;
   do x22=1 to  5 ;
     do x31=1 to  7 ;
        do x32=1 to  7 ;
         if x11+x12=5 and
             x21+x22=5 and
             x31+x32=7 and
             x11+x21+x31=8 and
             x12+x22+x32=9 then do; n+1;
             put _all_ /;     end;
       end;
     end;
   end;
  end;
 end;
end;
run;








x11=1 x12=4 x21=1 x22=4 x31=6 x32=1 n=1 _ERROR_=0 _N_=1

x11=1 x12=4 x21=2 x22=3 x31=5 x32=2 n=2 _ERROR_=0 _N_=1

x11=1 x12=4 x21=3 x22=2 x31=4 x32=3 n=3 _ERROR_=0 _N_=1

x11=1 x12=4 x21=4 x22=1 x31=3 x32=4 n=4 _ERROR_=0 _N_=1

x11=2 x12=3 x21=1 x22=4 x31=5 x32=2 n=5 _ERROR_=0 _N_=1

x11=2 x12=3 x21=2 x22=3 x31=4 x32=3 n=6 _ERROR_=0 _N_=1

x11=2 x12=3 x21=3 x22=2 x31=3 x32=4 n=7 _ERROR_=0 _N_=1

x11=2 x12=3 x21=4 x22=1 x31=2 x32=5 n=8 _ERROR_=0 _N_=1

x11=3 x12=2 x21=1 x22=4 x31=4 x32=3 n=9 _ERROR_=0 _N_=1

x11=3 x12=2 x21=2 x22=3 x31=3 x32=4 n=10 _ERROR_=0 _N_=1

x11=3 x12=2 x21=3 x22=2 x31=2 x32=5 n=11 _ERROR_=0 _N_=1

x11=3 x12=2 x21=4 x22=1 x31=1 x32=6 n=12 _ERROR_=0 _N_=1

x11=4 x12=1 x21=1 x22=4 x31=3 x32=4 n=13 _ERROR_=0 _N_=1

x11=4 x12=1 x21=2 x22=3 x31=2 x32=5 n=14 _ERROR_=0 _N_=1

x11=4 x12=1 x21=3 x22=2 x31=1 x32=6 n=15 _ERROR_=0 _N_=1

Xia Keshan

Haikuo
Onyx | Level 15

It is 15. I like to break them up first.

data h1;

     do x11=1 to 4;

           x12=5-x11;

           output;

     end;

run;

data h2;

     do x21=1 to 4;

           x22=5-x21;

           output;

     end;

run;

data h3;

     do x31=1 to 6;

           x32=7-x31;

           output;

     end;

run;

proc sql;

     create table w1 as 

           select * from h1, h2, h3

                where x11+x21+x31=8 and x12+x22+x32=9;

quit;

Haikuo

PGStats
Opal | Level 21

If you have a SAS/OR licence, this puzzle can be solved as a constraint satisfaction problem with proc CLP :

data lincon;

_TYPE_ = "EQ";

input x11 x12 x21 x22 x31 x32 _RHS_;

datalines;

1 1 . . . . 5

. . 1 1 . . 5

. . . . 1 1 7

1 . 1 . 1 . 8

. 1 . 1 . 1 9

;

proc CLP condata=lincon USECONDATAVARS=1  domain=[1,10] findall out=soln;

run;

proc print data=soln; run;

PG

PG
Ksharp
Super User

Hi PG,

I can't believe you still response this one posted at a couple of weeks ago .

Actually it is from SAS/IML  . I posted here for a fun.

Best.

Xia Keshan

user24feb
Barite | Level 11

I have an additional solution and a question:

Proc Optmodel;

  Set Rows=1..3;

  Set Columns=1..2;

  Num Row_Sum{Rows}=[5 5 7];

  Num Col_Sum{Columns}=[8 9];

  Var x {i in Rows, j in Columns} >=0 Integer;

  Max z=0;

  Con Cons1{i in Rows}: Sum {j in Columns} x[i,j]=Row_Sum;

  Con Cons2{j in Columns}: Sum {i in Rows} x[i,j]=Col_Sum;

  Solve;

  Print x;

Quit;

The question is: Optmodel with a zero-objective in comparison to constraint programming; is there a significant performance difference if one "abuses" optmodel to solve linear constraint programmes (IF 1 solution is enough)?

sas-innovate-2024.png

Available on demand!

Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.

 

Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 5 replies
  • 1022 views
  • 0 likes
  • 4 in conversation