基于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中Class类用法实例分析
Nov 12 Python
python读取二进制mnist实例详解
May 31 Python
对numpy Array [: ,] 的取值方法详解
Jul 02 Python
Python sorted函数详解(高级篇)
Sep 18 Python
Python2和Python3之间的str处理方式导致乱码的讲解
Jan 03 Python
在python带权重的列表中随机取值的方法
Jan 23 Python
Python 判断图像是否读取成功的方法
Jan 26 Python
Python使用get_text()方法从大段html中提取文本的实例
Aug 27 Python
Python远程开发环境部署与调试过程图解
Dec 09 Python
Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)
Aug 07 Python
关于python3.9安装wordcloud出错的问题及解决办法
Nov 02 Python
如何用 Python 处理不平衡数据集
Jan 04 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
PHP 压缩文件夹的类代码
2009/11/05 PHP
关于php内存不够用的快速解决方法
2013/10/26 PHP
php获取中文拼音首字母类和函数分享
2014/04/24 PHP
兼容ie6浏览器的php下载文件代码分享
2014/07/14 PHP
php使用simplexml_load_file加载XML文件并显示XML的方法
2015/03/19 PHP
php实现将上传word文件转为html的方法
2015/06/03 PHP
php 猴子摘桃的算法
2017/06/20 PHP
js验证模型自我实现的具体方法
2013/06/21 Javascript
jQuery select表单提交省市区城市三级联动核心代码
2014/06/09 Javascript
jQuery 局部div刷新和全局刷新方法总结
2016/10/05 Javascript
AngularJs入门教程之环境搭建+创建应用示例
2016/11/01 Javascript
给easyui datebox扩展一个清空的实例
2016/11/09 Javascript
javascript显示系统当前时间代码
2016/12/29 Javascript
jQuery展示表格点击变色、全选、删除
2017/01/05 Javascript
javascript数据类型详解
2017/02/07 Javascript
通过npm引用的vue组件使用详解
2017/03/02 Javascript
Angular实现搜索框及价格上下限功能
2018/01/19 Javascript
vue中v-model的应用及使用详解
2018/06/27 Javascript
vue发送ajax请求详解
2018/10/09 Javascript
原生js实现弹幕效果
2020/11/29 Javascript
[15:20]DOTA2亚洲邀请赛总决赛开幕式表演:羽泉献唱
2017/04/05 DOTA
[01:01:01]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第一场 10.29
2020/10/29 DOTA
python网络编程之TCP通信实例和socketserver框架使用例子
2014/04/25 Python
对python插入数据库和生成插入sql的示例讲解
2018/11/14 Python
详解Matplotlib绘图之属性设置
2019/08/23 Python
使用Python实现批量ping操作方法
2020/05/06 Python
TensorFlow保存TensorBoard图像操作
2020/06/23 Python
前端H5 Video常见使用场景简介
2020/08/21 HTML / CSS
KIKO比利时官网:意大利彩妆品牌
2017/07/23 全球购物
经理管理专业自荐信范文
2013/12/31 职场文书
雷锋式好少年事迹材料
2014/08/17 职场文书
2015年世界无烟日活动方案
2015/05/04 职场文书
幼儿教师继续教育培训心得体会
2016/01/19 职场文书
HTML速写之Emmet语法规则的实现
2021/04/07 HTML / CSS
Redis三种集群模式详解
2021/10/05 Redis
Java tomcat手动配置servlet详解
2021/11/27 Java/Android