基于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中enumerate的用法实例解析
Aug 18 Python
python中尾递归用法实例详解
Apr 28 Python
用Python编写生成树状结构的文件目录的脚本的教程
May 04 Python
Python3实现从指定路径查找文件的方法
May 22 Python
Django实现图片文字同时提交的方法
May 26 Python
Python中字典映射类型的学习教程
Aug 20 Python
python&MongoDB爬取图书馆借阅记录
Feb 05 Python
python下os模块强大的重命名方法renames详解
Mar 07 Python
Python可变对象与不可变对象原理解析
Feb 25 Python
python TCP包注入方式
May 05 Python
使用Python文件读写,自定义分隔符(custom delimiter)
Jul 05 Python
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
Jun 23 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
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
2007/08/26 PHP
不用mod_rewrite直接用php实现伪静态化页面代码
2008/10/04 PHP
并发下常见的加锁及锁的PHP具体实现代码
2010/10/12 PHP
CentOS 6.3下安装PHP xcache扩展模块笔记
2014/09/10 PHP
教你如何开启shopnc b2b2c 伪静态
2014/10/21 PHP
php中switch与ifelse的效率区别及适用情况分析
2015/02/12 PHP
PHP程序中使用adodb连接不同数据库的代码实例
2015/12/19 PHP
thinkPHP多语言切换设置方法详解
2016/11/11 PHP
JS+DIV实现鼠标划过切换层效果的实例代码
2013/11/26 Javascript
JS在IE下缺少标识符的错误
2014/07/23 Javascript
jQuery实现平滑滚动到指定锚点的方法
2015/03/20 Javascript
详解webpack 多入口配置
2017/06/16 Javascript
webpack构建vue项目的详细教程(配置篇)
2017/07/17 Javascript
浅谈webpack 自动刷新与解析
2018/04/09 Javascript
js实现多图和单图上传显示
2019/12/18 Javascript
手把手带你入门微信小程序新框架Kbone的使用
2020/02/25 Javascript
Vue 实现拨打电话操作
2020/11/16 Javascript
详解Vue.js 可拖放文本框组件的使用
2021/03/03 Vue.js
Python MD5文件生成码
2009/01/12 Python
python实现电子词典
2020/04/23 Python
Python fileinput模块使用实例
2015/05/28 Python
Python基础之getpass模块详细介绍
2017/08/10 Python
numpy中以文本的方式存储以及读取数据方法
2018/06/04 Python
python opencv实现图像边缘检测
2019/04/29 Python
微信小程序python用户认证的实现
2019/07/29 Python
tensorflow 固定部分参数训练,只训练部分参数的实例
2020/01/20 Python
TensorFlow保存TensorBoard图像操作
2020/06/23 Python
丽笙酒店官方网站:Radisson Hotels
2019/05/07 全球购物
Tessabit日本:集世界奢侈品和设计师品牌的意大利精品买手店
2020/01/07 全球购物
小学数学课题方案
2014/06/15 职场文书
大学生创业计划书
2014/08/14 职场文书
慈善捐赠倡议书
2014/08/30 职场文书
学校师德师风自我剖析材料
2014/09/29 职场文书
应届毕业生求职信范文
2015/03/19 职场文书
安全生产标语口号
2015/12/26 职场文书
MongoDB orm框架的注意事项及简单使用
2021/06/20 MongoDB