0

ネストされたリストを取得し、各単語を「面白い」単語に置き換える演習があります。「面白い」言葉とは何かを宣言しました。

私はこのコードを書きました

(defun funny_nestes (nested_l)
  (cond ((null nested_l) "")
        ((atom (car nested_l))
         (cons (funnyw (car nested_l))
               (funny_nestes (cdr nested_l))))
        (t (cons (funny_nestes (car nested_l))
                 (funny_nestes (cdr nested_l))))))

「funnyw」が「面白い」単語を返す関数である場合。

私が走れば

(FUNNY_NESTES '(ata (she lamadta be JCT) oved be NDS))

私は得る

("AbATAbA " ("SHEbE " "LAbAMAbADTAbA " "BEbE " "JCT " . "")
 "ObOVEbED " "BEbE " "NDS " . "")

そして手に入れたい

(AbATAb (SHEbE LAbAMAbADTAbA  BEbE  JCT) ObOVEbED  BEbE  NDS )

どうすれば修正できますか?そして、どうすればラムダでそれを行うことができますか?

4

2 に答える 2

0

「そして、どうすればラムダでそれを行うことができますか?」「ラムダで行う」とはどういう意味ですか?

コードに空の文字列があるのはなぜですか?

文字列の代わりに記号が必要な場合は、文字列を記号に変換する必要があります。

于 2012-05-20T19:06:15.543 に答える
0

これが求められていると仮定して、私は暗闇の中で突き刺します:

(defun replace-with-gibberish (modifier words)
  (cond
    ((null words) nil)
    ((consp (car words))
     (cons (replace-with-gibberish modifier (car words))
           (replace-with-gibberish modifier (cdr words))))
    (t (cons (funcall modifier (car words))
             (replace-with-gibberish modifier (cdr words))))))

(replace-with-gibberish
 #'(lambda (x)
     (intern
      (coerce
       (mapcan #'list
               (coerce (symbol-name x) 'list)
               (coerce
                (make-string
                 (length (symbol-name x))
                 :initial-element #\b) 'list)) 'string)))
 '(ata (she lamadta be JCT) oved be NDS))

あなたが示した結果から私が推測できること。ただし、シンボルを囲むパイプを取り除きたい場合は、大文字を使用してシンボルの意味不明な名前を生成する必要があることに注意してください。(デフォルトでは、シンボル名は大文字です。小文字を含める必要がある場合は、エスケープする必要があります)。

あなたの質問の問題は、基本的に投稿した機能は正しく得られましたが、投稿しなかった機能は間違っているようです (面白いw)。私は先に進み、それを任意の関数に置き換えたいと想定しました-それが例の理由です.

于 2012-05-20T20:40:33.153 に答える