首页   

如何确定一袋米中的米粒数量是偶数还是奇数?

知乎日报  · 问答  · 2 天前

正文

点击上方卡片关注👆

假设给你一袋米,在尽量不逐一数的情况下,如何用简单又高效的方法确定这一袋米里面的米粒数量是偶数还是奇数?一起来看看答主们的回答吧



如何确定一袋米中的米粒数量是偶数还是奇数?


| 答主:DBinary

好的,作为一个理工生,一般不整那么多花里胡哨的,想知道奇数还是偶数,那就得算算大米到底有多少颗。

高赞确实有类似的设备可以实现这种数大米的功能,但是毕竟这种设备不便宜,现在有工业版本的,那有没有家用版本的。

比如我抓了一小撮大米,然后撒在桌面上,为什么只有一小撮呢?

第一:浪费粮食是不好的。

第二:抓太多了大米之间连在一块,得用更复杂的方法,我懒。

能不能用手边的设备来算算到底有多少颗呢?

比如我们用手机拍一张照片,像这样。

那么,老规矩,为了方便图像后续处理,我们直接处理成灰度图(其实我后面琢磨了一下,不如去抓 r 通道效果更好,凑合看吧不管了)

然后我们看看背景颜色的灰度值

还有大米的灰度值

直接根据颜色差值设定阈值二值化图像

可以看到,效果不太好,为啥,因为因为背景光照不均匀有些大米内部颜色和背景混色了,一些大米出现了中空的情况,也好办,弄个导数的二值滤波再来一次。

好,舒服多了,之后就是简简单单判定联通的白色区域了,然后我们标定后,把计数文本弄回原始图像中,可以看到,程序大米数的非常好,一撮大米一共 61 个,灰常准确有效。

应该算是图像 CV 比较入门级的知识点,下次拿去折磨下学生好了。



|  答主:Kelvin Li

整点专业的给你们看看:

把米从红色箭头的地方倒进去,里面有振动喂料器,可以把米振动下落。在下落过程中,有三台线扫相机给米拍照,不但能知道多少粒,还能给米做个用户画像。



| 答主:程墨Morgan

我看各专业精英都有方法,作为计算机方向,我也忍不住出一计——

MapReduce 其实就是把庞大数据分为多块小一点的数据(Map),然后再把每个小块数据的结果总结起来(Reduce),就得到了结果。

就这个问题来说,我把一袋米分给 10 个人,让他们每人回头告诉我分到的那一份是奇数还是偶数,根据:

  • 奇数+奇数=偶数

  • 偶数+偶数=偶数

  • 奇数+偶数=奇数

知道这 10 个人分到米粒的奇偶,我就知道整袋米的奇偶,这就是一次 MapReduce。

当然这 10 个人也不用自己逐一去数米,他们每个人也可以把分到手的米粒分给其他 10 个人,要那 10 个人给出分到米粒的奇偶。

下一层的 10x10=100 个人也不用自己逐一去数米,分给他他们的下家。

......

最后米粒肯定会分到某一层的时候 10 个人只有分到 1 粒米(奇数)或者 0 粒米(偶数)的时候,那时候就可以反向给上家汇报分到他们的奇偶性。

上家继续向上汇报奇偶性。

......

最后奇偶性汇报到我这里,我就可以推导出整袋米粒的奇偶性了。

你看,整个过程中并没有逐一数米,分米的时候也不用绝对平均,差不多平均别累着某些人就好,就算分米不平均也不影响结果正确性。

就和《三体》里的秦始皇人肉计算机一样,只要人够多,就搞定了:-)

这就是计算机专业的解答。

题图来源:答主@DBinary

知乎热门文章

为什么人死后会很快发臭,而猪肉羊肉不会那么快?


有没有可能,氧气是种慢性毒气,通常需要 70-100 年来杀死人类?


有什么东西是外国人吃,而中国人不吃的?


本文内容来自「知乎」
点击上方卡片关注
转载请联系原作者

👇点击【阅读原文】,看更多精彩回答

© 2024 精读
删除内容请联系邮箱 2879853325@qq.com