阅读更多

3顶
0踩

非技术

转载新闻 一些因愚蠢而成名的代码

2016-02-02 17:05 by 副主编 mengyidan1988 评论(0) 有8388人浏览
这也是一个发布在Quora上的问题,下面是原问题:
引用
有哪些代码是因为愚蠢而出名的呢?

下面我们从回答列表中为大家整理几个其中获赞最多的回答。
1.@Leon Zhou:(6100+赞)

Bogosort 是一个非常著名的列表排序算法,它是这样的实现原理:
  • 把列表中的元素随机打乱顺序排放
  • 检查是否已经是有序列表了,如果不是,重新开始。

Bogosort 算法平均运行次数为 O((n+1)!),非常糟糕。这也是一个罕见的没有最坏情况下运行次数的算法。如果列表中至少有两个元素,那么它也可能无限时间的执行运算。

2. @Greg Kemnitz:(601赞)

我最喜欢的必须是Bubble sort(冒泡排序),过去的数年时间内我一直在让没有学过计算机科学却在学习编程的航天工程师避开和替换使用冒泡排序,我甚至把这作为我的一个小小的事业来做。又一次我用堆排序来替换冒泡排序,把一个需要运行一周时间的模拟算法减少到两个小时。

典型的理由是,冒泡算法很短且很简单,所以它必须是“更好的”。在其他基本上相同的情况下,这似乎是一个不错的推理,但在冒泡排序这里却并不适用。

此外,冒泡排序在很多初级的编程课程中似乎经常被提到,如果学生不学习其他编程类的话,这可能是他们所知道的唯一的算法。

3. @Thomas Wolf:(564赞)

我会把“steam locomotive”(蒸汽机车)程序列出来。所有 *nix 用户应该都知道,在 shell 中经常会使用 “ls” 程序来列出文件夹中的内容。有时候你可能因输入太快而错误的输入成 “sl”,这样会执行“steam locomotive”,会有一个小火车穿过你的终端的ASCII动画。火车的汽笛声会通过喇叭广播出来,让周围的人都知道你做了什么,但它可能不依赖系统。



sl 与 ls 有相似的命令行选项:
  • sl -a:似乎发生了事故,你会同情那些哭求帮助的人
  • sl -l:显示一个小一点的火车
  • sl -f:速度飞快
  • sl -e:允许通过 Ctrl+C 来中断

最后一个会覆盖掉默认输入 Ctrl+C 不会中断的情况。这个程序似乎是“训练”你不要输入 sl。

我在一个视频中见过一个 sl 程序的变种,它大约要消耗你两分钟的时间,它会显示一个闪烁的效果,速度非常慢,然后会有一个很长的火车经过你的终端。

4. @Saarthak Sachdeva:(540赞)

睡眠排序:这是一个在 4chan 上走红的非常简单的代码,它是愚蠢还是巧妙,取决于你怎么来看待它。它背后的逻辑非常简单,下面的它的伪代码:
procedure printNumber(n)
    sleep n seconds
    print n
end
 
for arg in args
    run printNumber(arg) in background
end
wait for all processes to finish

它会为数组中的每一个整数创建一个线程,然后放到后台运行。线程会等待 N 秒然后打印该整数。这意味着最小的数等待时间最短,并最先被打印出来,最大的数等待时间最长并最后打印出来。

换句话说,如果有一个 1 到 20 的数组,随机排序,1 的线程会等待 1 秒,2 的会等待 2秒,依此类推。最终,就会得到排好序的数组。这是一个非常滑稽但却很有效的算法,但目前并没有得到很好的证明,因为它需要硬件的支持。

参考:Genius sorting algorithm: Sleep sort

伪代码来源:http://www.quora.com/What-is-sleep-sort/answer/Albert-Sheu

本文转自:Specs' Blog
  • 大小: 17.6 KB
来自: Specs' Blog
3
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 如果我针对大小而不是速度进行优化,为什么GCC会生成15-20%的更快代码?

    我在2009年首先注意到,如果我对大小 ( -Os )而不是速度( -O2或-O3 )进行优化,则GCC(至少在我的项目和我的机器上)倾向于生成明显更快的代码,并且我一直想知道为什么。 I have managed to create (rather ...

  • “我只警告一次,下次我会直接忽略你发的垃圾,懂?”Linus 精彩炮轰语录集锦...

    彼时,有位名为 Dmitry Kakurin 的开发者查看了 Git 源代码发现使用的是纯 C 而非 C++ 后,他表示不可理解,于是发帖喷道:“别拿可移植性说事儿,这是胡扯(原句这里是 BS,即 bullshit)。” 好家伙,结果这句...

  • CV会议+领先研究室+专家+代码网址(自己搜索的)

    本文基于http://www.sciencenet.cn/m/Print.aspx?id=224651 的结果,增加了自己搜索和国内一些信息。 作机器视觉和图像处理方面的研究工作,最重要的两个问题:其一是要把握住国际上最前沿的内容;其二是所作工作...

  • 自由职业的方向:一个人活成一家公司

    而约翰却认为:“认为某样东西愚蠢/简单/ 5分钟就能做好…通常,意味着它是一个好主意”。因此,如果人们抱怨你的价格,那你就对了。因为如果他们不抱怨,他们要么不喜欢你,要么认为这是一笔交易。所以他决定继续,...

  • CV会议+领先研究室+专家+代码网址(…

    侧重医学方面的研究,但是在上面有相当不错资源,关键是它正在建设中,能够跟踪一些信息。 Cornell University——Robotics and Vision group http://www-cs-students.stanford.edu/ 斯坦福大学计算机系主页 1...

  • 我与计算机的不解之缘

    大家都知道,公认的程序员日是1024,而我的生日,正好是10月24日。中国有十几亿人口,同一天出生的人并不稀奇,即便放在 IT 行业,同一天生日的人,亦不在少数。但是,即便你也是10月24日出生,我有酒,你有故事吗?...

  • 数据库风云:老骥伏枥,新秀辈出

    “每一项突破性技术的诞生,都会伴随着一些成功者和失败者出现。”《创新者的窘境》的作者、哈佛商学院教授克莱顿•克里斯坦森这样说过。 当时,埃里森阅读了 IBM这篇公开发表的论文 《 R系统:数据库关系理论》 ,并...

  • 移动互联网十年

    但乔布斯实在无法忍受这款合作机型丑陋的外观以及混乱的操作方式,终于在一次产品会议上,他忍无可忍:“我受够了和这些愚蠢的公司打交道,我们自己来。” 就这样,在历数了各种手机的“脑残”设计后,一款革命性...

  • 移动互联网浩荡十年 有的升腾,有的陨落

    但乔布斯实在无法忍受这款合作机型丑陋的外观以及混乱的操作方式,终于在一次产品会议上,他忍无可忍:“我受够了和这些愚蠢的公司打交道,我们自己来。” 就这样,在历数了各种手机的“脑残”设计后,一款革命性...

  • ComputerVision 网站+会议+领先研究室+专家+代码网址

    侧重医学方面的研究,但是在上面有相当不错资源,关键是它正在建设中,能够跟踪一些信息。 Cornell University——Robotics and Vision group  http://www-cs-students.stanford.edu/  斯坦福大学计算机系...

  • ComputerVision会议+领先研究室+专家+代码网址(转载)

    本文基于http://www.sciencenet.cn/m/Print.aspx?id=224651 的结果,增加了自己搜索和国内一些信息。 作机器视觉和图像处理方面的研究工作,最重要的两个问题:其一是要把握住国际上最前沿的内容;其二是所作...

  • 计算机视觉与图形图像会议、学派的一点八卦和资料

    有些us的人认为ICCV/CVPR略好于ECCV,而欧洲人大都认为ICCV/ECCV略好于CVPR, 某些英国的人甚至认为BMVC好于CVPR.简言之, 三个会议差不多, 各有侧重和偏好.三者乃cv领域的旗舰和风向标,其oral paper

  • 《Rework》摘录及感想

    但从来没有把这些感想记录下来,今天把《Rework》书中的一些章节做一些摘录,并把我的一些感想总结出来。供大家参考。这是一本平生以来让我中毒很深的书,也是一本让我思考得很多的书。希望看到这篇文章的人都能好好...

  • 没有想的那么美 游戏开发企业的一些真相

    一个专业的美工(animator)的办公桌应该是这样的,美工还包括原画设计师、3D美术师、2D美术师等不同的分工,3D美术师通常也被称为模型师(modeler),他负责将原画设计师设计的人物...年轻人的理想,总因其不够现实而

  • 梅花易数C语言实现(六十四卦卦辞用的是python)用了python

    \n决策: 忠厚、温和,待人真诚,热心助人,因此也能得到他人的帮助,可往往因不提防小人而受到伤害,但无大碍。性格灵活,工作方法多样,可以左右逢源,得到赞许。难,消除灾难。\n台湾张铭仁解卦:\n地:代表大地...

  • “我只警告一次,下次我会直接忽略你发的垃圾,懂?”Linus 精彩炮轰语录集锦

    Linus Torvalds 想必大家并不陌生,不仅因为 Linux 之父的身份被人熟知,更是以火爆的脾气屡受争议,尤其是他在 2015 年曾对 NVIDIA 爆粗口、竖中指的行为简直是“一战成名”。本月,Linus 又炮轰GitHub,称“看看...

  • 一个十几年程序员给所有新老程序员的忠告

    遇到过很多失败挫折,甚至露宿街头,但是最后还是挺过来了),是一个十几年的程序员了,里面介绍了他的相关经历,以及他的一下经验,无论是对刚入门的程序员,还是工作了十年八年的程序员都有一些经验值得借鉴学习。...

  • 逆天搏命乔布斯

    乔布斯这个妹妹是个作家,被一些人认为跟乔布斯一样,是这个世界上最优秀的人才之一。当年以为乔布斯父母愚蠢,生了个天才却随便送人,现在懂了,人家不缺这个。  梁启超说,历史者英雄之舞台也,舍英雄几无历史...

  • NVIDIA的PhysX GPU物理加速概述

    他使用Intel的VTune进程查看工具分析了多款支持PhysX特效的游戏,结果发现当这些游戏使用CPU处理物理特效时,大部分的代码使用的仍然是老旧的x87浮点算数指令,而不是早已深入人心,并且效率高得多的SSE扩展指令,他...

  • 果壳处理器研究小组(Topic基于RISCV64果核处理器的卷积神经网络加速器研究)详细文档+全部资料+优秀项目+源码.zip

    【资源说明】 果壳处理器研究小组(Topic基于RISCV64果核处理器的卷积神经网络加速器研究)详细文档+全部资料+优秀项目+源码.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

Global site tag (gtag.js) - Google Analytics