- 浏览: 1385653 次
- 性别:
- 来自: 火星
文章分类
最新评论
-
aidd:
内核处理time_wait状态详解 -
ahtest:
赞一下~~
一个简单的ruby Metaprogram的例子 -
itiProCareer:
简直胡说八道,误人子弟啊。。。。谁告诉你 Ruby 1.9 ...
ruby中的类变量与类实例变量 -
dear531:
还得补充一句,惊群了之后,数据打印显示,只有一个子线程继续接受 ...
linux已经不存在惊群现象 -
dear531:
我用select试验了,用的ubuntu12.10,内核3.5 ...
linux已经不存在惊群现象
Engineering Puzzle
You have four colored cubes. Each side of each cube is a single color,
and there are four colors: blue (B), red (R), green (G) and yellow (Y)
Describing the six faces as front, back, left, right, top, bottom, the
cube colors are:
Front Back Left Right Top Bottom
1 R B G Y B Y
2 R G G Y B B
3 Y B R G Y R
4 Y G B R R R
The objective is to find ways to stack the four cubes as a vertical
column so that each side of the column is showing all four colors.
#cube对象,其中包含一个Color属性,此属性是一个Struct对象,依次为所有边的颜色 class Cube attr_accessor :color def initialize(color) @color=color @rotation = 0 @times_rotated = 0 end #这里我们可以设置一个三维坐标,每个盒子的24中摆放方式就是通过这个3为坐标的不同轴的旋转得到。 def rotate @times_rotated = @times_rotated + 1 #y轴的旋转 tmp_top = @color.Top @color.Top=@color.Left @color.Left=@color.Bottom @color.Bottom=@color.Right @color.Right=tmp_top #当为4的倍数时意味着已经回到开始的位置,因此需要变换坐标轴 if @times_rotated % 4 == 0 tmp_front = @color.Front #当为2的倍数时意味着又一次要回到刚才已经变换过得位置,因此未免重复,需要再次变换坐标轴 if @rotation % 2 == 0 #x轴的旋转 @color.Front=@color.Bottom @color.Bottom=@color.Back @color.Back=@color.Top @color.Top=tmp_front else #z轴的旋转 @color.Front=@color.Right @color.Right=@color.Back @color.Back=@color.Left @color.Left=tmp_front end @rotation = @rotation + 1 end end #打印出cube def show(name = "") puts name puts <<-EOF Front : #{@color[:Front]} Back : #{@color[:Back]} Left : #{@color[:Left]} Right : #{@color[:Right]} Top : #{@color[:Top]} Bottom: #{@color[:Bottom]} EOF end end #将4个cube组合为一个cube_box对象 class Cube_Box def initialize(cube_a, cube_b, cube_c, cube_d) @cube_a = cube_a @cube_b = cube_b @cube_c = cube_c @cube_d = cube_d end #判断是否符合条件 def valid? side_valid?(:Front)&&side_valid?(:Back)&&side_valid?(:Left)&&side_valid?(:Right) end def side_valid? side (@cube_a.color[side] != @cube_b.color[side]) && (@cube_a.color[side] != @cube_c.color[side]) &&(@cube_a.color[side] != @cube_d.color[side])&& (@cube_b.color[side] != @cube_c.color[side])&& (@cube_b.color[side]!= @cube_d.color[side])&& (@cube_c.color[side] != @cube_d.color[side]) end #打印出结果 def show_box p "********************************************************************" @cube_a.show("cube_a") @cube_b.show("cube_b") @cube_c.show("cube_c") @cube_d.show("cube_d") p "********************************************************************" end end #构造每个cube的color对象 Color=Struct.new("Color",:Front,:Back,:Left,:Right,:Top,:Bottom) color_a=Color.new("r","b","g","y","b","y") color_b=Color.new("r","g","g","y","b","b") color_c=Color.new("y","b","r","g","y","r") color_d=Color.new("y","g","b","r","r","r") #通过color对象构造cube对象 cube_a=Cube.new(color_a) cube_b=Cube.new(color_b) cube_c=Cube.new(color_c) cube_d=Cube.new(color_d) #符合结果的组合的数目 result_numbers=0 #由于每个cube有p3,3 * 4=24种因此这边要进行24^4次循环,找到合适的后调用show_box打印出来。 24.times do 24.times do 24.times do 24.times do cube_box_temp=Cube_Box.new(cube_a,cube_b,cube_c,cube_d) if cube_box_temp.valid? cube_box_temp.show_box result_numbers = result_numbers + 1 end cube_d.rotate end cube_c.rotate end cube_b.rotate end cube_a.rotate end puts "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" puts "Number of found results: " + result_numbers.to_s
发表评论
-
一个创建闭包的小技巧
2008-06-05 00:12 2073一个小技巧,在Ola Bini 的blog上看到的。 假设你 ... -
ruby1.9中的Iterators
2008-03-05 22:37 3655在ruby1.9中增加了External Iterators这 ... -
一个简单的ruby Metaprogram的例子
2008-03-03 23:49 4029比如下面一个文件 people.txt 引用name,age ... -
Ruby Object Model
2008-03-03 19:29 3485刚好看到,保存一下. -
一个检测方法的参数类型的小程序
2008-03-02 22:48 3207今天没事看blog的时候,看到一个小子实现了这个,不过他的程序 ... -
rails中的BlankSlate源码分析
2008-02-28 23:27 3394其实这个类实现的功能很简单,那就是实现一个没有predefin ... -
ruby中的类变量与类实例变量
2008-02-26 21:15 7559首先,在ruby1.8中类变量是所有子类和父类共享的,可以看下 ... -
在ubuntu上共存多个版本的ruby
2008-02-24 15:20 4334今天装Revactor库的时候,真把我郁闷了,没想到ubunt ... -
看到了一个用ruby写的scheme解释器
2008-02-16 21:35 3692,自己本来想等啥时候有时间做个类似的东西呢,没想到已经有人做 ... -
ruby way之处理RSS和Atom
2008-01-31 01:32 34671 rss 标准库 RSS 是基于xml的,因此你能简单的将 ... -
ruby way之使用REXML解析xml
2008-01-30 00:35 9182REXML 是一个完全用ruby写的processor ,他有 ... -
rails2中的一些被废弃的用法
2008-01-29 00:33 2483这些只是自己最近看web开发敏捷之道的时候(由于书中的版本是1 ... -
ruby way之动态特性之二
2008-01-25 00:49 36041 得到所定义的实体的列表 ruby的反射api能够使我们在 ... -
ruby way之动态特性之一
2008-01-23 01:25 44441 动态的evaluate代码 全局的方法eval 编译并且 ... -
ruby way之高级OOP特性之二
2008-01-20 03:43 28761 把代码像对象一样存储 当你想要以对象的形式存储一块代码的 ... -
ruby way之高级OOP特性之一
2008-01-19 12:14 21961 发送一条消息给一个对象 当你调用一个方法时,你也就是发送 ... -
ruby way之OOP之二
2008-01-16 23:59 22991 理解allocate 在一些特殊的环境中,你可能需要不调 ... -
ruby way之OOP之一
2008-01-16 00:25 25851 使用多个构造方法 在ruby中没有像c++或者ruby中 ... -
ruby way之连接数据库
2008-01-14 00:47 2431这边都只是个大概,具体的要自己去看文档了. 1 连接SQLi ... -
ruby way之高级数据存取
2008-01-13 02:31 3656经常我们需要以一种更 ...
相关推荐
odoo的oca开源模块web_tree_dynamic_colored_field,列表视图单元格颜色
各种unity shader教程需要的脚本资源。使用时在本地Asset目录下建立一个Hidden目录,然后把shader脚本放进去就可以了
指标MACD Colored的新版本。
(Colored ICP算法)ICCV2017_Colored Point Cloud Registration Revisited1
Constrained Local Graph Clustering by Colored Random Walk--通过色彩随机游走限制局部图聚类。
poj 2978 Colored stones.md
OmoaPowerPoint[Colored].pptx
尽管此解决方案不是完美的解决方案,但确实存在明显的问题,但它可以在不影响性能的情况下达到总体效果。 此mod在1.17的21w14a快照上完全在客户端上工作,并且需要Fabric Loader和API。 您可以在此处查看运行中...
Create a fancy colored form.
% This program generates Colored noise and Correlated Rayleigh
bm3d_wiener_colored_noise.mexw32
Scroll colored text and bitmaps transparently over a bitmapped background. (176KB)
Colored Time Range Selector A smart colored time range selector. Users can select just free time with a handy colorful range selector. Screen Shots Features Select a time range between 2 hours ...
资源来自pypi官网。 资源全名:colored-1.3.3.tar.gz
北大POJ2513-Colored Sticks【TrieTree+MergeSet+EulerPath】 解题报告+AC代码
一个开放源代码研究测试台,用于调查由人,计算机以及这两者的组合组成的小组中的决策。
npm install -g thegregorator/colored-terminal 用法 配置 配置文件是一个规则字典数组,每个字典包含一个路径匹配器和一组颜色。 规则是从头到尾处理的,因此更向下的规则可以覆盖较早的规则。 可以使用以下...
python库。 资源全名:colored_logs-0.2-py3-none-any.whl