泽拉の避风港

末世纪元第200年

0%

上水课,觉得太无聊便突发奇想找几个数独玩一玩,无奈脑子不够用,两三个数独就能让我汗流浃背(不是),回想起高中那会儿还研究过回溯法解数独,那个时候的思维不够具象化回溯法的递归原理,所以很轻易就放弃了

到了大学,有时间也有思维去研究相关原理了,正好现在文章两三个月没更新了,所以在这里水一篇。

数独规则

对于数独的规则,大家或多或少都有了解,我在下面用自己的语言描述一下。

若有 \([9\times9]\) 的由数字构成的方阵,且该方阵要求每一行、列、宫(即 \([3\times3]\) 的方阵)所包含的数字都不重复,而数独即在完整的该方阵中取出一定数量的数字形成的难题。

严格意义上来说,数独有且只有一组解,不唯一解的数独是有问题的。

回溯法

回溯法解数独是一种递归穷举的方法,但它为什么要叫这样一个名字?这一定和它的作用原理有关,顾名思义,面对某个连贯的代数问题 \(Q\) ,其有 \(m\) 级,而每一级有 \(n\) 种输入值,且输入值有判定合法的规则,如果其只包含一组解 \(a_m(n)\) ,若任意一个某级输入值 \(a_p(q)\in a_n\) 都不满足该级的判定规则时,就回溯到 \(a_{p-1}\) 级,再次寻找符合规则的临时解。

如果将整个问题 \(Q\) 比作一棵树,那么回溯法就是尽可能地找到整棵树中最深的地方,在那里得到问题的解。

以下数据基于版本v0.9.0.8(The Latest),之后会陆续施工补全相关数据。

(并且按照线索能推断出每周挑战是按照表格顺序每周轮换)

ID 名称 描述
1 黑灯瞎火 准备好蜡烛,无法打开所有灯光!
2 肾上腺素成瘾 空气中肯定有坏东西,导致人人疯狂!
3 仅限侦查 这只鬼不会给出任何证据,考验你的侦查能力!
4 捉迷藏:捉鬼 有个非常安静的鬼魂藏在某处,你能找到它吗?
5 躲猫猫:躲藏 这只鬼想玩游戏,最好赶快躲起来!
6 刺骨寒温 寒风凛冽,万物肃杀,人鬼皆慢
7 服从命令 你必须强迫鬼给出证据,幸好我们找到了一些额外物品来帮助你。
8 龟兔赛跑:兔 全力以赴吧,感觉这个鬼特别弱。
9 龟兔赛跑:龟 上周的工作让你感到些许疲惫,更糟的是,鬼来劲了!
10 雷厉风行 无处躲藏,没有理智,即刻出发!
11 理智危机 理智匮乏,没有醒脑丸或灯光。需谨慎再三,方能找出恶鬼。
12 速通! 也许你可以开始计时,看看能多快探明鬼魂类型
13 适者生存 没有药丸,没有理智,没有证据,举步维艰!
14 原始 恐怕所有电子设备都短路了,只能另辟蹊径。
15 不堪一击 没有任何防备进行调查,要小心行事。
16 货物丢失 我们这周未收到全部设备,因此车上可能会缺点东西!
17 只有音频 我们设法弄到了几个额外的音频设备。你得仔细听听。
18 科技狂 我们把那些老东西都扔掉了,这份合约与科技有关!
19 无凭无据 这些鬼真不想帮你,但我们相信你能胜任这份工作。
20 末日将至 最难的挑战,但移速正常。祝你好运。
21 徐图缓进 这个鬼或许行动迟缓,但它很愤怒。保持警惕!
22 超自然狗仔隊 你拥有各种相机、灯光和收音设备。找出鬼魂类型!
23 躲猫猫:极难 这个鬼想玩游戏,你最好快躲起来。
24 暗夜微光 一些设备坏了,希望这个够你看清周围。
25 似曾相识 这个鬼是不是很眼熟?
26 找到你了! 这个鬼会立即追赶你,快跑!

整理:Temi200

在我高二闲暇之余,偶然在b站的一篇专栏(来自帆雨动画)中发现了一个很有趣的问题,以一只二哈为引题,叫“二哈问题”,很好玩的名字,具体是这么描述的:

...

我问:“假期里你没有什么任务吗?”

他说:“有啊,就是出一个数学和物理结合起来的题目,没想好呢还,你有什么主意吗?”

这时,他的二哈正叼着个棒球跑了回来,放在主人跟前,等着再一次抛球。

我说:“求一下二哈轨迹不就行了嘛!”

“这忒简单了罢,不就直线么,送分也不能这么送的!”

“你先往前扔出去,等它捡到球了你就往左边跑。”

二哈叼起球后看见主人在奔跑,显得更欢快了,迅速跑向主人。

在奔跑过程中,它一直在调整方向,以保持始终朝着主人跑...

追及问题,不过变成二维了,那就很有意思了啊,当时就决定研究这个问题的结果。 无奈自己头脑不够,当时并不会熟练运用微积分思想,所以只能程序逼近计算,但是这一前提少不了假想:

不妨设想追击时间t和人狗速率差有关,且一定成反比,即:

\[a=\frac{k}{v_1-v_2}\]

以后施工。

二维轨迹

让我们回顾一下二哈问题:

一人一狗在同一位置(近似为一点)人手里有棒球,向前投出,棒球落地狗去捡,当狗捡到棒球瞬间(记当前人狗距离为L,随后人开始垂直于初始点到狗的连线跑(也是往正左或正右跑)速度为 \(v_2\) 不变,狗立即追人,速率为 \(v_1\),方向时刻指向人(即人狗连线在狗轨迹切线上),且\(\vert v_1\vert>\vert v_2\vert\),试问:

(1)狗追上人的时间 \(t\)

(2)狗的轨迹方程。

我们来计算第二问: 涉及到狗的轨迹方程,我们不妨设狗在某一时刻的坐标为 \((x,y)\),因为任意时刻人都在狗在这一点对其轨迹方程的切线上,故我们不难得出人的位置为 \((0,y-xy')\)。 我们从题目中可以知道\(\vert v_1\vert>\vert v_2\vert\),故我们设:

\[v_1=nv_2\quad (n>1)\]

因为速率不变,故路程也应满足:

\[s_1=ns_2\quad (n>1)\]

引入弧微分 \(\mathrm{d}s\) ,对于狗走过的路程有:

\[\int_L^x\sqrt{(\mathrm{d}x)^2+(\mathrm{d}y)^2}\mathrm{d}x=n(y-xy')\]

两侧对 \(x\) 求导得:

\[\sqrt{1+(y')^2}=nxy''\]

\(Y=y'=\frac{\mathrm{d}y}{\mathrm{d}x}\) ,分离变量整理得:

\[\frac{\mathrm{d}Y}{\sqrt{1+Y^2}}=\frac{\mathrm{d}x}{nx}\]

两侧积分得:

\[\ln\vert{Y+\sqrt{1+Y^2}}\vert=\frac 1n\ln\vert x\vert\]

第一步整理,去绝对值: 我们先考虑图中的情况,所以原式可化为:

\[\ln(Y+\sqrt{1+Y^2})=\frac 1n\ln x\]

进一步化为:

\[Y+\sqrt{1+Y^2}=x^{\frac 1n}\]

最终得到:

\[Y=\pm\left(\frac{C_1}2x^{\frac 1n}-\frac 1{2C_1x^{\frac 1n}}\right)\]

我们取其中的正值,即:

\[\frac{\mathrm{d}y}{\mathrm{d}x}=\frac{C_1}2 x^{\frac 1n}-\frac 1{2C_1x^{\frac 1n}}\]

\(y=0\) 时,有 \(x=L\)\(\frac{\mathrm{d}y}{\mathrm{d}x}=0\) ,带入上式可得出:

\[ \frac{C_1}2 L^{\frac 1n}=\frac 1{2C_1L^{\frac 1n}}\]

即:

\[ C_1=L^{-\frac 1n}\]

最终带入原式得:

\[y=\frac{L^{-\frac 1n}}2\left(\frac n{n+1}\right)x^{\frac{n+1}n}-\frac 1{2L^{-\frac 1n}}\left(\frac n{n-1}\right)x^{\frac{n-1}n}+C_2\]

因为根据初值条件求解 \(C_2\) 的结果很麻烦,故这里采取定义并直接带入:

\(y=0\)\(x=L\) 时,令

\[F(x)=\frac{L^{-\frac 1n}}2\left(\frac n{n+1}\right)x^{\frac{n+1}n}-\frac 1{2L^{-\frac 1n}}\left(\frac n{n-1}\right)x^{\frac{n-1}n}\]

,则有:

\[C_2=-F(b)\]

故最终的轨迹方程可以表示为:

\[\begin{cases} F(x)=\frac{L^{-\frac 1n}}2\left(\frac n{n+1}\right)x^{\frac{n+1}n}-\frac 1{2L^{-\frac 1n}}\left(\frac n{n-1}\right)x^{\frac{n-1}n}\\ \\ y=F(x)-F(b)\\ \end{cases}\\\quad (n>1)\]

三维轨迹

先不写。

以后的路上,不必强迫而顺然。

搭建一个属于自己的博客是我一直想做的,以前尝试直接用GitHub Pages搭建,但是单纯访问readme文档都卡的要死,最近发现Hexo搭建的很方便,Cloudflare也能加速访问GitHub Pages,自己在中间踩了很多坑,故写在这里防止其他人走不必要的弯路...

准备工作

Hexo

Hexo是一款基于Node.js的静态博客框架,可以方便地生成静态网页挂载在GitHub和Heroku上,是搭建博客的首选框架,这里我们就选用Hexo来搭建。 需要准备的软件

1
2
Git: https://git-scm.com/
Node.js: http://nodejs.cn/
准备在本地搭建博客的文件夹中右键选择"Git bash here",当然在地址栏中键入cmd也是可以的。 进入窗口后输入命令:
1
2
3
4
5
$ npm intstall hexo-cli -g
$ hexo init blog
$ cd blog
$ npm install
$ hexo server
完成以上工作后访问http://localhost:4000就能看到已经搭建的本地博客,其中主题为默认主题landscape。 你可以通过查询Hexo命令来进行文章发布的操作,也可以通过修改_config.yml来进行设置主题等操作,这些在官网都有相关文档。

CloudFlare

1
CloudFlare官网:https://cloudflare.com/

Cloudflare能提供安全服务和加速代理,所以这里选用Cloudflare加速Github Pages。

获取Cloudflare账号

注册即可。

在Pages界面里绑定Github账号,设置对应库即可,免费版每天boundle访问次数有10w,作为静态网站(如个人博客)再合适不过。

Gitub Pages

你肯定需要一个平台来承载你的静态网站内容,这里建议用GitHub而不是Gitee,虽然Gitee是国内服务器访问速度快,但是安全性无法保证,当然,你也可以考虑用Gitee+Hexo来构建你的个人网站。

优点:免备案,搭建简单。缺点:访问慢,所以要加速,会繁琐一些。

新建GitHub仓库

我们在完成Hexo的本地部署后,要连接Git以方便我们进行快速便捷地修改上传博客到Gitub上。我们要先在GitHub上新建一个库,库的名字为用户名.github.io(如200git.github.io)。

将库和本地文件夹绑定

生成SSH-keys,首先检查ssh完整性,在本地任意文件夹位置处Git bash,随后输入ssh以检查是否安装ssh,然后在命令框中输入:

1
$ ssh-keygen -t rsa -C "注册Github时使用的邮件地址"
然后敲四次回车。(有可能是三次,我忘了。

随后输入:

1
$ cat ~/.ssh/id_rsa.pub
并将输出内容复制到Github设置中的SSH key框中,title无特殊要求可随意起名。注意id_rsa私钥不能泄露,而id_rsa.pub是公钥所以可以提供或分享。

最后测试ssh是否绑定成功:

1
$ ssh -T git@github.com
到这一步我们就完成了本地库和GitHub远程库绑定啦~

随后确定用户名和邮箱:

1
2
$ git config --global user.name "你的用户名"
$ git config --global user.email "你的邮箱地址"
然后在本地博客的文件夹下修改_config.yml,补充配置文件最后的deploy部分,具体内容如下:(留意冒号后边的空格!!没有空格会报错!!)
1
2
3
4
deploy:
type: git
repository: 你刚才创建的Github地址
branch: main
修改配置文件保存后,在博客文件夹下Git bash,安装hexo-deployer-git
1
$ npm intstall hexo-deployer-git --save
然后生成网页:
1
$ hexo g
部署网页到GitHub远程库:
1
$ hexo d
然后我们就可以通过GitHub或者Cloudflare提供的多级地址来访问我们的静态网页啦~ (如果你遇到输入密码或者输入令牌的提示语句,你可以通过查百度的方法来解决,比我讲的细致多了)

域名(可选)

这可不是推销啊,域名的选择是自己决定的!!!

使用GitHub或者Cloudflare所给的多级地址访问可能记起来过于繁琐(我的笨脑子应该记不下来),所以有一个便捷访问又具有个性的域名是一个不错的选择。 申请域名的地方很多很多,可以选择阿里云、腾讯云之类的,新用户还有优惠!(比如我这个域名zeratemi.fun一年也就9块钱,首年1.29元,而且fun也意为快乐~ ^ ^

这里以腾讯云为例,腾讯云会分配免费的DNS来解析域名,但如果我们要使用Coudflare来代理加速我们的网页,我们就要用Cloudflare提供的名称服务器来作为DNS解析,而具体的设置流程,都能在对应官网找到解答办法,这里不多赘述。 修改名称服务器的审核可能需要一段时间,这和平台本身有关,但我估计最慢也不会超过1小时,当Cloudflare处检查名称服务器通过时,会发送邮件来提醒你名称服务器已经修改成功。并且再三强调,一定一定一定要等Cloudflare检查通过冒绿色对勾了再检查域名,否则再怎么看也是卡到host处。

博客文章

Hexo的文章使用的语言是轻量化标记语言Markdown,这种语言很好上手的,表现起来也很方便,教程网上都有,看一遍学会满足基本需求的部分就行。

放一首喜欢的歌,我觉得很好听。