質問するログイン新規登録

質問編集履歴

3

戻り値、役を修正。

2019/05/04 14:02

投稿

eien_beginner
eien_beginner

スコア29

title CHANGED
File without changes
body CHANGED
@@ -6,23 +6,33 @@
6
6
  より良いアイデアをお持ちの方はご教授いただけると幸いです。
7
7
 
8
8
  三つのサイコロの値に応じて役を決めます。
9
- 役は以下の通りです。[※参考](https://ja.wikipedia.org/wiki/%E3%83%81%E3%83%B3%E3%83%81%E3%83%AD%E3%83%AA%E3%83%B3#%E9%85%8D%E5%BD%93%E3%81%AE%E3%81%BE%E3%81%A8%E3%82%81)
9
+ 役は以下の通りです。
10
10
 
11
11
  (強)
12
12
  アラシ : 3つのサイコロすべてがゾロ目
13
13
  シゴロ : サイコロの目が(4, 5, 6)
14
- 出目有 : 3つのサイコロのうち、2つがゾロ目だった場合残り1つの目のこと(:5,4,5のときの目は4)
14
+ ロッポウ : 3つ中2つのサイコロがゾロ目、ゾロでないサイコロが6目(5, 5, 6)
15
+ ゴケ : 3つ中2つのサイコロがゾロ目、ゾロ目でないサイコロが5の目
16
+ ヨツヤ : 3つ中2つのサイコロがゾロ目、ゾロ目でないサイコロが4の目
17
+ サンタ : 3つ中2つのサイコロがゾロ目、ゾロ目でないサイコロが3の目
18
+ ニゾウ : 3つ中2つのサイコロがゾロ目、ゾロ目でないサイコロが2の目
19
+ ピン : 3つ中2つのサイコロがゾロ目、ゾロ目でないサイコロが1の目
15
20
  目なし : 3つの目それぞれ値が違ったとき
16
21
  ヒフミ : サイコロの目が(1, 2, 3)
17
22
  (弱)
23
+ [※参考](https://ja.wikipedia.org/wiki/%E3%83%81%E3%83%B3%E3%83%81%E3%83%AD%E3%83%AA%E3%83%B3#%E9%85%8D%E5%BD%93%E3%81%AE%E3%81%BE%E3%81%A8%E3%82%81)
18
24
 
19
25
  ```C#
20
-
21
26
  enum hand
22
27
  {
23
28
  HIFUMI = -1,
24
29
  MENASHI,
25
- // (略)
30
+ PIN = 1,
31
+ NIZO,
32
+ SANTA,
33
+ YOTSUYA,
34
+ GOKE,
35
+ ROPPOU,
26
36
  SHIGORO,
27
37
  ARASHI,
28
38
  }
@@ -35,34 +45,34 @@
35
45
  Console.WriteLine(Check(dice));
36
46
  }
37
47
 
38
- static private int Check(List<int> dice)
48
+ static private hand Check(List<int> dice)
39
49
  {
40
- int ret;
50
+ hand ret;
41
51
 
42
52
  switch (dice.Distinct().Count())
43
53
  {
44
54
  case 1:
45
- ret = (int) hand.ARASHI;
55
+ ret = hand.ARASHI;
46
56
  break;
47
57
  case 2:
48
- ret = 2 * dice.Distinct().Sum() - dice.Sum();
58
+ ret = (hand) (2 * dice.Distinct().Sum() - dice.Sum());
49
59
  break;
50
60
  case 3:
51
61
  if (dice.All(x => x == 1 || x == 2 || x == 3))
52
62
  {
53
- ret = (int) hand.HIFUMI;
63
+ ret = hand.HIFUMI;
54
64
  }
55
65
  else if (dice.All(x => x == 4 || x == 5 || x == 6))
56
66
  {
57
- ret = (int) hand.SHIGORO;
67
+ ret = hand.SHIGORO;
58
68
  }
59
69
  else
60
70
  {
61
- ret = (int) hand.MENASHI;
71
+ ret = hand.MENASHI;
62
72
  }
63
73
  break;
64
74
  default:
65
- ret = (int) hand.MENASHI;
75
+ ret = hand.MENASHI;
66
76
  break;
67
77
  }
68
78
 

2

タイトルの修正

2019/05/04 14:02

投稿

eien_beginner
eien_beginner

スコア29

title CHANGED
@@ -1,1 +1,1 @@
1
- すごろくの役を判定するプログラム
1
+ チンチロリンの役を判定するプログラム
body CHANGED
@@ -11,68 +11,11 @@
11
11
  (強)
12
12
  アラシ : 3つのサイコロすべてがゾロ目
13
13
  シゴロ : サイコロの目が(4, 5, 6)
14
- 2~6 : 3つのサイコロのうち、2つがゾロ目だった場合、残り1つの目のこと(例:5,4,5のときの目は4)
14
+ 出目有 : 3つのサイコロのうち、2つがゾロ目だった場合、残り1つの目のこと(例:5,4,5のときの目は4)
15
15
  目なし : 3つの目それぞれ値が違ったとき
16
16
  ヒフミ : サイコロの目が(1, 2, 3)
17
17
  (弱)
18
18
 
19
- C# or C++ で作成する予定です
20
- ```C++
21
- #include <iostream>
22
- #include <algorithm>
23
- #include <vector>
24
-
25
- typedef enum
26
- {
27
- HIFUMI = -1,
28
- MENASHI,
29
- // (略)
30
- SHIGORO,
31
- ARASHI
32
- } hand;
33
-
34
- int Check(std::vector<int> dice)
35
- {
36
- std::sort(dice.begin(), dice.end());
37
-
38
- if (dice[0] == dice[1])
39
- {
40
- if (dice[1] == dice[2])
41
- {
42
- return ARASHI;
43
- }
44
- else
45
- {
46
- return dice[2];
47
- }
48
- }
49
- else if (dice[1] == dice[2])
50
- {
51
- return dice[0];
52
- }
53
- else
54
- {
55
- if (dice[0] == 1 && dice[1] == 2 && dice[2] == 3)
56
- {
57
- return HIFUMI;
58
- }
59
- else if (dice[0] == 4 && dice[1] == 5 && dice[2] == 6)
60
- {
61
- return SHIGORO;
62
- }
63
- else
64
- {
65
- return MENASHI;
66
- }
67
- }
68
- }
69
-
70
- int main()
71
- {
72
- std::vector<int> dice = { 3, 3, 3 };
73
- std::cout << Check(dice) << std::endl;
74
- }
75
- ```
76
19
  ```C#
77
20
 
78
21
  enum hand

1

アルゴリズム中の計算式を簡略化

2019/05/04 13:51

投稿

eien_beginner
eien_beginner

スコア29

title CHANGED
File without changes
body CHANGED
@@ -102,7 +102,7 @@
102
102
  ret = (int) hand.ARASHI;
103
103
  break;
104
104
  case 2:
105
- ret = dice.Sum() - (dice.Sum() - dice.Distinct().Sum()) * 2;
105
+ ret = 2 * dice.Distinct().Sum() - dice.Sum();
106
106
  break;
107
107
  case 3:
108
108
  if (dice.All(x => x == 1 || x == 2 || x == 3))