Questions tagged «language-agnostic»

将此标签用于独立于任何特定编程语言的编程问题。

26
高尔夫代码-π天
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 挑战 关于SO的代码高尔夫指南 按字符计数的最短代码,用于显示R使用该*字符的半径圆的表示形式,后跟π的近似值。 输入为单个数字R。 由于大多数计算机似乎具有几乎2:1的比率,因此您只能输出y奇数行。这意味着当出现R奇数时,您应该打印R-1行。有一个新的测试用例R=13需要澄清。 例如。 Input 5 Output Correct Incorrect 3 ******* 4 ******* 1 ********* 2 ********* -1 ********* 0 *********** -3 ******* -2 ********* 2.56 -4 ******* 3.44 编辑:由于的奇数值引起的普遍混乱R,将接受通过下面给出的4个测试用例的任何解决方案 π的近似值是通过将*字符数除以2 得到的R²。 近似值至少应为6个有效数字。 前导或尾随零是允许的,因此,例如任何的3,3.000000,003被接受为输入2和4。 代码计数包括输入/​​输出(即完整程序)。 测试用例 Input 2 Output *** *** 3.0 Input 4 Output ***** ******* …

30
使用仅与大小写不同的变量名是否不道德?
例如,使用这段代码: var person = new Person(); 或适合您的Pythonista用户: person = Person() 经常有人告诉我这有多糟,但是还没有看到这两行代码不道德的例子。在我看来,人就是人,而尝试给它起另一个名字是浪费时间。我想在语法突出显示之前的日子里,这会是一件大事。但是如今,很容易分辨出类型名和变量名。哎呀,这很容易看出SO的区别。 还是我想念的东西?如果是这样,如果您可以提供一个导致问题的代码示例,将很有帮助。

16
创建学校时间表的算法
我一直想知道是否存在用于创建学校时间表的算法的已知解决方案。基本上,它是针对给定的班级-主体-老师关联优化“小时分散”(在教师和班级情况下均如此)。我们可以假设我们在输入时有一组相互关联的班级,课程主题和教师,并且时间表应该在上午8点至下午4点之间。 我猜可能没有准确的算法,但是也许有人知道很好的近似或提示来开发它。

4
为什么JVM仍然不支持尾调用优化?
在进行了-jvm-prevent-tail-call-optimizations之后的两年,似乎有一个原型 实现,并且MLVM一段时间以来将该功能列为“ proto 80%”。 Sun / Oracle方面对支持尾部调用是否没有积极的兴趣,或者仅仅是JVM提到尾部调用“ 注定要在每个功能优先级列表上排在第二位 ”。语言峰会? 如果有人测试了MLVM构建并可以分享其运行效果的印象(如果有的话),我将非常感兴趣。 更新: 请注意,某些虚拟机(如Avian)支持正确的尾部调用,而没有任何问题。

30
程序员难题:在整个游戏中对棋盘状态进行编码
严格来说不是一个问题,更像是一个难题... 多年来,我参与了一些新员工的技术面试。除了询问标准的“您是否知道X技术”问题之外,我还尝试了解它们如何解决问题。通常,我会在面试的前一天通过电子邮件将问题发送给他们,并希望他们在第二天提出解决方案。 通常,结果会很有趣-错误,但是很有趣-如果该人可以解释为什么采用特定方法,那么该人仍然会得到我的推荐。 所以我想我应该向Stack Overflow观众提出我的一个问题。 问题:您认为编码国际象棋游戏(或其子集)状态的最节省空间的方法是什么?也就是说,假设棋盘上的棋子是依法排列的,则对初始状态和游戏中所有后续棋步进行编码。 答案不需要任何代码,只需描述您要使用的算法即可。 编辑:正如其中一位海报指出的那样,我没有考虑过两次走步之间的时间间隔。也可以考虑将其作为可选的额外项目:) EDIT2:只是为了进一步说明...请记住,编码器/解码器是规则感知的。真正需要存储的唯一内容是播放器的选择-可以假定编码器/解码器知道其他任何内容。 EDIT3:在这里挑选获奖者将很困难:)很多很棒的答案!

14
它应该是“安排—声明—行为—声明”吗?
关于Arrange-Act-Assert的经典测试模式,我经常发现自己在Act之前添加了反主张。这样,我知道传递的断言实际上是作为操作结果传递的。 我认为它类似于红色-绿色-重构中的红色,在红色-绿色-重构中,只有在测试过程中看到红色条时,我才知道绿色条表示我已经编写了有区别的代码。如果我编写了通过测试,那么任何代码都可以满足要求;类似地,对于“安排—断言—行为—断言”,如果我的第一个断言失败,我知道任何法案都会通过最终的断言,因此实际上并没有验证有关该法案的任何内容。 您的测试是否遵循这种模式?为什么或者为什么不? 更新说明:初始声明与最终声明实质上相反。这不是Arrange工作的断言;有人断言该法案尚未生效。

17
如何测量两个图像之间的相似度?[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 2年前关闭。 改善这个问题 我想将一个应用程序(可能是网页)的屏幕快照与先前获取的屏幕快照进行比较,以确定该应用程序是否正确显示了自己。我不希望进行完全匹配比较,因为方面可能略有不同(对于Web应用程序,取决于浏览器,某些元素可能位于稍有不同的位置)。它应该衡量屏幕截图的相似程度。 是否有已经执行此操作的库/工具?您将如何实施?



11
为什么编程竞赛参赛者使用C ++和Java?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 改善这个问题 在参加了今年的Google Code Jam 竞赛之后,我不禁注意到使用C / C ++和Java的[成功]参赛者数量之多。比赛中使用的语言分布可以在此处查看。 用C / C ++编程几年后,最近我因其可读性/简单性而爱上了Python。最近,我学习了OCaml,Scheme等功能语言,甚至还学习了Prolog等逻辑语言。这些语言当然有其优点,在我看来,在某些情况下,这些语言比C ++和Java更容易应用。例如,Scheme对call / cc的使用简化了回溯(回答几个问题所需的工具)和Prolog的逻辑规范,尽管由于其强力性质而效率低下,但可以大大简化(甚至自动解决)某些难以解决的问题缠住你的大脑。 显然,竞赛参赛者应使用最适合挑战的工具。甚至x86程序集都是Turing完整的-并不能证明解决它的问题。在这种情况下,为什么使用较少通用语言(例如Scheme / Lisp,Prolog甚至Python)的参赛者比使用C / C ++和Java的参赛者的成功率要低得多?用不同的措辞,为什么成功的参赛者不使用虽然可能不那么主流但可以说是更好的工作工具的语言? 我的问题有多种动机。最重要的是,无论是在实践方面还是在竞争方面,我都希望成为一名更好的程序员。在介绍了诸如函数和逻辑编程之类的精美范例之后,令人沮丧的是,看到这么多人抛弃它们而转而支持C / C ++和Java。甚至令我质疑我对上述范例的钦佩,担心我无法在编程竞赛中以Lisp / Scheme / Prolog程序员的身份成功。


9
什么时候循环展开仍然有用?
我一直在尝试通过循环展开来优化一些对性能至关重要的代码(一种快速排序算法,在蒙特卡洛仿真中被称为百万次)。这是我要加快的内循环: // Search for elements to swap. while(myArray[++index1] < pivot) {} while(pivot < myArray[--index2]) {} 我尝试展开为以下内容: while(true) { if(myArray[++index1] < pivot) break; if(myArray[++index1] < pivot) break; // More unrolling } while(true) { if(pivot < myArray[--index2]) break; if(pivot < myArray[--index2]) break; // More unrolling } 这绝对没有区别,所以我将其改回了可读性更好的形式。我尝试循环展开时也有类似的经历。鉴于现代硬件上分支预测器的质量,何时展开循环仍然是有用的优化?

28
简单的死锁示例
我想向新手解释线程死锁。过去,我看到过很多死锁的示例,有些使用代码,有些使用插图(例如著名的4辆汽车)。还有诸如The Dining Philosophers之类的容易陷入僵局的经典问题,但是对于真正的新手来说,这些问题可能太复杂而无法完全掌握。 我正在寻找最简单的代码示例来说明什么是死锁。该示例应: 与有意义的“真实”编程场景有关 简短,简单明了 您有什么推荐的吗?

6
一种将重叠的矩形隔开的算法?
这个问题实际上是与过渡有关的,下面我将其概括如下: 我有一个2D视图,并且在屏幕上的某个区域内有许多矩形。如何分散这些框,使它们彼此不重叠,而仅以最小的移动来调整它们? 矩形的位置是动态的,并且取决于用户的输入,因此它们的位置可以在任何地方。 所附图像显示了问题和所需的解决方案 实际上,现实生活中的问题涉及过渡。 对评论中问题的答案 矩形的大小不是固定的,并且取决于翻转中文本的长度 关于屏幕大小,现在我认为最好假定屏幕大小足以容纳矩形。如果矩形太多,并且算法没有产生任何解决方案,那么我只需要调整内容即可。 对于美学,“最低限度地移动”的要求比绝对的工程要求更多。可以通过增加两个矩形之间的距离来隔开两个矩形,但是作为GUI的一部分看起来效果不佳。这个想法是使翻转/矩形尽可能接近其来源(然后我将用黑线将其连接到来源)。因此,要么“只为x移动一个”,要么“两个都移动一半,x”都可以。

24
您更喜欢哪种和为什么使用例外或返回码?
我的问题是,大多数开发人员更喜欢错误处理,异常或错误返回码。请特定于语言(或语言家族),以及为什么您偏爱另一种语言。 我出于好奇而问这个。就我个人而言,我更喜欢错误返回码,因为它们的爆炸性较小,并且如果不想这样做,也不必强迫用户代码支付异常性能损失。 更新:感谢您的所有答案!我必须说,尽管我不喜欢带有异常的代码流的不可预测性。关于返回码(及其兄长句柄)的答案确实给代码增加了很多噪音。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.