今天培训python,讲课老师无意间提及他用python解24点用了48行代码,心中默念:challenge accepted!于是写了一个ruby版本,用了26行~
def calculator number, *factors
if factors.size == 1
if number.to_f.round(10) == factors[0].to_f.round(10)
return factors[0].to_s
else
return nil # nil stand for no solution
end
else
factors.each_with_index do |factor, idx|
[[:+, :-], [:-, :+], [:*, :/], [:/, :*]].each do |operator|
temp_nmuber = number.send(operator[0], factor.to_f)
temp_factors = factors.clone
temp_factors.delete_at(idx)
return "(#{calculator(temp_nmuber, * temp_factors)} #{operator[1]} #{factor})" if !calculator(temp_nmuber, *temp_factors).nil?
if operator[0] == :- or operator[0] == :/
temp_nmuber = factor.send(operator[0], number.to_f)
if !calculator(temp_nmuber, * temp_factors).nil?
return "(#{factor} #{operator[0]} #{calculator(temp_nmuber, * temp_factors)})"
end
end
end
end
end
nil
end
#ret = calculator 3, 1, 2
ret = calculator 24, 8, 9, 5, 9
puts ret
其实有点耍赖皮,因为ruby中加减乘除不是关键字,是方法,所以能省掉很多代码,而且有的能写成一句太长我也自觉分成三行了。不过想想python也省掉很多end,大家都耍赖皮,就无所谓了,哈哈。
ruby数组操作实在太牛逼了,我相信一定有更变态更短的方法存在,欢迎大家po代码比较!
提供一个测试连接:http://app.baidu.com/app/enter?appid=123723
分享到:
相关推荐
b)解压缩到C:\ Ruby24-x64 \ devkit目录 c)在控制台上,通过命令行访问安装DEVKIT的文件夹。 d)然后输入命令:ruby dk.rb init e)现在打开生成的config.yml文件 f)文件的最后一行必须包含值:-C:/ Ruby24-...
解压缩包并将 pushpop-starter 文件夹放在您想要的任何位置 打开终端,然后cd到您的 pushpop-starter 存储库 bundle install 为确保一切正常,请运行pushpop jobs:run_once --file=jobs/example_job.rb - 您应该...
完善前二十页 -------------------------------------------------------------------------------------------------------------- 目 录 第一部分 9 前 言 9 By Chenyi 9 By Minlearn 10 导 读 14 任何语言都是有...
類似Python、Ruby、JavaScript的腳本語言,因此我們不會像對完全的編程語言初學者那樣解釋所有的 細節。因爲Go語言的?變量、常量、表達式、控製流和函數等基本語法也是類似的。 第一章包含了本敎程的基本結構,通過...
又野 分享我进展和解决方案。 显然,这是一大剧透。 你被警告了。 目前状态:暂停设置 1 -完成-完成-完成-完成-完成-完成 -完成 -...从其输出克隆 MT19937 RNG -完成24.创建 MT19937 流密码并破解它-完成设置 4 25.中断
1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高...
EJB中JNDI的使用源码例子 1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...
BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...