- 浏览: 458579 次
- 性别:
- 来自: Runner
文章分类
- 全部博客 (97)
- commons (3)
- EJB3 (5)
- liferay (1)
- 设计模式 (1)
- JBoss (1)
- 常用 (6)
- guice (4)
- JAX-WS (1)
- 持久层处理 (3)
- 单元测试 (3)
- jmesa (6)
- mongodb (3)
- View显示 (6)
- lucene (1)
- struts2 (2)
- spring security (2)
- spring (4)
- hibernate (1)
- mysql (1)
- ruby (21)
- python (2)
- ubuntu (1)
- ibatis (2)
- javascript (3)
- 数据库 (1)
- swing (1)
- java基础 (2)
- dojo (1)
- android (9)
最新评论
-
BigHanson:
写得非常棒,醍醐灌顶 可以转发吗
spring security验证流程 -
背后的光:
spring security验证流程 -
hanlongjie:
commons-lang(time应用) -
litianpeng:
虽然是2009年写的帖子 不过还是要请问一下先生 我按照你的 ...
Ajax Fancy Capcha -
蔡小鱼:
ibatis总结
学了一段时间ruby后,又学了段时间python,学了python时间后,又想学学ruby了,本来原来打算用python搞个C/S软件的,学了一段时间后才发现根本没有针对python3的类库,wxpython没有,而pyqt那个客户端又有些问题,再加上其本身是收费的,越来越没劲,从而又想学下ruby了,毕竟在web方面,django是赶不上rails的,而且python那个通过缩进来区别代码段用着不是很习惯,所以又改学ruby了。前面的一遍博客已经有一二关的答案了,
http://fansofjava.iteye.com/admin/blogs/660506
所以从第3关开始写,改用ruby实现,其实也是从官方抄的。
One small letter, surrounded by EXACTLY three big bodyguards on each of its sides.
题目的意思是一个小写字母,两边有且仅有三个大写字母,开始想了下,觉得很TMD的有难度,其实这就是搞web开发久的后果,几乎不会写算法了,因此无从下手,其实这个用正则表达式很简单:
ruby有种用法,有些方法后面可以不加括号,即也可以写成join()。
后面的关的确开始难起来了,第四关就有点难了,这关地址为
http://www.pythonchallenge.com/pc/def/linkedlist.php
当点击那张图片时地址变为
http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=12345
点此页面nothing的值也是需要改变的,这样一个一个继续下去,直到最后出现结果为止,
这个题有点难,本来对ruby都不是很熟悉的人我来说,是不太可能做得出来的,只能看答案了:
可以看出,用ruby尚且写了如此多的代码,用java的话不知道得写多少代码。
第四关这个是与python相关的,主要是关于序列化的问题,查看源代码内,发现有个banner.p的文件,把它下载下来,这是一个python序列化后的文件,当然对于python不了解的我来说,也只有在网上找答案:
<!-- peak hell sounds familiar ? -->这个提示, peak hell sounds like pickle,
原来这个banner.p是使用pickle序列化了python的一个对象保存下来的文本, 以前没有接触过pickle,
通过下面代码可以查出序列化前的数据:
如果要用ruby,也只能处理转换后的数据,也就是说只能用python来反序列化此数据,反序列化文件后会得到附件内的数据。就可以用ruby转换:
可以看出,pythonchange内容还是挺丰富的,涉及的范围很广。
第5关就更难了,如果凭空想象,依自已的实力几乎做不出来,经过网上的多方查证,勉强理解这道题的答案来历。这道题 链接:
http://www.pythonchallenge.com/pc/def/channel.html
网页给出的是一张图片,看不出什么,只得照例看源码,后有人提醒:
1.源码的第一行为:<html> <!-- <-- zip -->
2.拉链(zipper)
所以应该有一个zip的文件,于是将channel.html改为channel.zip,果然有个zip的文件可供下载,打开zip文件中的readme.txt 可以看到
welcome to my zipped list.
hint1: start from 90052
hint2: answer is inside the zip
于是一直查找到最后一个文件,查看其内容:
输出结果为:
"Collect the comments."
结果是想收集注释,其实这个东西本人是一点都不了解,也没看见哪里有什么文件注释,关于ruby的zip处理,可见:
http://rubyzip.sourceforge.net/
处理结果:
输出结果为:
访问http://www.pythonchallenge.com/pc/def/hockey.html会得到一句话:
it's in the air. look at the letters.
联系上面的那张图片里面的字母,答案就出来了:oxygen,真不容易。
第6关更难了,自己不看答案也是不可能做出来的,说实话,这题必需要求答题人员对语言有相当高的认识才行。我当然还不是那种人,所以只能看答案。
访问:http://www.pythonchallenge.com/pc/def/oxygen.html
这网页里面只有一张图片,其余什么都没有,唯一有点特别的就是图片中间有一条颜色不太一样的条纹,答案就从中产生。这条条纹中每种颜色的长度为7px,总长与宽为629*95,用ruby的话,有关于图片处理的组件rmagick,这个组件功能很强大,在ror中经常看见有人用,不过也有些复杂,所以目前自己还没试用过,正好这也是个机会。
不过用起来才发现还真是复杂,首先是安装,rmagick对windows平台的支持力度还不够吧,不支持ruby1.9.1,在1.8.7上也费了点神才跑起来。步骤是在别人那里看来的:
1 从http://rubyforge.org/projects/rmagick/ 下载rmagick-win32 对应的zip包(RMagick-2.12.0-ImageMagick-6.5.6-8-Q8.zip).
2 解压zip到一个临时目录,在该目录中有一个ImageMagick的安装文件ImageMagick-6.5.6-8-Q8-windows-dll.exe,安装。
3 开一个命令行窗口,cd到解压的临时目录,敲入命令: gem install rmagick.
4.把ImageMagick 的安装路径放到path环境变量里面
这样以后,还需要引入才可以用,结合上面需求,具体代码如下:
ruby有些地方很怪异,比如Array.map与Array.collect方法作用是一样的,类似的事情还很多,而且早一点的版本根本就没这两个方法,可见起初,ruby api还是相当的不完善。
为什么要引入rubygems这个包目前还不清楚,但是不引入的话会提示找不到文件。当然目前对ruby的理解还在初级阶段,不理解的东西太多了。正因如此,解决此题本人花了相当多的时间,几乎花了半天时间,ruby api的查看目前还没找到比较好的方法也是个问题。
求最大公约数:
http://fansofjava.iteye.com/admin/blogs/660506
所以从第3关开始写,改用ruby实现,其实也是从官方抄的。
One small letter, surrounded by EXACTLY three big bodyguards on each of its sides.
题目的意思是一个小写字母,两边有且仅有三个大写字母,开始想了下,觉得很TMD的有难度,其实这就是搞web开发久的后果,几乎不会写算法了,因此无从下手,其实这个用正则表达式很简单:
text = open('e:/three.txt').read() p text.scan(/[^A-Z][A-Z]{3}([a-z])[A-Z]{3}[^A-Z]/).join
ruby有种用法,有些方法后面可以不加括号,即也可以写成join()。
后面的关的确开始难起来了,第四关就有点难了,这关地址为
http://www.pythonchallenge.com/pc/def/linkedlist.php
当点击那张图片时地址变为
http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=12345
点此页面nothing的值也是需要改变的,这样一个一个继续下去,直到最后出现结果为止,
这个题有点难,本来对ruby都不是很熟悉的人我来说,是不太可能做得出来的,只能看答案了:
require 'open-uri' nothing = "12345" 1.upto(400) do |n| open("http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=#{nothing}") do |f| str = f.read if str =~ / next nothing is (\d*)/ then newnothing = $1 puts "#{nothing} -> #{newnothing} \t\t#{str.chomp}" nothing = newnothing elsif str =~ /Divide by two/ then ni = nothing.to_i / 2 nothing = ni.to_s else puts str raise "Finished!" end end end
可以看出,用ruby尚且写了如此多的代码,用java的话不知道得写多少代码。
第四关这个是与python相关的,主要是关于序列化的问题,查看源代码内,发现有个banner.p的文件,把它下载下来,这是一个python序列化后的文件,当然对于python不了解的我来说,也只有在网上找答案:
引用
<!-- peak hell sounds familiar ? -->这个提示, peak hell sounds like pickle,
原来这个banner.p是使用pickle序列化了python的一个对象保存下来的文本, 以前没有接触过pickle,
通过下面代码可以查出序列化前的数据:
import pickle obj = pickle.load(open("banner.p", "r")) for line in obj: print "".join([k*v for k, v in line])
如果要用ruby,也只能处理转换后的数据,也就是说只能用python来反序列化此数据,反序列化文件后会得到附件内的数据。就可以用ruby转换:
text = open("f:/ruby/banner.rb").read() puts eval(text.tr('()','[]')).collect{|i|i.collect{|p|p[0]*p[1]}.join}
可以看出,pythonchange内容还是挺丰富的,涉及的范围很广。
第5关就更难了,如果凭空想象,依自已的实力几乎做不出来,经过网上的多方查证,勉强理解这道题的答案来历。这道题 链接:
http://www.pythonchallenge.com/pc/def/channel.html
网页给出的是一张图片,看不出什么,只得照例看源码,后有人提醒:
1.源码的第一行为:<html> <!-- <-- zip -->
2.拉链(zipper)
所以应该有一个zip的文件,于是将channel.html改为channel.zip,果然有个zip的文件可供下载,打开zip文件中的readme.txt 可以看到
welcome to my zipped list.
hint1: start from 90052
hint2: answer is inside the zip
于是一直查找到最后一个文件,查看其内容:
require 'zip/zip' nothing = 90052 comments = "" Zip::ZipFile.open("f:/channel.zip", Zip::ZipFile::CREATE) { |zFi| while nothing > 0 nNot = zFi.read(nothing.to_s + ".txt") nothing = nNot.split("nothing is ")[1].to_i end p nNot }
输出结果为:
"Collect the comments."
结果是想收集注释,其实这个东西本人是一点都不了解,也没看见哪里有什么文件注释,关于ruby的zip处理,可见:
http://rubyzip.sourceforge.net/
处理结果:
require 'zip/zip' nothing = 90052 comments = "" Zip::ZipFile.open("f:/channel.zip", Zip::ZipFile::CREATE) { |zFi| while nothing > 0 nNot = zFi.read(nothing.to_s + ".txt") comments += zFi.get_entry(nothing.to_s + ".txt").comment nothing = nNot.split("nothing is ")[1].to_i end puts comments }
输出结果为:
访问http://www.pythonchallenge.com/pc/def/hockey.html会得到一句话:
it's in the air. look at the letters.
联系上面的那张图片里面的字母,答案就出来了:oxygen,真不容易。
第6关更难了,自己不看答案也是不可能做出来的,说实话,这题必需要求答题人员对语言有相当高的认识才行。我当然还不是那种人,所以只能看答案。
访问:http://www.pythonchallenge.com/pc/def/oxygen.html
这网页里面只有一张图片,其余什么都没有,唯一有点特别的就是图片中间有一条颜色不太一样的条纹,答案就从中产生。这条条纹中每种颜色的长度为7px,总长与宽为629*95,用ruby的话,有关于图片处理的组件rmagick,这个组件功能很强大,在ror中经常看见有人用,不过也有些复杂,所以目前自己还没试用过,正好这也是个机会。
不过用起来才发现还真是复杂,首先是安装,rmagick对windows平台的支持力度还不够吧,不支持ruby1.9.1,在1.8.7上也费了点神才跑起来。步骤是在别人那里看来的:
引用
1 从http://rubyforge.org/projects/rmagick/ 下载rmagick-win32 对应的zip包(RMagick-2.12.0-ImageMagick-6.5.6-8-Q8.zip).
2 解压zip到一个临时目录,在该目录中有一个ImageMagick的安装文件ImageMagick-6.5.6-8-Q8-windows-dll.exe,安装。
3 开一个命令行窗口,cd到解压的临时目录,敲入命令: gem install rmagick.
4.把ImageMagick 的安装路径放到path环境变量里面
这样以后,还需要引入才可以用,结合上面需求,具体代码如下:
require 'rubygems' require 'RMagick' image = Magick::ImageList.new("f:/oxygen.png") #x, y, width, height pixels = image.get_pixels(0,image.rows/2,image.columns,1) letters = pixels.map {|pix| pix.red.chr} clue = "" letters.inject(0) do |count, char| clue += char if count == 0 (count + 1) % 7 end /\[(.+)\]/.match(clue) p $1.split(", ").map {|num| Integer(num).chr}.join
ruby有些地方很怪异,比如Array.map与Array.collect方法作用是一样的,类似的事情还很多,而且早一点的版本根本就没这两个方法,可见起初,ruby api还是相当的不完善。
为什么要引入rubygems这个包目前还不清楚,但是不引入的话会提示找不到文件。当然目前对ruby的理解还在初级阶段,不理解的东西太多了。正因如此,解决此题本人花了相当多的时间,几乎花了半天时间,ruby api的查看目前还没找到比较好的方法也是个问题。
求最大公约数:
def mod(a,b) if a<0 || b<0 return "求模数字需要大于0" end a,b=b,a if(a<b) @yueshu = a%b if @yueshu.zero? b else mod(b,@yueshu) end end p mod(24,2)
发表评论
-
ruby生成java文件的工具
2012-05-17 14:41 1604java开发的很多代码都是 ... -
ruby的require加载
2011-11-15 10:18 3264ruby没有像java那种严格的包管理机制,因此引用起来就有些 ... -
windows上使用mysql2
2011-11-14 14:47 1411想在windows上做ruby应该的可能很底,ruby服务器在 ... -
rexml 中增加CDATA
2011-10-14 14:14 2361最近想用ruby写个能生成 ... -
ruby处理未定义的方法
2010-10-08 17:52 1595关于未定义的方法,《ruby编程语言》上面说得比较詳細了,所以 ... -
rails3的删除问题
2010-08-25 00:38 1688Rails 3所做的很大一个改进就是:Unobtrusive ... -
ROR+mysql的中文问题
2010-08-24 15:28 2313环境: os: ubuntu 10.04 ru ... -
Ubuntu上搭建ruby1.9.2 on rails3rc
2010-08-20 13:34 2253linux的分支不同使用起来还是有很多差别的,最近想用一下比较 ... -
rails3之ActionController
2010-07-29 21:36 3659rails3中有许多变化,现 ... -
windows运行rails3
2010-07-29 11:19 3369虽然rails3的beta版已经出来很久了,但一直没正式版,最 ... -
ruby之enumerator
2010-07-22 00:25 3585由于版本的变更,1.8与1.9在许多地方是不一样的,API变化 ... -
ror中属性值存储的处理
2010-07-19 02:11 1340今天细看了quakewang的那 ... -
一个简单rails应用的开发过程
2010-07-03 16:06 1639基本环境: rails2.3.8 ruby ... -
windows 上使用mongrel
2010-06-30 19:04 2932由于ruby自带了一个webrick的嵌入式服务器,所以以前都 ... -
redmine 一个不错的ror开源项目管理系统
2010-06-30 01:19 2675学了一段时间的ruby,想做点东西,折腾了一下wxruby,但 ... -
ruby的时间与日期
2010-06-04 10:22 4401最近心情稍微好一点,正好现在难得的清闲,于是看了一下ruby的 ... -
ruby的模块
2010-05-20 17:16 1888模块的定义跟类非常相似,只是用module关键字取代class ... -
ruby方法
2010-05-19 15:29 1928没事做,写着玩的。不过ruby的block,proc,闭包或l ... -
ruby 创建基本的类
2010-05-18 11:15 1185由于ruby的语法很多,看 ... -
ruby on rails入门基础
2010-04-10 01:33 3210最近有想学一下ruby on rails的冲动,JAVA这东西 ...
相关推荐
在Ruby编程语言中,设计和实现一个P2P(peer-to-peer)交易系统是一项具有挑战性的任务,尤其在面试环境中。P2P交易系统的核心在于它允许用户直接互相交易,无需中间人的介入,如银行或其他金融机构。下面我们将深入...
这个"ruby入门练习题.zip"文件显然是为了帮助初学者逐步掌握Ruby编程的基础和面向对象的概念。以下是一些关于Ruby语言和面向对象编程的重要知识点: 1. **Ruby的起源与特点**:Ruby由日本人松本行弘在1993年创建,...
标题中的“ruby学习一个综合小练习”表明这是一个关于Ruby编程语言的学习资源,可能是通过一个实际的小项目或练习来帮助学习者提升对Ruby的理解。描述中提到的“博文链接”指向了一个特定的博客文章,虽然没有给出...
### Ruby编程语言简介 #### 1. Ruby编程语言概述 Ruby是一种动态的、反射性的、通用的、开源的编程语言,其设计初衷在于提供一种既简单又高效的编程体验。Ruby结合了Perl、Smalltalk、Eiffel、Ada以及Lisp等语言的...
《Programming Ruby》是一本关于Ruby编程语言的经典著作,由Dave Thomas、Andy Hunt和Chad Fowler合著。这本书自2004年初版以来,一直是学习Ruby的首选资源,被誉为“Pickaxe”书,因其封面的图标而得名。Ruby是一种...
### Ruby常见面试题详解 #### 1. 什么是Ruby?简要介绍Ruby的特点和主要用途。 **Ruby**是一种面向对象的、动态类型的解释性脚本语言。它由日本程序员松本行弘(Matz)于1995年设计并发布。Ruby的设计理念在于简洁...
这篇文章是一份全面而深入的Ruby语言学习资源指南,旨在为那些想要学习Ruby编程的开发者提供清晰的学习路径和实践机会。通过这篇文章,您将了解到Ruby语言教程、案例以及相关项目资源的丰富内容,从而能够系统地掌握...
《火星车编程题:探索ruby实现的火星车问题》 在编程的世界里,挑战与创新总是并行不悖。本次我们关注的是一个名为“火星车”(Mars Car)的问题,这是一道经典的编程题,旨在考察开发者对于逻辑控制、坐标系统理解...
Ruby是一种强大的、面向对象的编程语言,以其简洁的语法和注重开发者生产力的设计理念而闻名。"Ruby从入门到精通"的教程旨在帮助新手快速掌握这门语言的核心概念和实际应用。Ruby由日本人松本行弘在1993年创建,它的...
本教程针对中文用户,旨在帮助初学者快速入门并掌握Ruby编程的基础知识。 PDF教程将涵盖以下核心知识点: 1. **Ruby基础**:包括变量(局部变量、实例变量、类变量和全局变量)、常量、数据类型(字符串、数字、...
函数和方法也是Ruby编程的重要组成部分,邓蔚会介绍如何定义和调用方法,以及块(Block)、 Proc 和 Lambda 的使用。这些特性使得Ruby的代码更加简洁和可读。 在深入探讨Ruby的高级特性时,元编程将被重点关注。...
《Programming Ruby》是一本经典的Ruby编程语言教程,中文第二版为中国的程序员提供了深入学习Ruby的宝贵资源。这本书的源代码下载对于读者来说是极其有用的,因为它允许读者在实践中探索和理解书中所阐述的概念。...
本书旨在帮助初学者快速掌握Ruby编程语言,并逐步提升至高级水平。以下是对书中的核心概念和技术要点的概述: ### 一、Ruby简介 1. **Ruby语言的特点**:Ruby是一种简单、快速、面向对象且易于学习的编程语言。它...
通过实例讲解,帮助读者快速掌握Ruby编程技能,并能够运用到实际的项目开发中。 适用人群:本教程适合没有编程经验的初学者,以及对Ruby语言感兴趣的开发者。无论是想转型成为程序员的职场人士,还是在校学生,都...
PDF文档通常包含详细的教程、实例代码和可能的练习题,旨在帮助学习者全面了解和掌握Ruby on Rails的核心概念和技术。 在Rails框架中,关键知识点包括: 1. **Ruby基础知识**:首先,理解Ruby语言的基本语法和特性...
根据给定文件的信息,我们可以总结出以下详细的IT知识点: ### 题目背景与解析 ...此外,本题还强调了正则表达式的应用以及如何高效地处理字符串数据,这些都是编程领域中非常实用且重要的技能。
这些文件可能是练习题或者小型项目,鼓励读者动手操作,增强编程技能。 “locale.zh_gb.properties”文件可能包含与本地化或国际化相关的设置,这对于理解如何在Ruby中处理多语言环境至关重要,特别是在开发多语言...
《Programming.Ruby(第2版)中文版》是一本深入探讨Ruby编程语言的权威书籍,由Dave Thomas、Andy Hunt和Chad Fowler共同撰写。这本书详细介绍了Ruby语言的各个方面,为初学者和经验丰富的开发者提供了全面的理解和...