某游戏大厂测开笔试题分享

2023-11-16

测开笔试题

某厂笔试题:
执行时限1000ms
一个典型的电话拨号盘如下:
1 2 3
4 5 6
7 8 9
** 0 #
手指在两个按键之间的移动距离被定义为这两个键的x、y坐标差的绝对值之和。
比如:6到自身的距离是0,到3、5、9键的距离是1,到2、4、8、#键的距离是2,
到1、7、0键的距离是3,到*键的距离是4。
现在要你算一下:拨打一个电话号码手指所需要移动的最小距离是多少?
假设,手指的初始位置是在“5”键上。
输入:
一行,一个字符串,表示需要拨打的电话号码。
输入约束:
电话号码的每一位仅包含数字0到9,且总长度范围是[3,20]
输出:
一个整数,表示拨完整个号码,手指所需要移动的最小距离。
例子:输入 911
输出 6


解题过程:
例子分析: 输入911,手指经过的键是5–>9–>1–>1,其中5–>9的最小距离是2,9–>1的最小距离是4,1–>1的最小距离是0,因此结果是2+4+0=6。
算法:
1、初始化一个电话盘一样的二维列表;
2、根据二维列表,生成一个字典,电话盘中的每个键值是key,
键值在二维列表中的坐标[x轴,y轴]是value;
3、遍历电话号码:计算当前键的位置,与上一个键的距离。
距离=绝对值之和=abs(上一个键的横坐标-当前键的横坐标)+abs(上一个键的纵坐标-当前键的纵坐标)
4、将所有电话号码之间的距离进行累加,并返回结果。(初始位置是5键,坐标是【1,1】)。
将算法翻译成代码:

arr =[[1,2,3],[4,5,6],[7,8,9],["*",0,"#"]]
d = {}
# 两层for循环,生成字典,key是电话盘上的数字,value是各数字的二维坐标
for i in range(len(arr)):
    for j in range(len(arr[i])):
        d[arr[i][j]] = [i,j]
"""
 print(d)
 d={1: [0, 0], 2: [0, 1], 3: [0, 2], 4: [1, 0], 5: [1, 1], 6: [1, 2], 
 7: [2, 0], 8: [2, 1], 9: [2, 2], '*': [3, 0], 0: [3, 1], '#': [3, 2]}
"""
def get_distance():
    tel = input("请输入电话号码:")
    if len(tel) < 3 or len(tel) > 20:
        raise Exception("电话号码长度非法")
    try:
        int(tel)
    except Exception as e:
        print("输入的电话不是纯数字")
        print(e)
    else:
        result = 0
        start = [1, 1]
        for  i in tel: 
            # d[int(i)]指的是当前电话数字对应的坐标,那么d[int(i)][0] 即横坐标
            sum_x = abs(start[0] -d[int(i)][0])
            # 同理d[int(i)][1] 即当前电话数字的纵坐标
            sum_y = abs(start[1] -d[int(i)][1])
            result += sum_x + sum_y
            # 每一个号码循环完后,要把初始位置改为当前数字的坐标,方便下一轮的循环
            start = d[int(i)]
    return result 

if __name__ == "__main__":
    # 自测6次
    for  i in range(6):
        get_distance()
"""
测试结果如下:        
请输入电话号码:911
6
请输入电话号码:123456
9
请输入电话号码:643247
10
请输入电话号码:8606335540
16
请输入电话号码:8606574276
21
请输入电话号码:dsfsf
输入的电话不是纯数字
"""
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

某游戏大厂测开笔试题分享 的相关文章

随机推荐

  • Java BufferImage图片处理(获取宽高、图片截取、转换灰度图)

    Java BufferImage图片处理 获取宽高 截取 转换灰度图 1 效果图 2 源码 参考 这篇博客将介绍如何使用Java读取图片为byte 数组 或者BufferedImage及互相转换 并进行了转换图片为灰度图 截取部分区域等 1
  • 电脑win+r命令大全

    0 osk 打开键盘 1 msconfig 关闭系统开机启动项 2 ipconfig all ipconfig release ipconfig renew 3 convert g fs ntfs 盘符格式转换 g代表U盘符 4 gpedi
  • DSS部署-完整版

    文章目录 DSS部署流程 第一部分 背景 第二部分 准备虚拟机 环境初始化 1 准备虚拟机 2 环境初始化 关闭防火墙 关闭selinux 关闭swap 根据规划设置主机名 在master添加hosts 将桥接的IPv4流量传递到iptab
  • 现在机器人是用什么语言编程

    现在机器人是用什么语言编程 对于很多的家长们来说 孩子的学习一直都是他们非常关心和重视的一件事情 很多的家长在培养孩子的学习方面也可以说是相当的认真的 他们会给孩子选择一些能够有利于孩子成长的课程 就拿现在很多的家长想要孩子去学习机器人编程
  • 【搜索引擎Solr】Apache Solr 神经搜索

    Sease 1 与 Alessandro Benedetti Apache Lucene Solr PMC 成员和提交者 和 Elia Porciani Sease 研发软件工程师 共同为开源社区贡献了 Apache Solr 中神经搜索的
  • 【开发】前端工程——ReactJS

    前置知识 JavaScript ES6 ReactJS 前端开发的四个阶段 1 静态页面阶段 在第一个阶段中前端页面都是静态的 所有前端代码和前端数据都是后端生成的 前端纯粹只是增加一些特殊效果 后端MVC模式 Model 模型层 提供 保
  • 删除重复字符排序字符串(python3)

    问题描述 编写一个程序 从键盘接收一个字符串 然后按照字符顺序从小到大进行排序 并删除重复的字符 输入形式 从键盘输入一个字符串 以回车结束输入 要求程序可以处理含有空格的字符串 输出形式 程序接收此字符串 然后将其按照字符ASCII码值从
  • vue阶段思维导图

  • springboot 打印请求路径到 日志 控制台

    文章目录 application properties 添加 logging level org springframework web servlet mvc method annotation RequestMappingHandler
  • 安装双系统后,将windows设置为默认启动选项的方法

    原先的电脑只有windows系统 后来加装了ubuntu系统 但由于大部分时间仍然需要使用windows 但是默认启动项为ubuntu 难免会带来一些不便 将windows设为默认第一启动项的方法很简单 打开终端 查看grub的配置文件 s
  • VC++实用宏定义

    前言 在日常的编程工作中 常常定义一些实用的宏方便调用 该文章将收集一些常用的宏供大家参考 欢迎大家讨论和添加 指针释放 最常用的就是指针的安全释放 对应new的释放 ifndef ReleasePtr define ReleasePtr
  • File Processing by Python

    Go through all the file in destination path import os import sys def GetFileList dir fileList newDir dir if os path isfi
  • 【计算机网络】TCP协议

    实验目的 应用所学知识 1 熟悉 TCP 的协议格式 2 理解 TCP 对序列号和确认号的使用 3 理解 TCP 的流量控制算法和拥塞控制算法 实验步骤与结果 1 任务一 将Alice txt上传到服务器 使用wireshark捕获数据包
  • Windows平台的SDK、DDK与WDK

    尽管Windows平台的SDK DDK与WDK都包含了WinDBG工具包 但是用户获取WinDBG工具包的最主要方式还是从微软网站自由下载 因为这样获得的版本最新 最近尝试去了解WINDOWS下的驱动开发 现在总结一下最近看到的资料 1 首
  • 下采样与上采样

    一 下采样 概念 下采样 subsampled 又称为降采样 downsampled 可以通俗地理解为缩小图像 减少矩阵的采样点数 方法 1 最常用隔位取值 每行每列每隔k个点取一个点 2 合并区域 每 row k col k 窗口内所有像
  • python selenium 键盘操作 常用

    键盘事件 前面的 send keys 方法用来模拟键盘输入 keys 类提供了键盘上几乎所有按键的方法 组合键也是可以的 常用的键盘操作如下 send keys Keys BACK SPACE 删除键 BackSpace send keys
  • 三十、纯虚函数、抽象类、多态、简单工厂模式

    一 纯虚函数 虚函数是多态是实现多态的前提 如果我们需要在基类中定义共同的结构 那么接口就需要定义成虚函数 但是很多情况下基类的接口是无法实现的 比如形状类Shape 定义一个Draw方法 很明显这个方法没法实现 因为我们可以画出圆 正方形
  • 乾坤微服务子项目图片资源加载失败

    一 背景 子项目单独运行时正常 放在乾坤上 img 加载图片时失败 二 分析原因 假设乾坤项目域名为 http www aaa com 子项目域名为 http www bbb com 项目实际运行时 图片的 html 写法为 img src
  • python:正向最大匹配法分词(以藏文为例)

    前段时间研究了如何用分词工具进行分词 但是分词中涉及的一些算法 不太了解 所以 准备这段时间专攻分词算法原理 大家有补充 或者建议 欢迎留言 1 最大匹配法 Maximum Matching 最大匹配法是指以词典为依据 取词典中最长词长度作
  • 某游戏大厂测开笔试题分享

    测开笔试题 某厂笔试题 执行时限1000ms 一个典型的电话拨号盘如下 1 2 3 4 5 6 7 8 9 0 手指在两个按键之间的移动距离被定义为这两个键的x y坐标差的绝对值之和 比如 6到自身的距离是0 到3 5 9键的距离是1 到2