设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
楼主: 沙漠点灰
打印 上一主题 下一主题

[讨论] 几个有意思的问题_第二弹

[复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
323 小时
注册时间
2010-8-21
帖子
666
跳转到指定楼层
1
发表于 2011-4-3 09:39:59 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
呵呵,我胡汉三又回来了....这次又有几个问题!

经过上次事件后,我写的代码变得诡异起来了....
这次的难度较上次,较难,好吧,这次是三级考试...


1.大家都知道,按下F12是重置游戏,有没有办法让它不"重置",而直接退出呢...?

2.请尝试重新定义Array类的max方法

3.我们经常会这样:
  actor = $game_actors[n]
  actor.hp -= damage
  其中:
  p $game_actors[n] == actor => true

  但是,数类对象就不行了:
  a = 5
  b = a
  b -= 1
  p b == a  => false
  (因为是共不共内存地址的问题...)现想在让两个个数类变量(类型不限)的值一直一样

4.defined?(Foo)和defined?(Foo())分别代表什么...?

5.现让一个雪碧对象(Sprite)向27度方向一直移动5像素点...但是实际上不会这样做,
  这是因为5太小了,加上雪碧(好吧,我承认我没有打广告)对象不支持浮点坐标,误差很大,请设计个方案,让误差尽量小....

6.来个简单了(终于....)如图...怎么回事...?


7.现在有一个数组array中有一堆(?)位图(Bitmap),现在请释放掉其中面积最大的一个

8.这是我们的一道数学题(我悲剧地错了,本来数学就不太好...):

0,1,2,3,4,5这6个数字组成的所有4位数中,要求:
  ①.没有重复数字
  ②.包含2,3,但是2,3不相邻
  问:有多少个

  在这要求用数组array包含所有符合要求的数字

9.最后一个,压轴题..!
  求1000以质数(貌似改叫素数了?)算法...!要求从下面2个要求任选一个
  ①.最(尽量)精简的代码
  ②.最(尽量)少的循环、迭代次数


什么?你要两个一起选...?不可能吧...?毕竟熊掌和鱼的兼容性不好....

答案照例,下次发布



>>猛戳>>MetalSagaR游戏主页<<这里<<
欢迎提供您的意见

Lv1.梦旅人

梦石
0
星屑
55
在线时间
323 小时
注册时间
2010-8-21
帖子
666
2
 楼主| 发表于 2011-4-3 10:46:41 | 显示全部楼层
回复 熊猫 的帖子

1.麻烦 不超过10字节的代码就可以搞定
2.这是叫你自己写,不是翻源代码
3.还可以更简单
4......
5.Sprite默认不支持浮点坐标...
6.  未定义  66   ? 66 是一个数
a = eval('66') => a = 66
7.....
8....
9.你要相信Ruby!太长了!

点评

看报错的内容来讲,解释器把66当成了一个过程或者函数。因为你用的是eval  发表于 2011-4-3 10:59
其实XNA里面支持。不过不重要,请你认真读这行代码(int)(5 * 0.89);  发表于 2011-4-3 10:58
F12我记得那个纯代码有漏洞的。  发表于 2011-4-3 10:57
>>猛戳>>MetalSagaR游戏主页<<这里<<
欢迎提供您的意见
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
323 小时
注册时间
2010-8-21
帖子
666
3
 楼主| 发表于 2011-4-3 11:42:39 | 显示全部楼层
回复 熊猫 的帖子

1个字节...?
dll也有3个字节吧....?
牺牲效率。。。?我都说了 鱼和熊掌的兼容性不好!
我考虑一下提前发答案...?
>>猛戳>>MetalSagaR游戏主页<<这里<<
欢迎提供您的意见
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
323 小时
注册时间
2010-8-21
帖子
666
4
 楼主| 发表于 2011-4-3 11:51:40 | 显示全部楼层
回复 熊猫 的帖子

好吧!公布第1问的答案:
下面代码置顶:
$g ? exit: $g=0

点评

强悍到家了!!!!!! PS:Ruby程序员?!!!!  发表于 2011-4-11 20:37

评分

参与人数 1星屑 +20 收起 理由
熊猫 + 20 Ruby程序员和程序员的差别。

查看全部评分

>>猛戳>>MetalSagaR游戏主页<<这里<<
欢迎提供您的意见
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
323 小时
注册时间
2010-8-21
帖子
666
5
 楼主| 发表于 2011-4-3 13:17:14 | 显示全部楼层
本帖最后由 沙漠点灰 于 2011-4-3 13:27 编辑

回复 DeathKing 的帖子

既然有人了,公布答案吧!
1.
$g ? exit: $g=0
2.
rray.send(:define_method,:max){self.sort[-1]}
3.
$abc = 0
alias $bcd $abc
$abc += 1
p $bcd == $abc  => true

4.DK对了!(....)

5.因为不支持浮点坐标,不管怎么都有误差
减少误差方法:
一:精灵类追加2个浮点变量记录"真坐标",误差大大减小
二:用数组保存移动路径,每移动1帧调用shift

6.这是IO的编码不兼容(晕,不大可能兼容吧,Ruby是UTF-8),不多说

7.
(array.inject{|a,i|a.width*a.height>i.width*i.height ? a:i}).dispose

8.伪代码如下:
("1000".."9999").inject([]){|a,i|a<<i if 判断}
判断有点长,就不写了(比如包含"2","3",不包括"23","32",与[6,7,8,9]无交集等等),不过可以1行搞定

9.压轴..?还是可以1行搞定:

(3..1000).inject([2]){|a,i|a.all?{|b|i%b!=0}?a<<i:a}

共计迭代15620次

把步长设为2(偶数Pass掉), i大于根号b时直接返回true(为什么...?自己想)等方法可以把迭代次数降到12000次左右,

(3..1000).inject([2]){|a,i|a.all?{|b|i%b!=0}?a<<i:a}
呵呵,Ruby果然很强

p.s 主要是复习了一下Ruby参考手册(学的时候看不懂,现在终于懂了),发现 inject太强了

点评

3 那个起别名的方法只能用于全局变量呢,你给的例子是局部变量……  发表于 2011-4-3 19:38
>>猛戳>>MetalSagaR游戏主页<<这里<<
欢迎提供您的意见
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
323 小时
注册时间
2010-8-21
帖子
666
6
 楼主| 发表于 2011-4-3 14:27:29 | 显示全部楼层
回复 蕾米莉亚·斯卡雷特 的帖子

格式   范围.inject(默认值){|a,b|......}
若有默认值,把默认值赋给a,把范围的第一个值赋给b
......是指代码块,每迭代一次会有个返回值(Ruby的特殊之处,方法都有返回值),把这个
返回值赋给a,把范围的第二个值赋给b........一次类推,最后返回a

若没有默认值,把范围的第一个值赋给a,把范围的第二个值赋给b.执行代码块,返回值
赋给a.把范围的第三个值赋给b........一次类推,最后返回a

点评

了解了. 咱连基础都没有. 哭............ 理解 inject 的意思后, 就明白原理了.  发表于 2011-4-3 14:43
还有reject,就不说了  发表于 2011-4-3 14:28
>>猛戳>>MetalSagaR游戏主页<<这里<<
欢迎提供您的意见
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
323 小时
注册时间
2010-8-21
帖子
666
7
 楼主| 发表于 2011-4-4 12:45:27 | 显示全部楼层
回复 苏小脉 的帖子

回3: 两个个数类变量(类型不限)的值
已经说明 类型不限 了.....
回9:
果然Golfer不追求效率
2.upto(1e3){|i|(2...i).all?{|j|i%j!=0}&&p(i)}
共计迭代78022次,比我
(3..1000).inject([2]){|a,i|a.all?{|b|i%b!=0}?a<<i:a}
的15620大多了
>>猛戳>>MetalSagaR游戏主页<<这里<<
欢迎提供您的意见
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-29 17:22

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表