基于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的Twisted框架中reactor事件管理器的用法
May 25 Python
儿童学习python的一些小技巧
May 27 Python
pycharm远程linux开发和调试代码的方法
Jul 17 Python
在Python 不同级目录之间模块的调用方法
Jan 19 Python
python3+PyQt5 使用三种不同的简便项窗口部件显示数据的方法
Jun 17 Python
python绘图模块matplotlib示例详解
Jul 26 Python
Python 如何优雅的将数字转化为时间格式的方法
Sep 26 Python
python KNN算法实现鸢尾花数据集分类
Oct 24 Python
python3 dict ndarray 存成json,并保留原数据精度的实例
Dec 06 Python
python-numpy-指数分布实例详解
Dec 07 Python
python如何实现DES加密
Sep 21 Python
Python实现区域填充的示例代码
Feb 03 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
Yii净化器CHtmlPurifier用法示例(过滤不良代码)
2016/07/15 PHP
BOOM vs RR BO5 第二场 2.14
2021/03/10 DOTA
通过JQuery实现win8一样酷炫的动态磁贴效果(示例代码)
2013/07/13 Javascript
js获取指定的cookie的具体实现
2014/02/20 Javascript
Javascript实现的常用算法(如冒泡、快速、鸽巢、奇偶等)
2014/04/29 Javascript
jQuery实现tag便签去重效果的方法
2015/01/20 Javascript
分享十五款 jQuery 社交网络分享插件
2015/05/16 Javascript
Underscore.js 1.3.3 中文注释翻译说明
2015/06/25 Javascript
jQuery实现的类似淘宝网站搜索框样式代码分享
2015/08/24 Javascript
JavaScript实现的浮动层框架用法实例分析
2015/10/10 Javascript
jQuery中实现prop()函数控制多选框(全选,反选)
2016/08/19 Javascript
jQuery实现的自适应焦点图效果完整实例
2016/08/24 Javascript
浅谈JSON.stringify()和JOSN.parse()方法的不同
2016/08/29 Javascript
JavaScript BASE64算法实现(完美解决中文乱码)
2017/01/10 Javascript
js输入框使用正则表达式校验输入内容的实例
2017/02/12 Javascript
vue中锚点的三种方法
2018/07/06 Javascript
使用Vue父子组件通信实现todolist的功能示例代码
2019/04/11 Javascript
js+canvas实现五子棋小游戏
2020/08/02 Javascript
解决VantUI popup 弹窗不弹出或无蒙层的问题
2020/11/03 Javascript
Python基础教程之tcp socket编程详解及简单实例
2017/02/23 Python
Python 使用with上下文实现计时功能
2018/03/09 Python
SELENIUM自动化模拟键盘快捷键操作实现解析
2019/10/28 Python
浅谈python3 构造函数和析构函数
2020/03/12 Python
利用CSS3实现炫酷的飞机起飞动画
2016/09/17 HTML / CSS
西班牙灯具网上商店:Lampara.es
2018/06/05 全球购物
2013的个人自我评价
2013/12/26 职场文书
企业消防安全制度
2014/02/02 职场文书
家长评语和期望
2014/02/10 职场文书
教师先进工作者事迹材料
2014/05/01 职场文书
企业管理标语
2014/06/10 职场文书
2014年十一国庆节爱国演讲稿
2014/09/23 职场文书
市场调研项目授权委托书范本
2014/10/04 职场文书
2015年学校党支部工作总结
2015/04/01 职场文书
文艺委员竞选稿
2015/11/19 职场文书
python - asyncio异步编程
2021/04/06 Python
原生JavaScript实现简单五子棋游戏
2021/06/28 Javascript