小E的射击训练|豆包MarsCode AI刷题

64 阅读1分钟

问题背景

给定一个射击点的坐标 (x, y),我们需要计算该点到靶心 (0, 0) 的距离,并根据距离确定得分。靶心分为多个环,每个环对应不同的得分。

解决方案

这个问题可以通过以下几个步骤来解决:

  1. 计算距离

    • 使用欧几里得距离公式 distance = sqrt(x^2 + y^2) 计算射击点到靶心的距离。
  2. 确定得分

    • 根据计算出的距离,判断射击点落在哪个环内,并返回相应的得分。
    • 靶心的环从内到外依次得分为 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,超过 10 的距离得分为 0。

具体步骤

  1. 计算距离

    python
    深色版本
    distance = math.sqrt(x**2 + y**2)
    
  2. 确定得分

    • 使用一系列的条件语句(if-elif-else)来判断距离所在的范围,并返回相应的得分。
    python
    深色版本
    if distance <= 1:
        return 10
    elif distance <= 2:
        return 9
    elif distance <= 3:
        return 8
    elif distance <= 4:
        return 7
    elif distance <= 5:
        return 6
    elif distance <= 6:
        return 5
    elif distance <= 7:
        return 4
    elif distance <= 8:
        return 3
    elif distance <= 9:
        return 2
    elif distance <= 10:
        return 1
    else:
        return 0
    

代码实现

python
深色版本
import math

def solution(x: int, y: int) -> int:
    # 计算射击点到靶心的距离
    distance = math.sqrt(x**2 + y**2)
    
    # 根据距离确定得分
    if distance <= 1:
        return 10
    elif distance <= 2:
        return 9
    elif distance <= 3:
        return 8
    elif distance <= 4:
        return 7
    elif distance <= 5:
        return 6
    elif distance <= 6:
        return 5
    elif distance <= 7:
        return 4
    elif distance <= 8:
        return 3
    elif distance <= 9:
        return 2
    elif distance <= 10:
        return 1
    else:
        return 0

if __name__ == '__main__':
    # 测试用例
    print(solution(1, 0) == 10)  # 输出应为 10
    print(solution(1, 1) == 9)   # 输出应为 9
    print(solution(0, 5) == 6)   # 输出应为 6
    print(solution(3, 4) == 6)   # 输出应为 6