理性谈风月

用理性的视角去探讨护肤品、时尚、男装、奢侈品、爱情这些风花雪月

Archive for the ‘Ruby’ Category

Ruby中如何对多维数组排序

Posted by 张翼轸 On April - 25 - 2009

之前提到过,最近在学Ruby编程语言。

作为新一代的动态语言,Ruby内置了很多强大的内置功能。比如在数组方面,缺省就有排序功能,免去了自己编制排序命令的麻烦。

在缺省情况下,对数组执行.sort就可以返还以递增顺序排序的新数组。但问题在于,若这是一个多维数组,比如二维的,直接执行.sort只会针对第一维排序,若要按照第二维来排序便无法直接操作了。后来查看语法说明,发现利用.sort附带的block功能便可轻松完成相关任务。

在.sort的block中,可以有两个参数,两者之间通过<=>进行比较,所以我们只需要在block中直接指定以两个参数的第二维来比较便可以了。见下面附录程序的第一块。

利用block,我们可以大大的扩充.sort的功能,比如虽然.sort之后再.reverse可以实现递减排序,但更好直接的方法是交换<=>前后的顺序,便可以完成。请注意下面附录程序的第二段。

当然,其实我们不仅可以针对数组中的元素本身排序,还可以针对任何由此衍生出的属性进行排序,比如下面就是比较每个元素的长度,并按照字符长度递增排序。只要愿意,修改就可以实现更多不同种类的排序——比如按照元素中含有某个字母的数量排序等等。

Read the rest of this entry »

开始学Ruby语言

Posted by 张翼轸 On April - 15 - 2009

同事经常拿一些女儿的奥数题目来给我们做,大家一起寻找答案。不过由于这些题目往往来路不同,参考答案有时候甚至都无法确保是正确的。尤其是遇到那些适合用穷举法验算的题目,第一反应就是编个程序测试下。

说起编程,早年学电脑的时候许过。最喜欢的自然是入门级的BASIC,好歹当年还用VISUAL BASIC写过《仙剑奇侠传》的存盘纪录修改器。至于C也学过,高一时花了些功夫拿了张国家二级证书,最搞笑的就是Pascal,被学校计算机老师强迫参加上海高三学生的计算机编程比赛,临时抱佛脚速成了下,第二天就去比赛,混了个三等奖,然后便又全部忘光了。

不过,很早就发现自己的数学功底,实在不适合作为一名优秀的程序员,所以便没继续钻研下去,像诸如面向对象、JAVA这些,也就是知道个名字了。

如今,为了帮同事验证这些奥数题目,准备重操旧业。只可惜找不到LINUX上比较好用的BASIC解释器,所以干脆顺便学一门新语言得了。因为只是为了简单的一些操作,所以那些追求效率追求强大的语言是绝不碰的,最终选择了比较容易上手,也具有面向对象特性的Ruby,貌似Ubuntu中缺省就内置了解释器,单位的Windows中装一个也不麻烦。 Read the rest of this entry »

//