小编sam*_*uil的帖子

评估骰子滚动符号字符串

规则

编写一个接受字符串作为参数的函数,以骰子表示法返回表达式的计算值,包括加法和乘法.

为了清楚起来,EBNF对法律表达的定义如下:

roll ::= [positive integer], "d", positive integer
entity ::= roll | positive number
expression ::= entity { [, whitespace], "+"|"*"[, whitespace], entity }
Run Code Online (Sandbox Code Playgroud)

示例输入:

  • "3d6 + 12"
  • "4*d12 + 3"
  • "D100"

不禁止使用eval函数或类似函数,但我鼓励在不使用这些函数的情况下求解.欢迎重新入门.

我无法提供测试用例,因为输出应该是随机的;).

格式化答案的标题:语言,n个字符(重要说明 - 没有评估等)


我的红宝石溶液,92 81个字符,使用eval:

def f s
eval s.gsub(/(\d+)?d(\d+)/i){eval"a+=rand $2.to_i;"*a=($1||1).to_i}
end
Run Code Online (Sandbox Code Playgroud)

另一种红宝石的解决方案,而不是更短(92个字符),但我觉得很有意思-它仍然使用eval但这次颇有创意的方式.

class Fixnum
def**b
eval"a+=rand b;"*a=self
end
end
def f s
eval s.gsub(/d/,'**')
end
Run Code Online (Sandbox Code Playgroud)

language-agnostic expression-evaluation dice

21
推荐指数
3
解决办法
4716
查看次数

如何重命名模型

我在开发早期犯了一个错误,并用复数名词(Users而不是User)命名我的一个模型.有没有一种简单的方法来重命名它和相应的控制器(类似于生成script/generate方式)?

rename ruby-on-rails generator

18
推荐指数
1
解决办法
1万
查看次数

什么是触发器操作符?

我最近听说过有关Perl和Ruby中带有正则表达式的触发器,但是我无法找到它们是如何工作的以及常见的用例.

任何人都可以用与语言无关的方式解释这一点吗?

现在我明白了它是什么,以及它是如何工作的,我将这个问题简单地改为:什么是触发器操作符?

ruby regex language-agnostic perl flip-flop

14
推荐指数
2
解决办法
3738
查看次数

Rails路由和URI片段标识符

当我使用一些基本教程开发我的RoR技能时遇到了问题.我想要实现的是拥有属于帖子的评论,没有单独的索引或个人视图.这部分很简单.

这是艰难的一个.我想post_comment_url片段标识符返回地址:http://example.com/posts/2#comment-4.它允许我使用redirect_to它最简单的形式,没有:anchor参数(这将违背红宝石的方式保持简单).

怎么做?

routing ruby-on-rails

10
推荐指数
1
解决办法
3586
查看次数

命名空间和类

我正在尝试用Python编写一些(在我看来)可读代码.我需要一个包含许多类的模块.从理论上讲,我知道完成此任务所需的一切:我可以简单地将类定义放在单个模块文件中.

出于可读性的目的,我想将每个类定义放在单独的文件中(它们开始非常冗长!),并将所有这些类放入一个目录中.每当我创建新文件时,虽然它的内容在我需要它们的地方是可见的,但是里面的类定义的范围是不需要的模块.

我该怎么办?什么是"Python"方式呢?

python scope module class

7
推荐指数
1
解决办法
5120
查看次数

如何在java中读取逗号分隔的整数输入

import java.io.*;
import java.util.*;
class usingDelimiters
{
    public static void main(String args[])
    {
        Scanner dis=new Scanner(System.in);
        int a,b,c;
        a=dis.nextInt();
        b=dis.nextInt();
        c=dis.nextInt();
        System.out.println("a="+a);
        System.out.println("b="+b);
        System.out.println("c="+c);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我的输入是1 2 3(用空格分隔)时,这个程序工作正常但是,当我的输入是1,2,3(用逗号分隔)时,如何修改我的程序

java delimiter java.util.scanner

6
推荐指数
2
解决办法
4万
查看次数

如何在基类中声明类似工厂的方法?

我正在寻找 C++ 类设计问题的解决方案。我想要实现的是在基类中拥有静态方法方法,它将返回后代类型对象的实例。关键是,其中一些应该是单身人士。我用 VCL 编写它,因此可以使用__properties,但我更喜欢纯 C++ 解决方案。

class Base {
  private:
    static Base *Instance;
  public:
    static Base *New(void);
    virtual bool isSingleton(void) = 0;
}
Base::Instance = NULL;

class First : public Base { // singleton descendant
  public:
    bool isSingleton(void) { return true; }
}

class Second : public Base { // normal descendant
  public:
    bool isSingleton(void) { return false; }
}

Base *Base::New(void) {
  if (isSingleton())
    if (Instance != NULL)
      return Instance = new /* descendant constructor */; …
Run Code Online (Sandbox Code Playgroud)

c++ oop

2
推荐指数
1
解决办法
3392
查看次数