射击训练

93 阅读1分钟

笔记

  1. 问题理解

    • 靶心位于坐标 (0, 0),半径为1的圆内得10分,依次向外每个环分数减少1分。
    • 如果射击点在某个半径为 i 的圆内,则得 11 - i 分。
    • 如果射击点超出所有的环,则得0分。
  2. 关键点

    • 距离计算:使用欧几里得距离公式计算射击点 (x, y) 到靶心 (0, 0) 的距离:distance = sqrt(x^2 + y^2)
    • 得分判断:根据距离判断射击点在哪个环内,得分规则如下:
      • 如果 distance <= 1,得分是10分。
      • 如果 1 < distance <= 2,得分是9分。
      • 以此类推,直到 distance > 10,得分是0分。
  3. 代码实现

    • 使用 math.sqrt 计算距离。
    • 使用一系列 if-elif-else 语句来判断得分。

代码框架

import math

def solution(x: int, y: int) -> int:
    # 计算射击点 (x, y) 到靶心 (0, 0) 的距离
    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)
    print(solution(1, 1) == 9)
    print(solution(0, 5) == 6)
    print(solution(3, 4) == 6)