我在这里看到了关于John Carmack计算平方根的神奇方法的这个主题,它引用了这篇文章:http://www.codemaestro.com/reviews/9.这让我很吃惊,我只是没有意识到计算sqrt会如此之快.
我只是想知道电脑游戏用来运行得更快的其他"魔法"的例子.
更新:John Carmack不是魔法代码的作者.这篇文章讲述了更多.谢谢@moocha.
有一本书收集了很多这些"魔术"并且对你来说很有趣:黑客的喜悦.
你有很多技巧,比如钻头等等......(你有几个平方根算法,例如你可以在谷歌书籍版本上看到)
这不是一个数学黑客,但我喜欢这个关于Java6中的罗马数字:
public class Example { public static void main(String[] args) { System.out.println( MCMLXXVII + XXIV ); } }
由于重写规则,它将给你预期的结果(1977 + 24 = 2001):,
class Transform extends TreeTranslator
Java编译器的内部类.
Transform
访问源代码中的所有语句,并将名称与罗马数字匹配的每个变量替换为具有相同数值的int文字.
public class Transform extends TreeTranslator { @Override public void visitIdent(JCIdent tree) { String name = tree.getName().toString(); if (isRoman(name)) { result = make.Literal(numberize(name)); result.pos = tree.pos; } else { super.visitIdent(tree); } } }