回答編集履歴
12
ippatsu のパラメータを他と同じにした(未確認)
test
CHANGED
@@ -7,6 +7,7 @@
|
|
7
7
|
```c
|
8
8
|
#include <stdio.h>
|
9
9
|
#include <stdlib.h>
|
10
|
+
#include <string.h>
|
10
11
|
#include <time.h>
|
11
12
|
|
12
13
|
#ifndef bool
|
@@ -87,8 +88,8 @@
|
|
87
88
|
{9,8,0},{9,8,1},{9,8,2},{9,8,3},{9,8,4},{9,8,5},{9,8,6},{9,8,7}
|
88
89
|
};
|
89
90
|
|
90
|
-
int *ippatsu() {
|
91
|
+
int *ippatsu(int answer[]) {
|
91
|
-
return IPPATSU_ANSWERS[rand()%(10*9*8)];
|
92
|
+
return memcpy(answer, IPPATSU_ANSWERS[rand()%(10*9*8)], sizeof(int)*3);
|
92
93
|
}
|
93
94
|
*/
|
94
95
|
|
@@ -103,6 +104,6 @@
|
|
103
104
|
print("質問", shitsumon(a));
|
104
105
|
print("並替", narabikae(a));
|
105
106
|
print("取出", toridashi(a));
|
106
|
-
//print("一発", ippatsu());
|
107
|
+
//print("一発", ippatsu(a));
|
107
108
|
}
|
108
109
|
```
|
11
修正
test
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
コロンブスの卵的なことで、一度分かれば何度も悩まなくて済みます。
|
2
|
-
比較し易いように、書籍の模範解答・kihochiさん版・そしてシャッフル版・ランダム取り出し版・一発版を並べました。一発版はデータを用意するのが面倒(& teratail に書ききれない)なのでコメントですが、他はどれも正常に動作しています(と思われます^^;;;)
|
2
|
+
比較し易いように、書籍の模範解答・kihochiさん版・そしてシャッフル版・ランダム取り出し版・一発版を並べました。一発版はデータを用意するのが面倒(& teratail に書ききれないかも?)なのでコメントですが、他はどれも正常に動作しています(と思われます^^;;;)
|
3
3
|
シャッフル版というのは、トランプ等カードゲームで "山" をシャッフルして上から必要枚数引くようなものです。
|
4
4
|
模範解答・kihochi さん版に比べ、シャッフル版は固定回数のループだけなので必ず一定時間で結果が出ますが、最速となる(乱数の数値が重ならなかった)場合は模範解答・kihochi さん版のほうが早いです。
|
5
5
|
|
10
コード修正
test
CHANGED
@@ -57,9 +57,7 @@
|
|
57
57
|
//shuffle
|
58
58
|
for(int i=0; i<10; i++) {
|
59
59
|
int j = rand() % 10;
|
60
|
-
int t = v[i];
|
60
|
+
int t = v[i]; v[i] = v[j]; v[j] = t; //i番目とj番目を交換
|
61
|
-
v[i] = v[j];
|
62
|
-
v[j] = t;
|
63
61
|
}
|
64
62
|
for(int i=0; i<3; i++) answer[i] = v[i];
|
65
63
|
return answer;
|
@@ -67,10 +65,10 @@
|
|
67
65
|
|
68
66
|
int *toridashi(int answer[]) {
|
69
67
|
int v[] = {0,1,2,3,4,5,6,7,8,9};
|
70
|
-
for(int i=0, c=10; i<3; i++
|
68
|
+
for(int i=0, c=10; i<3; i++) {
|
71
69
|
int j = rand() % c;
|
72
70
|
answer[i] = v[j];
|
73
|
-
for(
|
71
|
+
for(c--; j<c; j++) v[j] = v[j+1]; //j番目を消すように前詰め
|
74
72
|
}
|
75
73
|
return answer;
|
76
74
|
}
|
9
コード修正
test
CHANGED
@@ -76,7 +76,7 @@
|
|
76
76
|
}
|
77
77
|
|
78
78
|
/*
|
79
|
-
static int IPPATSU_ANSWERS[10*9*8] = {
|
79
|
+
static int IPPATSU_ANSWERS[10*9*8][3] = {
|
80
80
|
{0,1,2},{0,1,3},{0,1,4},{0,1,5},{0,1,6},{0,1,7},{0,1,8},{0,1,9},
|
81
81
|
{0,2,1}, {0,2,3},{0,2,4},{0,2,5},{0,2,6},{0,2,7},{0,2,8},{0,2,9},
|
82
82
|
{0,3,1},{0,3,2}, {0,3,4},{0,3,5},{0,3,6},{0,3,7},{0,3,8},{0,3,9},
|
@@ -90,7 +90,7 @@
|
|
90
90
|
};
|
91
91
|
|
92
92
|
int *ippatsu() {
|
93
|
-
return IPPATSU_ANSWERS[rand%(10*9*8)];
|
93
|
+
return IPPATSU_ANSWERS[rand()%(10*9*8)];
|
94
94
|
}
|
95
95
|
*/
|
96
96
|
|
8
追記
test
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
コロンブスの卵的なことで、一度分かれば何度も悩まなくて済みます。
|
2
|
-
比較し易いように、書籍の模範解答・kihochiさん版・そしてシャッフル版・ランダム取り出し版・一発版を並べました。一発版はデータを用意するのが面倒なのでコメントですが、他はどれも正常に動作しています(と思われます^^;;;)
|
2
|
+
比較し易いように、書籍の模範解答・kihochiさん版・そしてシャッフル版・ランダム取り出し版・一発版を並べました。一発版はデータを用意するのが面倒(& teratail に書ききれない)なのでコメントですが、他はどれも正常に動作しています(と思われます^^;;;)
|
3
3
|
シャッフル版というのは、トランプ等カードゲームで "山" をシャッフルして上から必要枚数引くようなものです。
|
4
4
|
模範解答・kihochi さん版に比べ、シャッフル版は固定回数のループだけなので必ず一定時間で結果が出ますが、最速となる(乱数の数値が重ならなかった)場合は模範解答・kihochi さん版のほうが早いです。
|
5
5
|
|
7
一発版追加
test
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
コロンブスの卵的なことで、一度分かれば何度も悩まなくて済みます。
|
2
|
-
比較し易いように、書籍の模範解答・kihochiさん版・そしてシャッフル版・ランダム取り出し版を並べました。どれも正常に動作しています(と思われます^^;;;)
|
2
|
+
比較し易いように、書籍の模範解答・kihochiさん版・そしてシャッフル版・ランダム取り出し版・一発版を並べました。一発版はデータを用意するのが面倒なのでコメントですが、他はどれも正常に動作しています(と思われます^^;;;)
|
3
3
|
シャッフル版というのは、トランプ等カードゲームで "山" をシャッフルして上から必要枚数引くようなものです。
|
4
4
|
模範解答・kihochi さん版に比べ、シャッフル版は固定回数のループだけなので必ず一定時間で結果が出ますが、最速となる(乱数の数値が重ならなかった)場合は模範解答・kihochi さん版のほうが早いです。
|
5
5
|
|
@@ -75,6 +75,25 @@
|
|
75
75
|
return answer;
|
76
76
|
}
|
77
77
|
|
78
|
+
/*
|
79
|
+
static int IPPATSU_ANSWERS[10*9*8] = {
|
80
|
+
{0,1,2},{0,1,3},{0,1,4},{0,1,5},{0,1,6},{0,1,7},{0,1,8},{0,1,9},
|
81
|
+
{0,2,1}, {0,2,3},{0,2,4},{0,2,5},{0,2,6},{0,2,7},{0,2,8},{0,2,9},
|
82
|
+
{0,3,1},{0,3,2}, {0,3,4},{0,3,5},{0,3,6},{0,3,7},{0,3,8},{0,3,9},
|
83
|
+
(中略)
|
84
|
+
{5,4,0},{5,4,1},{5,4,2},{5,4,3}, {5,4,6},{5,4,7},{5,4,8},{5,4,9},
|
85
|
+
{5,6,0},{5,6,1},{5,6,2},{5,6,3},{5,6,4}, {5,6,7},{5,6,8},{5,6,9},
|
86
|
+
(中略)
|
87
|
+
{9,6,0},{9,6,1},{9,6,2},{9,6,3},{9,6,4},{9,6,5}, {9,6,7},{9,6,8},
|
88
|
+
{9,7,0},{9,7,1},{9,7,2},{9,7,3},{9,7,4},{9,7,5},{9,7,6}, {9,7,8},
|
89
|
+
{9,8,0},{9,8,1},{9,8,2},{9,8,3},{9,8,4},{9,8,5},{9,8,6},{9,8,7}
|
90
|
+
};
|
91
|
+
|
92
|
+
int *ippatsu() {
|
93
|
+
return IPPATSU_ANSWERS[rand%(10*9*8)];
|
94
|
+
}
|
95
|
+
*/
|
96
|
+
|
78
97
|
void print(char *prompt, int a[]) {
|
79
98
|
printf("%s : %d %d %d\n", prompt, a[0], a[1], a[2]);
|
80
99
|
}
|
@@ -86,5 +105,6 @@
|
|
86
105
|
print("質問", shitsumon(a));
|
87
106
|
print("並替", narabikae(a));
|
88
107
|
print("取出", toridashi(a));
|
108
|
+
//print("一発", ippatsu());
|
89
109
|
}
|
90
110
|
```
|
6
コード修正
test
CHANGED
@@ -61,14 +61,13 @@
|
|
61
61
|
v[i] = v[j];
|
62
62
|
v[j] = t;
|
63
63
|
}
|
64
|
-
|
65
64
|
for(int i=0; i<3; i++) answer[i] = v[i];
|
66
65
|
return answer;
|
67
66
|
}
|
68
67
|
|
69
68
|
int *toridashi(int answer[]) {
|
70
69
|
int v[] = {0,1,2,3,4,5,6,7,8,9};
|
71
|
-
for(int i=0, c=
|
70
|
+
for(int i=0, c=10; i<3; i++, c--) {
|
72
71
|
int j = rand() % c;
|
73
72
|
answer[i] = v[j];
|
74
73
|
for( ; j<c-1; j++) v[j] = v[j+1];
|
5
追記
test
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
コロンブスの卵的なことで、一度分かれば何度も悩まなくて済みます。
|
2
|
-
比較し易いように、書籍の模範解答・kihochiさん版・そしてシャッフル版を並べました。
|
2
|
+
比較し易いように、書籍の模範解答・kihochiさん版・そしてシャッフル版・ランダム取り出し版を並べました。どれも正常に動作しています(と思われます^^;;;)
|
3
3
|
シャッフル版というのは、トランプ等カードゲームで "山" をシャッフルして上から必要枚数引くようなものです。
|
4
4
|
模範解答・kihochi さん版に比べ、シャッフル版は固定回数のループだけなので必ず一定時間で結果が出ますが、最速となる(乱数の数値が重ならなかった)場合は模範解答・kihochi さん版のほうが早いです。
|
5
5
|
|
4
ランダム取り出しを追加
test
CHANGED
@@ -66,6 +66,16 @@
|
|
66
66
|
return answer;
|
67
67
|
}
|
68
68
|
|
69
|
+
int *toridashi(int answer[]) {
|
70
|
+
int v[] = {0,1,2,3,4,5,6,7,8,9};
|
71
|
+
for(int i=0, c=sizeof(v)/sizeof(v[0]); i<3 && c>0; i++, c--) {
|
72
|
+
int j = rand() % c;
|
73
|
+
answer[i] = v[j];
|
74
|
+
for( ; j<c-1; j++) v[j] = v[j+1];
|
75
|
+
}
|
76
|
+
return answer;
|
77
|
+
}
|
78
|
+
|
69
79
|
void print(char *prompt, int a[]) {
|
70
80
|
printf("%s : %d %d %d\n", prompt, a[0], a[1], a[2]);
|
71
81
|
}
|
@@ -76,5 +86,6 @@
|
|
76
86
|
print("模範", sukkiri(a));
|
77
87
|
print("質問", shitsumon(a));
|
78
88
|
print("並替", narabikae(a));
|
89
|
+
print("取出", toridashi(a));
|
79
90
|
}
|
80
91
|
```
|
3
追記
test
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
コロンブスの卵的なことで、一度分かれば何度も悩まなくて済みます。
|
2
2
|
比較し易いように、書籍の模範解答・kihochiさん版・そしてシャッフル版を並べました。
|
3
|
+
シャッフル版というのは、トランプ等カードゲームで "山" をシャッフルして上から必要枚数引くようなものです。
|
3
4
|
模範解答・kihochi さん版に比べ、シャッフル版は固定回数のループだけなので必ず一定時間で結果が出ますが、最速となる(乱数の数値が重ならなかった)場合は模範解答・kihochi さん版のほうが早いです。
|
4
5
|
|
5
6
|
(paizaIO で bool がエラーになったので定義してます。)
|
2
スペルミス
test
CHANGED
@@ -53,7 +53,7 @@
|
|
53
53
|
|
54
54
|
int *narabikae(int answer[]) {
|
55
55
|
int v[] = {0,1,2,3,4,5,6,7,8,9};
|
56
|
-
//suffle
|
56
|
+
//shuffle
|
57
57
|
for(int i=0; i<10; i++) {
|
58
58
|
int j = rand() % 10;
|
59
59
|
int t = v[i];
|
1
コード修正
test
CHANGED
@@ -56,10 +56,9 @@
|
|
56
56
|
//suffle
|
57
57
|
for(int i=0; i<10; i++) {
|
58
58
|
int j = rand() % 10;
|
59
|
-
int k = rand() % 10;
|
60
|
-
int t = v[
|
59
|
+
int t = v[i];
|
61
|
-
v[
|
60
|
+
v[i] = v[j];
|
62
|
-
v[
|
61
|
+
v[j] = t;
|
63
62
|
}
|
64
63
|
|
65
64
|
for(int i=0; i<3; i++) answer[i] = v[i];
|