问题标签 [roman-numerals]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
60 浏览

ruby - 无法将代码分成没有错误的方法

我正在做一个 Ruby Kata(罗马数字转换器),我试图将我的代码分开,所以它不是一个巨大的块。

这是我到目前为止所拥有的:

我想在罗马方法中移动 case 语句,所以它现在看起来像这样:

除了添加方法:

但是,当我这样做并给它输入“XXXI”时,它会从给出正确的输出 29 变为不正确的输出 10。

由于它是完全相同的代码运行,只是重构,我无法想象为什么行为会发生变化。

有任何想法吗?

0 投票
1 回答
375 浏览

ruby - Ruby - divmod 返回正确的值,但我不明白为什么

我正在处理此处定义的编码 kata Roman Numerals 。虽然我已经完成并且没有被卡住,但我确实有一个问题需要帮助回答。

这是我的问题所在:

当我对数字 5 执行 divmod 时,就像这样

它返回 V。这是有道理的,因为

但是上面的代码如何与

那么它如何返回 V 而不是 IIIIII,因为它只是将键 (I) 与计数 (5) 相加。不知何故,它显然正确地返回了 V 而不是 IIIIII,但我不确定该逻辑在哪里。任何帮助将不胜感激。谢谢

0 投票
1 回答
2457 浏览

java - java正则表达式特殊字符

我正在使用以下正则表达式在字符串中查找罗马数字:

如何更改它以检测除句点之外的任何特殊字符之前或之后的罗马数字?

0 投票
1 回答
1560 浏览

sql - 罗马数字作为数据库中的页码

假设我有下表:

请注意,起始页和结束页字段是 varchars。这样我就可以包含通常使用罗马数字的序言中的页码。

我的问题是:修改此表和编写应用程序的有效方法是什么:

  • 我可以通过开始和结束页面正确地对部分进行排序,最好使用 SQL
  • 我可以用页数计算一个部分的长度
  • 我可以确定给定的页码(例如“xviii”或 475)是否在给定的部分内

请记住以下条件/事实:

  • 我不希望用户必须输入任何附加信息。例如,他们不必计算前缀的阿拉伯语等值并将其输入。
  • 任何可能存在的书籍预编号规则都被严格遵循(因此,例如,所有页码都将以正确的罗马或阿拉伯格式输入)
  • 我可以添加我需要的任何其他字段,如果需要,甚至可以添加一个单独的表格
  • 这是一个网络应用程序,因此我可以在插入或显示数据之前对数据库中的数据进行预处理或后处理
  • 部分可以即时添加或删除,例如可能有一个介绍部分,然后稍后添加另一个部分。该书中所有部分的分页和排序应该保持正确。

我最终可能会在不同平台上用几种不同的语言实现它,因此首选与代码无关的伪代码。

澄清

因为我要处理成千上万条记录,所以我不能以编程方式遍历所有记录来执行排序之类的操作。所以有些工作需要在数据库端进行。

使用 njk 的查找表的想法,我们有类似的东西:

如果我想遍历按页码排序的所有书籍。这看起来对吗?

考虑一下,我想知道对表格进行以下更改是否会更好:

上面的查询如下所示:

然后我所要做的就是在插入和更新时将值page_start_labelpage_end_label罗马转换为阿拉伯语。两个额外的整数加上位意味着每条记录多出 8 个字节的额外存储空间,大多数记录都留下了page_start_label空白,page_end_label我实际上可能会节省空间!

这听起来像是一个合理的解决方案吗?还是我错过了潜在的陷阱/不利因素?

0 投票
29 回答
249628 浏览

java - 将整数转换为罗马数字 - Java

这是我遇到麻烦的家庭作业。

我需要使用一种方法将整数转换为罗马数字。后来,我必须再用程序用罗马数字写出 1 到 3999,所以硬编码就没有了。我下面的代码非常简单;这是一个基本的 I/O 循环,可以在使用getIntegerFromUser我们在课堂上制作的包时退出。

有没有办法将值分配给字符串,然后在我调用该方法时将它们加在一起?

更新:我从教授那里得到了一些伪代码来帮助我,虽然我明白他想说什么,但我在ifs. 我是否需要很多很多if语句才能使我的转换器正确处理罗马数字格式,或者是否有一种方法可以更有效地执行此操作?我更新了我的代码以反映我的占位符方法。

更新(2012 年 10 月 28 日):我让它工作了。这是我最终使用的:

0 投票
0 回答
292 浏览

string - Replacing roman numbers by corresponding numerals

I am developing a product search platform. I try to show the most appropriate product first based on string matching as I have no other means of identifying what user has searched for. However, one major problem is in a query like this.

User Query :: Samsung Galaxy S3

Database Values :: Samsung Galaxy sIII, Samsung Galaxy S III, Samsung Galaxy s3

As we can see, only 1 of the above products is what user will get. Also, if I remove s3 from users query, we will have thousands of irrelevant phones(Entire Samsung galaxy series) visible to the user.

So, I have to filter out the rest. Is there any way, I can efficiently convert roman numbers to numerals. I am using Javascript for string matching. Can this be done by reg exp ? If so, please guide me in that. I have never used it.

Please note solving this problem involves at first identifying the roman number and then converting it to corresponding numerical value. Ex- In case 1 , we have to split out III from sIII and then convert it to 3

Any method or way to solve this will be appreciated.

Thanks !

0 投票
2 回答
1669 浏览

numbers - prolog 将数字转换为罗马数字

我有这个将整数转换为罗马数字的代码我需要添加一个函数,将整数与罗马数字输入进行比较,并显示它是 try 还是 false,例如:roman(v,5)。真的

0 投票
2 回答
3275 浏览

prolog - prolog-罗马数字

我正在尝试定义一个序言谓词数字(X,Y),如果 X 是十进制数 Y 的罗马数字,则它是正确的。

当我运行我的代码时,我得到一个错误:

0 投票
3 回答
1918 浏览

objective-c - 如何将罗马数字转换为 NSNumer

我正在制作一个具有罗马数字模式的计算器。我在模型视图和视图控制器中执行了操作。我的问题是我需要将罗马数字转换为 NSNumber。有一个 UILabel,视图控制器获取标签中的内容并将其设置为模型视图的操作数。有谁知道我如何从标签中取出罗马数字并将其设为 NSNumber?这是一些代码:

0 投票
1 回答
1245 浏览

prolog - Prolog 罗马数字(属性语法)

我正在中进行一项扫描数字列表的分配,并应返回该列表是否是有效的罗马数字和数字的十进制值。前任)

当我运行我认为应该工作的程序时,十进制值总是正确的,所以我猜我得到了合成属性部分是正确的,但是对于应该返回 true 的数字列表,它总是返回 false。我还想补充一点,如果存在超过 3 个 Is、Xs 或 Cs,它应该会中止。

当我取出 N 并放入 a{write('N = '), write(N)}时,它工作正常并返回true

但是,当我删除{N is ValH + ValT + ValU}它时true,它不再显示十进制值。这是我的代码的第一行(因为这是当前的作业,我希望尽可能少地显示以获得答案):

为什么这在 N 时返回 false,但在没有时返回 true,我该如何解决?

赋值: 下面的 BNF 规范定义了小于 1000 的罗马数字的语言:

为此语法定义属性以执行两个任务:

a) 限制 X's in <low tens>、 I's in<low units>和 C's in<low hundreds>的数量不超过三个。

b) 提供一个属性,<roman>该属性给出所定义的罗马数字的十进制值。

定义这些任务所需的任何其他属性,但不要更改 BNF 语法。