public PointF ClosestFloats(List <float> floats) { float intervalsize = FindIntervalSize(floats); var buckets = new Buckets(2.0f * intervalsize); floats.ForEach(r => buckets.Add(buckets.Bucket(r), r)); var ordered = buckets.GetBuckets(); var pair = ordered.SelectMany(i => buckets.CandidatesInBucket(i)) .OrderBy(p => Math.Abs(p.first - p.second)) .First(); return(new PointF(pair.first, pair.second)); }
public PointF ClosestFloats(List<float> floats) { float intervalsize = FindIntervalSize(floats); var buckets = new Buckets(2.0f * intervalsize); floats.ForEach(r => buckets.Add(buckets.Bucket(r), r)); var ordered = buckets.GetBuckets(); var pair = ordered.SelectMany(i => buckets.CandidatesInBucket(i)) .OrderBy(p => Math.Abs(p.first - p.second)) .First(); return new PointF(pair.first, pair.second); }