坦克面试题

Posted neeo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了坦克面试题相关的知识,希望对你有一定的参考价值。

‘‘‘
某次战役中,为便于信息交互,我军侦察部门将此次战役的关键高地坐标设定为(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

请通过编程计算出坦克所在的位置(编程语言不限)
‘‘‘
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))

# http://www.hutaoren.cn/article/12/    # 可以参考

 

以上是关于坦克面试题的主要内容,如果未能解决你的问题,请参考以下文章

前端面试题之手写promise

Java工程师面试题,二级java刷题软件

Java进阶之光!2021必看-Java高级面试题总结

经验总结:Java高级工程师面试题-字节跳动,成功跳槽阿里!

韩顺平--Java坦克大战

一道经典面试题:字符串在Java中如何通过“引用”传递