基于Python实现扑克牌面试题


Posted in Python onDecember 11, 2019

这篇文章主要介绍了基于Python实现扑克牌面试题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

据说是腾讯的面试题,以下是要求:

一副从1到n的牌,每次从牌堆顶取一张放桌子上,再取一张放牌堆底,直到手中没牌。根据桌上的牌堆顺序,输出原先手中牌堆的顺序数组。

实现思路:

1、首先定义一个2维数组,代表最后桌上的牌堆排列情况。内部数组flist[i][0], flist[i][1]分别表示牌堆的排序和牌面的序号。

2、分n为奇数或偶数2种情况,用for循环逆推出原牌组的的顺序值(顺序为小数在下,大数在上)

3、对新数组用顺序值进行逆向排序后,输出由牌面的序号组成的数组

def cl(n):
  flst = [] #用数组flst定义最后桌上的牌堆顺序 
  for i in range(1, n+1): 
    flst.append([i, i])
  if n%2 == 0: #n为偶数情况
    for t in range(1, int(n/2)+1): #t为循环次数,代表一次取牌放牌顶+牌底的过程
      flst[n-t][0] = 2*t - 1
      flst[t-1][0] = 2*t
  else: #n为奇数情况
    flst[0][0]= 1 #新牌堆首张牌必定为原牌堆的最后一张
    for t in range(1, n//2+1):
      flst[n-t][0] = 2*t
      flst[t][0] = 2*t + 1
  olst = sorted(flst, key=lambda x: x[0], reverse=True) #对二维数组进行排序
  res = [i[1] for i in olst] #求得原牌组牌号
  return res

最后测试打印结果

print(cl(10))
 print(cl(11))

输出正确

[5, 6, 4, 7, 3, 8, 2, 9, 1, 10]
[6, 7, 5, 8, 4, 9, 3, 10, 2, 11, 1]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现zencart产品数据导入到magento(python导入数据)
Apr 03 Python
Python中请使用isinstance()判断变量类型
Aug 25 Python
跟老齐学Python之大话题小函数(1)
Oct 10 Python
Python基于csv模块实现读取与写入csv数据的方法
Jan 18 Python
pandas中apply和transform方法的性能比较及区别介绍
Oct 30 Python
Python中作用域的深入讲解
Dec 10 Python
python求最大值最小值方法总结
Jun 25 Python
在windows下使用python进行串口通讯的方法
Jul 02 Python
python简单区块链模拟详解
Jul 03 Python
基于 Django 的手机管理系统实现过程详解
Aug 16 Python
vue常用指令代码实例总结
Mar 16 Python
python Scrapy爬虫框架的使用
Jan 21 Python
Python如何使用argparse模块处理命令行参数
Dec 11 #Python
opencv3/C++ 平面对象识别&透视变换方式
Dec 11 #Python
Python Lambda函数使用总结详解
Dec 11 #Python
Python迭代器模块itertools使用原理解析
Dec 11 #Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
Dec 11 #Python
Python partial函数原理及用法解析
Dec 11 #Python
opencv3/python 鼠标响应操作详解
Dec 11 #Python
You might like
AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门教程
2010/05/10 PHP
让PHP显示Facebook的粉丝数量方法
2014/01/08 PHP
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
2014/07/04 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
2019/10/21 PHP
div+css布局的图片连续滚动js实现代码
2010/05/04 Javascript
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
jquery插件lazyload.js延迟加载图片的使用方法
2014/02/19 Javascript
javascript手工制作悬浮菜单
2015/02/12 Javascript
jquery操作angularjs对象
2015/06/26 Javascript
轻松学习jQuery插件EasyUI EasyUI创建CRUD应用
2015/11/30 Javascript
Bootstrap 粘页脚效果
2016/03/28 Javascript
JavaScript数组方法总结分析
2016/05/06 Javascript
Node.js配合node-http-proxy解决本地开发ajax跨域问题
2016/08/31 Javascript
用js实现简单算法的实例代码
2016/09/24 Javascript
很棒的一组js图片轮播特效
2017/01/12 Javascript
easyui datagrid 表格中操作栏 按钮图标不显示的解决方法
2017/07/27 Javascript
Vue数据驱动表单渲染,轻松搞定form表单
2019/07/19 Javascript
vue+elementUi图片上传组件使用详解
2019/08/20 Javascript
python通过shutil实现快速文件复制的方法
2015/03/14 Python
浅谈Django自定义模板标签template_tags的用处
2017/12/20 Python
python根据unicode判断语言类型实例代码
2018/01/17 Python
python使用json序列化datetime类型实例解析
2018/02/11 Python
django初始化数据库的实例
2018/05/27 Python
python GUI实现小球满屏乱跑效果
2019/05/09 Python
python文件选择对话框的操作方法
2019/06/27 Python
Python 内置函数globals()和locals()对比详解
2019/12/23 Python
Django框架请求生命周期实现原理
2020/11/13 Python
Django和Ueditor自定义存储上传文件的文件名
2021/02/25 Python
Python xlwings插入Excel图片的实现方法
2021/02/26 Python
CSS3属性background-size使用指南
2014/12/09 HTML / CSS
戴尔美国官方折扣店:Dell Outlet
2018/02/13 全球购物
SQL Server数据库笔试题和答案
2016/02/04 面试题
2014年村支部书记四风对照检查材料思想汇报
2014/10/02 职场文书
村主任“四风”问题个人整改措施
2014/10/04 职场文书
2015年远程教育工作总结
2015/05/20 职场文书
MySQL悲观锁与乐观锁的实现方案
2021/11/02 MySQL