编写一个接受字符串作为参数的函数,以骰子表示法返回表达式的计算值,包括加法和乘法.
为了清楚起来,EBNF对法律表达的定义如下:
roll ::= [positive integer], "d", positive integer
entity ::= roll | positive number
expression ::= entity { [, whitespace], "+"|"*"[, whitespace], entity }
Run Code Online (Sandbox Code Playgroud)
示例输入:
不禁止使用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) 我在开发早期犯了一个错误,并用复数名词(Users而不是User)命名我的一个模型.有没有一种简单的方法来重命名它和相应的控制器(类似于生成script/generate方式)?
我最近听说过有关Perl和Ruby中带有正则表达式的触发器,但是我无法找到它们是如何工作的以及常见的用例.
任何人都可以用与语言无关的方式解释这一点吗?
现在我明白了它是什么,以及它是如何工作的,我将这个问题简单地改为:什么是触发器操作符?
当我使用一些基本教程开发我的RoR技能时遇到了问题.我想要实现的是拥有属于帖子的评论,没有单独的索引或个人视图.这部分很简单.
这是艰难的一个.我想post_comment_url用片段标识符返回地址:http://example.com/posts/2#comment-4.它允许我使用redirect_to它最简单的形式,没有:anchor参数(这将违背红宝石的方式保持简单).
怎么做?
我正在尝试用Python编写一些(在我看来)可读代码.我需要一个包含许多类的模块.从理论上讲,我知道完成此任务所需的一切:我可以简单地将类定义放在单个模块文件中.
出于可读性的目的,我想将每个类定义放在单独的文件中(它们开始非常冗长!),并将所有这些类放入一个目录中.每当我创建新文件时,虽然它的内容在我需要它们的地方是可见的,但是里面的类定义的范围是不需要的模块.
我该怎么办?什么是"Python"方式呢?
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(用逗号分隔)时,如何修改我的程序
我正在寻找 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)