回答編集履歴

3

記述微修正

2021/12/27 07:53

投稿

fana
fana

スコア11996

test CHANGED
@@ -86,7 +86,7 @@
86
86
 
87
87
 
88
88
 
89
- こんな感じ対象の型に合わせて毎度書けば一番近いやつを得られるようにも思いますが…
89
+ こんな感じ↓のを対象の型に合わせて毎度書けば一番近いやつを得られるようにも思いますが…
90
90
 
91
91
 
92
92
 

2

タプルな形を追記

2021/12/27 07:52

投稿

fana
fana

スコア11996

test CHANGED
@@ -45,3 +45,59 @@
45
45
 
46
46
 
47
47
  みたいな感じでどうでしょうか.
48
+
49
+
50
+
51
+ ---
52
+
53
+
54
+
55
+ > タプル
56
+
57
+
58
+
59
+ という話をちゃんと読めていなかった……
60
+
61
+
62
+
63
+ 素人たる私にはそのタプルを特定の名称で得るための interface を用意するくらいしか方法がわかりませぬ.
64
+
65
+
66
+
67
+ ```CSharp
68
+
69
+ //タプルを Location なる名称で得るためのinterface
70
+
71
+ interface IVertex
72
+
73
+ {
74
+
75
+ (int x, int y, int z ) Location { get; }
76
+
77
+ }
78
+
79
+
80
+
81
+ //※NearestDataの実装において,Locationという名前を使う
82
+
83
+ int distance = Math.Abs( target.Location.x - datas[i].Location.x ) + Math.Abs( target.Location.z - datas[i].Location.z );
84
+
85
+ ```
86
+
87
+
88
+
89
+ こんな感じで対象の型に合わせて毎度書けば一番近いやつを得られるようにも思いますが…
90
+
91
+
92
+
93
+ ```CSharp
94
+
95
+ //targetからの距離でソートして先頭に来たやつを得る
96
+
97
+ var Nearest =
98
+
99
+ routeDatas.Select( rv => { return ( rv, Math.Abs(rv.Vertex.x - target.Position.x) + Math.Abs(rv.Vertex.z - target.Position.z) ); } )
100
+
101
+ .OrderBy( data=>data.Item2 ).First().Item1;
102
+
103
+ ```

1

何か static って書いてたのを削除

2021/12/27 07:52

投稿

fana
fana

スコア11996

test CHANGED
@@ -28,7 +28,7 @@
28
28
 
29
29
 
30
30
 
31
- static private T NearestData<T, T2>(T[] datas, T2 target)
31
+ private T NearestData<T, T2>(T[] datas, T2 target)
32
32
 
33
33
  where T : class,IVector //nullについてはclassで?
34
34