0

我需要帮助解决这个问题,因为我不知道如何解决这个问题

定义一个过程 pick ,它接受一个非空字符串 s 和一个非负整数 i,并返回一个长度为 1 的子字符串,该子字符串由 s 中索引 i 处的字符组成。假设 i 是字符串 s 的合法索引。

〜(选择“猫”0)

“C”

〜(选择“猫”1)

“一个”

〜(选择“猫”2)

“t”

4

2 回答 2

1

试试这个,使用标准方案过程很简单:

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

它是这样工作的:string-ref从给定索引处的字符串中返回一个字符,然后该string过程将字符转换为长度为 1 的字符串。

没有真正需要使用该substring过程(因为我们只需要一个字符),但这也是一个有效的替代方案。

于 2012-09-05T04:56:14.273 回答
1

一种解决方案是使用substring.

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

此处“方案”一词的字母被编号。

  • 字母 S 的索引为 0。
  • 字母 c 的索引为 1。
  • 字母 h 的索引为 2。
  • 字母 e 的索引为 3。
  • 字母 m 的索引为 4。
  • 字母 e 的索引为 5。

该表达式(substring "Scheme" 1 3)创建一个新字符串,其中的字母编号从 1 到 2。索引 3 是不在新字符串中的第一个索引。

由于您只想选择一个字符,请尝试以下操作:

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

现在您可以定义自己的函数:

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

应该怎么办???是?

于 2012-09-05T12:29:38.533 回答