回答編集履歴
4
コードコメント修正
test
CHANGED
@@ -124,7 +124,7 @@
|
|
124
124
|
Random r = new Random();
|
125
125
|
for(int i=array.length; i>0; i--) {
|
126
126
|
int j = r.nextInt(i);
|
127
|
-
{ int t = array[i-1]; array[i-1] = array[j]; array[j] = t; } //[i] と [j] を交換
|
127
|
+
{ int t = array[i-1]; array[i-1] = array[j]; array[j] = t; } //[i-1] と [j] を交換
|
128
128
|
}
|
129
129
|
}
|
130
130
|
}
|
3
修正
test
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
List に必要な分の数値を用意して、 shuffle メソッドで並び替え、先頭から使います。
|
2
|
+
→ 配列化しました。
|
2
3
|
```java
|
3
4
|
import java.util.Random;
|
4
5
|
import java.util.Scanner;
|
2
配列仕様
test
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
List に必要な分の数値を用意して、 shuffle メソッドで並び替え、先頭から使います。
|
2
2
|
```java
|
3
|
-
import java.util.
|
3
|
+
import java.util.Random;
|
4
|
+
import java.util.Scanner;
|
4
5
|
|
5
6
|
public class Bingo {
|
6
7
|
public static void main(String[] args) {
|
@@ -9,9 +10,7 @@
|
|
9
10
|
|
10
11
|
Scanner scanner = new Scanner(System.in);
|
11
12
|
|
12
|
-
|
13
|
+
int[] list = IntArrayUtils.generate(75, 1, true);
|
13
|
-
for(int i=1; i<=75; i++) list.add(i); //ビンゴ玉を75個用意
|
14
|
-
Collections.shuffle(list); //シャッフル
|
15
14
|
|
16
15
|
for(int number : list) { //先頭から順に取り出す
|
17
16
|
String enter = scanner.nextLine();
|
@@ -37,15 +36,12 @@
|
|
37
36
|
private static class Card {
|
38
37
|
private int[][] numbers = new int[5][5];
|
39
38
|
private int reach = 0;
|
40
|
-
private int
|
39
|
+
private int bingo = 0;
|
41
40
|
|
42
41
|
Card() {
|
43
|
-
List<Integer> list = new ArrayList<>();
|
44
42
|
for(int i=0; i<5; i++) {
|
45
|
-
list.clear();
|
46
|
-
for(int j=0, k=i*15+1; j<15; j++, k++) list.add(k); //各行用の数値を用意
|
47
|
-
|
43
|
+
int[] list = IntArrayUtils.generate(15, i*15+1, true);
|
48
|
-
for(int j=0; j<5; j++) numbers[j][i] = list
|
44
|
+
for(int j=0; j<5; j++) numbers[j][i] = list[j]; //5個だけ使う
|
49
45
|
}
|
50
46
|
numbers[2][2] = 0;
|
51
47
|
}
|
@@ -54,7 +50,7 @@
|
|
54
50
|
return reach;
|
55
51
|
}
|
56
52
|
int getBingo() {
|
57
|
-
return
|
53
|
+
return bingo;
|
58
54
|
}
|
59
55
|
|
60
56
|
boolean mark(int number) {
|
@@ -83,10 +79,10 @@
|
|
83
79
|
}
|
84
80
|
|
85
81
|
reach = 0;
|
86
|
-
|
82
|
+
bingo = 0;
|
87
83
|
for(int c : counts) {
|
88
84
|
if(c == 4) reach ++;
|
89
|
-
if(c == 5)
|
85
|
+
if(c == 5) bingo ++;
|
90
86
|
}
|
91
87
|
}
|
92
88
|
|
@@ -108,4 +104,27 @@
|
|
108
104
|
}
|
109
105
|
}
|
110
106
|
}
|
107
|
+
|
108
|
+
class IntArrayUtils {
|
109
|
+
/** origin ~ origin+size-1 の値の入った int 配列を生成する
|
110
|
+
* @param size 配列の大きさ
|
111
|
+
* @param origin 格納する開始値
|
112
|
+
* @param shuffle ランダムに並び替える場合に true
|
113
|
+
* @return 生成した配列 */
|
114
|
+
static int[] generate(int size, int origin, boolean shuffle) {
|
115
|
+
int[] a = new int[size];
|
116
|
+
for(int i=0; i<size; i++) a[i] = origin + i;
|
117
|
+
if(shuffle) shuffle(a);
|
118
|
+
return a;
|
119
|
+
}
|
120
|
+
/** array をランダムに並び替える
|
121
|
+
* @param array 対象配列 */
|
122
|
+
static void shuffle(int[] array) {
|
123
|
+
Random r = new Random();
|
124
|
+
for(int i=array.length; i>0; i--) {
|
125
|
+
int j = r.nextInt(i);
|
126
|
+
{ int t = array[i-1]; array[i-1] = array[j]; array[j] = t; } //[i] と [j] を交換
|
127
|
+
}
|
128
|
+
}
|
129
|
+
}
|
111
130
|
```
|
1
カード初期値の行・列が逆だった
test
CHANGED
@@ -45,7 +45,7 @@
|
|
45
45
|
list.clear();
|
46
46
|
for(int j=0, k=i*15+1; j<15; j++, k++) list.add(k); //各行用の数値を用意
|
47
47
|
Collections.shuffle(list); //シャッフル
|
48
|
-
for(int j=0; j<5; j++) numbers[
|
48
|
+
for(int j=0; j<5; j++) numbers[j][i] = list.get(j); //5個だけ使う
|
49
49
|
}
|
50
50
|
numbers[2][2] = 0;
|
51
51
|
}
|