基于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 正则式使用心得
May 07 Python
python里使用正则表达式的组嵌套实例详解
Oct 24 Python
机器学习python实战之决策树
Nov 01 Python
Python标准模块--ContextManager上下文管理器的具体用法
Nov 27 Python
Python中list查询及所需时间计算操作示例
Jun 21 Python
用python做游戏的细节详解
Jun 25 Python
seek引发的python文件读写的问题及解决
Jul 26 Python
Django中的静态文件管理过程解析
Aug 01 Python
Python进程间通信 multiProcessing Queue队列实现详解
Sep 23 Python
Python matplotlib以日期为x轴作图代码实例
Nov 22 Python
Python实现手机号自动判断男女性别(实例解析)
Dec 22 Python
python中remove函数的踩坑记录
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实现的MongoDB数据库操作类分享
2014/05/12 PHP
php计算2个日期的差值函数分享
2015/02/02 PHP
yii2超好用的日期组件和时间组件
2016/05/05 PHP
Js中sort()方法的用法
2006/11/04 Javascript
基于jQuery的倒计时插件代码
2011/05/07 Javascript
html中table数据排序的js代码
2011/08/09 Javascript
jquery全选/全不选/反选另一种实现方法(配合原生js)
2013/04/07 Javascript
js中for in的用法示例解析
2013/12/25 Javascript
javascript不同类型数据之间的运算的转换方法
2014/02/13 Javascript
JavaScript在浏览器标题栏上显示当前日期和时间的方法
2015/03/19 Javascript
jQueryUI Datepicker组件设置日期高亮
2016/10/13 Javascript
jQuery表格的维护和删除操作
2017/02/03 Javascript
微信小程序getPhoneNumber获取用户手机号
2017/09/29 Javascript
Vue精简版风格概述
2018/01/30 Javascript
python paramiko实现ssh远程访问的方法
2013/12/03 Python
win系统下为Python3.5安装flask-mongoengine 库
2016/12/20 Python
python opencv之SIFT算法示例
2018/02/24 Python
Python for循环与range函数的使用详解
2019/03/23 Python
python 实现turtle画图并导出图片格式的文件
2019/12/07 Python
matplotlib实现显示伪彩色图像及色度条
2019/12/07 Python
python扫描线填充算法详解
2020/02/19 Python
Python导入数值型Excel数据并生成矩阵操作
2020/06/09 Python
html5的自定义data-*属性与jquery的data()方法的使用
2014/07/02 HTML / CSS
国际知名军事风格休闲装品牌:Alpha Industries(阿尔法工业)
2017/05/24 全球购物
Bibloo奥地利:购买女装、男装、童装、鞋和配件
2018/10/18 全球购物
土木工程实习生自我鉴定
2013/09/19 职场文书
绩效专员岗位职责
2013/12/02 职场文书
企业家王石演讲稿:坚持与放下
2014/04/27 职场文书
小学毕业典礼演讲稿
2014/09/09 职场文书
2014年向国旗敬礼活动总结
2014/09/27 职场文书
初中成绩单评语
2014/12/29 职场文书
2015年老干部工作总结
2015/04/23 职场文书
学生党支部工作总结2015
2015/05/26 职场文书
优秀乡村医生事迹材料(2016精选版)
2016/02/29 职场文书
JS中如何优雅的使用async await详解
2021/10/05 Javascript
SQL解决未能删除约束问题drop constraint
2022/05/30 SQL Server