基于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小技巧分享
Nov 22 Python
Python中多线程的创建及基本调用方法
Jul 08 Python
Python实现获取邮箱内容并解析的方法示例
Jun 16 Python
python 使用sys.stdin和fileinput读入标准输入的方法
Oct 17 Python
解决Python 使用h5py加载文件,看不到keys()的问题
Feb 08 Python
安装2019Pycharm最新版本的教程详解
Oct 22 Python
Python搭建代理IP池实现获取IP的方法
Oct 27 Python
Python Selenium参数配置方法解析
Jan 19 Python
python实现求纯色彩图像的边框
Apr 08 Python
python实现过滤敏感词
May 08 Python
Python 如何解决稀疏矩阵运算
May 26 Python
Python的这些库,你知道多少?
Jun 09 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
彻底搞懂JS无缝滚动代码
2007/01/03 Javascript
js 实现打印网页中定义的部分内容的代码
2010/04/01 Javascript
在JavaScript中监听IME键盘输入事件
2011/05/29 Javascript
jQuery下实现等待指定元素加载完毕(可改成纯js版)
2013/07/11 Javascript
Js与下拉列表处理问题解决
2014/02/13 Javascript
jQuery中parent()方法用法实例
2015/01/07 Javascript
jQuery实现手机自定义弹出输入框
2016/06/13 Javascript
AngularJS实现数据列表的增加、删除和上移下移等功能实例
2016/09/05 Javascript
jQuery继承extend用法详解
2016/10/10 Javascript
微信小程序 wxapp内容组件 icon详细介绍
2016/10/31 Javascript
jQuery中checkbox反复调用attr('checked', true/false)只有第一次生效的解决方法
2016/11/16 Javascript
原生js实现网页顶部自动下拉/收缩广告效果
2017/01/20 Javascript
windows 下安装nodejs 环境变量设置
2017/02/02 NodeJs
JavaScript中在光标处插入添加文本标签节点的详细方法
2017/03/22 Javascript
React-Native之定时器Timer的实现代码
2017/10/04 Javascript
Vue 中 a标签上href无法跳转的解决方式
2019/11/12 Javascript
webpack DllPlugin xxx is not defined解决办法
2019/12/13 Javascript
extjs图形绘制之饼图实现方法分析
2020/03/06 Javascript
JS addEventListener()和attachEvent()方法实现注册事件
2021/01/11 Javascript
零基础写python爬虫之打包生成exe文件
2014/11/06 Python
使用pyecharts无法import Bar的解决方案
2020/04/23 Python
Python中的元组介绍
2019/01/28 Python
使用python绘制二元函数图像的实例
2019/02/12 Python
Python换行与不换行的输出实例
2020/02/19 Python
python+selenium+chrome实现淘宝购物车秒杀自动结算
2021/01/07 Python
html5视频媒体标签video的使用方法及完整参数说明详解
2019/09/27 HTML / CSS
梵蒂冈和罗马卡:Omnia Card Pass
2018/02/10 全球购物
必须要使用游标的SQL语句有那些
2012/05/07 面试题
求职信范文英文版
2014/01/05 职场文书
捐款活动总结
2014/08/27 职场文书
红色电影观后感
2015/06/18 职场文书
SQL Server数据定义——模式与基本表操作
2021/04/05 SQL Server
Python实现信息轰炸工具(再也不怕说不过别人了)
2021/06/11 Python
Java图书管理系统,课程设计必用(源码+文档)
2021/06/30 Java/Android
全面盘点MySQL中的那些重要日志文件
2021/11/27 MySQL
mysql数据库隔离级别详解
2022/06/16 MySQL