これを解決する方法がわからないので、この問題を解決するのに助けが必要です
空でない文字列 s と負でない整数 i を取り、s のインデックス i の文字からなる長さ 1 の部分文字列を返す手続き pick を定義します。i が文字列 s の有効なインデックスであると仮定します。
〜(「猫」0を選択)
"c"
〜(「猫」1を選ぶ)
「あ」
〜(「猫」を選ぶ2)
「ト」
1 つの解決策は、 を使用することsubstring
です。
> (substring "Scheme" 1 3)
"ch"
ここでは、「Scheme」という単語の文字に番号が付けられています。
この式(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 ??? ???))
何をすべきか??? なれ?
これを試してみてください。標準のScheme手順を使用すると簡単です。
(define (pick str idx)
(string (string-ref str idx)))
string-ref
指定されたインデックスの文字列から文字を返し、string
プロシージャはその文字を長さ 1 の文字列に変換します。
この手順を実際に使用する必要はありませんsubstring
(1 文字しか必要ないため) が、これも有効な代替手段です。