基于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中的文件操作
Aug 28 Python
python中子类调用父类函数的方法示例
Aug 18 Python
Python Unittest自动化单元测试框架详解
Apr 04 Python
解决Tensorflow使用pip安装后没有model目录的问题
Jun 13 Python
django项目搭建与Session使用详解
Oct 10 Python
Python自动发送邮件的方法实例总结
Dec 08 Python
在python3中pyqt5和mayavi不兼容问题的解决方法
Jan 08 Python
什么是python的自省
Jun 21 Python
Tensorflow tensor 数学运算和逻辑运算方式
Jun 30 Python
常用的10个Python实用小技巧
Aug 10 Python
python 爬虫如何正确的使用cookie
Oct 27 Python
python实现b站直播自动发送弹幕功能
Feb 20 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
用windows下编译过的eAccelerator for PHP 5.1.6实现php加速的使用方法
2007/09/30 PHP
php读取txt文件组成SQL并插入数据库的代码(原创自Zjmainstay)
2012/07/31 PHP
ThinkPHP路由详解
2015/07/27 PHP
PHP闭包函数详解
2016/02/13 PHP
php投票系统之增加与删除投票(管理员篇)
2016/07/01 PHP
php 读取输出其他文件的实现方法
2016/07/26 PHP
php中引用&的用法分析【变量引用,函数引用,对象引用】
2016/12/12 PHP
用Div仿showModalDialog模式菜单的效果的代码
2007/03/05 Javascript
分析 JavaScript 中令人困惑的变量赋值
2007/08/13 Javascript
UserData用法总结 lanyu出品
2010/07/01 Javascript
JQuery 常用方法和事件详细介绍
2013/04/18 Javascript
jQuery的attr与prop使用介绍
2013/10/10 Javascript
JS 排序输出实现table行号自增前端动态生成的tr
2014/08/13 Javascript
node.js中的fs.fstat方法使用说明
2014/12/15 Javascript
js带缩略图的图片轮播效果代码分享
2015/09/14 Javascript
快速掌握WordPress中加载JavaScript脚本的方法
2015/12/17 Javascript
javascript每日必学之封装
2016/02/23 Javascript
jQuery validate插件功能与用法详解
2016/12/15 Javascript
Google 爬虫如何抓取 JavaScript 的内容
2017/04/07 Javascript
VueJs 将接口用webpack代理到本地的方法
2017/11/27 Javascript
Angular @HostBinding()和@HostListener()用法
2018/03/05 Javascript
vuejs element table 表格添加行,修改,单独删除行,批量删除行操作
2020/07/18 Javascript
[57:12]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第一场 10.31
2020/11/02 DOTA
[39:53]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.19
2020/11/19 DOTA
Python实现从URL地址提取文件名的方法
2015/05/15 Python
在Django的视图中使用form对象的方法
2015/07/18 Python
selenium+python实现自动登录脚本
2018/04/22 Python
CSS3教程(3):border-color网页边框色彩
2009/04/02 HTML / CSS
法国购买二手电子产品网站:Asgoodasnew
2020/03/27 全球购物
装修致歉信
2014/01/15 职场文书
乔迁宴答谢词
2014/01/21 职场文书
简历中自我评价怎么写
2014/02/12 职场文书
2014派出所所长群众路线对照检查材料思想汇报
2014/09/18 职场文书
搭讪开场白台词大全
2015/05/28 职场文书
2019年预备党员的思想汇报:加深对党的认知
2019/09/25 职场文书
基于Python实现流星雨效果的绘制
2022/03/18 Python