方眼紙に数値を0からN字に並べた場合のX番目、Y番目の
値を求める式を考えています。何か法則がありそうです
がまだ、見つけることが出来ません。
┼─┼─┼─┼─┼─┼─┼─┼─┼
│21│23│29│31│53│55│61│63│
┼─┼─┼─┼─┼─┼─┼─┼─┼
│20│22│28│30│52│54│60│62│
┼─┼─┼─┼─┼─┼─┼─┼─┼
│17│19│25│27│49│51│57│59│
┼─┼─┼─┼─┼─┼─┼─┼─┼
│16│18│24│26│48│50│56│58│
┼─┼─┼─┼─┼─┼─┼─┼─┼
│5 │7 │13│15│37│39│45│47│
┼─┼─┼─┼─┼─┼─┼─┼─┼
│4 │6 │12│14│36│38│44│46│
┼─┼─┼─┼─┼─┼─┼─┼─┼
│1 │3 │9 │11│33│35│41│43│
┼─┼─┼─┼─┼─┼─┼─┼─┼
│0 │2 │8 │10│32│34│40│42│
┼─┼─┼─┼─┼─┼─┼─┼─┼
誰がお分かりでしたら、お教え願いたいのですが・・・
Ans=(X,Y)として
0=(1,1)
8=(3,1)
38=(6,3)
63=(8,8)
以上、よろしくお願い致します。m(__)m
No.1
- 回答日時:
x,y>1のとき、(x,y)=(x,1)+(1,Y)
(x,1)=(1,x)*2
(1,y)=(1,y-1)+1 Yが偶数
(1,y)=(y,1)*2 Yが奇数
では?
No.3
- 回答日時:
例えば8×8の魔方陣であれば、
8×8の升目を書いて、4×4の升目のブロックで対角線を引いて、その対角線上の数字をとばして、数字を埋めて行きます。
┏━┳━┳━┳━┳━┳━┳━┳━┓
┃\┃2┃3┃/┃\┃6┃7┃/┃
┣━╋━╋━╋━╋━╋━╋━╋━┫
┃9┃\┃/┃12┃13┃\┃/┃16┃
┣━╋━╋━╋━╋━╋━╋━╋━┫
┃17┃/┃\┃20┃21┃/┃\┃24┃
┣━╋━╋━╋━╋━╋━╋━╋━┫
┃/┃26┃27┃\┃/┃30┃31┃\┃
┣━╋━╋━╋━╋━╋━╋━╋━┫
┃\┃34┃35┃/┃\┃38┃39┃/┃
┣━╋━╋━╋━╋━╋━╋━╋━┫
┃41┃\┃/┃44┃45┃\┃/┃48┃
┣━╋━╋━╋━╋━╋━╋━╋━┫
┃49┃/┃\┃52┃53┃/┃\┃56┃
┣━╋━╋━╋━╋━╋━╋━╋━┫
┃/┃58┃59┃\┃/┃62┃63┃\┃
┗━┻━┻━┻━┻━┻━┻━┻━┛
上記の様に埋め終わったら、対角線上に埋められなかった数字を逆から埋めていきます。
┏━┳━┳━┳━┳━┳━┳━┳━┓
┃64┃2┃3┃61┃60┃6┃7┃57┃
┣━╋━╋━╋━╋━╋━╋━╋━┫
┃9┃55┃54┃12┃13┃51┃50┃16┃
┣━╋━╋━╋━╋━╋━╋━╋━┫
┃17┃47┃46┃20┃21┃43┃42┃24┃
┣━╋━╋━╋━╋━╋━╋━╋━┫
┃40┃26┃27┃37┃36┃30┃31┃33┃
┣━╋━╋━╋━╋━╋━╋━╋━┫
┃32┃34┃35┃29┃28┃38┃39┃25┃
┣━╋━╋━╋━╋━╋━╋━╋━┫
┃41┃23┃22┃44┃45┃19┃18┃48┃
┣━╋━╋━╋━╋━╋━╋━╋━┫
┃49┃15┃14┃52┃53┃11┃10┃56┃
┣━╋━╋━╋━╋━╋━╋━╋━┫
┃8┃58┃59┃5┃4┃62┃63┃1┃
┗━┻━┻━┻━┻━┻━┻━┻━┛
これで魔方陣の完成です。
魔方陣であれば、この表の様に縦横斜めどこの合計も等しいです。
では、本題に入りましょう。
左下からスタートし上へいって、右下へ斜めに上と
N字に進むルールになっています。
このルールに従って数字を順番に埋めているだけです。
No.4
- 回答日時:
No.3で回答を書き忘れました。
XとYを使ってAnsの値を求めれば良いのですね。
Ans=(X,Y)=int(X/4)*32+int(Y/4)*16+int(X/2)*8+int(Y/2)*4
でいかがですか。
int(xxx)はxxxが小数であっても小数点以下を切り捨てという意味に取ってください。
No.6
- 回答日時:
Ans=(X,Y)
=(X-1)*2+int((X-1)/2)*4+int((X-1)/4)*16+Y-1+int((Y-1)/2)*2+int((Y-1)/4)*8
=X*2-2+int((X-1)/2)*4+int((X-1)/4)*16+Y-1+int((Y-1)/2)*2+int((Y-1)/4)*8
=X*2+int((X-1)/2)*4+int((X-1)/4)*16+Y+int((Y-1)/2)*2+int((Y-1)/4)*8-3
もう少し、簡単になるかなぁ。
No.7ベストアンサー
- 回答日時:
intでは数学っぽく無いのでガウス記号[]を使いますね。
Ans=(X,Y)=X*2+[(X-1)/2]*4+[(X-1)/4]*16+Y+[(Y-1)/2]*2+[(Y-1)/4]*8-3
この回答への補足
こんな感じでいけました。
llAns = 0;
/* X方向計算 */
llAns = Xpos * 2;
for (i = 1;; i++){
llong llWork;
llWork = (long)(Xpos - 1) / (long)pow(2, i) * 2 * (long)pow(2, i * 2);
if (llWork > 0){
llAns += llWork;
}
else{
break;
}
}
/* Y方向計算 */
llAns += Ypos;
for (i = 1;; i++){
llong llWork;
llWork = (long)((Ypos - 1) / (long)pow(2, i)) * 2 * (long)pow(2, i * 2 - 1);
if (llWork > 0){
llAns += llWork;
}
else{
break;
}
}
llAns -= 3;
上記の関数を作ったところ、うまくいけました。
実はまだ書ききれなかったため省略していたのですが、
85 87 93 95 117 119 125 127 213 215 221 223 245 247 253 255
84 86 92 94 116 118 124 126 212 214 220 222 244 246 252 254
81 83 89 91 113 115 121 123 209 211 217 219 241 243 249 251
80 82 88 90 112 114 120 122 208 210 216 218 240 242 248 250
69 71 77 79 101 103 109 111 197 199 205 207 229 231 237 239
68 70 76 78 100 102 108 110 196 198 204 206 228 230 236 238
65 67 73 75 97 99 105 107 193 195 201 203 225 227 233 235
64 66 72 74 96 98 104 106 192 194 200 202 224 226 232 234
21 23 29 31 53 55 61 63 149 151 157 159 181 183 189 191
20 22 28 30 52 54 60 62 148 150 156 158 180 182 188 190
17 19 25 27 49 51 57 59 145 147 153 155 177 179 185 187
16 18 24 26 48 50 56 58 144 146 152 154 176 178 184 186
5 7 13 15 37 39 45 47 133 135 141 143 165 167 173 175
4 6 12 14 36 38 44 46 132 134 140 142 164 166 172 174
1 3 9 11 33 35 41 43 129 131 137 139 161 163 169 171
0 2 8 10 32 34 40 42 128 130 136 138 160 162 168 170
っていう感じで、最大X=40000、Y=40000ぐらいまで
計算する必要があります。
多分、乗数で計算する必要があると思いますが、ちょっと
これを参考に考えて見ます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) SUMIF関数について 4 2023/06/14 13:13
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
- 工学 【数字、数値の読み方のルールを教えてください】0(ゼロ)のことを「ころ」と言ったり、「ま 6 2022/12/21 18:21
- Excel(エクセル) Excel 値を返す数式についてです 3 2022/11/21 20:08
- 数学 時々、回答者の見識に疑念を抱いてしまうんです。私だって本当は皆様のことを疑いたくはありません。しかし 2 2022/11/27 12:23
- 大学受験 合同式 1 2022/09/03 12:37
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/02/10 11:41
- Excel(エクセル) Excel 条件付き書式について 1 2022/12/14 20:38
- Excel(エクセル) countif関数について質問 4 2022/06/14 12:11
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
連立方程式の問題です 去年の新...
-
2÷3などの余りについて
-
マイナスからプラスへ転じた時...
-
連立方程式の問題です 去年の新...
-
エクセルで可視セルにのみ値貼...
-
「Aに対するBの割合」と「Aに対...
-
信頼区間の1.96や1.65ってどこ...
-
lim{x→0} cos(1/x)...
-
値差の%計算方法について
-
大学数学の問題です。 加法群Z/...
-
Excelで1つしかない値だけを抽...
-
変数とパラメータとは違うもの...
-
数学 確率変数Xは、X=2またはX...
-
c言語 行列のn階乗のプログラム
-
ある商品のロス率を5%見込み、...
-
グラフ上の3点から近似式を出...
-
5の-2/3(マイナス3分の2)乗と...
-
二次関数と関数の違いは何ですか?
-
四分位偏差は答えは少数で表す...
-
Wavelet解析におけるGaborのマ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マイナスからプラスへ転じた時...
-
2÷3などの余りについて
-
信頼区間の1.96や1.65ってどこ...
-
Aの値からBの値を除するとは??
-
エクセルで可視セルにのみ値貼...
-
変数とパラメータとは違うもの...
-
ある商品のロス率を5%見込み、...
-
値差の%計算方法について
-
エックスの値は5cmですか?
-
a^2の√=a が成り立たない場合
-
Excelで1つしかない値だけを抽...
-
20'(角度)の計算がわかりま...
-
「an=(n-1)/(n+1)のときlim[n→∞...
-
EXCELの分散分析表のP-値が....
-
「Aに対するBの割合」と「Aに対...
-
10%引いた元の数字を出すには?
-
パーセントの出し方を教えて下さい
-
楕円の外周の計算方法
-
中学生で数学です。 √84nが自然...
-
教えてください。数学Bの二項分...
おすすめ情報