2021 fall cs61a dis 11
网址 https://inst.eecs.berkeley.edu/~cs61a/fa21/disc/disc11/#q1-using-pair
problem1:
probelm2:
def calc_eval(exp):
if isinstance(exp, Pair): # Call expressions
return calc_apply(calc_eval(exp.first), exp.rest.map(calc_eval))
elif exp in OPERATORS: # Names
return OPERATORS[exp]
else: # Numbers
return exp
def floor_div(expr):
"*** YOUR CODE HERE ***"
divident = expr.first
expr = expr.rest
while expr.rest != nil:
divisor = expr.first
dividend //= divisor
expr = expr.rest
return dividend
probelm3:
def calc_eval(exp):
if isinstance(exp, Pair):
if exp.first == 'and': # and expressions
return eval_and(exp.rest)
else: # Call expressions
return calc_apply(calc_eval(exp.first), exp.rest.map(calc_eval))
elif exp in OPERATORS: # Names
return OPERATORS[exp]
else: # Numbers
return exp
def eval_and(operands):
curr, val = operands, True
while curr is not nil:
val = calc_eval(curr.first)
if val is False:
return False
curr = curr.rest
return val
probelm4:
bindings = {}
def calc_eval(exp):
if isinstance(exp, Pair):
if exp.first == 'and': # and expressions[paste your answer from the earlier]
return eval_and(exp.rest)
elif exp.first == 'define': # define expressions
return eval_define(exp.rest)
else: # Call expressions
return calc_apply(calc_eval(exp.first), exp.rest.map(calc_eval))
elif exp in bindings: # Looking up variables
"*** YOUR CODE HERE ***"
return bindings[exp]
elif exp in OPERATORS: # Looking up procedures
return OPERATORS[exp]
else: # Numbers
return exp
def eval_define(expr):
bindings[expr.first] = expr.rest.first
return expt.first
probelm5:
problem6:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人