回答編集履歴

4

コードが見にくかったので修正。

2016/03/27 08:14

投稿

manman
manman

スコア233

test CHANGED
@@ -22,29 +22,17 @@
22
22
 
23
23
  case k
24
24
 
25
- when 0, 180
25
+ when 0, 180 ; return '0'
26
26
 
27
- return '0'
27
+ when 30, 150 ; return '0.5'
28
28
 
29
- when 30, 150
29
+ when 90 ; return '1'
30
30
 
31
- return '0.5'
31
+ when 210, 330 ; return '-0.5'
32
32
 
33
- when 90
33
+ when 270 ; return '-1'
34
34
 
35
- return '1'
36
-
37
- when 210, 330
38
-
39
- return '-0.5'
40
-
41
- when 270
42
-
43
- return '-1'
44
-
45
- else
46
-
47
- return sin(BigDecimal(PI(m) * n / 180), m).to_s('F')[0..m]
35
+ else ; return sin(BigDecimal(PI(m) * n / 180), m).to_s('F')[0..m]
48
36
 
49
37
  end
50
38
 

3

コードの修正。

2016/03/27 08:14

投稿

manman
manman

スコア233

test CHANGED
@@ -52,9 +52,19 @@
52
52
 
53
53
 
54
54
 
55
+ p sin_deg(2)
56
+
57
+ p sin_deg(2r / 3)
58
+
59
+ p sin_deg(2.4)
60
+
61
+ p sin_deg(180)
62
+
63
+
64
+
55
65
  puts
56
66
 
57
- 13.times {|x|
67
+ 13.times{|x|
58
68
 
59
69
  deg = 30 * x
60
70
 
@@ -67,6 +77,16 @@
67
77
 
68
78
 
69
79
  出力結果
80
+
81
+ "0.034899496702500971645995181625332937354824576043296871425005766942084051213821325451123151459028565"
82
+
83
+ "0.011635265801397014602667654994549171911797803980910040236314916774919405972045591895078598117351329"
84
+
85
+ "0.041875653729199629552835351557732683223252479096878867471484088777896653959256704844944845828278283"
86
+
87
+ "0"
88
+
89
+
70
90
 
71
91
  "0 -> 0"
72
92
 

2

コメントの消去

2016/03/27 08:06

投稿

manman
manman

スコア233

test CHANGED
@@ -15,8 +15,6 @@
15
15
  include BigMath
16
16
 
17
17
 
18
-
19
- # sin(n) の値を m 桁の文字列で返す。
20
18
 
21
19
  def sin_deg(n, m = 100)
22
20
 

1

有理数の条件について言及。

2016/03/27 07:50

投稿

manman
manman

スコア233

test CHANGED
@@ -1,4 +1,10 @@
1
1
  katoy さんの回答をもとに以下のようにしてみました。
2
+
3
+ sin(a/b π) が有理数になるのは自明な時
4
+
5
+ (http://note.chiebukuro.yahoo.co.jp/detail/n3993)
6
+
7
+ しかないのでこれでいいでしょう。
2
8
 
3
9
 
4
10