zoukankan      html  css  js  c++  java
  • 0419 坦克坐标图


    某次战役中,为便于信息交互,我军侦察部门将此次战役的关键高地坐标设定为(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
    class Coordinate:
        dic = {'WL': 'S', 'WR': 'N', 'EL': 'N', 'ER': 'S', 'NL': 'W', 'NR': 'E', 'SL': 'E', 'SR': 'W'}
        def __init__(self,x,y,d):
            self.x = x
            self.y = y
            self.d = d
    
        def message(self,msg):
            for i in msg:
                if i == 'M':
                    if self.d == 'W':
                        self.x -= 1
                    elif self.d == 'E':
                        self.x += 1
                    elif self.d == 'N':
                        self.y += 1
                    elif self.d == 'S':
                        self.y -= 1
                elif i in ['L','R']:
                    self.d = self.dic[self.d+i]
            return (self.x, self.y, self.d)
    
    a = Coordinate(11,39,'W')
    s = 'MTMPRPMTMLMRPRMTPLMMTLMRRMP'
    print(a.message(s))
  • 相关阅读:
    Android Facebook分享功能实现
    Facebook KeyHash生成方法
    Android 版 Facebook 登录
    在Android App中集成Google登录
    Android 应用程序集成FaceBook 登录及二次封装
    Android Facebook和Twitter登录和分享完整版
    android开发之自定义圆形ImagView
    Okhttp、Volley和Gson的简单介绍和配合使用
    Android并发编程
    重要的ui组件——Behavior
  • 原文地址:https://www.cnblogs.com/Mr-Murray/p/8883706.html
Copyright © 2011-2022 走看看