【问题标题】:Parse a list of strings with numbers解析带有数字的字符串列表
【发布时间】:2012-10-30 15:37:22
【问题描述】:

我有一个单词列表。每个单词都有一个数值。

 '(("Home" 15)("Baby" 20) ("Mother" 28)...)).

我必须编写一个程序来获得类似的东西:

(function-name "[Home (Baby3) 2] Mother")) 

并计算它们的价值。

  • 每个单词都以大写字母开头,单词中的所有其他单词都是小写字母。
  • 每个单词都从上面的列表中获取其值。
  • 每个单词都需要乘以下面的数字。如果没有数字,则为 1。

在上面的例子中:

"[Home (Baby3) 2] Mother" =  Home*1 + (Baby*3)*2 +Mother*1=15*1+20*3*2+28=163

我不知道如何开始。有什么想法吗?

我开始编写代码。 但是,我不知道如何处理 2 个括号 [ ,例如 [首页[Baby3] 2]。 我怎么知道 ] 是关闭第一个还是第二个? (不使用 counter 和 set 之类的东西!)

【问题讨论】:

  • 你不能仅仅为了让人们为你做作业而使用这个地方。你至少应该考虑一些可能的方法,解释你的想法,并就这些方法是否好征求意见。更好的是,尝试一种方法,看看你遇到问题的地方,然后问。

标签: string list scheme


【解决方案1】:

考虑将问题分解为多个阶段。一种可能的分解是:

  1. 弄清楚如何获取任意字符串并将它们解析成数据结构。例如给定"[Home (Baby3) 2] Mother",编写一个解析函数,将其转换为更易于理解的结构化值'((Home (Baby 3) 2) Mother) 或它的一些变体。

  2. 给定这样一个结构化值,编写一个函数以根据您在问题中描述的规则解释它。

你知道怎么做吗?

【讨论】:

  • +1...没什么好说的,除非 OP 表现出更多的努力
  • 我开始写代码。但是,我不知道如何处理 2 个括号 [ ,例如 [Home [Baby3] 2]。我怎么知道 ] 是关闭第一个还是第二个? (不使用计数器和设置之类的东西!)
  • 考虑阅读递归下降解析,这是解析带括号的字符串的一种相当简单的方法。我在hashcollision.org/brainfudge/… 中间有一个这样的解析器示例,但它处理您可能不需要处理的问题。 Stack Overflow 应该有几个对递归下降解析的引用,包括:stackoverflow.com/questions/2405623/…
猜你喜欢
  • 2016-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-19
  • 1970-01-01
相关资源
最近更新 更多