マルチスレッド版数独自動生成ソフトC++コードを題材とする超初心者のためのVisual Studio C++講義
第8章 ポインタの学習

第19話 4 * n 型 と 4 * n + 2 型統合版

#include<iostream>//インクルードファイルiostreamの読み込み


#include<conio.h>//while(!_kbhit());を使うためのお呪い


#include<string> //文字列変数を使えるようにするために組み込む


#include <iomanip> //setprecisionを使えるように組み込む


#include <cmath>//powなどを使うときに必要


#include <ctime>//time()(←現時刻発生する関数)を使うために必要


using namespace std;//coutを使うときに必要なお呪い


const int n = 4;//具体的な数字を使うのではなく、 n を使うと汎用性のあるプログラムになる!


//部長の任務は社長の仕事の一部を引き受け、


//社員(部の社員)に仕事を命令することです。


void 部長(int(*a)[n]);


void 課長1(int(*a)[n]);//自然配列担当社員と表示担当社員の統率を担当


void 課長2(int(*a)[n]);//対角線部分交換社員fと表示担当職員の統率を担当


void 課長3(int(*a)[n]);//緑部分交換社員gと表示担当職員の統率を担当


void 課長4(int(*a)[n]);//明るい紫部分交換社員fと表示担当職員の統率を担当


void 自然配列担当社員(int(*a)[n]);


void 表示担当社員(int(*a)[n]);


void 交換係社員(int* x, int* y);


//fの任務は各対角線部分を点対称移動させることである
void f(int(*a)[n]);


//gの任務は緑の部分を上下線対称移動させることである
void g(int(*a)[n]);


//hの任務は明るい紫部分を左右線対称移動させることである
void h(int(*a)[n]);

int 検査(int(*a)[n]);//各合計が一致していなかったり数字の重複があるときに 0 を返す関数

int main() {//私は社長だ。


  int a[n][n]; // n 行分のポインタ配列を定義


  部長(a);//部長に統率を依頼 


  while (!_kbhit());//待機させるための命令


  return 0;//int main() を終わるためのお呪い


}



void 部長(int(*a)[n]) {


  課長1(a);//自然配列担当社員と表示担当社員の統率を担当


  課長2(a);//対角線部分交換社員fと表示担当職員の統率を担当


  課長3(a);//緑部分交換社員gと表示担当職員の統率を担当


  課長4(a);//明るい紫部分交換社員fと表示担当職員の統率を担当

  int k = 検査(a);

  if (k == 0) {

    cout << "異常あり" << endl;

  }
  else {

    cout << "すべて正常" << endl;

  }


}


void 課長1(int(*a)[n]) {


  自然配列担当社員(a);


  表示担当社員(a);


}


void 課長2(int(*a)[n]) {


  f(a);//対角線部分交換


  cout << endl;

 
  表示担当社員(a);


}


void 課長3(int(*a)[n]) {


  g(a);//緑部分交換


  cout << endl;


  表示担当社員(a);


}


void 課長4(int(*a)[n]) {


  h(a);//明るい紫部分交換


  cout << endl;


  表示担当社員(a);


}


void 自然配列担当社員(int(*a)[n]) {


  for (int i = 0; i < n; i++) {


    for (int j = 0; j < n; j++) {


      a[i][j] = n * i + j + 1;//自然配列を2次元配列に収納


    }


  }


}


void 表示担当社員(int(*a)[n]) {


  //自然配列を体裁を整えてコンソール画面に表示する
  for (int i = 0; i < n; i++) {


    for (int j = 0; j < n; j++) {


      if (n > 28) {


        if (a[i][j] < 1000)cout << " ";


      }


      if (a[i][j] < 100)cout << " ";


      if (a[i][j] < 10)cout << " ";


      cout << a[i][j] << " ";


    }


    cout << endl;


  }


}


void 交換係社員(int* x, int* y) {


  int u;//交換のための受け皿


  u = *x;//xから間接参照されるデータがyから間接参照されるデータに上書きされる前にuにxの間接参照されるデータを保存


  *x = *y;//yから間接参照されるデータでxから間接参照されるデータを上書きする


  *y = u;//xから間接参照される元データでyから間接参照されるデータを上書き


}


//fの任務は対角線部分を点対称移動させることである
void f(int(*a)[n]) {


  //対角線点対称移動
  for (int i = 0; i < n / 2; i++) {


    int x = a[i][i];


    int y = a[n - 1 - i][n - 1 - i];


    交換係社員(&x, &y);


    a[i][i] = x;


    a[n - 1 - i][n - 1 - i] = y;


  }
  //対角線点対称移動終了


  //逆対角線点対称移動
  for (int i = 0; i < n / 2; i++) {


    int x = a[i][n - 1 - i];


    int y = a[n - 1 - i][i];


    交換係社員(&x, &y);


    a[i][n - 1 - i] = x;


    a[n - 1 - i][i] = y;


  }
  //逆対角線点対称移動終了


}


void g(int(*a)[n]) {


  //緑の部分の第 1 列から第 n / 2 列までの上下交換開始
  if (n % 4 == 0) {

    for (int i = 1; i < n / 4; i++) {

      for (int j = 0; j < n / 2; j++) {


        int x = a[j][(2 * i + j) % (n / 2)];


        int y = a[n - 1 - j][(2 * i + j) % (n / 2)];


        交換係社員(&x, &y);


        a[j][(2 * i + j) % (n / 2)] = x;


        a[n - 1 - j][(2 * i + j) % (n / 2)] = y;


      }

    }

  }

  if (n % 4 == 2) {

    for (int i = 0; i < n / 2; i++) {

      for (int j = 0; j < n / 4; j++) {

        int x = a[i][(i + j + 1) % (n / 2)];

        int y = a[n - 1 - i][(i + j + 1) % (n / 2)];

        交換係社員(&x, &y);

        a[i][(i + j + 1) % (n / 2)] = x;

        a[n - 1 - i][(i + j + 1) % (n / 2)] = y;

      }

    }

  }
  //緑の部分の第 n / 2 列から第 n 列までの上下交換


  //緑の部分の第n / 2列から第 n 列までの上下交換開始
  if (n % 4 == 0) {

    for (int i = 1; i < n / 4; i++) {

      for (int j = 0; j < n / 2; j++) {


        int x = a[j][n - 1 - (2 * i + j) % (n / 2)];


        int y = a[n - 1 - j][n - 1 - (2 * i + j) % (n / 2)];


        交換係社員(&x, &y);


        a[j][n - 1 - (2 * i + j) % (n / 2)] = x;


        a[n - 1 - j][n - 1 - (2 * i + j) % (n / 2)] = y;


      }

    }
  }

  if (n % 4 == 2) {

    for (int i = 0; i < n / 2; i++) {

      for (int j = 1; j < n / 4; j++) {

        int x = a[i][n - 1 - (i + j + 1) % (n / 2)];

        int y = a[n - 1 - i][n - 1 - (i + j + 1) % (n / 2)];

        交換係社員(&x, &y);

        a[i][n - 1 - (i + j + 1) % (n / 2)] = x;

        a[n - 1 - i][n - 1 - (i + j + 1) % (n / 2)] = y;

      }

    }

  }
  //緑の部分の第 n / 2 列から第 n 列までの上下交換


}


//hの任務は明るい紫部分を線対称移動させることである
void h(int(*a)[n]) {


  //明るい紫の部分の第1行から第 n / 2 行までの左右交換開始
  if (n % 4 == 0) {

    for (int i = 1; i < n / 4; i++) {

      for (int j = 0; j < n / 2; j++) {


        int x = a[j][(2 * i + 1 + j) % (n / 2)];


        int y = a[j][n - 1 - ((2 * i + 1 + j) % (n / 2))];


        交換係社員(&x, &y);


        a[j][(2 * i + 1 + j) % (n / 2)] = x;


        a[j][n - 1 - ((2 * i + 1 + j) % (n / 2))] = y;


      }

    }

  }

  if (n % 4 == 2) {

    for (int i = 0; i < n / 2; i++) {

      for (int j = 0; j < n / 4; j++) {

        int x = a[i][((i + j + 1) + (n / 4)) % (n / 2)];

        int y = a[i][n - 1 - ((i + j + 1) + (n / 4)) % (n / 2)];

        交換係社員(&x, &y);

        a[i][((i + j + 1) + (n / 4)) % (n / 2)] = x;

        a[i][n - 1 - ((i + j + 1) + (n / 4)) % (n / 2)] = y;

      }

    }

  }
  //明るい紫の部分の第1行から第 n /2 行までの左右交換終了


  //明るい紫の部分の第n / 2行から第 n 行までの交換開始
  if (n % 4 == 0) {

    for (int i = 1; i < n / 4; i++) {

      for (int j = 0; j < n / 2; j++) {


        int x = a[n - 1 - j][(2 * i + 1 + j) % (n / 2)];


        int y = a[n - 1 - j][n - 1 - ((2 * i + 1 + j) % (n / 2))];


        交換係社員(&x, &y);


        a[n - 1 - j][(2 * i + 1 + j) % (n / 2)] = x;


        a[n - 1 - j][n - 1 - ((2 * i + 1 + j) % (n / 2))] = y;


      }

    }

  }

  if (n % 4 == 2) {

    for (int i = 0; i < n / 2; i++) {

      for (int j = 1; j < n / 4; j++) {

        int x = a[n - 1 - i][((i + j + 1) + (n / 4)) % (n / 2)];

        int y = a[n - 1 - i][n - 1 - ((i + j + 1) + (n / 4)) % (n / 2)];

        交換係社員(&x, &y);

        a[n - 1 - i][((i + j + 1) + (n / 4)) % (n / 2)] = x;

        a[n - 1 - i][n - 1 - ((i + j + 1) + (n / 4)) % (n / 2)] = y;

      }

    }

  }
  //明るい紫の部分の第n / 2行から第 n 行までの交換終了


}

int 検査(int(*a)[n]) {

  int 合計;

  int gk = 0;

  cout << endl;

  for (int i = 0; i < n; i++) {//1 + 2 + ・・・ + n * n を計算する

    for (int j = 0; j < n; j++) {

      gk = gk + n * i + j + 1;

    }

  }

  gk = gk / n;//nで割って魔方陣の行などの合計を計算

  for (int i = 0; i < n; i++) {//行合計を計算

    合計 = 0;// 0 に初期化

    for (int j = 0; j < n; j++) {

      合計 = 合計 + a[i][j];

    }

    cout << 合計 << " ";


    if (合計 != gk)return(0);

  }

  cout << endl;

  cout << endl;

  for (int i = 0; i < n; i++) {//列合計を計算

    合計 = 0;// 0 に初期化

    for (int j = 0; j < n; j++) {

      合計 = 合計 + a[j][i];

    }

    cout << 合計 << " ";


    if (合計 != gk)return(0);

  }

  cout << endl;

  cout << endl;


  合計 = 0;// 0 に初期化

  for (int j = 0; j < n; j++) {//対角線合計

    合計 = 合計 + a[j][j];

  }

  cout << 合計 << " ";


  if (合計 != gk)return(0);


  合計 = 0;// 0 に初期化

  for (int j = 0; j < n; j++) {

    合計 = 合計 + a[j][n - 1 - j];

  }

  if (合計 != gk)return(0);

  cout << 合計 << " ";


  int 配列[n * n];

  for (int i = 0; i < n; i++) {

    for (int j = 0; j < n; j++) {

      配列[n * i + j] = 0;//すべて0に初期化

    }

  }

  cout << endl;

  cout << endl;

  for (int i = 0; i < n; i++) {

    for (int j = 0; j < n; j++) {

      配列[a[i][j] - 1]++;//すべて0に初期化

      if (配列[a[i][j] - 1] > 1)return(0);

    }

  }

  return(1);

}

様々な実験結果
const int n = 4;のとき


1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1

16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1

16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1

34 34 34 34

34 34 34 34

34 34

すべて正常


const int n = 6;のとき


1 2 3 4 5 6
7 8 9 10 11 12
13 14 15 16 17 18
19 20 21 22 23 24
25 26 27 28 29 30
31 32 33 34 35 36

36 2 3 4 5 31
7 29 9 10 26 12
13 14 22 21 17 18
19 20 16 15 23 24
25 11 27 28 8 30
6 32 33 34 35 1

36 32 3 4 5 31
7 29 27 10 26 12
19 14 22 21 17 18
13 20 16 15 23 24
25 11 9 28 8 30
6 2 33 34 35 1

36 32 4 3 5 31
12 29 27 10 26 7
19 17 22 21 14 18
13 20 16 15 23 24
25 11 9 28 8 30
6 2 33 34 35 1

111 111 111 111 111 111

111 111 111 111 111 111

111 111

すべて正常


const int n = 8;のとき


1 2 3 4 5 6 7 8
9 10 11 12 13 14 15 16
17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32
33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48
49 50 51 52 53 54 55 56
57 58 59 60 61 62 63 64

64 2 3 4 5 6 7 57
9 55 11 12 13 14 50 16
17 18 46 20 21 43 23 24
25 26 27 37 36 30 31 32
33 34 35 29 28 38 39 40
41 42 22 44 45 19 47 48
49 15 51 52 53 54 10 56
8 58 59 60 61 62 63 1

64 2 59 4 5 62 7 57
9 55 11 52 53 14 50 16
41 18 46 20 21 43 23 48
25 34 27 37 36 30 39 32
33 26 35 29 28 38 31 40
17 42 22 44 45 19 47 24
49 15 51 12 13 54 10 56
8 58 3 60 61 6 63 1

64 2 59 5 4 62 7 57
16 55 11 52 53 14 50 9
41 23 46 20 21 43 18 48
25 34 30 37 36 27 39 32
33 26 38 29 28 35 31 40
17 47 22 44 45 19 42 24
56 15 51 12 13 54 10 49
8 58 3 61 60 6 63 1

260 260 260 260 260 260 260 260

260 260 260 260 260 260 260 260

260 260

すべて正常


const int n = 10;のとき


1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
71 72 73 74 75 76 77 78 79 80
81 82 83 84 85 86 87 88 89 90
91 92 93 94 95 96 97 98 99 100

100 2 3 4 5 6 7 8 9 91
11 89 13 14 15 16 17 18 82 20
21 22 78 24 25 26 27 73 29 30
31 32 33 67 35 36 64 38 39 40
41 42 43 44 56 55 47 48 49 50
51 52 53 54 46 45 57 58 59 60
61 62 63 37 65 66 34 68 69 70
71 72 28 74 75 76 77 23 79 80
81 19 83 84 85 86 87 88 12 90
10 92 93 94 95 96 97 98 99 1

100 92 93 4 5 6 7 98 9 91
11 89 83 84 15 16 87 18 82 20
21 22 78 74 75 76 27 73 29 30
61 32 33 67 65 36 64 38 39 70
51 52 43 44 56 55 47 48 59 50
41 42 53 54 46 45 57 58 49 60
31 62 63 37 35 66 34 68 69 40
71 72 28 24 25 26 77 23 79 80
81 19 13 14 85 86 17 88 12 90
10 2 3 94 95 96 97 8 99 1

100 92 93 7 6 5 4 98 9 91
20 89 83 84 16 15 87 18 82 11
30 29 78 74 75 76 27 73 22 21
61 39 38 67 65 36 64 33 32 70
51 52 48 47 56 55 44 43 59 50
41 42 53 57 46 45 54 58 49 60
31 62 68 37 35 66 34 63 69 40
71 79 28 24 25 26 77 23 72 80
90 19 13 14 85 86 17 88 12 81
10 2 3 94 96 95 97 8 99 1

505 505 505 505 505 505 505 505 505 505

505 505 505 505 505 505 505 505 505 505

505 505

すべて正常


const int n = 24;のとき



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168
169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216
217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240
241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264
265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288
289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312
313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336
337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360
361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384
385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408
409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432
433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456
457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480
481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504
505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528
529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552
553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576

576 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 553
25 551 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 530 48
49 50 526 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 507 71 72
73 74 75 501 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 484 94 95 96
97 98 99 100 476 102 103 104 105 106 107 108 109 110 111 112 113 114 115 461 117 118 119 120
121 122 123 124 125 451 127 128 129 130 131 132 133 134 135 136 137 138 438 140 141 142 143 144
145 146 147 148 149 150 426 152 153 154 155 156 157 158 159 160 161 415 163 164 165 166 167 168
169 170 171 172 173 174 175 401 177 178 179 180 181 182 183 184 392 186 187 188 189 190 191 192
193 194 195 196 197 198 199 200 376 202 203 204 205 206 207 369 209 210 211 212 213 214 215 216
217 218 219 220 221 222 223 224 225 351 227 228 229 230 346 232 233 234 235 236 237 238 239 240
241 242 243 244 245 246 247 248 249 250 326 252 253 323 255 256 257 258 259 260 261 262 263 264
265 266 267 268 269 270 271 272 273 274 275 301 300 278 279 280 281 282 283 284 285 286 287 288
289 290 291 292 293 294 295 296 297 298 299 277 276 302 303 304 305 306 307 308 309 310 311 312
313 314 315 316 317 318 319 320 321 322 254 324 325 251 327 328 329 330 331 332 333 334 335 336
337 338 339 340 341 342 343 344 345 231 347 348 349 350 226 352 353 354 355 356 357 358 359 360
361 362 363 364 365 366 367 368 208 370 371 372 373 374 375 201 377 378 379 380 381 382 383 384
385 386 387 388 389 390 391 185 393 394 395 396 397 398 399 400 176 402 403 404 405 406 407 408
409 410 411 412 413 414 162 416 417 418 419 420 421 422 423 424 425 151 427 428 429 430 431 432
433 434 435 436 437 139 439 440 441 442 443 444 445 446 447 448 449 450 126 452 453 454 455 456
457 458 459 460 116 462 463 464 465 466 467 468 469 470 471 472 473 474 475 101 477 478 479 480
481 482 483 93 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 76 502 503 504
505 506 70 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 51 527 528
529 47 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 26 552
24 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 1

576 2 555 4 557 6 559 8 561 10 563 12 13 566 15 568 17 570 19 572 21 574 23 553
25 551 27 532 29 534 31 536 33 538 35 540 541 38 543 40 545 42 547 44 549 46 530 48
505 50 526 52 509 54 511 56 513 58 515 60 61 518 63 520 65 522 67 524 69 507 71 528
73 482 75 501 77 486 79 488 81 490 83 492 493 86 495 88 497 90 499 92 484 94 503 96
457 98 459 100 476 102 463 104 465 106 467 108 109 470 111 472 113 474 115 461 117 478 119 480
121 434 123 436 125 451 127 440 129 442 131 444 445 134 447 136 449 138 438 140 453 142 455 144
409 146 411 148 413 150 426 152 417 154 419 156 157 422 159 424 161 415 163 428 165 430 167 432
169 386 171 388 173 390 175 401 177 394 179 396 397 182 399 184 392 186 403 188 405 190 407 192
361 194 363 196 365 198 367 200 376 202 371 204 205 374 207 369 209 378 211 380 213 382 215 384
217 338 219 340 221 342 223 344 225 351 227 348 349 230 346 232 353 234 355 236 357 238 359 240
313 242 315 244 317 246 319 248 321 250 326 252 253 323 255 328 257 330 259 332 261 334 263 336
265 290 267 292 269 294 271 296 273 298 275 301 300 278 303 280 305 282 307 284 309 286 311 288
289 266 291 268 293 270 295 272 297 274 299 277 276 302 279 304 281 306 283 308 285 310 287 312
241 314 243 316 245 318 247 320 249 322 254 324 325 251 327 256 329 258 331 260 333 262 335 264
337 218 339 220 341 222 343 224 345 231 347 228 229 350 226 352 233 354 235 356 237 358 239 360
193 362 195 364 197 366 199 368 208 370 203 372 373 206 375 201 377 210 379 212 381 214 383 216
385 170 387 172 389 174 391 185 393 178 395 180 181 398 183 400 176 402 187 404 189 406 191 408
145 410 147 412 149 414 162 416 153 418 155 420 421 158 423 160 425 151 427 164 429 166 431 168
433 122 435 124 437 139 439 128 441 130 443 132 133 446 135 448 137 450 126 452 141 454 143 456
97 458 99 460 116 462 103 464 105 466 107 468 469 110 471 112 473 114 475 101 477 118 479 120
481 74 483 93 485 78 487 80 489 82 491 84 85 494 87 496 89 498 91 500 76 502 95 504
49 506 70 508 53 510 55 512 57 514 59 516 517 62 519 64 521 66 523 68 525 51 527 72
529 47 531 28 533 30 535 32 537 34 539 36 37 542 39 544 41 546 43 548 45 550 26 552
24 554 3 556 5 558 7 560 9 562 11 564 565 14 567 16 569 18 571 20 573 22 575 1

576 2 555 21 557 19 559 17 561 15 563 13 12 566 10 568 8 570 6 572 4 574 23 553
48 551 27 532 44 534 42 536 40 538 38 540 541 35 543 33 545 31 547 29 549 46 530 25
505 71 526 52 509 67 511 65 513 63 515 61 60 518 58 520 56 522 54 524 69 507 50 528
96 482 94 501 77 486 90 488 88 490 86 492 493 83 495 81 497 79 499 92 484 75 503 73
457 119 459 117 476 102 463 113 465 111 467 109 108 470 106 472 104 474 115 461 100 478 98 480
144 434 142 436 140 451 127 440 136 442 134 444 445 131 447 129 449 138 438 125 453 123 455 121
409 167 411 165 413 163 426 152 417 159 419 157 156 422 154 424 161 415 150 428 148 430 146 432
192 386 190 388 188 390 186 401 177 394 182 396 397 179 399 184 392 175 403 173 405 171 407 169
361 215 363 213 365 211 367 209 376 202 371 205 204 374 207 369 200 378 198 380 196 382 194 384
240 338 238 340 236 342 234 344 232 351 227 348 349 230 346 225 353 223 355 221 357 219 359 217
313 263 315 261 317 259 319 257 321 255 326 252 253 323 250 328 248 330 246 332 244 334 242 336
265 290 286 292 284 294 282 296 280 298 278 301 300 275 303 273 305 271 307 269 309 267 311 288
289 266 310 268 308 270 306 272 304 274 302 277 276 299 279 297 281 295 283 293 285 291 287 312
241 335 243 333 245 331 247 329 249 327 254 324 325 251 322 256 320 258 318 260 316 262 314 264
360 218 358 220 356 222 354 224 352 231 347 228 229 350 226 345 233 343 235 341 237 339 239 337
193 383 195 381 197 379 199 377 208 370 203 373 372 206 375 201 368 210 366 212 364 214 362 216
408 170 406 172 404 174 402 185 393 178 398 180 181 395 183 400 176 391 187 389 189 387 191 385
145 431 147 429 149 427 162 416 153 423 155 421 420 158 418 160 425 151 414 164 412 166 410 168
456 122 454 124 452 139 439 128 448 130 446 132 133 443 135 441 137 450 126 437 141 435 143 433
97 479 99 477 116 462 103 473 105 471 107 469 468 110 466 112 464 114 475 101 460 118 458 120
504 74 502 93 485 78 498 80 496 82 494 84 85 491 87 489 89 487 91 500 76 483 95 481
49 527 70 508 53 523 55 521 57 519 59 517 516 62 514 64 512 66 510 68 525 51 506 72
552 47 531 28 548 30 546 32 544 34 542 36 37 539 39 537 41 535 43 533 45 550 26 529
24 554 3 573 5 571 7 569 9 567 11 565 564 14 562 16 560 18 558 20 556 22 575 1

6924 6924 6924 6924 6924 6924 6924 6924 6924 6924 6924 6924 6924 6924 6924 6924 6924 6924 6924 6924 6924 6924 6924 6924

6924 6924 6924 6924 6924 6924 6924 6924 6924 6924 6924 6924 6924 6924 6924 6924 6924 6924 6924 6924 6924 6924 6924 6924

6924 6924

すべて正常


const int n = 26;のとき




1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156
157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182
183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208
209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234
235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260
261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286
287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312
313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338
339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364
365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390
391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416
417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442
443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468
469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494
495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520
521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546
547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572
573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598
599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624
625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650
651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676

676 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 651
27 649 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 626 52
53 54 622 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 601 77 78
79 80 81 595 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 576 102 103 104
105 106 107 108 568 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 551 127 128 129 130
131 132 133 134 135 541 137 138 139 140 141 142 143 144 145 146 147 148 149 150 526 152 153 154 155 156
157 158 159 160 161 162 514 164 165 166 167 168 169 170 171 172 173 174 175 501 177 178 179 180 181 182
183 184 185 186 187 188 189 487 191 192 193 194 195 196 197 198 199 200 476 202 203 204 205 206 207 208
209 210 211 212 213 214 215 216 460 218 219 220 221 222 223 224 225 451 227 228 229 230 231 232 233 234
235 236 237 238 239 240 241 242 243 433 245 246 247 248 249 250 426 252 253 254 255 256 257 258 259 260
261 262 263 264 265 266 267 268 269 270 406 272 273 274 275 401 277 278 279 280 281 282 283 284 285 286
287 288 289 290 291 292 293 294 295 296 297 379 299 300 376 302 303 304 305 306 307 308 309 310 311 312
313 314 315 316 317 318 319 320 321 322 323 324 352 351 327 328 329 330 331 332 333 334 335 336 337 338
339 340 341 342 343 344 345 346 347 348 349 350 326 325 353 354 355 356 357 358 359 360 361 362 363 364
365 366 367 368 369 370 371 372 373 374 375 301 377 378 298 380 381 382 383 384 385 386 387 388 389 390
391 392 393 394 395 396 397 398 399 400 276 402 403 404 405 271 407 408 409 410 411 412 413 414 415 416
417 418 419 420 421 422 423 424 425 251 427 428 429 430 431 432 244 434 435 436 437 438 439 440 441 442
443 444 445 446 447 448 449 450 226 452 453 454 455 456 457 458 459 217 461 462 463 464 465 466 467 468
469 470 471 472 473 474 475 201 477 478 479 480 481 482 483 484 485 486 190 488 489 490 491 492 493 494
495 496 497 498 499 500 176 502 503 504 505 506 507 508 509 510 511 512 513 163 515 516 517 518 519 520
521 522 523 524 525 151 527 528 529 530 531 532 533 534 535 536 537 538 539 540 136 542 543 544 545 546
547 548 549 550 126 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 109 569 570 571 572
573 574 575 101 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 82 596 597 598
599 600 76 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 55 623 624
625 51 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 28 650
26 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 1

676 652 653 654 655 656 657 8 9 10 11 12 13 14 15 16 17 18 19 670 671 672 673 674 25 651
27 649 627 628 629 630 631 632 35 36 37 38 39 40 41 42 43 44 643 644 645 646 647 50 626 52
53 54 622 602 603 604 605 606 607 62 63 64 65 66 67 68 69 616 617 618 619 620 75 601 77 78
79 80 81 595 577 578 579 580 581 582 89 90 91 92 93 94 589 590 591 592 593 100 576 102 103 104
105 106 107 108 568 552 553 554 555 556 557 116 117 118 119 562 563 564 565 566 125 551 127 128 129 130
131 132 133 134 135 541 527 528 529 530 531 532 143 144 535 536 537 538 539 150 526 152 153 154 155 156
157 158 159 160 161 162 514 502 503 504 505 506 507 508 509 510 511 512 175 501 177 178 179 180 181 182
469 184 185 186 187 188 189 487 477 478 479 480 481 482 483 484 485 200 476 202 203 204 205 206 207 494
443 444 211 212 213 214 215 216 460 452 453 454 455 456 457 458 225 451 227 228 229 230 231 232 467 468
417 418 419 238 239 240 241 242 243 433 427 428 429 430 431 250 426 252 253 254 255 256 257 440 441 442
391 392 393 394 265 266 267 268 269 270 406 402 403 404 275 401 277 278 279 280 281 282 413 414 415 416
365 366 367 368 369 292 293 294 295 296 297 379 377 300 376 302 303 304 305 306 307 386 387 388 389 390
339 340 341 342 343 344 319 320 321 322 323 324 352 351 327 328 329 330 331 332 359 360 361 362 363 338
313 314 315 316 317 318 345 346 347 348 349 350 326 325 353 354 355 356 357 358 333 334 335 336 337 364
287 288 289 290 291 370 371 372 373 374 375 301 299 378 298 380 381 382 383 384 385 308 309 310 311 312
261 262 263 264 395 396 397 398 399 400 276 272 273 274 405 271 407 408 409 410 411 412 283 284 285 286
235 236 237 420 421 422 423 424 425 251 245 246 247 248 249 432 244 434 435 436 437 438 439 258 259 260
209 210 445 446 447 448 449 450 226 218 219 220 221 222 223 224 459 217 461 462 463 464 465 466 233 234
183 470 471 472 473 474 475 201 191 192 193 194 195 196 197 198 199 486 190 488 489 490 491 492 493 208
495 496 497 498 499 500 176 164 165 166 167 168 169 170 171 172 173 174 513 163 515 516 517 518 519 520
521 522 523 524 525 151 137 138 139 140 141 142 533 534 145 146 147 148 149 540 136 542 543 544 545 546
547 548 549 550 126 110 111 112 113 114 115 558 559 560 561 120 121 122 123 124 567 109 569 570 571 572
573 574 575 101 83 84 85 86 87 88 583 584 585 586 587 588 95 96 97 98 99 594 82 596 597 598
599 600 76 56 57 58 59 60 61 608 609 610 611 612 613 614 615 70 71 72 73 74 621 55 623 624
625 51 29 30 31 32 33 34 633 634 635 636 637 638 639 640 641 642 45 46 47 48 49 648 28 650
26 2 3 4 5 6 7 658 659 660 661 662 663 664 665 666 667 668 669 20 21 22 23 24 675 1

676 652 653 654 655 656 657 19 18 17 16 15 14 13 12 11 10 9 8 670 671 672 673 674 25 651
52 649 627 628 629 630 631 632 44 43 42 41 40 39 38 37 36 35 643 644 645 646 647 50 626 27
78 77 622 602 603 604 605 606 607 69 68 67 66 65 64 63 62 616 617 618 619 620 75 601 54 53
104 103 102 595 577 578 579 580 581 582 94 93 92 91 90 89 589 590 591 592 593 100 576 81 80 79
130 129 128 127 568 552 553 554 555 556 557 119 118 117 116 562 563 564 565 566 125 551 108 107 106 105
156 155 154 153 152 541 527 528 529 530 531 532 144 143 535 536 537 538 539 150 526 135 134 133 132 131
182 181 180 179 178 177 514 502 503 504 505 506 507 508 509 510 511 512 175 501 162 161 160 159 158 157
469 207 206 205 204 203 202 487 477 478 479 480 481 482 483 484 485 200 476 189 188 187 186 185 184 494
443 444 232 231 230 229 228 227 460 452 453 454 455 456 457 458 225 451 216 215 214 213 212 211 467 468
417 418 419 257 256 255 254 253 252 433 427 428 429 430 431 250 426 243 242 241 240 239 238 440 441 442
391 392 393 394 282 281 280 279 278 277 406 402 403 404 275 401 270 269 268 267 266 265 413 414 415 416
365 366 367 368 369 307 306 305 304 303 302 379 377 300 376 297 296 295 294 293 292 386 387 388 389 390
339 340 341 342 343 344 332 331 330 329 328 327 352 351 324 323 322 321 320 319 359 360 361 362 363 338
313 314 315 316 317 318 345 357 356 355 354 353 326 325 350 349 348 347 346 358 333 334 335 336 337 364
287 288 289 290 291 370 384 383 382 381 380 301 299 378 298 375 374 373 372 371 385 308 309 310 311 312
261 262 263 264 395 411 410 409 408 407 276 272 273 274 405 271 400 399 398 397 396 412 283 284 285 286
235 236 237 420 438 437 436 435 434 251 245 246 247 248 249 432 244 425 424 423 422 421 439 258 259 260
209 210 445 465 464 463 462 461 226 218 219 220 221 222 223 224 459 217 450 449 448 447 446 466 233 234
183 470 492 491 490 489 488 201 191 192 193 194 195 196 197 198 199 486 190 475 474 473 472 471 493 208
495 519 518 517 516 515 176 164 165 166 167 168 169 170 171 172 173 174 513 163 500 499 498 497 496 520
546 545 544 543 542 151 137 138 139 140 141 142 533 534 145 146 147 148 149 540 136 525 524 523 522 521
572 571 570 569 126 110 111 112 113 114 115 558 560 559 561 120 121 122 123 124 567 109 550 549 548 547
598 597 596 101 83 84 85 86 87 88 583 587 586 585 584 588 95 96 97 98 99 594 82 575 574 573
624 623 76 56 57 58 59 60 61 608 614 613 612 611 610 609 615 70 71 72 73 74 621 55 600 599
650 51 29 30 31 32 33 34 633 641 640 639 638 637 636 635 634 642 45 46 47 48 49 648 28 625
26 2 3 4 5 6 7 658 668 667 666 665 664 663 662 661 660 659 669 20 21 22 23 24 675 1

8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801

8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801 8801

8801 8801

すべて正常




偶数統合普遍版ができたことに満足して第8章を閉じます。

第9章では関数の再帰的方法について学びます。

この方法を使えば1万次元for分に相当するものをプログラムすることができるようになり、

世界は一気に広がります。


第8章第18話へ 第9章第1話へ

本講義トップへ