0

これを解決する方法がわからないので、この問題を解決するのに助けが必要です

空でない文字列 s と負でない整数 i を取り、s のインデックス i の文字からなる長さ 1 の部分文字列を返す手続き pick を定義します。i が文字列 s の有効なインデックスであると仮定します。

〜(「猫」0を選択)

"c"

〜(「猫」1を選ぶ)

「あ」

〜(「猫」を選ぶ2)

「ト」

4

2 に答える 2

1

1 つの解決策は、 を使用することsubstringです。

> (substring "Scheme" 1 3)
"ch"

ここでは、「Scheme」という単語の文字に番号が付けられています。

  • 文字 S のインデックスは 0 です。
  • 文字 c のインデックスは 1 です。
  • 文字 h のインデックスは 2 です。
  • 文字 e のインデックスは 3 です。
  • 文字 m のインデックスは 4 です。
  • 文字 e のインデックスは 5 です。

この式(substring "Scheme" 1 3)は、1 から 2 までの番号が付けられた文字で新しい文字列を作成します。インデックス 3 は、新しい文字列にない最初のインデックスです。

1文字だけを選びたいので、これを試してください:

> (substring "Scheme" 1 2)
"c"
> (substring "Scheme" 2 3)
"h"

これで、独自の関数を定義できます。

(define (pick a-string i)
    (substring a-string ??? ???))

何をすべきか??? なれ?

于 2012-09-05T12:29:38.533 に答える
1

これを試してみてください。標準のScheme手順を使用すると簡単です。

(define (pick str idx)
  (string (string-ref str idx)))

string-ref指定されたインデックスの文字列から文字を返し、stringプロシージャはその文字を長さ 1 の文字列に変換します。

この手順を実際に使用する必要はありませんsubstring(1 文字しか必要ないため) が、これも有効な代替手段です。

于 2012-09-05T04:56:14.273 に答える