程序设计

猴子分桃

猴子分桃的故事大体有两种描述:

描述 1 :五只猴子分桃。半夜,第一只猴子先起来,它把桃分成了个数相等的五堆,多出一只;于是,它吃掉了一个,拿走了一堆。第二只猴子起来一看,只有四堆桃,于是把四堆合在一起,分成相等的五堆,又多出一个;然后,它也吃掉了一个,拿走了一堆。剩下的三只猴子也都是这样分的。问:这堆桃至少有多少个?

描述 2 :海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份。第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?

分析

程序猿一般这样看问题:总之桃子数目是整数,me 就从 1 开始试,然后分给猴子们,如果可以按题目要求的分法(去掉 1 个然后平均分 5 份,剩下 4 份)分 5 个猴子不就可以了 ? 真是不动脑筋的思考方案呀,尼玛 ! 不过这的确是一种万能的解决方案,对于本题来说,程序也不会运行很久。

现在从一个非程序猿的角度看问题。这里主要是要捕捉到它们的数量关系。

Tags: 

vi使用

Linux 上终端(shell)下的文本编辑器主要有 nano、ed、vi (vim) 和 emacs,而 vi 和 emacs 可能是使用最多的两种。不过 vi 貌似是发行版中都有安装的,ed 也是,其他的可能需要自己安装,至少 me 使用的 centos 环境是如此。在终端中敲命令和写代码有时候方便些,比如说修改配置文件和启动或是关闭一个服务了等,不过有时候真的让人着急,O__O"…。搞开发的话还是 IDE 来的方便和实在些,如果上网的话,使用 lynx 简直是种折磨,me 们么必要和自己过不去。

vi 貌似有很多命令,可以做很多事,不过对于 me 来说,me 只需要知道如何打开一个文件、编辑文件和保存文件就可以了,暂时没有太多其他的需求。貌似 vi 有三种模式,不过对 me 来说只有两种,插入模式(编辑模式)和命令模式。插入模式就是可以上下左右移动光标,编辑文件;命令模式下敲命令,执行一些其他功能,比如保存、退出、开启语法高亮等。

Tags: 

若干个神奇的程序

有时候程序神奇怪,很 bt,很不合逻辑,但是就是那么回事。前几天在 oschina 上就看到一个“平方根倒数速算法”的程序。

Tags: