gpt4 book ai didi

python-2.7 - 将 Python 翻译成 Scheme/Racket

转载 作者:太空宇宙 更新时间:2023-11-03 19:04:15 25 4
gpt4 key购买 nike

我目前正在尝试翻译这段 python 2 代码:

import math

def worstCaseArrayOfSize(n):
if n == 1:
return [1]
else:
top = worstCaseArrayOfSize(int(math.floor(float(n) / 2)))
bottom = worstCaseArrayOfSize(int(math.ceil(float(n) / 2)))
return map(lambda x: x * 2, top) + map(lambda x: x * 2 - 1, bottom)

进入 Racket /计划代码,并遇到困难。

这是我目前所拥有的:

(define (msortWorstCase n)
(cond
[(equal? 1 n) 1]
[else (let* ([top (msortWorstCase(floor (/ n 2)))] [bottom (msortWorstCase (ceiling (/ n 2)))])

(append (map (lambda (x) (* x 2)) (list top)) (map (lambda (x) (- (* x 2) 1)) (list bottom))))]
)
)

谁能告诉我哪里出了问题?

我收到以下错误:

*: contract violation
expected: number?
given: '(2 1)
argument position: 1st
other arguments...:

最佳答案

您的递归正在制作列表列表的列表列表......使用 (list top)(list bottom)

你应该像在 Python 中一样在 Racket 中做同样的事情;基本情况应该是单元素列表,并且在递归情况下不应将结果包装在列表中。

(define (msortWorstCase n)
(cond
[(equal? 1 n) '(1)]
[else (let* ([top (msortWorstCase(floor (/ n 2)))]
[bottom (msortWorstCase (ceiling (/ n 2)))])
(append (map (lambda (x) (* x 2)) top)
(map (lambda (x) (- (* x 2) 1)) bottom)))]))

关于python-2.7 - 将 Python 翻译成 Scheme/Racket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53735604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com