`
piecehealth
  • 浏览: 46573 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Ruby解24点

阅读更多
今天培训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
1
2
分享到:
评论

相关推荐

    testQA:Para Vitta

    b)解压缩到C:\ Ruby24-x64 \ devkit目录 c)在控制台上,通过命令行访问安装DEVKIT的文件夹。 d)然后输入命令:ruby dk.rb init e)现在打开生成的config.yml文件 f)文件的最后一行必须包含值:-C:/ Ruby24-...

    pushpop-starter:克隆此存储库以开始编写和部署您自己的 Pushpop 作业

    解压缩包并将 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 任何语言都是有...

    Go 语言圣经 中文版

    類似Python、Ruby、JavaScript的腳本語言,因此我們不會像對完全的編程語言初學者那樣解釋所有的 細節。因爲Go語言的?變量、常量、表達式、控製流和函數等基本語法也是類似的。 第一章包含了本敎程的基本結構,通過...

    matasano:matasano 加密挑战、旅程和解决方案

    又野 分享我进展和解决方案。 显然,这是一大剧透。 你被警告了。 目前状态:暂停设置 1 -完成-完成-完成-完成-完成-完成 -完成 -...从其输出克隆 MT19937 RNG -完成24.创建 MT19937 流密码并破解它-完成设置 4 25.中断

    JAVA上百实例源码以及开源项目

    1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高...

    JAVA上百实例源码以及开源项目源代码

    EJB中JNDI的使用源码例子 1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件...

    java开源包1

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包11

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包2

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包3

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包6

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包5

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包10

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包4

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包8

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包7

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包9

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

Global site tag (gtag.js) - Google Analytics