Tag: 语言不可知的

代码高尔夫:数字到单词

代码高尔夫系列似乎相当受欢迎。 我遇到了一些代码,将数字转换为单词表示。 一些例子是(编程乐趣2的幂): 2 – >二 1024 – >一二四 1048576 – >一百四十八万五千七十六 我的同事提出的algorithm差不多是二百行。 似乎有一个更简洁的方法来做到这一点。 目前的准则: 用任何编程语言提交的意见都表示欢迎(对于PhiLho最初缺乏清晰度,我向他们道歉) 最大input2 ^ 64(请参阅以下链接,谢谢mmeyers) 英文输出的规模较小,但任何algorithm是受欢迎的。 只是就使用的方法评论编程语言。

Google采访:块的安排

给你N个高度为1 … N的块。 您可以在多less种方式中排列这些块,使得从左侧看时只能看到L个块(其余块被较高的块遮挡),从右侧看只能看到R个块? 给定N=3, L=2, R=1例子N=3, L=2, R=1只有一种排列{2, 1, 3}而对于N=3, L=2, R=2 ,有两种方式{1, 3, 2}和{2, 3, 1} 。 我们应该如何通过编程来解决这个问题? 任何有效的方法?

“星际争霸”和“帝国时代”等即时战略游戏的协议是怎样的呢?

我感兴趣的是这些游戏的协议(和游戏循环)是如何工作的; 任何指针或见解都被赞赏。 我猜测主循环会有一个每秒提前几个“滴答”的世界状态,但是玩家的命令是如何执行的呢? 什么样的数据需要来回?

Monostate与Singleton

当一个人使用一个Monostate模式而不是Singleton来维持一个全局对象时,情况是什么? 编辑:我知道什么Singleton和Monostate模式。 在很多情况下也实现了Singleton。 只是想知道需要实现MonoState模式的场景(例子)。 例如。 我需要维护我的Windows窗体应用程序的每个屏幕列的列表。 在这种情况下,我可以使用单例字典。 然而,我在静态全局variables存储一个列表,我想提供索引(因为我需要dynamic地添加新的条目,如果键不存在),我可以指定ScreenDetails.ScreenName作为一个关键&得到ScreenDetails .ColumnsTable。 由于索引器无法在静态类上运行,因此将模式更改为Monostate。 所以我想知道哪些其他场景可能迫使用户使用Monostate而不是Singletons。

纯度vs参考透明度

这些术语似乎有不同的定义 ,但我总是想到一个意味着另一个; 我不能想到任何情况下,一个expression是透明的,但不是纯粹的,反之亦然。 维基百科针对这些概念维护不同的文章,并说: 从参考透明度 : 如果expression式中涉及的所有函数都是纯函数,那么expression式就是透明的。 另外,如果expression式中包含一些不纯的函数,那么它们的值将被丢弃,并且其副作用不明显。 从纯粹的表情 : 纯函数是构造纯expression式所必需的。 纯粹的expression通常被认为是透明的。 我觉得这些陈述混淆。 如果来自所谓的“不纯function”的副作用不足以允许不执行它们(即,用它的值replace对这样的function的调用),而不实质上改变程序,则它就像在第一个地方,不是吗? 有没有更简单的方法来理解纯粹的expression和透明的expression之间的区别? 如果有差异,清楚地表明它的示例expression将不胜感激。

好的例子,文章,用于理解dynamic规划的书籍

我不知道dynamic编程的原理,我真的很想要它。 DP非常强大,它可以解决这样的问题: 从数字的差异中获得尽可能低的总和 那么,你能否给我build议好的书籍或文章 (最好是带有真实代码的例子),这将解释什么是dynamic规划? 我真的想要简单的例子,然后我继续前进。

代码高尔夫:波

挑战 按字符计数的最短代码从inputstring中生成一个波形。 通过提升(line-1)较高的字符和降低(line + 1)较低的字符来生成wave。 相同的字符保持在同一行(不提升或降级)。 input仅由小写字母和数字组成,字母被认为高于数字。 testing用例: Input: 1234567890qwertyuiopasdfghjklzxcvbnm Output: z lxvn kcbm j h g ypsf tuoad wri 9 qe 8 0 7 6 5 4 3 2 1 Input: 31415926535897932384626433832795028841971693993751058209749445923078164062862 Output: 9 9 8 6 6 9 6 8 7 3 3 4 2 4 8 9 88 3 4 5 2 […]

文本编辑器如何实现?

这个问题可能会让我听起来很无能。 那是因为我。 我只是在想,如果我假设有兴趣devise我自己的文本编辑器GUI控件,窗口小部件,或者任何你想要调用它的东西(我不知道),我怎么会这么做呢? 对像我这样的新手的诱惑将是以string的forms存储文本编辑器的内容,这似乎相当昂贵(不是我太熟悉string实现在一种语言/平台和下一个之间是如何不同的;但是我知道,例如在.NET中,它们是不可变的,如此频繁的操作(例如在文本编辑器中需要支持的东西)将会非常浪费,构build一个又一个string实例将会非常迅速。 据推测,一些含有文本的可变数据结构被用来代替; 但搞清楚这个结构可能会是什么样子,这是一个挑战。 随机访问会很好(毕竟,我想是不是要让用户能够跳到文本中的任何地方?),但是我想知道导航到某个地方的成本在一个巨大的文件的中间,并立即开始打字。 再次,新手的方法(比如将文本存储为可resize的字符数组)会导致非常糟糕的性能,我想,与用户键入的每个字符一样,会有大量的数据“转移”过度。 所以,如果我不得不猜测,我假设文本编辑器采用某种结构将文本分解成更小的片断(可能是?),它们分别包含随机访问的字符数组,它们本身是随机的作为离散块访问。 即使如此,它似乎也是一个相当可怕的过度简单化,但如果它甚至远远接近开始。 当然我也意识到,可能没有文字编辑实行的“标准”方式, 从一个编辑者到另一个编辑者,可能会有很大的变化 但我想,因为这显然是一个多次被解决的问题,多年来可能是一种比较常见的方法。 无论如何,我只是有兴趣知道有没有人有这方面的知识。 就像我说的,我绝对不是在写我自己的文本编辑器, 我只是好奇。

互斥体如何实现?

对于特定的应用程序,有些实现比其他实现更好吗 有没有什么可以通过推出自己的?

如何理解松耦合应用程序中的大局?

我们一直在使用松耦合和dependency injection开发代码。 很多“服务”风格的类有一个构造函数和一个实现接口的方法。 每个单独的课程都很容易理解。 但是,由于耦合的松散,查看课程并不能告诉你周围的课程或者它适合放大图片的地方。 使用Eclipse跳转到协作者并不容易,因为您必须通过接口进行操作。 如果界面是可运行的,那么对于find哪个类实际插入没有任何帮助。实际上,有必要回到DI容器定义,并尝试从那里解决问题。 以下是一个从dependency injection服务类的代码行: // myExpiryCutoffDateService was injected, Date cutoff = myExpiryCutoffDateService.get(); 这里的耦合尽可能松散。 到期date以任何方式字面上实施。 以下是在一个更加耦合的应用程序中可能看起来像什么。 ExpiryDateService = new ExpiryDateService(); Date cutoff = getCutoffDate( databaseConnection, paymentInstrument ); 从紧密耦合的版本,我可以推断,截止date是由支付工具使用数据库连接以某种方式确定。 我发现第一种风格的代码比第二种风格的代码更难理解。 你可能会争辩说,在阅读这门课时,我不需要知道截止date是如何计算出来的。 确实如此,但是如果我正在缩小一个bug或者确定增强需要插入的位置,那么这是非常有用的信息。 有谁遇到这个问题? 你有什么解决scheme? 这只是一些适应? 是否有任何工具可以让class级连线的方式可视化? 我应该让课程更大还是更融合? (有意留下这个问题容器不可知的,因为我有兴趣在任何答案)。