Python_2048核心算法
2048 核心算法
核心:去零操作,相邻相同则合并,
向左移动:从左向右依次取出每行数据
向右移动:从右向左依次取出每行数据
向上移动:方阵转置后向左移动再转置
向下移动:方阵转置后向右移动再转置
list_merge = [2,0,2,0]
将0元素移动到列的末尾
def zero_to_end(): """把list_merge中的0元素移动到末尾,其他元素相对位置不变"""for i in range(len(list_merge) - 1, -1, -1):if list_merge[i] == 0:list_merge.append(0)del list_merge[i]
将相同元素向左合并
def merge_same_element():"""将list_merge中相同元素进行向左合并"""# 调用0元素向右移动函数zero_to_end()# 相邻相同的元素相加for i in range(len(list_merge) - 1):if list_merge[i] == list_merge[i + 1]:list_merge[i] *= 2# 删除后一个的元素del list_merge[i + 1]# 在后面补0list_merge.append(0)
模拟界面
map = [[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, 0]
]
向左移动
def map_move_left():"""将map向左移动"""for line in map:# 修改全局变量global list_mergelist_merge = line# 调用合同相同元素函数merge_same_element()
向右移动
def map_move_right():"""将map向右移动"""global list_mergefor line in map:list_merge = line[::-1]# 调用合同相同元素函数merge_same_element()# 反向取出,反向放回line[::-1] = list_merge
定义矩阵转置方法
def matrix_transpose():"""矩阵转置"""global maplist_result = []for c in range(len(map)):line = []for r in range(len(map)):line.append(map[r][c])list_result.append(line)map = list_result
向上移动
def map_move_up():"""将map向上移动"""# 调用矩阵转置函数,向上变成向左matrix_transpose()# 调用向左移动函数map_move_left()# 再次调用矩阵转置matrix_transpose()
向下移动
def map_move_down():"""将map向下移动"""# 调用矩阵转置函数,向下变成向右matrix_transpose()# 调用向右移动函数map_move_right()# 再次调用矩阵转置matrix_transpose()
Python_2048核心算法相关推荐
- 阿里资深AI工程师教你逐个击破机器学习核心算法
01 近年来,随着 Google 的 AlphaGo 打败韩国围棋棋手李世乭之后,机器学习尤其是深度学习的热潮席卷了整个 IT 界. 所有的互联网公司,尤其是 Google 微软,百度,腾讯等巨头,无 ...
- 核心算法缺位,人工智能发展面临“卡脖子”窘境
http://www.xinhuanet.com/politics/2019-04/30/c_1124435131.htm "徐匡迪之问"引发业界共鸣-- 核心算法缺位,人工智能发 ...
- SQL关键字转换大写核心算法实现
1 不跟你多废话 上代码! /// <summary>/// SQL关键字转换器/// </summary>public class SqlConverter : IKeywo ...
- x264代码剖析(十四):核心算法之宏块编码函数x264_macroblock_encode()
x264代码剖析(十四):核心算法之宏块编码函数x264_macroblock_encode() 宏块编码函数x264_macroblock_encode()是完成变换与量化的主要函数,而x264_m ...
- 【视频课】零基础免费38课时深度学习+超60小时CV核心算法+15大Pytorch CV实践案例助你攻略CV...
计算机视觉中大大小小可以包括至少30个以上的方向,在基于深度学习的计算机视觉研究方向中,图像分类,图像分割,目标检测无疑是最基础最底层的任务,掌握好之后可以很快的迁移到其他方向,比如目标识别,目标跟踪 ...
- 医疗软件产品核心算法部分说明--转载截取
各方资料汇总说明 核心算法概述 算法类型: 公认成熟算法:公开文献专利标准.原理简单明确.上市超过四年且无不良时间.公认成熟算法名称.原理.用途,全新算法列明名称.原理.用途,并提供验证资料. 全新算 ...
- kylin分析引擎:运行原理、维度和Cube等名词解释、核心算法
架构 kylin是一款分析引擎,最常用的数据源是Hive.1.5版本之后数据源增加了kafka,但最常用的仍然是Hive.但是Hive查询比较慢,Kylin解决了这一问题. 大致流程: 第一步:从Hi ...
- 重磅下载!业界首本强化学习应用宝典,阿里核心算法团队联袂打造
作为一名技术人,你是否曾有过这样的疑惑: 人工智能大热,作为一名传统程序员,该如何转型或学习? 网上AI教程.书籍,质量参差不齐,如何找到真正专业的资源? AI理论遍地皆是,但几乎都在纸上谈兵,该从哪 ...
- 机器学习核心算法之——贝叶斯方法
1.贝叶斯公式 贝叶斯公式已经成为机器学习的核心算法之一,诸如拼写检查.语言翻译.海难搜救.生物医药.疾病诊断.邮件过滤.文本分类.侦破案件.工业生产等诸多方面都有很广泛的应用,它也是很多机器学习算法 ...
最新文章
- Django博客系统(404页面展示)
- 微软服务器sql server,解析:微软SQL Server 2008特性和功能
- const的用法,特别是用在函数前面与后面的区别
- python测试网络连通性_python 判断网络连通的实现方法
- github的watch和star的位置
- FK JavaScript之:ArcGIS JavaScript API之地图动画
- 中国最险六大寺庙,最后一座至今无人登临
- 常见字符编码 java
- 风控建模系列(六):催收评分卡卡跟贷前申请卡关于目标变量的定义
- linux内核版本2 3 20,redhat9装配RTLINUX-3.2,内核版本为Kernel-2.4.23
- 瑞利信道,莱斯信道和高斯信道模型
- openwrt打印机服务器稳定性,软路由 篇一:openwrt共享打印机【上】【完美解决】HP10系打印异常问题...
- html用css美化表单登录页面
- 二倍图三倍图什么意思_ios切图(一倍图+二倍图+三倍图)
- html如何设定页面4秒后自动跳转,js定时三秒后自动跳转页面
- 【转】西门子数控系统中MMC、PCU、NCU、CCU简略介绍
- 数据治理工作的几种推进套路
- 轻松识别文字,这款Python OCR库支持超过80种语言
- 田野调查手记·浮山篇(七)
- Logstash:你喜欢 Grok 吗?