¥Ù¥ë¥¯¡¦¥«¥Ã¥Ä¥§
¿ô»ú¤òÆþ¤ì¤Æ¤ß¤ÆÅö¤Æ¤Ï¤Þ¤ë¤â¤Î¤¬4Ä̤ꡣ
¿§¤òÅö¤Æ¤Ï¤á¤Æ¤ß¤¿¤é¡¢3Ä̤ê¤ÏÉÔ²Äǽ¡£
»Ä¤ë1Ä̤ê¤Ë¤Ä¤¤¤Æ¤Î¿§¤ÎÅö¤Æ¤Ï¤áÊý¤¬2Ä̤ꡣ
Åú¤¨¤Ï2Ä̤ê¤Ë¤Ê¤ê¤Þ¤·¤¿¡£
º£Æü¤â¿²ÉÔ­¤Ê¤Î¤Ç¤â¤¦¿²¤Þ¤¹¡£
¡¡¡¡ 8·î25Æü¡ÊÌÚ¡Ë 0:43:50¡¡¡¡ ¡¡¡¡51776
¡Ö¿ô³Ø¡×¾®Î¹¹Ô
ÉÁ¤¤¤Æ¤ß¤ë¤·¤«¼ê¤Ï¤Ê¤¤¤Î¤«¡£
±ýÀ¸¤·¤Þ¤·¤¿¡£

¤¿¤Ö¤ó¡¢ºÇ¤â²¼¼ê¤Ê¥×¥í¥°¥é¥à¤Ç¤¹¡£
a=[]
a[1]=[[1,1],[2,2],[3,3],[4,4]]
a[2]=(1..4).to_a.permutation(2).to_a.permutation(4).to_a.select{|x|x[0][0]==2&&[x[0][0],x[1][0],x[2][0],x[3][0]].uniq.count==4&&[x[0][1],x[1][1],x[2][1],x[3][1]].uniq.count==4}.to_a
a[3]=(1..4).to_a.permutation(2).to_a.permutation(4).to_a.select{|x|x[0][0]==3&&[x[0][0],x[1][0],x[2][0],x[3][0]].uniq.count==4&&[x[0][1],x[1][1],x[2][1],x[3][1]].uniq.count==4}.to_a
a[4]=(1..4).to_a.permutation(2).to_a.permutation(4).to_a.select{|x|x[0][0]==4&&[x[0][0],x[1][0],x[2][0],x[3][0]].uniq.count==4&&[x[0][1],x[1][1],x[2][1],x[3][1]].uniq.count==4}.to_a

for i in (0..a[2].count-1)
for j in (0..a[3].count-1)
for k in (0..a[4].count-1)

if [a[1][0][1],a[2][i][0][1],a[3][j][0][1],a[4][k][0][1]].uniq.count==4 &&
[a[1][1][0],a[2][i][1][0],a[3][j][1][0],a[4][k][1][0]].uniq.count==4 &&
[a[1][1][1],a[2][i][1][1],a[3][j][1][1],a[4][k][1][1]].uniq.count==4 &&
[a[1][2][0],a[2][i][2][0],a[3][j][2][0],a[4][k][2][0]].uniq.count==4 &&
[a[1][2][1],a[2][i][2][1],a[3][j][2][1],a[4][k][2][1]].uniq.count==4 &&
[a[1][3][0],a[2][i][3][0],a[3][j][3][0],a[4][k][3][0]].uniq.count==4 &&
[a[1][3][1],a[2][i][3][1],a[3][j][3][1],a[4][k][3][1]].uniq.count==4 &&
(a[1]+a[2][i]+a[3][j]+a[4][k]).uniq.count==16
then
p ''
p a[1]
p a[2][i]
p a[3][j]
p a[4][k]
end
end
end
end

¤³¤Î¤Ê¤«¤Ç¡¢(a[1]+a[2][i]+a[3][j]+a[4][k]).uniq.count==16
¤ò¼ºÇ°¤·¤Æ¤¤¤Æ¡¢8Ä̤ê¤À¤ÈÌÕ¿®¤·¤Æ¤¤¤Þ¤·¤¿¡£

¡¡¡¡ 8·î25Æü¡ÊÌÚ¡Ë 13:34:00¡¡¡¡ ¡¡¡¡51777
¡Ö¿ô³Ø¡×¾®Î¹¹Ô
ÉÁ¤¤¤Æ¤ß¤ë¤·¤«¼ê¤Ï¤Ê¤¤¤Î¤«¡£
±ýÀ¸¤·¤Þ¤·¤¿¡£

¤¿¤Ö¤ó¡¢ºÇ¤â²¼¼ê¤Ê¥×¥í¥°¥é¥à¤Ç¤¹¡£
a=[]
a[1]=[[1,1],[2,2],[3,3],[4,4]]
a[2]=(1..4).to_a.permutation(2).to_a.permutation(4).to_a.select{|x|x[0][0]==2&&[x[0][0],x[1][0],x[2][0],x[3][0]].uniq.count==4&&[x[0][1],x[1][1],x[2][1],x[3][1]].uniq.count==4}.to_a
a[3]=(1..4).to_a.permutation(2).to_a.permutation(4).to_a.select{|x|x[0][0]==3&&[x[0][0],x[1][0],x[2][0],x[3][0]].uniq.count==4&&[x[0][1],x[1][1],x[2][1],x[3][1]].uniq.count==4}.to_a
a[4]=(1..4).to_a.permutation(2).to_a.permutation(4).to_a.select{|x|x[0][0]==4&&[x[0][0],x[1][0],x[2][0],x[3][0]].uniq.count==4&&[x[0][1],x[1][1],x[2][1],x[3][1]].uniq.count==4}.to_a

for i in (0..a[2].count-1)
for j in (0..a[3].count-1)
for k in (0..a[4].count-1)

if [a[1][0][1],a[2][i][0][1],a[3][j][0][1],a[4][k][0][1]].uniq.count==4 &&
[a[1][1][0],a[2][i][1][0],a[3][j][1][0],a[4][k][1][0]].uniq.count==4 &&
[a[1][1][1],a[2][i][1][1],a[3][j][1][1],a[4][k][1][1]].uniq.count==4 &&
[a[1][2][0],a[2][i][2][0],a[3][j][2][0],a[4][k][2][0]].uniq.count==4 &&
[a[1][2][1],a[2][i][2][1],a[3][j][2][1],a[4][k][2][1]].uniq.count==4 &&
[a[1][3][0],a[2][i][3][0],a[3][j][3][0],a[4][k][3][0]].uniq.count==4 &&
[a[1][3][1],a[2][i][3][1],a[3][j][3][1],a[4][k][3][1]].uniq.count==4 &&
(a[1]+a[2][i]+a[3][j]+a[4][k]).uniq.count==16
then
p ''
p a[1]
p a[2][i]
p a[3][j]
p a[4][k]
end
end
end
end

¤³¤Î¤Ê¤«¤Ç¡¢(a[1]+a[2][i]+a[3][j]+a[4][k]).uniq.count==16
¤ò¼ºÇ°¤·¤Æ¤¤¤Æ¡¢8Ä̤ê¤À¤ÈÌÕ¿®¤·¤Æ¤¤¤Þ¤·¤¿¡£

¡¡¡¡ 8·î25Æü¡ÊÌÚ¡Ë 13:34:00¡¡¡¡ ¡¡¡¡51778
¡Ö¿ô³Ø¡×¾®Î¹¹Ô
ÉÁ¤¤¤Æ¤ß¤ë¤·¤«¼ê¤Ï¤Ê¤¤¤Î¤«¡£
±ýÀ¸¤·¤Þ¤·¤¿¡£

¤¿¤Ö¤ó¡¢ºÇ¤â²¼¼ê¤Ê¥×¥í¥°¥é¥à¤Ç¤¹¡£
a=[]
a[1]=[[1,1],[2,2],[3,3],[4,4]]
a[2]=(1..4).to_a.permutation(2).to_a.permutation(4).to_a.select{|x|x[0][0]==2&&[x[0][0],x[1][0],x[2][0],x[3][0]].uniq.count==4&&[x[0][1],x[1][1],x[2][1],x[3][1]].uniq.count==4}.to_a
a[3]=(1..4).to_a.permutation(2).to_a.permutation(4).to_a.select{|x|x[0][0]==3&&[x[0][0],x[1][0],x[2][0],x[3][0]].uniq.count==4&&[x[0][1],x[1][1],x[2][1],x[3][1]].uniq.count==4}.to_a
a[4]=(1..4).to_a.permutation(2).to_a.permutation(4).to_a.select{|x|x[0][0]==4&&[x[0][0],x[1][0],x[2][0],x[3][0]].uniq.count==4&&[x[0][1],x[1][1],x[2][1],x[3][1]].uniq.count==4}.to_a

for i in (0..a[2].count-1)
for j in (0..a[3].count-1)
for k in (0..a[4].count-1)

if [a[1][0][1],a[2][i][0][1],a[3][j][0][1],a[4][k][0][1]].uniq.count==4 &&
[a[1][1][0],a[2][i][1][0],a[3][j][1][0],a[4][k][1][0]].uniq.count==4 &&
[a[1][1][1],a[2][i][1][1],a[3][j][1][1],a[4][k][1][1]].uniq.count==4 &&
[a[1][2][0],a[2][i][2][0],a[3][j][2][0],a[4][k][2][0]].uniq.count==4 &&
[a[1][2][1],a[2][i][2][1],a[3][j][2][1],a[4][k][2][1]].uniq.count==4 &&
[a[1][3][0],a[2][i][3][0],a[3][j][3][0],a[4][k][3][0]].uniq.count==4 &&
[a[1][3][1],a[2][i][3][1],a[3][j][3][1],a[4][k][3][1]].uniq.count==4 &&
(a[1]+a[2][i]+a[3][j]+a[4][k]).uniq.count==16
then
p ''
p a[1]
p a[2][i]
p a[3][j]
p a[4][k]
end
end
end
end

¤³¤Î¤Ê¤«¤Ç¡¢(a[1]+a[2][i]+a[3][j]+a[4][k]).uniq.count==16
¤ò¼ºÇ°¤·¤Æ¤¤¤Æ¡¢8Ä̤ê¤À¤ÈÌÕ¿®¤·¤Æ¤¤¤Þ¤·¤¿¡£

¡¡¡¡ 8·î25Æü¡ÊÌÚ¡Ë 13:34:01¡¡¡¡ ¡¡¡¡51779
¡Ö¿ô³Ø¡×¾®Î¹¹Ô
¤³¤Î¤´¤í¥Þ¥¦¥¹¤ÎÄ´»Ò¤¬ÊѤǡ¢¥ï¥ó¥¯¥ê¥Ã¥¯¤¬¥¹¥ê¡¼¥¯¥ê¥Ã¥¯¤Ë¤Ê¤Ã¤¿¤ß¤¿¤¤¤Ç¤¹¡£ÂçÊѤª¸«¶ì¤·¤¯¤¤¤³¤È¤Ë¤Ê¤ê¤Þ¤·¤¿¡£¿½¤·Ìõ¤´¤¶¤¤¤Þ¤»¤ó¡£
¡¡¡¡ 8·î25Æü¡ÊÌÚ¡Ë 14:29:14¡¡¡¡ ¡¡¡¡51780
¤Þ¤ë¥±¥ó
¥È¥é¥ó¥×¤Î£Á¡¢£²¡¤£³¡¤£´¤òʤ٤ƻî¹Ôºø¸í¡¢¡¢¡¢¤È»×¤Ã¤¿¤±¤É¥È¥é¥ó¥×¤¬¸«¤Ä¤«¤é¤º¡£
¾®¤µ¤Ê»æÊҤˣ´¿§¤Î¥Ú¥ó¤Ç¿ô»ú¤ò½ñ¤¤¤Æ»î¹Ôºø¸í¡£
¤â¤Ã¤È¤¢¤ê¤½¤¦¤Ê¤Î¤Ë£²Ä̤ꤷ¤«¤Ê¤¤¤Î¤Ã¤Æ¡¢¤Á¤ç¤Ã¤È¤·¤¿¶Ã¤­¤Ç¤·¤¿¡£

¶½Ì£Ë̤ܰǰìÈ̲½¡£
£±¿§£±Ëç¤Î¾ì¹ç¤Ï¤½¤ì¤òÃÖ¤¯¤À¤±¤Ê¤Î¤Ç£±Ä̤ꡣ
£²¿§¤À¤È²ò¤Ê¤·¡£
£³¿§¤À¤È£±Ä̤ꡣ
¤Çº£²ó¤Î£´¿§¤Ï£²Ä̤ꡣ
ruby¤Ç¸¡»»¤·¤Î¤ò²þ¤¤·¤Æ¡¢¤µ¤é¤ËÂ礭¤Ê¿ô¤Ç¡£
£µ¿§¤Ï£±£¸Ä̤ꡣ
£¶¿§¤Ï²ò¤Ê¤·¡£
£·¿§¤Ï²ò¡¢¡¢¡¢¤¢¤ë¤Î¤Ç¤¹¤¬¡¢¤Þ¤À¿ô¤¨ÀÚ¤ì¤Æ¤¤¤Þ¤»¤ó¡£

¥Þ¥µ¥ë¤µ¤ó¤Î¿ôÃÍÀßÄê¡¢ÁêÊѤï¤é¤ºÀä̯¤Ç¤¹¤Í¡£
£µ¿§£²£µËç¤À¤Ã¤¿¤é¤ª¼ê¾å¤²¤Ç¤·¤¿¡£
¡¡¡¡ 8·î26Æü¡Ê¶â¡Ë 19:09:57¡¡¡¡ MAIL:take4310@mobile.email.ne.jp ¡¡¡¡51781
¤Þ¤ë¥±¥ó
¤·¤é¤ß¤Ä¤Ö¤·¤Ê¥¢¥ë¥´¥ê¥º¥à¤À¤È¡¢°ìÈÕ¤«¤±¤Æ¤â¿ô¤¨ÀÚ¤ì¤Æ¤¤¤Þ¤»¤ó¤Ç¤·¤¿¡£
¤È¤ê¤¢¤¨¤º1000Ä̤ê°Ê¾å¤Ï¤¢¤ë¤³¤È¤À¤±¤´Êó¹ð¤¤¤¿¤·¤Þ¤¹¡£
¡¡¡¡ 8·î27Æü¡ÊÅÚ¡Ë 7:42:48¡¡¡¡ MAIL:take4310@mobile.email.ne.jp ¡¡¡¡51782
¤¤¤Á¤´¤ß¤ë¤¯
²¿²ó¹Í¤¨¤Æ¤â6912¤Ë¤Ê¤ë¤È»×¤Ã¤¿¤é¾ò·ï£µ¡¤£¶¤¬¤¢¤ê¤Þ¤·¤¿¡£¡£
¡¡¡¡ 9·î1Æü¡ÊÌÚ¡Ë 0:29:33¡¡¡¡ ¡¡¡¡51783
¤Þ¤ë¥±¥ó
#51783
½ÐÂê´ü´Ö¤¬±äŤ·¤¿¤Î¤Ç¡¢¥ë¡¼¥ë£µ¡¢¥ë¡¼¥ë£¶¤ò³°¤·¤¿ÌäÂê¤ò¹Í¤¨¤Æ¤¤¤Þ¤·¤¿¡£
º£²ó¤ÎÀµ²ò¤ò¥Ù¡¼¥¹¤ËµÕ»»¤¹¤ë¤È¡¢
¥ë¡¼¥ë£µ¤Î¤¦¤Á¡¢¿§¤Î¾ò·ï¤ò³°¤¹¤È£²£´ÇÜ¡¢
¿ô»ú¤ÎʤӤξò·ï¤â³°¤¹¤È¤µ¤é¤Ë£²£´ÇÜ¡¢
¥ë¡¼¥ë£¶¡¢½Ä¤Î£±ÎóÌܤοô»ú¡Ê£±¹ÔÌܤò½ü¤¤¤¿£³¤Ä¡Ë¤Î½çÈÖ¤òÊѤ¨¤Æ¤µ¤é¤Ë£¶ÇÜ¡£
£²¡ß£²£´¡ß£²£´¡ß£¶¤ÇƱ¤¸Åú¤¨¤¬½Ð¤Þ¤·¤¿¡£
¡¡¡¡ 9·î2Æü¡Ê¶â¡Ë 18:00:43¡¡¡¡ MAIL:take4310@mobile.email.ne.jp ¡¡¡¡51784
¤¦¤í¤ó
4¿Êˡɽ¼¨¤Ç00¡Á33¤ò»È¤Ã¤ÆËâÊý¿Ø¤ò¤Ä¤¯¤ë

¥ë¡¼¥ë¤è¤ê¡¢³Æ¹Ô¡¢Îó¤Ë¤Ï°ì¤Î°Ì¤È»Í¤Î°Ì¤Ë
0¡Á3¤Þ¤Ç¤Î¿ô»ú¤¬ÃúÅÙ1¤Ä¤º¤ÄÆþ¤ë

00 11 22 33
x1
x2
x3
¤Þ¤Ç³ÎÄê

º¸¤ÎÎó¤Ï2Ä̤ꤷ¤«¤Ê¤¤¤³¤È¤Ï¤¹¤°¤Ë¤ï¤«¤ë¤Î¤Ç¡¢
¤½¤ì¤¾¤ì¤Î¾ì¹ç¤ò¹Í¤¨¤ë

00 11 22 33
21 £Á
32
13

£Á¤ò´Þ¤à¹Ô¤Ë¤Ä¤¤¤Æ¹Í¤¨¤ë

°ì¤Î°Ì¤¬3¤Ç¤¢¤ë¿ô¤Ï13¤È33¤¬»È¤ï¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢
03¤È23¤·¤«¤Ê¤¯¡¢Æ±¤¸¹Ô¤Ë21¤ò´Þ¤à¤Î¤Ç¡¢03¤·¤«¤Ê¤¤

ƱÍͤˡ¢°ì¤Î°Ì¤¬2¤Ç¤¢¤ë¿ô¤Ï02¤È12¤·¤«¤Ê¤¯¡¢
Ʊ¤¸¹Ô¤Ë03¤ò´Þ¤à¤³¤È¤«¤é¡¢12¤È·è¤Þ¤ë

¤è¤Ã¤Æ¡¢»Ä¤ê¤Î1¤Ä¤Ï30¤Ç¤¢¤ë

¼¡¤Ë¡¢£Á¤ò´Þ¤àÎó¤Ë¤Ä¤¤¤Æ¤âƱÍͤ˹ͤ¨¤ë¤È¡¢
02¡¢23¡¢30¤ò´Þ¤à¤³¤È¤¬¤ï¤«¤ë

¤³¤ì¤è¤ê¡¢£Á¤¬30¤È·è¤Þ¤ê¡¢
¤³¤³¤«¤é1Ä̤ê¤ËÄê¤Þ¤ë¤³¤È¤ÏÆñ¤·¤¯¤Ê¤¤

00 11 22 33
31
12
23
¤Ë¤Ä¤¤¤Æ¤âƱÍÍ

°Ê¾å¤è¤ê¡¢2Ä̤ê

¤Ê¤É¤È¹Í¤¨¤Æ¤ß¤¿¤â¤Î¤Î¡¢
Æä˴Êñ¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤ï¤±¤Ç¤â¤Ê¤¯¡£¡£¡£
¡¡¡¡ 9·î4Æü¡ÊÆü¡Ë 19:52:48¡¡¡¡ ¡¡¡¡51785
¡Ö¿ô³Ø¡×¾®Î¹¹Ô
°ÊÁ°¤Ë¤â¡¢¥Ê¥ó¥×¥ì¤Î²ò¤òµá¤á¤ë¥×¥í¥°¥é¥à¤òºî¤Ã¤¿¤Î¤Ç¤¹¤¬¡¢ºÆ¹Í¤·¤Þ¤·¤¿¡£

$n=9
$n2=$n**2
$a=[0,2,0,0,0,0,0,7,0,
¡¡¡¡1,9,0,5,0,7,0,3,8,
¡¡¡¡3,0,0,0,6,0,0,0,1,
¡¡¡¡0,8,0,3,0,9,0,2,0,
¡¡¡¡0,0,0,0,0,0,0,0,0,
¡¡¡¡0,4,0,0,0,0,0,6,0,
¡¡¡¡0,5,0,1,8,3,0,9,0,
¡¡¡¡0,0,0,0,0,0,0,0,0,
¡¡¡¡7,0,8,0,0,0,4,0,5]¡¡#ÌäÂê¤Ç¡¢¿ô»ú¤¬Æþ¤Ã¤Æ¤¤¤Ê¤¤¤È¤³¤í¤Ï£°¤Ë¤·¤Þ¤¹¡£

def s(k)
¡¡r=(k/3%3)*3+(k/9/3)*27
¡¡if k<$n2 then
¡¡¡¡if $a[k]==0 then
¡¡¡¡¡¡for m in 1..$n
¡¡¡¡¡¡¡¡t=false
¡¡¡¡¡¡¡¡t=t||(m==$a[r])||(m==$a[r+1])||(m==$a[r+2])||(m==$a[r+9])||(m==$a[r+10])||
¡¡¡¡¡¡¡¡(m==$a[r+11])||(m==$a[r+18])||(m==$a[r+19])||(m==$a[r+20])
¡¡¡¡¡¡¡¡if !t then
¡¡¡¡¡¡¡¡¡¡for i in (0..$n-1)
¡¡¡¡¡¡¡¡¡¡¡¡t=t||(m==$a[k/$n*$n+i])||(m==$a[i*$n+k%$n])
¡¡¡¡¡¡¡¡¡¡end
¡¡¡¡¡¡¡¡end
¡¡¡¡¡¡¡¡if !t then
¡¡¡¡¡¡¡¡¡¡$a[k]=m;s(k+1);$a[k]=0
¡¡¡¡¡¡¡¡end
¡¡¡¡¡¡end
¡¡¡¡else
¡¡¡¡¡¡s(k+1)
¡¡¡¡end
¡¡else
¡¡¡¡p $a
¡¡end
end

#ºÆµ¢¸Æ¤Ó½Ð¤·¤Ç²ò¤¬¸«¤Ä¤«¤Ã¤¿¤é½ÐÎϤ·¤Þ¤¹¡£
s(0)
¡¡¡¡ 9·î5Æü¡Ê·î¡Ë 9:51:16¡¡¡¡ ¡¡¡¡51786
¡Ö¿ô³Ø¡×¾®Î¹¹Ô
¥ë¡¼¥ë£µ¡¤£¶¤¬¤Ê¤«¤Ã¤¿¤é¡¢¤Ç¡¢
29¹ÔÌܤΥ¢¥É¥ì¥¹ÅϤ·Âкö¤¬´Î¤Ç¤·¤¿¡£

$n=4
$n2=$n**2
a=Array.new($n**2,0)
b=Array.new($n**2,0)#½é´ü¾ò·ï¤ò¤Ê¤·¤Ë¤·¤¿¤â¤Î
as=Array.new()
bs=Array.new()

def e(h,k,m) #kÈÖÌܤËm¤òÆþ¤ì¤é¤ì¤ë¤«¡£True or False
t=false
for i in (0..$n-1)
t=t||(m==h[k/$n*$n+i])
t=t||(m==h[i*$n+k%$n])
end
t
end

def s(h,k,l)
if k<$n2 then
if h[k]==0 then
for m in 1..$n
if !e(h,k,m) then
h[k]=m;s(h,k+1,l);h[k]=0
end
end
else
s(h,k+1,l)
end
else
buf=h.map{|x|x}#¥¢¥É¥ì¥¹ÅϤ·Âкö
l.push(buf)
$c+=1
end
end

ti=Time.now
$c=0#¿ô¤ÎÆþ¤ìÊý¤¹¤Ù¤Æ¤òas¤ËÊݸ
s(a,0,as)
ac=$c

$c=0#¿§¤ÎÉÕ¤±Êý¤¹¤Ù¤Æ¤òbs¤ËÊݸ
s(b,0,bs)
bc=$c

$c=0
for i in 0..ac-1#¿§¤ÈÈÖ¹æ¤Î¥»¥Ã¥È¤¬¤¹¤Ù¤Æ°Û¤Ê¤ë¤â¤Î¤ò¿ô¤¨¤ë
for j in 0..bc-1
if [as[i],bs[j]].transpose.uniq.count==$n2 then
$c+=1
end
end
end

p $c
p Time.now-ti
¡¡¡¡ 9·î5Æü¡Ê·î¡Ë 16:08:38¡¡¡¡ ¡¡¡¡51787