「宇宙点状文明」模拟程序

引自《三体》后记:
我曾经陷入【宇宙文明点状化】的这种思维游戏中不可自拔
那个时期,我还编过一个宇宙点状文明体系总体状态的模拟软件,将宇宙间的智慧文明简化为点,每个点只具有描述该文明基本特征的十几个简单参数,然后将文明的数量设置得十分巨大,在软件中模拟这个体系的整体演化过程。
软件运行时最多的一次曾在十万光年半径内设定了三十万个文明,这个用现在看来很简陋的TUBOC编的程序在286机上运行了几个小时,结果很有趣。
模拟地址:simulation
知乎回答:知乎地址

引自《三体》后记:
我曾经陷入【宇宙文明点状化】的这种思维游戏中不可自拔
那个时期,我还编过一个宇宙点状文明体系总体状态的模拟软件,将宇宙间的智慧文明简化为点,每个点只具有描述该文明基本特征的十几个简单参数,然后将文明的数量设置得十分巨大,在软件中模拟这个体系的整体演化过程。
软件运行时最多的一次曾在十万光年半径内设定了三十万个文明,这个用现在看来很简陋的TUBOC编的程序在286机上运行了几个小时,结果很有趣。
模拟地址:simulation
知乎回答:知乎地址
实际上submodule 与 pull request,并没有什么直接关系。
比如一些团队采用code-review的方式进行协作,那么他们可能只用到pull request。
这里之所以放在一起,是因为很多场景用到了其中一个,就少不了另一个。
那么,什么情况下我们需要用到 submodule 和 pull request呢?!
假设我们的项目是用git来管理,这时我们需要添加一个第三方库的源码(以下简称lib),而这个lib,也是通过git来管理。
这种情况,一般有两种选择:
这两种方式各有利弊,接下去就来好好分析一下。
最近一直在Windows下做开发,自带的cmd可用性太差。
虽然也装了GitBash(MINGW64),但是终归和Mac下的Iterm2 + oh my zsh无法比。
所以就花了点时间,去寻找可以在Windows下用的类似工具。
看了一圈之后,最后决定用ConEmu + Babun来实现。
中午吃完饭,居然下起了雨,不过好在下的不大。在回公司的路上,小k问了我上面这个问题。
这可有点难到我了,倒不是问题本身有多难,而是通俗的解释问题的结论有点难。
毕竟这个问题涉及到各种数学计算,细节太多,无法直接描述。
既然计算起来比较麻烦,那就只能通过模拟实验来展示结论!

晚上和同事小k一起吃饭回家(小k是公司的一名美术),他在路上问了我这个问题。
于是就有了下面的对话。
我:这个问题啊,我得想想怎么才能比较通俗的和你解释。(如果直接说,算法能力、架构能力强,小k肯定是听不懂的)
我:哦,想到了!还记的小学的数学课本上,有一则关于高斯的故事吗?大概就是说“老师布置了一道题目,让大家算出从1加到100是多少”
小k:嗯,有点印象。
我:对于这个问题,普通程序员,可能就是一个一个的做加法,需要运算99次。而优秀的程序员会写出(100 + 1) * 100 / 2的公式,只要3次运算就搞定了。
小k有点懵,貌似不怎么理解为什么可以这样算出结果。。。
于是我继续解释:你可以试着想象一下 “把1+2+…+100写在纸上,然后再在它的下一排,倒过来写100+99+…+1
大致就是这样:”
1+2+…+100
100+99+…+1
我:可以发现,上下两两相加,就变成了: 101+101+…+101。总共有100个101,因为这样算实际上是做了两次1+…+100,所以我们还需要除以2。
小k似乎懂了,但是过了一会又说:等一下,为什么都是101,中间的50+50,不是应该是100吗?
看到小k,问出这样的问题,我只好继续解释:1到100,是偶数个,只有奇数才有中间的那个数字,比如1,2,3。
小k:哦哦哦,懂了
至此,终于向小k解释完这个问题。
如果小k去当程序员的话,应该算不上优秀… :-) 哈哈哈
InfluxDB简明手册 操作教程 中文文档。
手册不断完善中,欢迎 pull request!
如果对你有所帮助,请给一个Star!
项目地址: https://github.com/xtutu/influxdb-handbook
手册在线地址: https://www.gitbook.com/read/book/xtutu/influxdb-handbook
