借助AI解题:从编程实践到技能提升 | 豆包MarsCode AI 刷题

152 阅读3分钟

问题描述

小E正在训练场进行射击练习,靶有10个环,靶心位于坐标(0, 0)。每个环对应不同的得分,靶心内(半径为1)得10分,依次向外的每个环分数减少1分。若射击点在某个半径为i的圆内,则得11-i分。如果射击点超出所有的环,则得0分。

根据给定的射击坐标(x, y),请计算小E的射击得分。

结果展示

def solution(x: int, y: int) -> int:  
    distance_squared = x**2 + y**2  
    for i in range(1, 11):  
        if distance_squared <= i**2:  
            return 11 - i  
    return 0  
if __name__ == '__main__':  
    print(solution(1, 0) == 10)  
    print(solution(1, 1) == 9)  
    print(solution(0, 5) == 6)  
    print(solution(3, 4) == 6)  

题目解析

解题思路

  1. 计算射击点与靶心的距离平方(避免使用平方根来节省计算资源)。 distance_squared=x2+y2\text{distance_squared} = x^2 + y^2distance_squared=x2+y2

  2. 遍历从靶心(半径1)到最外层环(半径10):

    • 如果 distance_squared≤i2\text{distance_squared} \leq i^2distance_squared≤i2,则得分为 11−i11-i11−i。
  3. 如果超出所有环,返回得分为 0。


学习计划

  1. 掌握基本几何算法:

    • 学习常用几何公式,如欧几里得距离、圆与直线交点等。
  2. 优化技巧:

    • 理解如何通过简化运算提升效率(如避免开方运算)。
  3. 解题模式

将复杂问题拆解为子问题:例如,先判断点距离,再逐层判断环。 条件判断的逻辑构造:掌握逐层递进的判断方式,适用于分段函数、分区问题等。

  1. 调试与验证

单元测试:为代码设计多样化的输入案例,确保逻辑无误。
错误定位:通过逐步输出中间值或借助调试工具快速发现问题。

  1. 代码与工具结合

Matplotlib 可视化:通过图形验证算法逻辑,直观理解问题。
AI 协作:利用AI解析题目、优化代码,并提供进一步学习建议。


工具运用

  1. Python: 主要工具,用于编写和运行代码。

  2. 可视化工具: 使用 Matplotlib 绘制靶场,验证点是否落在正确区域。

  3. 调试工具: 用 Python 的 print 或调试器验证距离计算和判断逻辑。

  4. 算法优化: 优化数值运算时,尽量避免多余的计算(如平方根)。


AI辅助下的学习收获

1. 学会提问与表达

通过与AI的交互,逐渐学会清晰表达自己的疑惑和需求。具体体现在:

  • 描述问题时如何抓住核心。
  • 如何根据AI反馈改进自己的代码和思路。

2. 编程知识的拓展

AI不仅能解决问题,还会解释背后的原理和技巧:

  • 为什么用距离平方比直接计算距离更高效?
  • 如何设计代码以便扩展到更多情况(如多靶心场景)?

3. 学习的即时反馈

  • AI能快速指出问题所在,给予针对性建议,避免“卡壳”浪费时间。
  • 在代码实现后,AI会指出优化空间,让初学者逐步掌握高效编程技巧。