当前位置:  开发笔记 > 编程语言 > 正文

在数字集合中查找最接近的匹配

如何解决《在数字集合中查找最接近的匹配》经验,为你挑选了5个好方法。

所以我今天被问到在一个集合中找到关闭匹配的最佳方法是什么.

例如,你有一个像这样的数组:

1, 3, 8, 10, 13, ...

什么数字最接近4?

集合是数字的,无序的,可以是任何东西.与要匹配的数字相同.

让我们看看我们可以从所选择的各种语言中得到什么.



1> Jimmy..:

J中有11个字节:

C=:0{]/:|@-

例子:

>> a =: 1 3 8 10 13
>> 4 C a
3
>> 11 C a
10
>> 12 C a
13

我对外行的细分:

0{         First element of
]          the right argument
/:         sorted by
|          absolute value 
@          of
-          subtraction



2> Triptych..:

更短的Python:41个字符

f=lambda a,l:min(l,key=lambda x:abs(x-a))



3> sykora..:

我在python中的尝试:

def closest(target, collection) :
    return min((abs(target - i), i) for i in collection)[1]



4> matyr..:

Groovy 28B

f={a,n->a.min{(it-n).abs()}}



5> Andrew Backe..:

一些C#Linq的人......有很多方法可以做到这一点!

decimal[] nums = { 1, 3, 8, 12 };
decimal target = 4;

var close1 = (from n in nums orderby Math.Abs(n-target) select n).First();
var close2 = nums.OrderBy(n => Math.Abs(n - target)).First();

Console.WriteLine("{0} and {1}", close1, close2);

如果使用列表,则更多的方法,因为普通的ol数组没有.Sort()

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有