heapify

A fan of Donald Knuth

什么是尾递归?

在开始学习 Lisp 的同时,我遇到了术语“尾递归”。到底是什么意思?

考虑一个简单的函数,该函数将前 N 个自然数相加。(例如sum(5) = 1 + 2 + 3 + 4 + 5 = 15)。 这是一个使用递归的简单 JavaScript 实现: 1 2 3 4 5 6 7 function recsum(x) { if (x === 1) { return x; } else { return x + rec...

C++ 有多难? - 知乎

C++ 有多难? - 纸条的回答 - 知乎

1,319 人赞同了该回答 C++ 难就难在:在 C++ 中你找不到任何一件简单的事。 上面有人把 C++ 和物理作类比。我很同意。理论物理是一场无尽的旅程,总有最前沿的东西。我对神经科学很感兴趣,也有幸与一个神经科学相关专业的学生交流过,她还给我发过资料,我很感激。然而我在知乎上看到过一个相关的讨论。一个人说“我小时候就想知道大脑是如何工作的,于是我学了神经科学,如今我已经是神经科...

GMT Study Notes

Simple tricks to make scripting in GMT manageable

Timeline 2017-02-01: created and shared on OverLeaf 2017-02-20: peer reviewed by Sabber Ahamed and Chunyu Liu 2020-10-15: hosted on GitHub and rendered as Jekyll pages Preface These tec...

Solutions to LeetCode in Java

Plus advice for job interviews

Timeline 2020-09-11: created LeetCodeJourney 2020-09-12: composed Markdown files 2020-09-13: hosted on GitHub and rendered as Jekyll pages Preface In geological sciences or other academ...

贪食蛇 AI 初等套路

哈密顿路径、拓扑排序、动态规划和贪心算法的原理

—— 前言 —— 贪食蛇 AI 是入门人工智能的第二个练手项目(刚开始打算写俄罗斯方块,看了 El-Tetris 那个实现方法,感觉太没挑战性直接跳过了)。不得不承认的是除了 AI 设计上的严谨性,“吃满整块画布” 也得靠运气。除了俄罗斯人制作的牛逼 GIF(我们至今无从知道实现细节)以外,没有一段代码可以做到一个洞也不留的。这背后一定有一些更深刻的原理值得探讨…… 鄙人设计的一个不...

四种随机生成迷宫的算法

深搜遍历、递归分割、并查集和最小生成树原理

—— 前言 —— Computer Scientists 擅长把组合数学里面的东西运用到编程中来,有些可以对算法起到加速效果,而更多情况下是为了实现程序化生成技术 (Procedural Content Generation)。这次想带来的迷宫生成算法,难度虽然不高,却都是图论在游戏编程里的精彩应用 —— 这些关卡如果纯粹靠人力来设计,不仅耗时而且其细节丰富程度与算法生成的迷宫相去甚远。这...

数独求解方法之卷积神经网络

(接上) 入门深度学习门槛并不高,你不需要自己编写代码来做搜索、寻找最短路径,或是担心内存开销等问题。由于代码的抽象程度高,借助 keras、sklearn 等发展比较完善的工具,哪怕不理解基本原理,仿照别人的代码很快写出像模像样的工程来。随之而来的弊端就是各种不能理解其原理的人(如我)所做的无知假设,这种含糊的态度,只能把自己学渣的地位继续暴露无疑。That said,如果你享受把轮子再...

谈数独求解里的各种优化方法

十字链表、回溯递归、整数规划和多进程搜索

本文所用方法一览: 组合搜索法(多进程) 整数规划(单纯形法) 布尔可满足性 N 皇后解法 精确覆盖解法 神经网络预测法(试验版本) 部分方法详解,其它仅作介绍。 —— 前言 —— 作为科班出身的 Computer Scientist,我一直希望以过来人身份澄清一些看法,谈一谈程序员之间怎么拼内功。换一个方式来讲,我 CSers 固然都是写代码的,你地球物理...