今天培训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
分享到:
相关推荐
#### 知识点四:安装Ruby环境 Redis集群的安装和管理需要用到Ruby语言环境。因此需要安装Ruby及其相关的库管理工具RubyGems。通过命令安装Ruby和Redis的gem包,此处指定的版本是3.2.1。 #### 知识点五:下载和安装...
b)解压缩到C:\ Ruby24-x64 \ devkit目录 c)在控制台上,通过命令行访问安装DEVKIT的文件夹。 d)然后输入命令:ruby dk.rb init e)现在打开生成的config.yml文件 f)文件的最后一行必须包含值:-C:/ Ruby24-...
1. Meterpreter:Meterpreter 是一个基于 Ruby 语言的扩展框架,提供了许多实用的功能,例如端口扫描、文件上传下载、密码破解等。然而,在某些情况下,Meterpreter 无法在 Reverse Shell 环境下工作,本资源将解决...
解压缩包并将 pushpop-starter 文件夹放在您想要的任何位置 打开终端,然后cd到您的 pushpop-starter 存储库 bundle install 为确保一切正常,请运行pushpop jobs:run_once --file=jobs/example_job.rb - 您应该...
26. **AndroidRuby**:Ruby语言在Android平台上的支持库,可能涉及到JRuby的集成和Ruby语法的编译执行。 27. **Android-N810**:针对Nokia N810设备的Android移植项目,涉及到硬件适配、驱动重写和系统层定制。 28...
四、Metasploit 攻击方法分类 Metasploit 的攻击方法包括但不限于:网络扫描、端口扫描、漏洞利用、会话管理、密码破解、信息收集等。每种方法都有对应的模块,用户可以根据目标系统和需求选择合适的方法。 五、...
Metasploit框架由Ruby编程语言编写,主要包括四个核心组件:数据库、工作空间、模块和会话。数据库用于存储扫描和攻击结果;工作空间帮助管理不同的项目或目标;模块是Metasploit的核心,包含各种预编写的漏洞利用...
sudo apt-get install openjdk-6-jdk eclipse ruby rubygems ruby-dev libnokogiri-ruby git ant libxml2 libxml2-dev libxslt1-dev ``` 如果您使用的是64位系统,则还需要安装以下两个软件包: ```bash sudo ...
類似Python、Ruby、JavaScript的腳本語言,因此我們不會像對完全的編程語言初學者那樣解釋所有的 細節。因爲Go語言的?變量、常量、表達式、控製流和函數等基本語法也是類似的。 第一章包含了本敎程的基本結構,通過...
#### 二十四、开发一个简单的应用程序示例 - **需求分析**:明确应用的目标用户和主要功能。 - **架构设计**:规划整体结构和技术栈选择。 - **代码实现**:编写业务逻辑和界面展示代码。 #### 二十五、案例分析:...
又野 分享我进展和解决方案。 显然,这是一大剧透。 你被警告了。 目前状态:暂停设置 1 -完成-完成-完成-完成-完成-完成 -完成 -...从其输出克隆 MT19937 RNG -完成24.创建 MT19937 流密码并破解它-完成设置 4 25.中断
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的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...