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

質問編集履歴

4

誤字の訂正

2021/05/11 02:09

投稿

teracot
teracot

スコア1

title CHANGED
@@ -1,1 +1,1 @@
1
- インデックス付きEnumerable.Selectメソッドでラムダ式がタプルを返すときにエラーとなる理由をしりたい。
1
+ インデックス付きEnumerable.Selectメソッドで匿名メソッド(ラムダ式)がタプルを返すときにエラーとなる理由をしりたい。
body CHANGED
File without changes

3

書式の改善

2021/05/11 02:09

投稿

teracot
teracot

スコア1

title CHANGED
File without changes
body CHANGED
@@ -3,10 +3,12 @@
3
3
 
4
4
  [問題リンクB - Palace](https://atcoder.jp/contests/abc113/tasks/abc113_b)
5
5
 
6
+
6
- 以下のコードを書いたときに、エラーとなる理由を知りたい。
7
+ 以下のコードを書いたときに、エラーとなる理由を知りたい。
7
-   ②、③のコードではなぜいけるのか知りたい。
8
+ ②、③のコードではなぜいけるのか知りたい。
8
9
 
10
+
9
- ④のコードのときエラーとなる理由を知りたい。
11
+ ④のコードのときエラーとなる理由を知りたい。
10
12
  Enumerable.Minメソッドは、Minメソッドをかける配列の内容の型がIComparableを実装しなければならない。
11
13
   というのはわかる。
12
14
   a,匿名型にはIComparableを実装できない?

2

追加情報(コンソールへの入力例)、コメント入力してコードを見やすくしました。

2021/05/11 01:07

投稿

teracot
teracot

スコア1

title CHANGED
File without changes
body CHANGED
@@ -13,6 +13,23 @@
13
13
   b,タプル型のIComparableのCompareToメソッドの実装はどこで見れますか?(どういうルールで比較するの知りたい)
14
14
 
15
15
 
16
+
17
+ (↓↓↓追加情報↓↓↓)
18
+ 問題文は以下のリンクにあります
19
+ [問題リンクB - Palace](https://atcoder.jp/contests/abc113/tasks/abc113_b)
20
+
21
+ コンソールへの入力例1
22
+ 2
23
+ 12 5
24
+ 1000 2000
25
+
26
+ コンソールへの入力例2
27
+ 3
28
+ 21 -11
29
+ 81234 94124 52141
30
+
31
+
32
+
16
33
  ご回答、ご教授宜しくお願いいたします。。。。!!!
17
34
 
18
35
 
@@ -50,21 +67,24 @@
50
67
 
51
68
  int[] elevations = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
52
69
 
53
- //ダメ①---最後のConsole.WriteLineでres+1ではなくresでいけるようにindex+1しようとしたらエラーしました。
70
+ //ダメ① index+1
54
- var res = elevations.Select(x => t - x * 0.006).Select(( double num, int index ) => (Math.Abs(num - a), index+1)).Min(x => x).index;
71
+ //var res = elevations.Select(x => t - x * 0.006).Select(( double num, int index ) => (Math.Abs(num - a), index+1)).Min(x => x).index;
55
72
 
73
+ //OK② indexそのまま
56
- //OK②var res = elevations.Select(x => t - x * 0.006).Select(( double num, int index ) => (Math.Abs(num - a), index)).Min(x => x).index;
74
+ var res = elevations.Select(x => t - x * 0.006).Select(( double num, int index ) => (Math.Abs(num - a), index)).Min(x => x).index;
57
75
 
76
+ //OK③ Item2を使う。
58
- //OK③var res = elevations.Select(x => t - x * 0.006).Select(( double num, int index ) => (Math.Abs(num - a), index = index + 1)).Min(x => x).Item2;
77
+ //var res = elevations.Select(x => t - x * 0.006).Select(( double num, int index ) => (Math.Abs(num - a), index = index + 1)).Min(x => x).Item2;
59
78
  //var res = elevations.Select(x => t - x * 0.006).ToArray().Select(( s, index ) => new Tuple<double, int>(Math.Abs(s - a), index + 1)).Min(d => d).Item2;
60
79
 
80
+ //ダメ④ 匿名型
61
- //ダメ④var res = elevations.Select(x => t - x * 0.006).Select(( double num, int index ) =>new { Diff = Math.Abs(num - a), Index = index }).Min(x => x).Index;
81
+ //var res = elevations.Select(x => t - x * 0.006).Select(( double num, int index ) =>new { Diff = Math.Abs(num - a), Index = index }).Min(x => x).Index;
62
82
 
63
- //var res2 = elevations.Select(( x, i ) => (Math.Abs(t - x * 0.006 - a), i)).Min(x => x).i;
64
83
  Console.WriteLine(res + 1);
65
84
  }
66
85
  }
67
86
  }
87
+
68
88
  ```
69
89
 
70
90
  ### 試したこと

1

誤字の訂正

2021/05/11 01:02

投稿

teracot
teracot

スコア1

title CHANGED
File without changes
body CHANGED
@@ -10,7 +10,10 @@
10
10
  Enumerable.Minメソッドは、Minメソッドをかける配列の内容の型がIComparableを実装しなければならない。
11
11
   というのはわかる。
12
12
   a,匿名型にはIComparableを実装できない?
13
-  b,タプル型のIComparableのCompareToメソッドの実装はどこで見れる。(どういうルールで比較するの知りたい)
13
+  b,タプル型のIComparableのCompareToメソッドの実装はどこで見れますか?(どういうルールで比較するの知りたい)
14
+
15
+
16
+ ご回答、ご教授宜しくお願いいたします。。。。!!!
14
17
 
15
18
 
16
19
  ### 発生している問題・エラーメッセージ