基于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从零实现贝叶斯分类器的机器学习的教程
Mar 31 Python
深入浅出学习python装饰器
Sep 29 Python
Python绘制3D图形
May 03 Python
Python实现手写一个类似django的web框架示例
Jul 20 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
Apr 29 Python
python实现植物大战僵尸游戏实例代码
Jun 10 Python
Python Pandas数据结构简单介绍
Jul 03 Python
Python numpy线性代数用法实例解析
Nov 15 Python
使用Python操作ArangoDB的方法步骤
Feb 02 Python
有关Tensorflow梯度下降常用的优化方法分享
Feb 04 Python
python使用梯度下降算法实现一个多线性回归
Mar 24 Python
Django与pyecharts结合的实例代码
May 13 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
Yii2前后台分离及migrate使用(七)
2016/05/04 PHP
PHP基于简单递归函数求一个数阶乘的方法示例
2017/04/26 PHP
tp5实现微信小程序多图片上传到服务器功能
2018/07/16 PHP
PHP判断一个变量是否为整数、正整数的方法示例
2019/09/11 PHP
php源码的使用方法讲解
2019/09/26 PHP
jquery隐藏标签和显示标签的实例
2013/11/11 Javascript
遍历DOM对象内的元素属性示例代码
2014/02/08 Javascript
JavaScript实现查找字符串中第一个不重复的字符
2014/12/29 Javascript
js实现同一页面多个不同运动效果的方法
2015/04/10 Javascript
js实现鼠标点击文本框自动选中内容的方法
2015/08/20 Javascript
jQuery实现的类似淘宝网站搜索框样式代码分享
2015/08/24 Javascript
Bootstrap表单组件教程详解
2016/04/26 Javascript
轻松掌握jQuery中wrap()与unwrap()函数的用法
2016/05/24 Javascript
Jquery和Js获得元素标签名称的方法总结
2016/10/08 Javascript
NodeJS中的MongoDB快速入门详细教程
2016/11/11 NodeJs
xmlplus组件设计系列之按钮(2)
2017/04/26 Javascript
深入理解vue中的$set
2017/06/01 Javascript
完美实现js拖拽效果 return false用法详解
2017/07/28 Javascript
JS+canvas五子棋人机对战实现步骤详解
2020/06/04 Javascript
jQuery实现日历效果
2020/09/11 jQuery
elementui实现预览图片组件二次封装
2020/12/29 Javascript
浅谈python迭代器
2017/11/08 Python
Python获取CPU、内存使用率以及网络使用状态代码
2018/02/08 Python
Python实现获取前100组勾股数的方法示例
2018/05/04 Python
python实现本地图片转存并重命名的示例代码
2018/10/27 Python
Python面向对象之类的定义与继承用法示例
2019/01/14 Python
pandas的to_datetime时间转换使用及学习心得
2019/08/11 Python
python实现人脸签到系统
2020/04/13 Python
Python内置异常类型全面汇总
2020/05/28 Python
CSS Grid布局教程之网格单元格布局
2014/12/30 HTML / CSS
韩国CJ食品专卖网:CJonmart
2016/09/11 全球购物
社区母亲节活动方案
2014/03/05 职场文书
新春文艺演出主持词
2014/03/27 职场文书
旅游节目策划方案
2014/05/26 职场文书
党的群众路线教育实践活动个人对照检查材料范文
2014/09/25 职场文书
简易离婚协议书范本
2014/10/24 职场文书