Python计算,指定半径内,有多少个完整的正方形和不完整的
题目:
如下图所示:有一个无限大的方块矩阵,每个方块边长为1,给出一个半径,计算出该半径的圆内,有多少个完整的方块和不完整的方块。
文章图片
image.png 思路1:
【Python计算,指定半径内,有多少个完整的正方形和不完整的】计算出每个点距离各自顶点方块四个点的距离,所有距离小于半径,则是完整的方块。若最大距离大于半径并且最小距离小于半径,则是不完整的方块。
给出代码:
from math import ceil, hypot#计算距离
def getMaxAndMinDistances(radius):
radius = int(ceil(radius))
distances = []
for row in range(radius):
for col in range(radius):
temp = [hypot(row - radius, col - radius), hypot(row - radius, radius - col - 1),
hypot(radius - row - 1, radius - col), hypot(radius - row - 1, radius - col - 1)]
distances.append((min(temp), max(temp)))
return distancesdef checkio(radius):
distances = getMaxAndMinDistances(radius)
#过滤掉不符合的元素
solid = len(list(filter(lambda x: x[1] < radius, distances)))
partial = len(list(filter(lambda x: x[1] > radius > x[0], distances)))
#上面只计算了一个象限,*4既是所有的结果
return [solid * 4, partial * 4]if __name__ == '__main__':
checkio(2)# 结果是: [4, 12]
思路2:
计算出每个点距离圆心的长度,如果小于半径,则在圆内。
代码:
def check2(radius):
ran, solid, total = range(int(radius)+1),0,0
for x in ran:
for y in ran:
#1j表示复数
solid+=abs(x+y*1j+1+1j)<=radius
total+=abs(x+y*1j)
推荐阅读
- 参保人员因患病来不及到指定的医疗机构就医,能否报销医疗费用()
- python学习之|python学习之 实现QQ自动发送消息
- 逻辑回归的理解与python示例
- python自定义封装带颜色的logging模块
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- Python基础|Python基础 - 练习1
- Python爬虫|Python爬虫 --- 1.4 正则表达式(re库)
- 使用协程爬取网页,计算网页数据大小
- Python(pathlib模块)
- python青少年编程比赛_第十一届蓝桥杯大赛青少年创意编程组比赛细则