Golang切片使用与内部实现(翻译)

Golang的切片类型提供了一种简单高效的操作序列化类型数据的方式。切片和其他语言中的数组类似,不过含有一些特殊的属性。这篇文章我们就来看一下什么是切片和如何使用切片

一种回溯的解数独算法

​ 数独是一种逻辑性的数字填充游戏,玩家须以数字填进每一格,而每行、每列和每个宫(即3x3的大格)有齐1至9所有数字。游戏设计者会提供一部分的数字,使谜题只有一个答案。

一个经典的数独题

洗牌算法

洗牌算法是一个比较形象的术语,本质上是让一个数组内的元素随机排列。刚在segmentfault看到这样一个问题10万个数字无序排列,也就是洗牌了。

实现

维基百科上的Fisher–Yates shuffle对洗牌做了比较详细的介绍,上面伪代码实现如下

1
2
3
4
-- To shuffle an array a of n elements (indices 0..n-1):
for i from n−1 downto 1 do
     j ← random integer such that 0 ≤ j ≤ i
     exchange a[j] and a[i]