Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 在DrRacket中,如何将使用if语句的程序改为使用条件语句_String_List_Substring_Racket - Fatal编程技术网

String 在DrRacket中,如何将使用if语句的程序改为使用条件语句

String 在DrRacket中,如何将使用if语句的程序改为使用条件语句,string,list,substring,racket,String,List,Substring,Racket,这是我试图解决的问题 编写一个函数(最后一个子串lens n) 它使用Str和Nat,并返回带有 按字母顺序排在最后的长度n 记住要考虑函数是否需要它的任何功能。 争论 例如: (last-substring-len "foobar" 4) => "ooba" (last-substring-len "thequickbrownfoxjumpsoverthelazydogs" 7) => "xjumpso" 实际上,我几乎解决了我的问题,但我希望能够修改代码,以便用cond语句替

这是我试图解决的问题

编写一个函数
(最后一个子串lens n)

它使用Str和Nat,并返回带有 按字母顺序排在最后的长度n

记住要考虑函数是否需要它的任何功能。 争论

例如:

(last-substring-len "foobar" 4) => "ooba"

(last-substring-len "thequickbrownfoxjumpsoverthelazydogs" 7) => "xjumpso"
实际上,我几乎解决了我的问题,但我希望能够修改代码,以便用cond语句替换函数get maximium的if语句

这是我的原始代码:

(define (substrings-w-len s n)
  (cond
  [(> n (string-length s)) '()]
   [ else (cons (substring s 0 n)
            (substrings-w-len (substring s 1 (string-length s)) n))]))


(define (get-maximium string-list)
  (if(null? string-list) '()
  (if(= 1( length string-list)) string-list
  (if (equal? #true (string>=? (first string-list) (first (rest string-list))))
                  (get-maximium (cons (first string-list) (rest (rest string-list))))
                  (get-maximium (rest string-list))))))

(define (last-substring-w-len s n)
  ( get-maximium (substrings-w-len s n)))

(check-expect (last-substring-w-len "foobar" 4) "ooba")
这将产生
(list“ooba”)
,而它应该只产生“ooba”,因此我需要将列表转换为一个字符串,我应该能够自己解决这个问题,但如果有人能帮助我,我将不胜感激

现在的主要问题是我想用一个条件语句替换get maximum中的if语句

这是我修改get maximium函数,试图用cond语句替换if函数,但它还不起作用

(define (get-maximium string-list)
  (cond
  [(null? string-list) '()]
  [(= 1( length string-list)) string-list]
  [ else (equal? #true (string>=? (first string-list) (first (rest string list))))
                  (get-maximium (cons (first string-list) (rest (rest string-list))))
                  (get-maximium (rest string-list))]))

尝试检索答案的第一个元素,如下所示:

(define (last-substring-w-len s n)
  (first ( get-maximium (substrings-w-len s n))))

(last-substring-w-len "foobar" 4) => "ooba"
(last-substring-w-len "thequickbrownfoxjumpsoverthelazydogs" 7) => "xjumpso"

有关详细说明,请参见其他
部分存在问题。应该是这样的:

(define (get-maximium string-list)
  (cond [(null? string-list) '()]
        [(= 1 (length string-list)) string-list]
        [(string>=? (first string-list) (first (rest string list)))
         (get-maximium (cons (first string-list) (rest (rest string-list))))]
        [else (get-maximium (rest string-list))]))
此外,不需要问
(equal?#t)
,只需问