-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括弧 [ , for eaxmple [Home [Baby3] 2]] の扱い方がわかりません。] が 1 番目または 2 番目を閉じるかどうかを知るにはどうすればよいですか? (カウンターやセットなどは使わない!)

4

1 に答える 1

3

問題をいくつかの段階に分割することを検討してください。1 つの考えられる分解は次のとおりです。

  1. 任意の文字列を取得し、それらをデータ構造に解析する方法を理解してください。たとえば、 given "[Home (Baby3) 2] Mother"、これをより消化しやすい構造化された値'((Home (Baby 3) 2) Mother)またはこれのバリエーションに変換する解析関数を記述します。

  2. このような構造化された値が与えられたら、質問で説明したルールに基づいて解釈する関数を作成します。

これらのいずれかを行う方法を知っていますか?

于 2012-10-30T17:12:08.327 に答える