牛客网:坐标计算工具

2023-11-11

题目描述

开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面。
输入:
合法坐标为A(或者D或者W或者S) + 数字(两位以内)
坐标之间以;分隔。
非法坐标点需要进行丢弃。如AA10; A1A; % ; YAD; 等。
下面是一个简单的例子 如:
A10;S20;W10;D30;X;A1A;B10A11;;A10;
处理过程:
起点(0,0)
+ A10 = (-10,0)
+ S20 = (-10,-20)
+ W10 = (-10,-10)
+ D30 = (20,-10)
+ x = 无效
+ A1A = 无效
+ B10A11 = 无效
+ 一个空 不影响
+ A10 = (10,-10)
结果 (10, -10)
在这里插入图片描述

解题思路

这一题的做法很简单,首先就是对字符串进行处理,再排除掉不符合规则的坐标,再对剩下的坐标进行判断

  1. 对字符串进行分隔处理,得到每一个需要就算的坐标
  2. 删除掉不符合规则的坐标
  3. 再对剩下的坐标进行判断(如A1A之类的),不符合规则的也要进行删除
  4. 最后就是进行坐标的运算

代码实现

new_str = input()
str_list = new_str.split(';')
list2 = []
for i in str_list:
    if len(i) > 3:
        str_list.remove(i)
    elif len(i) < 3:
        str_list.remove(i)
    # 判断开头是否为字母
    a = i[0:1:].isalpha()
    # 判断是否为数字
    b = i[1::].isdigit()
    if a and b:
    	# 符合规则的坐标进行保留
        list2.append((i[0:1:], i[1::]))
a1 = [0, 0]
for i in list2:

    if i[0] == 'A':
        a1[0] -= int(i[1])

    if i[0] == 'D':
        a1[0] += int(i[1])

    if i[0] == 'W':
        a1[1] += int(i[1])

    if i[0] == 'S':
        a1[1] -= int(i[1])

print(str(a1[0]) + ',' + str(a1[1]))

总结

代码中还有一些瑕疵,比如没有对坐标首字母进行四个方位A、S、D、W的判断,不过基本上是通过了。(要是写得不好,大佬们轻喷。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

牛客网:坐标计算工具 的相关文章

随机推荐

  • AAL:ATM 适配层(AAL0、AAL2、AAL3/4、AAL5)--网络大典

    ATM 适配层 AAL 主要负责 ATM 层与高层之间的信元转发过程 从上层收到信息后 AAL 将数据分割成 ATM 信元 从 ATM 层收到信息后 AAL 必须重新组合数据形成一个上层能够辨识的格式 上述操作称之为分段与重组 SAR 它是
  • 【哈夫曼树】

    目录 前言 1 哈夫曼树结构 2 初始化 3 构造哈夫曼树 4 获取Huffman编码 整体代码 前言 哈夫曼树又称最优二叉树 可以对带权节点进行编码并且保证每个数据的编码都不会是其他数据的前缀 保证了编码的唯一性 因此 哈夫曼编码又称为前
  • xcode开发中 各种警告

    一 Missing file xxx 如果你在finder中删除了工程里面的文件 xcode上会出现一个警告 Missing file xxx 有个警告在那恨事不自在 上网着了下 发现了如下解决方法 1 打开terminal cd 到刚才你
  • Mysql存储json格式数据需要掌握的

    目录 一 前言 二 什么是 JSON 三 Mysql当中json函数 四 JSON值部分更新 4 1 使用 Partial Updates 的条件 4 2 如何在 binlog 中开启 Partial Updates 4 3 关于 Part
  • centos7 git安装

    开发十年 就只剩下这套Java开发体系了 gt gt gt 由于centos中的源仓库中git不是最新版本 需要进行源码安装 1 查看yum仓库git信息 root iZm5e3d4r5i5ml889vh6esZ zh yum info g
  • ESB产品UI升级总结

    一款好的产品需要不断地打磨才能变得更完整 更稳定 企业服务总线ESB产品作为数通畅联的核心产品 为了能够更好地迎合客户的需求 实现更好的视觉效果和体验感 需要不断地迭代升级 本次升级主要是针对整体页面进行优化以及对部分功能进行修复和调整 升
  • Qt应用开发——前言

    在IT 电子 通信 智能硬件等行业 都有PC端软件应用开发的人才需求 岗位名称有上位机软件 平台软件开发 客户端软件开发 测试软件开发或自动化测试软件开发等 根据公司行业差别和应用场景的不同 技术框架和岗位名称会有一定的区别 PC端软件应用
  • 一.快捷键基本操作(1)

    一 几种最常用的快捷键 1 1 Ctrl C 复制 2 Ctrl V 粘贴 3 Ctrl X 剪切 4 Ctrl A 全选 5 Ctrl Z 撤销上一步操作 6 Windows Windows键就是在键盘左下方类似于窗口的标志 D 最小化所
  • 智慧背囊小故事

    1 甲去买烟 烟29元 但他没火柴 跟店员说 顺便送一盒火柴吧 店员没给 乙去买烟 烟29元 他也没火柴 跟店员说 便宜一毛吧 最后 他用这一毛买一盒火柴 这是最简单的心理边际效应 第一种 店主认为自己在一个商品上赚钱了 另外一个没赚钱 赚
  • [运放滤波器]2_运放反馈原理

    运放滤波器 3 反相同相比例放大电路 Multisim电路仿真 运放滤波器 2 运放反馈原理 运放滤波器 1 理想运放 虚短虚断 简单介绍负反馈对放大电路的影响 几种运放的反馈电路 以及对应的判断方法 反馈原理 反馈 系统的输出送回输入回路
  • WIN32 代码测试(Control)

    include
  • 破案了,能ping通但是网络不通,是它们在搞鬼

    平时 我们想要知道 自己的机器到目的机器之间 网络通不通 一般会执行ping命令 一般对于状况良好的网络来说 你能看到它对应的loss丢包率为0 也就是所谓的能ping通 如果看到丢包率100 也就是ping不通 ping正常 ping不通
  • Javascript数组常用方法重写之map,reduce,some,every

    概要 我们在前端开发过程中 经常使用到各种数组的原生方法 为了更好的理解和使用这些原生方法 所以笔者试着重写了这些方法 并实现了相同的功能 本文主要对map reduce some every这四个原型方法进行重写 代码实现 由于新方法也要
  • 矩阵求导(转)

    在网上看到有人贴了如下求导公式 Y A X gt DY DX A Y X A gt DY DX A Y A X B gt DY DX A B Y A X B gt DY DX B A 于是把以前学过的矩阵求导部分整理一下 1 矩阵Y对标量x
  • 解决Visio封闭图案不能填充问题

    1 首先在文件选项高级里选中以开发人员模式运行 然后visio工具栏就出现了开发工具这一选项 然后选中封闭图形 找到开发工具里的操作这一选项 然后先对图形执行修剪 再连接 最后就可以填充颜色了 看看填充的结果
  • LinkedHashMap和LinkedHashSet 转来记录

    LinkedHashMap和LinkedHashSet是JDK 1 4中引入的两个新的集合类 虽然已经过去 年了 但我敢打赌并不是很多人都用过 因为我就没有用过 但这两个类在某些情况下还是非常有用的 过去没有用 现在没有用 都没有关系 但还
  • 操作系统3-覆盖技术,交换技术,虚拟存储,置换算法——lab3

    虚拟存储 在非连续存储内存分配的基础上 可以把一部分内容放到外存的做法 需求背景 增长迅速的存储需求 程序规模的增长速度远远大于存储器容量的增长速度 理想的存储器 更大 更快 更便宜 非易失性 实际张的存储器是目前很难达到的 要把硬盘的空间
  • Java 获取过去12个月日期

    业务功能要求 查询前12个月的相关数据统计 前 12个月日期 LocalDate today LocalDate now for long i 0L i lt 11L i LocalDate localDate today minusMon
  • PTA乙级1011 A+B 和 C

    给定区间 2 31 2 31 内的 3 个整数 A B 和 C 请判断 A B 是否大于 C 输入格式 输入第 1 行给出正整数 T 10 是测试用例的个数 随后给出 T 组测试用例 每组占一行 顺序给出 A B 和 C 整数间以空格分隔
  • 牛客网:坐标计算工具

    题目描述 开发一个坐标计算工具 A表示向左移动 D表示向右移动 W表示向上移动 S表示向下移动 从 0 0 点开始移动 从输入字符串里面读取一些坐标 并将最终输入结果输出到输出文件里面 输入 合法坐标为A 或者D或者W或者S 数字 两位以内