language-agnostic相关内容
代码高尔夫系列似乎还算流行.我遇到了一些将数字转换为其单词表示的代码.一些例子是(编程乐趣的 2 的幂): 2 -> 两个 1024 -> 一千二十四 1048576 -> 一百万四千八千五七十六 我的同事提出的算法几乎有两百行长.似乎会有更简洁的方法来做到这一点. 当前指南: 欢迎以任何编程语言提交(我向PhiLho 最初对此缺乏明确性) 最大输入为 2^64(请参
..
我在尝试使用正确的算法来计算一组日期范围时遇到问题. 基本上我有一个无序日期范围列表(包含开始和结束时间数组的列表),我想合并这个列表,使其不包含重叠时间. 基本上是为了合并两个日期范围: if start1 end1//把最高时间放在end1结束 1 = 结束 2万一万一 这将连接两个日期时间. 在遍历所有值时遇到了绊脚石,因此最终列表仅包含不重叠的值. 我的函数式和
..
我需要帮助弄清楚我当前的 OOP 状态概念与在 Haskell 或 Clojure 等函数式语言中实现的方式之间的差异. 举一个老生常谈的例子,假设我们正在处理简化的银行账户对象/结构/任何东西.在 OOP 语言中,我有一些类持有对 BankAccount 的引用,该类将具有诸如利率之类的实例变量,以及诸如 setInterestRate() 之类的方法,它们更改对象的状态并且通常不返回任何
..
我对monads 和箭头 用于函数式编程.我也明白它们可以用来解决类似的问题. 但是,对于在任何特定情况下如何选择使用哪个,我仍然有些困惑. 什么时候应该使用monad,什么时候应该使用箭头? 解决方案 Lindley, Wadler & 有两篇优秀论文Yallop(在 LTU 此处讨论). 要理解的最重要的事情是更多箭头的东西比单子的东西多.相反,monad 严格来说比
..
我知道向左折叠会产生左倾树,向右折叠会产生右倾树,但是当我伸手去折叠时,我有时会发现自己陷入了令人头疼的想法中,试图确定哪个那种折叠是合适的.我通常最终会展开整个问题,并逐步执行 fold 函数的实现,因为它适用于我的问题. 所以我想知道的是: 确定向左折叠还是向右折叠有哪些经验法则? 鉴于我面临的问题,我如何快速决定使用哪种折叠方式? Scala by Example (PD
..
我正在努力想出一种在 OO 模型中添加双向关系的好方法.假设有一个 Customer 可以下许多 Orders,也就是说 Customer 和 Order 类之间存在一对多关联,需要双向遍历:对于特定的客户,应该可以告诉所有他们下的订单,对于一个订单,应该可以告诉客户. 这里是一段 Java 代码,尽管问题在很大程度上与语言无关: class 客户 {私有集合订单 = 新的 HashSet
..
我有一个从表单接收输入的 MVC 应用程序. 这是一个登录表单,因此唯一需要的验证是检查输入是否为非空. 现在,在我将其传递给模型之前,我会在控制器中对其进行验证. 这是否是最佳实践?是否属于模型? 解决方案 我不认为官方的最佳实践将验证限制在 MVC 模式的任何单个部分.例如,您的视图可以(并且应该)使用 Javascript 进行一些预先验证.您的控制器还应该提供相同类型的验证,
..
虽然之前有人问过关于链表与数组的问题,但答案主要归结为我们大多数人在某个时候可能已经学到的东西: 列表擅长插入和删除 数组擅长随机访问 现在像 Bjarne Stroustrup 这样受人尊敬的人已经认为阵列实际上总是优于链接列表,因为它们更好地利用了现代硬件中实现的缓存架构.他还指出,数组的性能优势会随着它们的大小而增加. 虽然我基本理解他的论点并同意他的观点,但我想知道当数
..
我应该在什么情况下使用每种列表?各有什么优点? 解决方案 普通列表: 按顺序存储每个项目,因此随机查找非常快(即我可以立即说“我想要第 657415671567 个元素,然后直接找到它,因为我们知道它的内存地址将正好比第一个项目大 657415671567).这在存储中几乎没有或没有内存开销.但是,它无法自动调整大小 - 您必须创建一个新数组,复制所有值,然后删除旧数组.当您需要从列
..
我听到一个面试问题: "向后打印单向链表,在恒定空间和线性时间中." 我的解决方案是原地反转链表,然后像这样打印.有没有另一种非破坏性的解决方案? 解决方案 如果在打印后再次反转它将不再具有破坏性,因为恢复了原来的顺序.
..
我正在使用编程工具(编译器或 IDE 或其他工具),当我使用它时,它报告了“内部错误"以及一些难以理解的细节.我想修复这个错误.我该怎么办? 解决方案 编程工具必须报告程序中的错误,例如代码中的语法错误、运行时的运行时错误以及测试时的测试失败,所以你可以修复你的代码.但是该编程工具本身是一个计算机程序,因此本身可能存在错误.复杂程序的细心程序员包括自我检查以检测未知错误的后果.如果其中一个
..
用于乘以 4x4 矩阵的朴素算法如下所示: void matrix_mul(double out[4][4], double lhs[4][4], double rhs[4][4]) {for (int i = 0; i 显然,如果out == lhs 或out == rhs(此处== 表示引用相等),则该算法会给出虚假结果.是否有一个版本允许不简单地复制矩阵的一种或两种情况?如有必要,我很
..
我有一个问题,我知道一条线,我只知道它的斜率(m)和它上面的一个点 A(x,y)我如何计算这条线上的点(实际上是其中的两个)距离(d))从A点???我问这个是为了找到通过 A(x,y) 距离为 的线上的像素强度.在这种情况下,距离将是像素数. 解决方案 我建议将线转换为参数格式而不是点斜率.也就是说,该线的参数函数返回沿该线的点,以获得某些参数 t 的值.您可以将线表示为参考点,并用向量表
..
我有兴趣在有关编写光线跟踪器的书籍、可在网上看到的简单清晰的光线跟踪实现以及有关介绍性光线跟踪的在线资源中找到推荐. 理想情况下,该方法应该是渐进式和教程式的,从基础开始解释编程技术和基础数学. 解决方案 由 Kevin Suffern 撰写的“从头开始的光线追踪". 由 Matt Pharr 和 Greg Humphreys 撰写的“基于物理的渲染",在您熟悉基础知识后,可对
..
我有一个大约 200 种颜色的 RGB 格式数组.我想编写一个程序,它采用任何 RGB 颜色并尝试匹配数组中最“相似"的颜色. 我需要给“相似"一个好的定义,尽可能接近人类的感知. 我还想展示一些关于匹配准确性的信息.例如,黑白:100%,对于色调略有不同的相似颜色:-4%. 我需要使用神经网络吗?有没有更简单的选择? 解决方案 将所有颜色转换为 CIELab色彩空间并计
..
测试两个矩形是否相交的快速方法是什么? 网上一搜就找到了这个单行代码(WOOT!),但我不明白如何用Javascript编写它,它似乎是用一种古老的C++形式编写的. 结构{左长;长顶;长对;长底;矩形;bool IntersectRect(const RECT * r1, const RECT * r2){返回 !( r2-> 左 > r1-> 右||r2->右<r1->左||r2->顶
..
您将如何使一系列 RGB 颜色在光谱颜色范围内均匀分布?从而看起来像真正的彩虹. 解决方案 改为使用 HSL:固定亮度和饱和度并将色调从 0 更改为 360,然后转换为 RGB. HSL 描述了人们感知到的颜色.RGB 将它们描述为机器使用它们.所以你不能直接使用 RGB 做任何视觉上令人愉悦的事情.
..
将颜色值从浮点数转换为字节的正确方法是什么?起初我认为 b=f*255.0 应该这样做,但现在我在想,在这种情况下,只有确切的 1.0 会被转换为 255,但 0.9999 已经是 254 这可能不是我想要的... 看起来 b=f*256.0 会更好,除了在精确的 1.0 的情况下它会产生 256代码>. 最后我使用了这个: #define F2B(f) ((f) >= 1.0 ?
..
我有两种颜色定义为 RGBA(在我的具体示例中,其中一种颜色是 [white with alpha 0.85] 和 [57, 40, 28 with alpha 0.25].第二种颜色绘制在第一种颜色上(即带有 alpha 的白色是背景,第二种颜色用于绘图.我怎样才能弄清楚组合的 RGBA 颜色是什么?我需要一次性完成 - 所以任何工具都可以(例如我很高兴在 Photoshop 中画一些东西,看看
..
原始问题 我正在寻找一个函数,该函数试图量化两种颜色的“距离"(或不同)程度.这个问题实际上分为两部分: 哪种色彩空间最能代表人类视觉? 该空间中什么距离度量最能代表人类视觉(欧几里得?) 解决方案 转换为 La*b*(也就是简单的“Lab",您还会看到对“CIELAB"的引用).色差的一个很好的快速测量是 (L1-L2)^2 + (a1-a2)^2 + (b1-b2)
..