-2

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

 '(("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 个括号 [ ,例如 [Home [Baby3] 2]。我怎么知道 ] 是关闭第一个还是第二个?(不使用计数器和设置之类的东西!)

4

1 回答 1

3

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

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

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

你知道怎么做这些吗?

于 2012-10-30T17:12:08.327 回答