摘要:
> 下面是基本的解决方案,详细的文件见[github](https://github.com/duangao/personal-ducument/tree/master/bufferlab)#level 0 + 首先看test函数内部,发现sub了0x28个字节,因此分配了40个字节,再加上push... 阅读全文
摘要:
程序员的世界不知道是太过寂寞或是太过浮躁,各种各样的争论和口水战层出不穷,相信任何人都有极强的体会,不论是培训学校的还是top几的。从这个层面讲,虽说生物化学等基础学科科研技术甚是薄弱,但氛围其实不错,那样差的待遇条件下,很多淳朴的孩子还是由于兴趣扑在上面,选择项目和方向的原因也十分纯粹,不急不躁,... 阅读全文
摘要:
为什么要用linux?拥抱开源?linux比windows更能让人学到东西?我认为都不是,我认为有两点:1. linux 是免费的,而windows、mac os 等均比较贵。使用盗版断然是不好的,当然也不是说一定不能用,但用的时候多些负罪感,可以购买的时候去购买。2. 课程或者项目需求,这个是硬需... 阅读全文
摘要:
多项式相加是一个简单到爆的算法练习,学习链表之后一般会波拉波拉讨论稀疏的、稠密的用什么来表示,最后一般都作为链表的练习题出现。其实用数组表示多项式显然是不合理的,大多数的多项式必然没有如此紧密,链表几乎是唯一的选择。 放在C++这样的语言中,直接构建一个poly结点类,然后构建一个poly类(包含一个头节点),基本就是一个单链表的实现,对于多项式的加法,和有序链表的连接比较像,乘法就更简单... 阅读全文
摘要:
最近经常要手动进制转换,非常耗时而无聊(当然早就换成python脚本来做了。。。) 今天打开windows 8 自带的计算器,发现竟然有程序员模式,可以进行进制转换,强烈推荐。 今天花了一小时自己模拟了一个最简单的东西,项目见这里 源代码和项目均在里面,逻辑上十分简单,实现也不难,就不再赘言了,当作学习之余的娱乐啦! 阅读全文
摘要:
最后一次更新,前面C++ 实现的版本已经很好的解释了递归下降的做法和威力,这里给一个scheme 的代码(前缀表达式的解析),利用递归的方法直接解决,代码中用到了racket 的正则表达式,可以去官网上查看非常丰富的相关文档内容。#lang racket(display "this is a sim... 阅读全文
摘要:
函数和数据在一般语言里严格区分,函数的限制非常多,仅作为接受数据来处理的工厂,而在函数式语言中,函数是first-class,拥有很大的自由性和表达力。比如,它让你重新思考什么是0,什么是1,它可以让你来定义0和1,比如这样:这是0(define zero (lambda (f) (lambda (... 阅读全文
摘要:
这个十分有趣的题目出自知乎http://www.zhihu.com/question/24905007/answer/29414497 ,排名第一的知友的答案用python简洁的给出了代码和答案,枉费我用C++ 鼓捣了半天。。。 不过也不能算是白做,还是有颇多收获的。 先准确描述一下这个问题解决思路: 这题目本质就是计算排列: 定义一个函数 permutation(n.m)... 阅读全文
摘要:
素数检测常见的做法是从 2 开始逐个加到N,逐个检测能否被N整除,当然以2为单位增加可以减少比较次数,但整体都是多项式运行时间的。 这里介绍的基于费马小定理的费马检查方法(来自于SICP 书中)是对数机运行时间的,但它不保证对所有数给出正确的判断,某些数不是素数但可以逃过费马检查,当然这些数的比例很小,所以这个方法还是可用的。 下面是scheme实现的此算法: #lang racket... 阅读全文
摘要:
毫不相干的三个关键词,没人能想到下面要写些什么。本文是关于学习方法和思考方式的自我检讨。1. 哥特巴赫猜想 从小学开始老师告诉我们有个伟大的猜想叫做哥特巴赫猜想,中国有位伟大的数学家陈景润提出陈氏定理解决了1+2的问题,终极命题是1+1=2,小学的时候大家内心会有两个声音:本能+逼格,本能告诉我们... 阅读全文