基于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 相关文章推荐
简单介绍Ruby中的CGI编程
Apr 10 Python
Python的Flask框架中配置多个子域名的方法讲解
Jun 07 Python
python机器学习理论与实战(四)逻辑回归
Jan 19 Python
Python开发最牛逼的IDE——pycharm
Aug 01 Python
python实现写数字文件名的递增保存文件方法
Oct 25 Python
Python实现简单石头剪刀布游戏
Jan 20 Python
python在openstreetmap地图上绘制路线图的实现
Jul 11 Python
opencv转换颜色空间更改图片背景
Aug 20 Python
python生成任意频率正弦波方式
Feb 25 Python
如何真正的了解python装饰器
Aug 14 Python
python实现单机五子棋
Aug 28 Python
python turtle绘制多边形和跳跃和改变速度特效
Mar 16 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环境搭建(php+Apache+mysql)
2016/11/14 PHP
laravel5 Eloquent 实现事务方式
2019/10/21 PHP
JQuery从头学起第一讲
2010/07/04 Javascript
jQuery.extend()的实现方式详解及实例
2013/06/29 Javascript
javascript中自定义对象的属性方法分享
2013/07/12 Javascript
JS实现定时页面弹出类似QQ新闻的提示框
2013/11/07 Javascript
jquery自动切换tabs选项卡的具体实现
2013/12/24 Javascript
js 异步操作回调函数如何控制执行顺序
2013/12/24 Javascript
sliderToggle在写jquery的计时器setTimeouter中不生效
2014/05/26 Javascript
javascript制作sql转换为stringBuffer的小工具
2015/04/03 Javascript
JS数组array元素的添加和删除方法代码实例
2015/06/01 Javascript
基于javascript实现动态显示当前系统时间
2016/01/28 Javascript
基于JS实现导航条flash导航条
2016/06/17 Javascript
让编辑器支持word复制黏贴、截屏的js代码
2016/10/17 Javascript
解决JS外部文件中文注释出现乱码问题
2017/07/09 Javascript
vue jsx 使用指南及vue.js 使用jsx语法的方法
2017/11/11 Javascript
vue中使用v-model完成组件间的通信
2019/08/22 Javascript
Python中装饰器的一个妙用
2015/02/08 Python
Python输出带颜色的字符串实例
2017/10/10 Python
Python3导入自定义模块的三种方法详解
2018/04/13 Python
django云端留言板实例详解
2019/07/22 Python
Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str
2019/08/07 Python
python协程gevent案例 爬取斗鱼图片过程解析
2019/08/27 Python
Python虚拟环境venv用法详解
2020/05/25 Python
英国家电购物网站:Sonic Direct
2019/03/26 全球购物
沃尔玛加拿大:Walmart.ca
2020/03/02 全球购物
我们没有写servlet的构造方法,那么容器是怎么创建servlet的实例呢
2013/04/24 面试题
产品销售员岗位职责
2013/12/18 职场文书
班级聚会策划书
2014/01/16 职场文书
商场消防演习方案
2014/02/12 职场文书
《三个小伙伴》教学反思
2014/04/11 职场文书
四年级学生评语大全
2014/04/21 职场文书
党支部2014年度工作总结
2014/12/04 职场文书
爱心募捐感谢信
2015/01/22 职场文书
PyTorch 如何自动计算梯度
2021/05/23 Python
Python实现智慧校园自动评教全新版
2021/06/18 Python