坦克问题与蓄水问题
问题1:
""" 某次战役中,为便于信息交互,我军侦察部门将此次战役的关键高地坐标设定为(x=0,y=0)并规定, 每向东增加100米,x加1,每向北增加100米,y加1。同时,我军情报部门也破译了敌军向坦克发送的指挥信号, 其中有三种信号(L,R,M)用于控制坦克的运动,L 和 R 分别表示使令坦克向左、向右转向, M 表示令坦克直线开进100米,其它信号如 T 用于时间同步,P 用于位置较准。 一日,我军侦察兵发现了敌军的一辆坦克,侦察兵立即将坦克所在坐标(P, Q)及 坦克前进方向(W:西,E:东,N:北,S:南)发送给指挥部,同时启动信号接收器, 将坦克接收到的信号实时同步发往指挥部,指挥部根据这些信息得以实时掌控了该坦克的位置, 并使用榴弹炮精准地击毁了该坦克。 请设计合理的数据结构和算法,根据坦克接收到的信号,推断出坦克所在的位置。设计时请考 虑可能的扩展情况,并体现出您的设计风格。编码时请注重代码规范,并编写足够的单元测试。 假设,坦克坐标为(11,39)运行方向为 W,当收到以下信号“MTMPRPMTMLMRPRMTPLMMTLMRRMP” 后, 其位置应该为(9,43),运行方向为 E """
说明:这里最主要的还是在方位上
代码
a = int(input('当前坦克位置横坐标:').strip()) b = int(input('当前坦克纵坐标:').strip()) c = input('当前方向:').strip() l1 = ['W','S','E','N'] def locations(x,y,location): message = input('接收到的信号:').strip() for i in message: if i == 'R': index = l1.index(location)-1 if index == -1: index = 3 location = l1[index] continue if i == 'L': index = l1.index(location)+1 if index == 4: index = 0 location = l1[index] continue if i =='P' or i =='T': continue if location =='W': x-=1 elif location =='S': y-=1 elif location =='E': x+=1 elif location =='N': y+=1 print('当前坦克位置坐标:{},{}),当前方向{}'.format(x,y,location)) locations(a,b,c)
问题2:
""" 有如下一组连续高度不一宽度是1的墙壁,可使用数组[1,3,4,3,28,10,9,19,22,3,34,55,43,21]表示,当 下雨时,雨水会填满之间的空间,请使用Python求出被水填满区域面积的相关逻辑 """
图片:
代码
lis = [1,3,4,3,28,10,9,19,22,3,34,55,43,21] def water(li): total_water = 0 for i in range(1,len(li)-1): left_max = max(li[0:i]) right_max = max(li[i+1:]) if left_max > li[i] and right_max > li[i]: contain_water = min(left_max,right_max) - li[i] total_water += contain_water return total_water print(water(lis))