牛客输入输出(依图科技)

172 篇文章 4 订阅
148 篇文章 3 订阅

2020-08-28 依图科技算法笔试 A
这里出现了相对复杂的输入输出,特此记录
具体题目可上牛客搜索

输入:2 表示 2 组测试用例
5 8 中的 5 表示矩阵的边长,8 表示每组测试用例每一步的操作:

2
5 8
L
R
G 10
P
R
R
G 10
P
5 8
L
R
G 10
P
R
R
G 10
P

输出:

Case #1:
0 0 
0 4
Case #2:
0 0 
0 4
import sys
def robotWalk(pos, n, com):
    if com[0] == 'L':
        pos['rot'] -= 90
    elif com[0] == 'R':
        pos['rot'] += 90
    elif com[0] == 'G':
        num_walk = int(com[1])

        if pos['rot'] % 360 == 0:
            if pos['x'] + num_walk <= n - 1:
                pos['x'] += num_walk
            else:
                pos['x'] = n - 1

        elif pos['rot'] % 360 == 90:
            if pos['y'] + num_walk <= n - 1:
                pos['y'] += num_walk
            else:
                pos['y'] = n - 1

        elif pos['rot'] % 360 == 180:
            if pos['x'] - num_walk >= 0:
                pos['x'] -= num_walk
            else:
                pos['x'] = 0

        elif pos['rot'] % 360 == 270:
            if pos['y'] - num_walk >= 0:
                pos['y'] -= num_walk
            else:
                pos['y'] = 0

if __name__ == "__main__":
    T = int(sys.stdin.readline().strip())
    
    for t in range(T):
        print("Case #%d:" % (t + 1))
        # [x, y, rotation]
        start_pos = {'x': 0, 'y': 0, 'rot': -90}

        n, m = list(map(int, input().split(" ")))
        for i in range(m):
            # 读取每一行
            line = sys.stdin.readline().strip()
            # 把每一行的数字分隔后转化成int列表
            com = list(map(str, line.split()))
            # print("com:", com)
            robotWalk(start_pos, n, com)
            if com[0] == 'P':
                print(start_pos['x'], start_pos['y'], end='\n')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值