質問の魔方陣をプログラムで解いてみました。(^_^;
解の数が多いので、リダイレクト「>」で、出力先をファイルにしました。
●MagicCircle.c
/* * MagicCircle.c * p * [0] * * [1][2][3] * [4] [5] * [6] [7] [8] * */ #include <stdio.h> #include <time.h> // 参考URLの順列生成プログラムの main を #if 0 〜 #endif で無効化して_genperm.c に改名したソース #include "_genperm.c" void disp(int c, int *p) // 表示 { printf("[%3d]\n",c); printf(" %3d \n",p[0]); printf("\n"); printf(" %3d%3d%3d \n",p[1],p[2],p[3]); printf(" %3d%3d \n",p[4],p[5]); printf("%3d %3d %3d \n",p[6],p[7],p[8]); printf("\n"); } int main(void) { int p[]={ 1, 2, 3, 4, 5, 6, 7, 8, 9}; // 順列生成用 int cnt=0; clock_t tm; tm=clock(); // Timer Start do{ if(p[0]+p[1]+p[4]+p[5]+p[3]!=25) continue; if(p[6]+p[1]+p[2]+p[5]+p[7]!=25) continue; if(p[8]+p[3]+p[2]+p[4]+p[7]!=25) continue; // チェックを潜り抜けたものだけを出力 cnt++; disp(cnt,p); //break; }while (next_perm(p,9,9)); tm=clock()-tm; // Timer Stop printf("Runtime : %.3f [sec]\n",(double)tm/CLOCKS_PER_SEC); return(0); }
●実行結果
[ 1] 1 3 2 6 8 7 9 4 5 [ 2] 1 3 2 8 6 7 9 4 5 …(省略)… [288] 9 7 8 4 2 3 1 6 5 Runtime : 0.031 [sec]
※参考URL
http://d.hatena.ne.jp/rsc96074/20110512/1305199735
●よしいずの雑記帳 再帰呼び出しを使わずに順列や組合せを得るC言語プログラム (2)
●魔方陣パズル - rscの日記
●4次の魔方陣プログラム - C言語 - rscの日記
●数的推理の魔方陣の問題をJavaで解いてみた。 - rscの日記
●数的推理の魔方陣の問題をPythonで解いてみた。 - rscの日記
- 作者: 柴田望洋
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2004/08/30
- メディア: 単行本
- 購入: 17人 クリック: 184回
- この商品を含むブログ (42件) を見る
●苦しんで覚えるC言語 MMGames (著)
- 作者: MMGames
- 出版社/メーカー: 秀和システム
- 発売日: 2011/06/24
- メディア: 単行本
- 購入: 3人 クリック: 600回
- この商品を含むブログ (16件) を見る
●新C言語入門 ビギナー編 (C言語実用マスターシリーズ) 林 晴比古 (著)
- 作者: 林晴比古
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2003/12
- メディア: 単行本
- 購入: 3人 クリック: 19回
- この商品を含むブログ (18件) を見る
●わかりやすいC 入門編 川場 隆 (著)
- 作者: 川場隆
- 出版社/メーカー: 秀和システム
- 発売日: 2011/09/29
- メディア: 単行本
- クリック: 2回
- この商品を含むブログ (4件) を見る
●プログラムを作ろう!C言語入門―はじめてでも楽しく学べる! 古金谷 博 (著)
- 作者: 古金谷博
- 出版社/メーカー: 日経BP社
- 発売日: 2008/11/06
- メディア: 単行本
- この商品を含むブログを見る