• 17---坐标移动


    描述

    开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面。

    输入:

    合法坐标为A(或者D或者W或者S) + 数字(两位以内)

    坐标之间以;分隔。

    非法坐标点需要进行丢弃。如AA10; A1A; $%$; YAD; 等。

    下面是一个简单的例子 如:

    A10;S20;W10;D30;X;A1A;B10A11;;A10;
    
    • 1

    处理过程:

    起点(0,0)

    • A10 = (-10,0)

    • S20 = (-10,-20)

    • W10 = (-10,-10)

    • D30 = (20,-10)

    • x = 无效

    • A1A = 无效

    • B10A11 = 无效

    • 一个空 不影响

    • A10 = (10,-10)

    结果 (10, -10)

    数据范围:每组输入的字符串长度满足 1 ≤ n ≤ 10000 1\le n \le 10000 1n10000 ,坐标保证满足 − 2 31 ≤ x , y ≤ 2 31 − 1 -2^{31} \le x,y \le 2^{31}-1 231x,y2311 且数字部分仅含正数。

    输入描述:

    一行字符串

    输出描述:

    最终坐标,以逗号分隔

    示例1

    输入:

    A10;S20;W10;D30;X;A1A;B10A11;;A10;
    
    • 1

    输出:

    10,-10
    
    • 1

    示例2

    输入:

    ABC;AKL;DA1;
    
    • 1

    输出:

    0,0
    
    • 1

    代码如下:

    command_list = input().split(";")
    origin = [0, 0]
    for command in command_list:
        if len(command) <= 3 and command[1:3].isdigit():
            if command.startswith("A"):
                origin[0] -= int(command[1:3])
            elif command.startswith("S"):
                origin[1] -= int(command[1:3])
            elif command.startswith("W"):
                origin[1] += int(command[1:3])
            elif command.startswith("D"):
                origin[0] += int(command[1:3])
            else:
                pass
                 
    print(origin[0], end=",")
    print(origin[1])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    如果大家觉得有用,就点个赞让更多的人看到吧~

  • 相关阅读:
    qtcreator 中使用opencv处理图片
    FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII实现 UDP 网络视频传输,提供工程和QT上位机源码加技术支持
    区块链,得这样练
    【c++&GDAL】均值滤波+中值滤波
    微信小程序 checkbox 实现双向绑定以及特殊交互处理
    JavaSE学习--数据类型和运算符
    利用路由追踪工具收集路由信息
    无涯教程-JavaScript - IMREAL函数
    常见背包问题
    Java21新增特性
  • 原文地址:https://blog.csdn.net/u011699626/article/details/127131418