一点一点前进...

0%

给定一个数组,包含1到N的整数,N最大为32000,数组可能包含重复的值,且N的取值补丁。若只有4KB的内存,如何打印出数组中所有的重复元素呢?

4KB,481024 bits,比32000要大一些。我们可以创建一个32000bits的位向量,其中每个bit代表一个整数。
利用这个位向量,遍历整个数组,遇到元素v,如果v对应的bit位已经是1,就打印该数字,否则,把对应bit设置为1。

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public static void CheckDuplicates(int[] array)
{
BitSet bs = new BitSet(32000);
foreach (var num in array)
{
var num0 = num - 1; // bs starts at 0, but number starts at 1
if (bs.Get(num0))
{
Console.WriteLine(num);
}
else
{
bs.Set(num0);
}
}
}

class BitSet
{
private int[] bitSet;

public BitSet(int size)
{
bitSet = new int[size >> 5]; // size / 32
}

public bool Get(int pos)
{
int wordNumber = pos >> 5; // pos / 32
int bitNumber = pos & 0x1F; // pos % 32
return (bitSet[wordNumber] & (1 << bitNumber)) != 0;
}

public void Set(int pos)
{
int wordNumber = pos >> 5; // pos / 32
int bitNumber = pos & 0x1F; // pos % 32
bitSet[wordNumber] |= 1 << bitNumber;
}
}

第九章 历史的方向

人类几乎从出生到死亡都被虚构的故事和概念围绕,让他们以特定的方式思考,以特定的标准行事,想要特定的东西,也遵守特定的规范。
这种人造的直觉就是“文化”。
自由和平等都是基本的价值观,然而这两者根本就是相互抵触!
自从1789年法国大革命以来,全球政治可以说就是讲述着要如何解决这种矛盾。
合久必分只是一时,分久必合才是不变的趋势。
人类有越来越多雄心勃勃的计划,想要实现这种世界一家的概念。接下来要一一讨论货币、帝国和全球宗教是如何传播,又如何建立起全球一家的基础。
历史上最伟大的征服者,这位征服者极端宽宏大量,手段又 灵活无比,让人人都成了前程狂热的信徒。这位征服者就是金钱。

第十章 金钱的味道

至于在现代监狱和战俘营里,常常是用香烟来当作钱。
所有的钱超过九成(50兆美元!)都只是显示在计算机上的数字而已。
它们的价值都只存在于我们共同的想象之中。,而且是心理上的想象。
金钱正是有史以来最普遍也最有效的互信系统。
虽然各地的人们还是继续讲着不同的语言,服从不同的统治者,敬拜不同的神灵,但都信服着同样的黄金白银、金币银币。
在贸易连接两个区域的时候,只要是能够运送的货品,就会收到供需力量的影响,让价格达到平衡。
Leo:但是政治的力量,比如关税,禁售等,导致各国的同一商品,价格还是不一样的。
金钱能够跨越几乎所有的文化鸿沟,不会因为宗教、性别、种族、年龄和性取向而有所歧视。
我们用金钱来促进与陌生人的合作,但是又害怕这会破坏人类的价值和亲密的关系。一方面,我们也想打破那些限制金钱和商业流动的社会大坝,但另一方面,我们又不断筑起新的大坝,希望保护社会、宗教和环境免受市场力量的奴役。
虽然黄金和白银的影响深远,但也别低估了刀剑的力量。

第十一章 帝国的愿景

历史就是没有正义。多数过去的文化,早晚都是遭到某些无情帝国军队的蹂躏,最后在历史上彻底遭到遗忘。
帝国正是造成民族多样性大幅减少的主因之一。帝国就像一台压路机,将许多民族独特的多样性逐渐夯平,整合制造出他们更大的新群体。
“我们之所以征服你们,是为了你们好。”
帝国思想从居鲁士和波斯人传给了亚历山大大帝,再传给希腊国王、古罗马皇帝、穆斯林哈里发、印度君主,最后甚至还传给了苏联总理和美国总统。
思想、人口、货物和技术的传播,在帝国境内要比分属不同政治区域来得方便迅速。
帝国积极传播共同的文化,就能强化它们的合法性。
号称日不落的大英帝国,也是号称传播着自由主义和自由贸易这两大福音。苏联人更是觉得责无旁贷,必须协助推动这个历史的必然,从资本主义走向无产阶级专政的乌托邦。至于现代许多的美国人,他们也认为美国必须负起道义责任,让第三世界国家同样享有民主和人权,就算这待靠巡航导弹和F-16战机,也是在所不惜。
帝国所传播的文化理念很少只来自那一小群的统治精英。
被征服者不再认为帝国是个外来占领他们的政体,而征服者也真心认为这些属民是自己帝国的一员。终于所有的“他们”都成了“我们”。
到了20世纪,殖民地接受西方价值观之后,开始以其人之道还治其人之身,用同一套向殖民者要求平等的权利。许多反殖民斗争高举着民族自决、社会主义和人权的大旗,而这些概念正来自西方。
地球上现存的已经没有任何所谓纯净的文化。

第十二章 宗教的法则

我们今天通常认为宗教造成的是歧视、争端、分裂。但在金钱和帝国之外,宗教正是第三种让人类统一的力量。
宗教是“一种人类规范及价值观的系统,建立在超人类的秩序之上”。
宗教必须同时具备“普世特质”和“推广特质”。
在人类不再认为可以和动植物直接沟通之后,就开始出现掌管剩余、掌管气候、掌管医药的各种神灵概念,好替人类和这些沉默的动植物沟通协商。
对多神教徒来说,整个世界就像是反映了神和人类的关系。
多神教提高了除了神的地位,更有人的地位。
多神论认为主宰世界的最高权力不带有任何私信或偏见,因此对于人类各种世俗的欲望、担心和忧虑毫不在意。因此,要向这个最高权利祈求战争胜利、健康或下雨,可以说是完全没有意义。
古罗马人唯一长期以来不愿接受的,只有属于一神信仰并坚持要传福音的基督教。
事实证明,就算把这些迫害的所有受害者全部加起来,在这三个世纪间,多神教古罗马处决基督教的人数不超过几千人。但是相对的是,在接下来的1500年间,虽然基督教号称主张爱与怜悯,但仅仅对信仰的诠释有些许差异,就引发基督徒的自相残杀,死亡人数就达到了数百万。
在一神论宗教里,信徒就能够直接祈求宇宙至高无上的权利来帮忙治病、种乐透或是打赢一场战争。
一般而言,一神教徒比多神教徒更为狂热、更热衷传教。
一神论就像个万花筒,承继了一神论、二元论、多神论和泛神论,收纳在同一个神圣论述之下。结果就是,基督徒大致是信奉一神论的上帝,相信二元论的魔鬼,崇拜多神论的圣人,还相信泛神论的鬼魂。像这样同时有着不同甚至矛盾的思想,而又结合各种不同来源的仪式和做法,宗教学上有一个特别的名称:综摄。很可能,综摄才是全球最大的单一宗教。
有某种超人类秩序在控制着这个世纪,但它们崇拜的这个秩序是自然法则,而不是什么神圣的意志。
“痛苦来自欲望”,这条“佛法”就是举世皆同的自然法则。
佛教徒崇拜的并不是神祗,而是这些已经开悟而尚未成佛的人,除了希望它们协助达到涅槃的境界,也希望它们帮助处理一些世俗的问题。
纳粹并不是反人性。它们之所以同自由人文主义、人权和共产主义站在对立面,反而正是因为它们推崇人性,相信人类有巨大的潜力。它们顺着达尔文演化论的逻辑,认为必须要通过自然选择淘汰不适合的个人,只留下适者,才能让人类继续生殖繁衍。但自由主义和共产主义要保护弱者,不仅让不适者生存下来,还给了他们繁衍的机会,这样就破坏了自然选择的秩序。

第十三章 成功的秘密

虽然我们说全球无法避免单一文化,但它并不见得会是现在世界上的任何一种文化。
马后炮的谬误
事后看起来无可避免的事,在当时看来总是毫无明显。
并不是说一切都有可能发生。地理、生物和经济力量确实会造成限制。
但限制下仍然有许多发展空间,目前还没有什么确实加以制约的法则。
历史就是这样的一团混沌,历史就是无法解释得斩钉截铁,无法预测得十拿九稳。
历史还是“二级”混沌系统,一级混沌指的是不会因为预测而改变,二级混沌系统,指的是会受到预测得影响而改变。
研究历史,不是为了要知道未来,而是为了要拓展视野,要了解现在得种种绝非“自然”,也并不是不可避免。
盲目得历史女神克丽欧
历史得选择绝不是为了人类得利益。随着历史得演进,毫无证据显示人类得福祉必然提升。没有任何证据,证明对人类有益的文化就会成功扩张,而对人类无情的文化就会消失。

斐波那契递归公式如下
F(0)=0 F(1)=1 F(n+2)=F(n+1)+F(n)

通项公式是
F(n)=(ϕnγn)/5 ϕ=(1+5)/2 γ=(15)/2
下面利用递归公式和数学归纳法证明通项公式的正确性。
$$
F(0)=(\phi^0-\gamma^0)/\sqrt5=0\
F(1)=(\phi^1-\gamma^1)/\sqrt5=((1+\sqrt5)-(1-\sqrt5))/(2\sqrt5)=(2\sqrt5)/(2*\sqrt5)=1
nn+1phi
ϕ2=((1+5)/2)2 =(1+5+25)/4 =(3+5)/2 =(1+5)/2+1 =ϕ+1
γ2=((15)/2)2 =(1+525)/4 =(35)/2 =(15)/2+1 =γ+1
F(n+1)
F(n)+F(n1)=(ϕnγn)/5+(ϕn1γn1)/5 =((ϕn+ϕn1)(γn+γn1))/5 =((ϕn1(ϕ+1)γn1(γ+1))/5 =((ϕn1(ϕ2)γn1(γ2))/5 =(ϕn+1γn+1)/5 =F(n+1)
$$

其实,F(n)是距离(phi^n)/sqrt(5)最近的整数。
如何证明这一点呢?
F(n)和(phi^n)/sqrt(5)的距离是|(gamma^n)/sqrt(5)|,只要证明距离始终小于0.5即可。
gamma的绝对值是小于0.7的,n次方导致绝对值会越来越小,所以距离最远的时候也就是取n=0,gamma^0=1,除以sqrt(5)也是小于0.5的。

花了一周多的时间,把自己的写的东西从wordpress上(自己薅羊毛弄的服务器)迁移到Github Pages上来。

做的过程中,学习了hexo,其实很简单,一般写写东西的话会几个命令,会几个关键字就足够了。
hexo是翻译Markdown文件到HTML,简单的看了看Markdown相关的东西,边写边Google就足够了。
为了公式好看,或者去掉图片,还简单的玩了下MathJax,渲染的是挺好看的,对着命令参考文章(这个站点也是放在了Github上,用的是jekyll,当时技术选型也看到了这个,不过没试,第一选择是hexo,发现简单易用,也就没去折腾别的),编辑数学公式也足够简单方便。
再有就是弄了个主题,搞了几个插件,nmp这玩意足够傻瓜,挺好。
其实有些功能还不wrok,比如search,关注等等,以后再慢慢弄。

迁移过来,最大的好处是不用自己负责availability了;其次,其实简单的写几个东西,wordpress是有点重了,不过hexo不支持多categories这点让人挺不爽,只能多用tag了;最后,host在哪里,或者是使用技术栈搭建,都不是重点,重点是坚持更新,持续沉淀东西
整理以前的文章,多少删除了一些,有些文章看了之后挺感慨,有些看了之后觉得当时很幼稚,不管怎么说,这都是自己的过去,偶尔回去看看,感觉还是挺好的。

瞎扯几句。

又过去好久了,总结下过去几个月完成了什么,计划完成什么,有哪些变化。

先来说说阅读。论美国的民主暂停了,阅读是为了获取技能,增长阅历,和大师对话,现阶段,我貌似对这类书籍还是兴趣不大,从中得不到特别多的东西,与其为了读书而读书,不如先暂停,等我哪天对这个主题真的感兴趣了,再接着看。物理学基础公开课2也观看了十几集了,收获挺大,今年应该能如期完成。不读论美国的民主了,本来看了一章《必然》,想看看这本书,不过某人推荐《男人来自金星,女人来自火星》,那就先插入一本吧,看完这个再看必然好了。
计划:男人女人,物理学基础公开课2,可汗宏观。

计算机方面。又看了几个小节的SICP,偶然发现了MIT关于这本书的主页,还有很多配套的东西,想回头从开始,配合这些新的资源,从新开始,不过,这样子让人感觉很不舒服,走回头路,不如回头去看CLRS吧。毕业时想着读完三本书,CLRS,SICP和龙书(可能要先看点其他这个方面的书),这个想法还是要继续坚持哈。CLRS做了部分习题,略过了多数证明,已经看到了BST。啥时候觉得CLRS搞久了需要换换脑子,再回SICP。
计划:CLRS,SICP

数学方面,18.02搞定,但是感觉掌握程度不如18.01,开始了18.06之旅,从萌萌哒的教授变成了沉稳老练的教授。估计学完之后不到年底,那就把前面三门课的配套课本看一看。
计划:18.06

英语方面。单词有天天背,NEC2已经学完,NEC3也在进行中。NEC2 homework也做到了61课,今年做完所有习题问题不大。GlobalEnglish进行到了第五单元。
计划:NEC2 homework完成第三单元,NEC3学完40课,GlobalEnglish应该能搞定unit 5,如果账号不过期的话。

Problem 64

一个数的平方根可以写成连分数,形式就是题目中描述的那样。a0,a1,a2,a3…可以看作是一个数列,这个数列很快就有周期性了,比如题目中的例子,sqrt(23)写成连分数,取数列a就是4,1,3,1,8,1,3…可以看出来,循环节是1318,周期是4。

问题是要求,小于10000的所有整数,有多少个周期是奇数的呢?

求解这个题目,关键是,给一个数N,如何求得a0,a1,a2,a3…
祭出伟大的维基百科:Continued_fraction_expansion
可以略过推导部分,直接看Algorithm实现就好了。

好了,我们现在能求得了这个数列,如何判定周期呢?
从算法上我们可以看到,m d a三个数是迭代计算的,也就是说,第n+1次的m d a三个数字是有第n次的m d a决定的,因为sqrt(S)不变。如果有两次的m d a一样,那么它们后续都一样。
我的做法是拿一个list,把m d a作为一个组放进去,每次计算得到一组新的m d a,就去list里面查找一下,如果找不到,说明这个是新的pattern,放到list里面,如果找到了,那么这次的序数减去上次的序数,就是周期了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
private static int GetPeriod(int S)
{
int a0 = (int)Math.Sqrt(S);
int m = 0;
int d = 1;
int a = a0;
var periods = new List<Tuple<int, int, int>>();
while (true)
{
m = d * a - m;
d = (S - m * m) / d;
a = (a0 + m) / d;
var cur = Tuple.Create(m, d, a);
int index = periods.IndexOf(cur);
if (index >= 0)
{
return periods.Count - index;
}
else
{
periods.Add(cur);
}
}
}

有了计算周期的函数,下面的事情就好办了,遍历1-10000这一万个数字就好了,不过,我们可以可以先排除完全平方数,因为它们只有a0,没有后续的a1,a2等等。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int count = 0;

var l1 = Enumerable.Range(1, 10000);
var l2 = Enumerable.Range(1, 100).Select(x => x * x);
var candidates = l1.Except(l2);

foreach (var c in candidates)
{
if (GetPeriod(c) % 2 != 0)
{
count++;
}
}

return count;

第五章 史上最大骗局

农业革命可说是史上最大的一桩骗局。
人类以为自己驯化了植物,但其实是植物驯化了智人。
种植小麦,每单位土地上就能提供更多的食物,于是智人的数量也呈指数成长。
这正是农业革真正的本质:让更多的人却以更糟的状况活下去。
人类就像许多哺乳动物一样,自然有荷尔蒙和遗传机制来控制生育数。
Leo:书中有一段话说的非常对。大学生投身劳心劳力的工作,努力赚钱,好在35岁退休,从事自己真正有兴趣的事业?到了35岁呢?背着巨额贷款,子女学费,高级住宅区的豪宅,每家得有两部车,生活里还不能没有高级红酒和国外的假期。该怎么做?放下一切回去采果子挖树根吗?不,而是加倍努力,继续把自己累的半死。
奢侈品史上常有这样的情况,就是原本的奢侈品往往最后会变成必需品,而且带来新的义务。
人类一心追求更轻松的生活,于是释放出一股巨大的力量,改变了世界的面貌,但结果并没有任何人料想得到,甚至也不是任何人所乐见的。
在传统的想象中,认识先建立起村落,接着等到村落繁荣之后,再在村落中心盖起信仰中心。但是哥贝克力石阵显示,很可能其实是先建立起信仰中心,之后才围绕着它形成村子。
蛋鸡、奶牛和提供劳力的役用动物有时候能够多活几年,但代价就是过着完全不符合他们天性和渴望的生活。
我们从农业革命能学到的最重要的一课,很可能就是物种演化上的成功并不代表个体的幸福。
每当人类整体的能力大幅增加、看来似乎大获成功,个人的苦痛也总是随之增长。

第六章 盖起金字塔

农业革命可能是史上最具争议的事件。有些人认为这让人类迈向繁荣和进步,也有人认为这条路终将导致灭亡。
不管这条路的尽头为何,现在都已经无法回头。
早从农业时代一开始,“未来”就一直是人类心中小剧场的主要角色。
Leo:我们现在也还是天天忧虑,考虑未来的生活。
农民生产出来的多余食粮养活了一小撮的精英分子:国王、官员、战士、牧师、艺术家和思想家,但历史写的几乎全是这些人的故事。
战争的根源在于,人类在几百万年的演化过程中,时间并不足以让人类发展出能够大规模合作的本能。
秦朝和古罗马帝国,都只是“由想象所建构的秩序”。
另外两个史上最有名的虚构故事:第一个是大约在公元前1776年的《汉谟拉比法典》,这可以说是几十万古巴比伦人的合作手册;第二个是公元1776年的美国《独立宣言》,这可以说是现代数亿美国人的合作手册。
《汉谟拉比法典》认为,巴比伦的社会秩序根源于由神所指示、普遍且永久的正义原则。人类分成男女两种性别,以及上等人、平民和奴隶三种阶级。
《独立宣言》宣告自己是普遍和永恒的正义原则,一样找了神祗来背书。
即使说的是“人人平等”,也只是虚构的概念。所谓平等的概念,是与“创造”的概念紧密相关。
自然界的秩序是稳定不变的,就算人类不再相信世界上有重力,重力也不会一夜之间就消失。但相反的是,想象所构建出来的秩序总是有一夕崩溃的风险,因为这些秩序背后靠的都是虚构的故事,只要人们不再相信,一切就风云变色。
光靠暴力还不足以维持由想象所构建出来的秩序,我们另外还需要一些真正坚信如此的信徒。
如果人们希望某个由想象构建出的秩序能维持久远,大部分的人(特别是大部分的精英分子)就必须真正相信它。
第一,对外的说法绝对要坚持它们千真万确、绝非虚构。这种维持社会稳定的秩序是个客观事实,是由伟大的神或是自然的法则所创造。
第二,在教育上也要彻底贯彻同一套原则。
有三大原因,让人类不会发现组织自己生活的种种秩序其实是想象的:

  1. 想象构建的秩序深深与真实的世界结合
  2. 想象构建的秩序塑造了我们的欲望
    现代人之所以要花费大巴银子到国外度假,正是因为他们真正相信了浪漫的消费主义神话。
    浪漫主义告诉我们,为了要尽量发挥潜力,就必须尽量累积不同的经验。
  3. 想象构建的秩序在于人和人之间思想的连接
    不论是美元、人权还是美国,都是存在于数十亿人的共同想象之中,任何一个独立的个体并无力撼动这些概念。
    为了改变现有想象构建出的秩序,就得先用想象构建出另一套秩序。

身为人类,我们不可能脱离想象所构建出的秩序。每一次我们以为自己打破了监狱的高墙、迈向自由的前方,其实只是到了另一间更大的监狱,把活动范围稍稍加以扩大。

第七章 记忆过载

智人的社会秩序是通过想象构成,维持秩序所需的关键信息无法单纯靠DNA复制就传给后代,需要通过各种努力,才能维持种种法律、习俗、程序、礼仪,否则社会秩序很快就会崩溃。
人类大脑并不是个很好的存储设备,原因有三:
第一,大脑的容量有限
第二,人类总难免一死,而大脑也随之死亡
第三,也是最重要的一点,在于人类的大脑经过演化,只习惯存储和处理特定类的信息。
文字是采用实体符号来存储信息的方式。
很多文字新鲜但不实用的文字,原因就是在于这些文化没能找出方法来有效编目和检索数据。
苏美尔、古埃及、古中国和印加帝国的特殊之处在于,这些文化都发展出了良好的技术,能够将文字记录予以归档、编目和检索,另外还投入资本培养人才来负责抄写、数据管理和会计事务。
“阿拉伯数字”,其实是印度人发明的。

第八章 历史从无正义

历史的铁则告诉我们,每一种由想象构建出来的秩序,都绝不会承认自己是出于想象和虚构,而会大谈自己是自然、必然的结果。
印度教徒则相信,是宇宙的力量划分了种姓的阶级。
各人种之间,肤色和毛发等有着客观生物学差异,但没有证据显示这些差异会影响到智力或道德观。
阶级有其重要功能。有了阶级之后,陌生人不用浪费时间和精力真正了解彼此,也能知道该如何对待对方。
Leo:几乎每种社会都会以“污染”和“洁净”的概念来做出社会及政治上的隔离,清朝,皇室满足的血就不能被汉族人污染,如果混血的皇子,铁定当不了皇上。
富者越富,而贫者越贫。教育带来了进一步的教育,而无知只会造成进一步的无知。历史上过去的受害者,很可能会再次受害。而历史上过去的特权分子,他们的特权也很可能依然存在。
性别的阶级,有着极高的重要性。世界各地的人都会区别男女,而且至少在农业革命以降,几乎世界各地都是男人占尽好处。
一项黄金法则就是“天生带来允许,文化造成封闭”。
通常把生物学上的区别成为性(sex),而文化上的区分成为性别(gender)。
要当好一个男人或者一个女人,不但过程复杂,而且要求苛刻。“够男人”或“够女人”的标准多半来自文化,而不是天生自然,所以没有什么社会是在人一生下来之后就觉得男性够男人而女性够女人。
当男人有什么好的?至少农业革命以来,大多数人类社会都属于重男轻女的父权社会。
尽管男人和女人的定义在各种文化之间有所不同,但有些共通的生物因素,让几乎所有文化都重视阳刚胜过阴柔。我们并不知道真实的原因为何,虽然有各种理论,但没有任何一个真能完全站得住脚。
如果真的一切只看体力,智人在食物链里就只能处于中间的位置。然而,智人靠着聪明才智和社交技巧,让自己跃升到了食物链的顶端。

这真的是一本写的非常赞的书,从古至今,涉及了人类发展的方方面面,同时,不流于表面,能够深入的探讨深层次的原因,章节之间环环相扣,引人入胜。现总结一下当时划的重点和自己觉得有意思的点。


第一章 人类:一种也没什么特别的动物

同一物种,就是他们会彼此交配,能够产出下一代。
从同一个祖先演化而来的不同物种,会属于同一个“属”genus。
许多属还能再归类为同一科family。
至于智人,也是属于某个科。
我们自己这种人种,颇为厚颜地把自己命名为Homo sapiens,智人,明智的人。
Leo:智人,人类(属)的一种,不过点了智力这个科技树。
过去多种人共存其实是常态,但是现在地球上只有“一种人”,这才是异常。
大脑结构脆弱,消耗的能量的惊人。
人类的另一个特点,在于我们用两条腿直立行走。
为了能远望、能有灵活的双手,现在人类只得面对悲痛、颈脖僵硬的苦恼代价。
与其他动物相比较,人类可说都是早产儿。
人类转眼就登上了食物链的顶端,不仅让生态系统猝不及防,就连人类自己也不知所措。
在踏上食物链顶端的路上,使用火可说是迈出了一大步。
Leo:这是致命的武器,还能烹饪食物。
科学家多半同意,大约到了15万年前,东非就已经有了智人。
其他人种到哪里去了?
第一种是“混种繁衍理论”。
另一种完全相反的观点,“替代理论”。大致共识,考古证据更可靠,政治上也更为正确。
Leo:智人把其他种的人都杀光了?
孔子不会说我们也要“仁者爱人”地对待尼安德特人和丹尼索瓦人。
智人之所以能够征服世界,是因为有独特的语言。

第二章 知善恶树

某次偶然的基因突变,改变了智人的大脑内部连接方式,让他们一前所未有的方式来思考,用完全新式的语言来沟通。
这是纯粹的偶然。重要的是,这不是突变的原因,而是突变带来的结果。
Leo:被外星人弄的?
最常见的理论,认为人类语言最为灵活。
人类语言是沟通关于世界的信息的方式。
“八卦理论”,语言天生就是为了这个目的而生的。
“讨论虚构的事物”正是智人语言最独特的功能。
创造出了有无数万居民的城市、上亿人口的帝国?这里的秘密很可能就在于虚构的故事。
标致公司只是我们的一个一个集体想象。
Leo:Microsoft也是我们现象出来的。
自从认知革命之后,智人就能依据不断变化的需求迅速调整行为。这等于开启了一条采用“文化演化”的快速道路,而不再停留在“基因演化”这条总是堵车的道路上。
在认知革命之后,虽然智人的基因和环境都没什么改变,但智人还是能够迅速改变行为,并将新的行为方式传给下一代。
过去远古人类的行为模式可能维持几万年不变,但对现代智人来说,只要十几二十年,就可能改变整个社会结构、人际交往关系和经济活动。

第三章 亚当和夏娃的一天

这种“贪吃基因”的理论已经得到广泛接受。
“远古公社”理论的支持者认为,现代社会逼迫所有人类采用一夫一妻的核心家庭,但这其实与我们的生物本能背道而驰。
许多学者强烈反对这种理论,坚持一夫一妻制和核心家庭就是人类的核心行为。因为如此,今天多数文化仍采用一夫一妻的核心家庭。
狗。狗是第一种由智人驯化的动物,大约15000年前就已经有了家犬。
经过长达15000年的相处,人和狗之间的理解和情感远远超过了人和其他动物的关系。
有证据显示,自从采集时代以来,智人的脑容量其实是在逐渐减少的。
骨骼化石的证据显示,远古时期的采集者比较少有饥饿或营养不良的问题,身体较高,也比较健康。
泛神论相信,几乎任何一个地点、任何一只动物、任何一株植物、任何一种自然现象,都有其意识和情感,并且能与人类直接沟通。
人类和其他的灵之间没有障碍,可以直接通过语言、歌曲、舞蹈和仪式来沟通。
Leo:书中在远古墓穴里面发现了长毛象象牙珠串,3000颗左右。话说几万年前,人类就用象牙制品了,几万年过去了,人类这一点爱好倒是没有改变。

第四章 毁天灭地的人类洪水

巨大的动物都已消失殆尽。在澳大利亚当时24种体重在50公斤以上的动物中,有23种豆惨遭灭绝。
Leo:只剩下袋鼠?
智人能在美洲这样如同闪电战一般横行无阻,正证明了智人已有无与伦比的聪明才智和适应能力。
像是剑齿虎,原本活跃了超过3000万年,却几乎在瞬间灭绝,其他像是巨型地懒、巨型狮子、美洲的本土马和本土骆驼、巨型锯齿类动物和长毛象,也都未能幸免。
Leo:我们现在只能在诸如冰河时代这样的动画片里面看到这些动物了。
智人的第一波殖民正是动物界最大也最快速的一场生态浩劫。
只有极少数极度偏远的岛屿,直到现代才被人类发现,于是岛上的动物群还能幸免。

89题链接

这道题就是给了1k个罗马数字,让你求解一下,如果能写成最简形式,能节约多少个字符。
题中给出了提示,没有四个以上连续一样的,也就是说,不会出现10个I让你写成X或者9个I写成IX。

题目乍一看很唬人,仔细分析,能简写,无非就是应用减法,这篇文章给出了减法的规则,再加上提示的最多4个连续,那么,能简写的就无非下面6种情况:
DCCCC|LXXXX|VIIII|CCCC|XXXX|IIII
能够简写成
CM|XC|IX|CD|XL|IV

那么,代码就很简单了,找到这六种模式,然后替换简写完,算差值

1
2
3
4
5
6
7
8
9
public static int GetAnswer()
{
var words = input.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);

string pattern = "DCCCC|LXXXX|VIIII|CCCC|XXXX|IIII";
string replacement = "RR";

return words.Select(roman => roman.Length - Regex.Replace(roman, pattern, replacement).Length).Sum();
}

这里,替换的时候用了个小技巧,反正就是换成2个字符,也没有必要非要一一对应(当然,如果要输出简写,那么需要对应的替换),于是乎,给了RR两个字符,算是占位符了。

到了按照行里人的说法,如果不转管理就要没人要的年纪了,花了3个多月的时间,把MIT OCW上的18.01学完了,连我自己的挺惊讶的,居然能坚持完,还把考试题目做了作为巩固和自测。
这个课讲得挺好,套个俗语,深入浅出,关键是告诉我们学习这个东西可以做什么。若干年前在学校学习的时候,只是为了应付考试罢了,和现在学习的心境完全不一样,所收获到的知识也完全不一样。
按照这个速度,如果再这么坚持上四五十个月,可能就可以把Math底下基础的课程都过一遍吧,其实也不知道自己有没有毅力,或者说有没有这么多时间和精力去完成了,不管怎么样,坚持就好,坚持来打卡!