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

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: 冷峻逸
打印 上一主题 下一主题

[原创发布] Ruby提问区

[复制链接]

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2207
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

11
发表于 2015-8-6 07:34:47 | 只看该作者
本帖最后由 taroxd 于 2015-8-6 09:24 编辑

LZ写一个这样的程序吧:
输入一段Ruby代码和这段代码的input,如果这段代码执行后会死循环,输出 true。如果这段代码能正常停止,输出 false。

点评

你都写不出来我怎么可能写出来  发表于 2015-8-6 14:03
然而我那是在卖萌,不是ZB(逃  发表于 2015-8-6 11:52
你吐槽的逼格不够  发表于 2015-8-6 11:39
你吐槽的逼格不够  发表于 2015-8-6 11:38
这种情况下,不是interrupt就是too deep吧  发表于 2015-8-6 11:35
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9497
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

12
发表于 2015-8-6 08:34:20 | 只看该作者
楼上的太难了
LZ写一个这样的程序吧:
输入一段Ruby代码,如果这段代码里面的end不多也不少,输出true,否则输出false。

点评

require 'ripper'  发表于 2015-8-6 09:04
LBQ
意思就是我们得开parser(  发表于 2015-8-6 08:46
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
10
星屑
39440
在线时间
1914 小时
注册时间
2010-11-14
帖子
3315

R考场第七期纪念奖

13
发表于 2015-8-6 09:01:50 | 只看该作者
新难题「版主们的リクエスト」
_(:3」∠)_
用头画头像,用脚写脚本
回复 支持 反对

使用道具 举报

Lv4.逐梦者

送快递的水表员

梦石
10
星屑
4792
在线时间
3303 小时
注册时间
2012-6-27
帖子
7160

开拓者贵宾

14
发表于 2015-8-6 10:35:29 | 只看该作者
楼上的都太难了
来个有实际意义的吧:输入一个具体的数学算式(例如18 / 4 或 (4/3) * 2),先判断结果是否是整数或有限小数,是的话直接输出结果,反之输出为最简分数。

点评

你的整个要求Ruby的mathn库基本上都做好了  发表于 2015-8-6 15:00
看错了= =【我记得分解因数ruby不是有一个算法的吗  发表于 2015-8-6 14:58
有限小数和 finite? 没关系吧。另外这些都是Ruby已经有的轮子...  发表于 2015-8-6 14:45
1,分解成质数之积如何写,光拿文字说就行我还说直接约分不就完了;2,finite?判断数值是否有穷。  发表于 2015-8-6 14:34
有限小数的判定不会  发表于 2015-8-6 14:02
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1024
在线时间
1389 小时
注册时间
2010-8-9
帖子
3471
15
发表于 2015-8-6 12:02:56 | 只看该作者
本帖最后由 寒冷魔王 于 2015-8-6 12:08 编辑

楼上的都太难了,顺便围观状元卖萌

好吧,就问一个简单的问题
ruby的Array似乎是不连续的。
每次索引求值(包括each)都会产生额外消耗。
C 代码复制
  1. VALUE
  2. rb_ary_each(VALUE array)
  3. {
  4.     long i;
  5.     volatile VALUE ary = array;
  6.  
  7.     RETURN_SIZED_ENUMERATOR(ary, 0, 0, ary_enum_length);
  8.     for (i=0; i<RARRAY_LEN(ary); i++) {
  9.         rb_yield(RARRAY_AREF(ary, i));
  10.     }
  11.     return ary;
  12. }

包括Struct(而且速度还不如Array)
因此才有了Table(RGSS)

于是求助——
怎样在不借助外部的情况下,在Ruby内产生一个连续内存空间的数据结构?
使之可以迅速访问,不产生较多额外消耗?

点评

原来如此,谢兰兰大人!  发表于 2015-8-6 19:11
这个我发现了A,原因是B的B,你装歪了  发表于 2015-8-6 19:00
不要乱猜,低效率是消息分派系统的特点  发表于 2015-8-6 18:58
那么Array的低效率何如,表示十分不解  发表于 2015-8-6 18:25
#define RARRAY_AREF(a, i) (RARRAY_CONST_PTR(a)[i]) 嗯好吧,连续的  发表于 2015-8-6 15:27
SRPG on RM 项目研发组 正式成立。目前SRPG·RMVA系统进度88.8%。SMRC Kernel 进度90%
↖(^ω^)↗热烈庆祝~SMRC Ver5.1 SRPG战棋地图移动范围生成脚本正式发布~~
-----------------------------------------------------------------------------------------
SMRC具有高性能、高兼容、定制自由、使用方便的特点。
1.性能,100移动力轻松算出,无压力;
2.兼容,RGSS1-3通吃,效率保证;
3.支持移动形状定制,支持4方位、6方位、正方形或其他任意有移动规律的形状;
4.可以充当高性能寻路来使用。
【链接点此】
-----------------------------------------------------------------------------------------
【2016/01/06更新 | 改版】RM脚本编辑器Gemini
-----------------------------------------------------------------------------------------
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2207
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

16
发表于 2015-8-6 18:57:31 | 只看该作者
本帖最后由 taroxd 于 2015-8-6 19:47 编辑
寒冷魔王 发表于 2015-8-6 12:02
楼上的都太难了,顺便围观状元卖萌

好吧,就问一个简单的问题


送你个不管越界不检查参数的无责任数组(比原生Ruby Array慢,我会乱说?):

C 代码复制下载
  1. #include <ruby.h>
  2.  
  3. struct my_array {
  4.   size_t size;
  5.   VALUE *ptr;
  6. };
  7.  
  8. static void
  9. my_array_free(void *p) {
  10.   struct my_array *ptr = p;
  11.  
  12.   if (ptr->size > 0)
  13.     free(ptr->ptr);
  14. }
  15.  
  16. static VALUE
  17. my_array_alloc(VALUE klass) {
  18.   VALUE obj;
  19.   struct my_array *ptr;
  20.  
  21.   obj = Data_Make_Struct(klass, struct my_array, NULL, my_array_free, ptr);
  22.  
  23.   ptr->size = 0;
  24.   ptr->ptr  = NULL;
  25.  
  26.   return obj;
  27. }
  28.  
  29. static VALUE
  30. my_array_init(VALUE self, VALUE size) {
  31.   struct my_array *ptr;
  32.   size_t requested = NUM2SIZET(size);
  33.  
  34.   Data_Get_Struct(self, struct my_array, ptr);
  35.  
  36.   ptr->ptr = (VALUE *)malloc(requested * sizeof(VALUE));
  37.   ptr->size = requested;
  38.  
  39.   return self;
  40. }
  41.  
  42. static VALUE
  43. my_array_size(VALUE self) {
  44.   struct my_array *ptr;
  45.  
  46.   Data_Get_Struct(self, struct my_array, ptr);
  47.  
  48.   return SIZET2NUM(ptr->size);
  49. }
  50.  
  51. static VALUE
  52. my_array_get(VALUE self, VALUE index) {
  53.   struct my_array *ptr;
  54.  
  55.   Data_Get_Struct(self, struct my_array, ptr);
  56.  
  57.   return (ptr->ptr)[NUM2LONG(index)];
  58.  
  59. }
  60.  
  61. static VALUE
  62. my_array_set(VALUE self, VALUE index, VALUE value) {
  63.   struct my_array *ptr;
  64.  
  65.   Data_Get_Struct(self, struct my_array, ptr);
  66.  
  67.   (ptr->ptr)[NUM2LONG(index)] = value;
  68.   return value;
  69. }
  70.  
  71. #ifdef __cplusplus
  72. extern "C" {
  73. #endif
  74. __declspec(dllexport)
  75. void
  76. Init_my_array(void) {
  77.   VALUE cMyArray;
  78.  
  79.   cMyArray = rb_const_get(rb_cObject, rb_intern("MyArray"));
  80.  
  81.   rb_define_alloc_func(cMyArray, my_array_alloc);
  82.   rb_define_method(cMyArray, "initialize", my_array_init, 1);
  83.   rb_define_method(cMyArray, "size", my_array_size, 0);
  84.   rb_define_method(cMyArray, "[]", my_array_get, 1);
  85.   rb_define_method(cMyArray, "[]=", my_array_set, 2);
  86. }
  87. #ifdef __cplusplus
  88. }
  89. #endif


RUBY 代码复制
  1. class MyArray; end
  2.  
  3. require_relative 'my_array'
  4.  
  5. a = MyArray.new(2)
  6. a[0] = 1
  7. p a[0]

点评

你看,RGSS都能够直接Win32API.new了,咱还有什么不满的?咱们应该感激人家。  发表于 2015-8-6 19:53
1. 没黑CRuby,这只是一个C扩展 2. 所以我十分怨念 RGSS不能 require so库  发表于 2015-8-6 19:45
刚刚网断了:( 这不仅仅是黑Ruby了,连CRuby都黑了。好帅!那样的话,顺便把这个打进RGSS如何?  发表于 2015-8-6 19:29

评分

参与人数 1星屑 +5 收起 理由
寒冷魔王 + 5 塞糖,状元加油

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9275
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

17
发表于 2015-8-6 19:05:59 | 只看该作者
taroxd 发表于 2015-8-6 01:57
送你个不管越界不检查参数的无责任数组:

#include

水的好,楼主选择死亡(楼主已经死亡)

点评

上古水神在这里膜拜远古水神!  发表于 2015-8-6 19:16
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-28 17:22

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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