如何在图中新增一条边,使任意两点的距离之和最小?

游戏《太阳帝国的原罪》里,瓦萨里种族可以建造相位跳跃稳定器,飞船可以直接从一个有相位跳跃稳定器的星球跳跃到另一个有相位跳跃稳定器的星球,无需现有路线。

如图1,粉色是我的星球。如何添加两个相位跳跃稳定器,能够最大程度地减少我方飞船在各个星球之间的飞行距离?

把上图数学化,如图2,红色是可以添加相位跳跃稳定器的星球,黑色是不能添加相位跳跃稳定器的星球。

解法

似乎除了穷举法没有更好的办法。于是我用Mathematica实现。


(* 定义可添加边的顶点和不能添加边的顶点 *)
colonizableVertices = {a, b, c, d,[......]

继续阅读

用chocolatey帮助重装系统

chocolatey是Windows下的软件管理器。

我重装电脑后一般都要装VIM、7zip、迅雷、AutoHotKey等等,每次都手工装有点麻烦。可以写一个chocolatey脚本自动化,这样就方便多了。可是重装电脑可能脚本也会被清除,所以脚本放github上,chocolatey先装git,然后从git上下载脚本再运行。

choco install git

hljs.initHighlightingOnLoad();

2017年手机选择心得

保修不需要太长。如果自带1年保修,就不用买额外的保修。因为现在手机更新换代很快,一年后又有新机了,如果老手机坏了就买新的。

操作系统

我2010年用过iPhone,对其客服不满意。一次,我发现一个iTunes的bug,打电话去报告bug,客服问我手机是什么型号,哪买的,有没有越狱。这跟iTunes的bug完全没有关系,那个bug在手机未连接时就可重现。另外iTunes臃肿缓慢,存取iPhone的文件和歌曲都很麻烦。不知道现在怎么样了。所以iPhone置后考虑。

Android

从前看过一篇文章,说选择手机其实是选想要哪家公司的服务,想要apple的服务就选iphone,[......]

继续阅读

将github上的多笔commits合并成为一条commit

TortoiseGit的修改上次提交非常方便,所以如果一开始发现某个提交不完整,直接用修改上次提交的方法来修正,不要发起一笔新的提交,这样就不用合并多笔提交了。

最后在推送时选择强制,对应的命令行是git push -f

以下是2016年5月14日发布的内容。

原文发表在ITSPG'S BLOG,为防删除,备份至此。该文演示的操作是合并master分支的最新提交。如果要合并中间几个提交,可能也可以这么做,只是末尾不需要合并的提交就在Step 5-1保持为pick。当然,如果想要合并的提交之后还有很多提交,可能这里的方法就不好用。

为了鼓励前往原站阅读,这里[......]

继续阅读

钢铁雄心4科技mod教程

Mod原理

以下纯属猜测。

游戏引擎先递归读取安装目录下的所有文件,然后读取mod文件夹下的所有文件,如果这些文件重名,将以后读取的为准。接着读取文件内容。例如把新陆军学说的代码写在mod文件夹里的common\technologies\land_doctrine.txt,则因为路径被覆盖,游戏不会读取安装目录下land_doctrine.txt,导致只显示新添加的陆军学说,现有的陆军科技不见了。

文件内容将以“创建对象”的方式载入游戏,不支持修改已创建的对象。例如要增加科技先进计算机的效果,该科技原始定义为


advanced_computing_machine =[......]

继续阅读

CSS height属性不起作用

https://jsfiddle.net/g9979h5c/

<div id="d1">
  hello
  <br> world
  <div id="d2" style="height:100%">

  </div>
</div>

子元素设置了height:100%,但是开发者工具显示它的高度是0。

首先,height的百分比是指向父元素的高度的,但是因为父元素没有显式的高度(在例子中是auto),所以取其百分比无效。

h[......]

继续阅读

钢铁雄心4事件mod教程

我网上搜了一下,没有发现任何一个钢铁雄心4事件mod教程,我只好把我自己的制作经验写一下。

先在启动器里创建mod。填写好mod名称和文件夹名。例如我创建chinaGuide mod。

创建好的mod在lib://Documents/文档/Paradox Interactive/Hearts of Iron IV/mod/ChinaGuide。

然后创建events文件夹,在里面创建一个txt文件。这个是你的事件定义,假设取名为gqqnbig.txt,然后里面要写add_namespace = gqqnbig,即文件名必须与命名空间一致。不同的话fire_only_o[......]

继续阅读