几道趣题

conan

最近看到这个网站 http://gurmeet.net/puzzles/很不错啊,有很多有意思的谜题,而且还有详细的答案,最下面还给了些其他的谜题网站,然后今天终于把所有题看完了,有一些经常见到的题,也有一些第一次见的题,我挑出几道有意思的和大家分享一下。
继续阅读

留下评论

c++智能指针的简单实现

pointer

因为c++没有拉圾回收的机制,所以,c++程序经常出现各种内存泄漏,一般而言,指针的new和delete需要对应,不然就会出现很严重的问题。而智能指针就是帮助我们自动管理指针的一种方式,比较常用的就是利用引用计数的方式,实现,当变量出了作用域时自动删除,当还有其他变量持有指针时不会删除。

继续阅读

, , 留下评论

Clojure的宏

clojure

Clojure是运行在java虚拟机上的一种lisp的方言。说道lisp的话最先想到的应该是函数式编程,括号之类的词语,话说大家在读了《黑客与画家》这本书后肯定都会觉得lisp很厉害,都想来试试。而clojure作为lisp的一种方言,当然是包含了lisp的各种强大特点,而lisp的很强大很灵活的一个原因要归功于他的宏。说道宏的话,c里也是有宏的概念的,而lisp的宏其实本质和c里的宏都是一样的,都是做代码替换,但是lisp的宏应用起来更加强大。
继续阅读

, , 留下评论

利用函数来画任意图形

dft

最近我们经常看到像鸟叔,初音之类的通过函数图像来画出来,看上去十分神奇的样子,wolframalpha这里有大量的通过函数图像来画人物的例子,大家可以去围观,而且最上面我这几个字也是我用函数图像画出来的,今天我们就说说这是怎么做到的。

继续阅读

, 11 comments

在线协同编辑的实现

google_doc

类似google doc,协同编辑就是能够让多人同时编辑同一份文档。用过版本控制的童鞋都知道,用版本控制的一个好处就是,可以方便的多人共同去做一个项目,但有时大家会对同一个文件的同一行进行了修改,这时merge代码的时候,就需要你去手工去解决冲突,而协同编辑同样也面临冲突的问题,这时候就是程序实时的自动去解决冲突了。

继续阅读

6 comments

2-sat问题

Implication_graph

这篇文章我们提到过sat问题,sat问题是第一个npc问题,具体是这样的SAT全称是satisfiability,他是问对于一个合取范式,是否有一种输入使得他的输出是1,具体点就是类似这样的布尔表达式(x1 or x2 or x3)and(x3 or x4)and(not x1 or x5)对于所有的x是否有一种01取值,使得最后的结果是1。而2-sat问题就是每一个由or连接的子式都只包含两个变量,比如这样(x1 or x2) and (not x3 or x1),2-sat问题是有多项式解法的,而3-sat就是npc问题了,前段时间有人宣称证明了p=np就是因为他自己找到了3-sat的多项式解法,当然最后被证明解法是错误的。。。那么对于2-sat问题解法而言,经典的就是利用强连通分支的算法来解决,最近上的coursera上的algo2有个随机算法也很有趣这里我们也要讲一下。
继续阅读

, , 留下评论

打印自身的程序


当初看到matrix67上介绍的这个函数时震惊的不行,看了解释后发现其实也不是很难,于是最近又看到这个打印自身源码程序的程序,一开始大家都会有种神来之笔的感觉,其实了解到背后的想法和构思过程的话,其实自己去实现一个也不是很难的事情。

继续阅读

, 1 comment