回答編集履歴

1

追記

2018/10/08 08:11

投稿

katoy
katoy

スコア22324

test CHANGED
@@ -67,3 +67,41 @@
67
67
  ```
68
68
 
69
69
  のようにするとよいかもしれません。(16通りをすべて列挙する必要があります)
70
+
71
+
72
+
73
+ 追記:
74
+
75
+ 実際に case 文をかいてみました。 (d1, d2 をソートすることで、 16 通りでなく 10 ,通りにまでは減らせます)
76
+
77
+ ```ruby
78
+
79
+ def s_to_i_c(d1, d2)
80
+
81
+ d = [d1, d2].sort
82
+
83
+ case d
84
+
85
+ when ['E', 'E'], ['N', 'N'], ['S', 'S'], ['W', 'W'], ['E', 'W'], ['N', 'S']
86
+
87
+ return 0
88
+
89
+ when ['E', 'N'], ['E', 'S'], ['S', 'W'], ['N', 'W']
90
+
91
+ return 90
92
+
93
+ else
94
+
95
+ return -1 # エラー (d1, d1 の値が不正)
96
+
97
+ end
98
+
99
+ end
100
+
101
+ ```
102
+
103
+
104
+
105
+ でも E,N,S,W の4 方向から NE などを加えた 8 方向やもっと多くの方向をあつかえるようにしようとした際に
106
+
107
+ case で書いてあると変更が大変です。