搭积木——pythonOJ笔记

题面描述:
有编号为0-(N-1)的若干个积木块按编号从小到大的顺序排成一行,每个积木块所在的位置为其对应的编号。一个机器人可以操纵这些积木块,机器人可以执行如下指令:

  • mv a on b
    将a和b所在列a、b之上的所有积木块恢复到最初其所在的位置上,然后将积木块a搁置在积木块b之上。
  • mv a ov b
    将积木块a之上的所有积木块恢复到最初其所在的位置上,然后将积木块a放置在积木块b所在列的顶端。
  • st a on b
    将积木块b之上的所有积木块恢复到最初其所在的位置上,然后将积木块a及其上的所有积木放置在积木块b之上。
  • st a ov b
    将积木块a及其上的所有积木放置在积木块b所在列的顶端。
  • xh a an b
    交换a和b所在的列。
  • q
    退出
    上述命令中,若存在a==b或a、b在同一列上,则为非法指令。机器人会忽略所有的非法指令,不会操作任何的积木块。
    输入:
    输入的第一行为一个整数n(0 < n < 25 ),随后有若干行指令,保证所有的指令为上述形式。若指令为q,表示指令结束。
    输出:
    请输出机器人执行所有的指令后的积木状态。记机器人操作之前每个积木所在的列为i (0 <= i < n),请按样例形式输出每列的所有积木。对任何一列,在一行中输出该列中所有的积木信息。输出格式为:先输出列号和,若该列无积木,则直接换行,否则在单个空格后输出各个积木块的编号,编号之间以单个空格分隔。
    示例输入:
    10
    mv 9 on 1
    mv 8 ov 1
    mv 7 ov 1
    mv 6 ov 1
    st 8 ov 6
    st 8 ov 5
    mv 2 ov 1
    mv 4 ov 9
    xh 4 an 9
    q
    示例输出:
    0: 0
    1: 1 9 2 4
    2:
    3: 3
    4:
    5: 5 8 7 6
    6:
    7:
    8:
    9:

思路:
主要考虑将各个功能模块化实现,将任务拆开分析。通过调试好一个个小模块后,合并任务得到最后解。


def find(a,matrix):#找到a的坐标(二维数组)for i in range(n):for j in range(n):if matrix[i][j] == a:return [i,j]
def recover(a,matrix):#将a之上的所有木块恢复最初位置dot = find(a,matrix)for i in range(dot[1]+1,n):if matrix[dot[0]][i] != 'x':matrix[matrix[dot[0]][i]][0] = matrix[dot[0]][i]matrix[dot[0]][i]='x'return matrix
def mvon(a,b,matrix):recover(a,matrix)recover(b,matrix)matrix[q[0]][q[1]+1]=amatrix[p[0]][p[1]]='x'return matrix
def mvov(a,b,matrix):for i in range(p[1]+1,n):if matrix[p[0]][i] != 'x':matrix[matrix[p[0]][i]][0] = matrix[p[0]][i]matrix[p[0]][i]='x'for j in range(1,n):if matrix[q[0]][j] == 'x':breakmatrix[q[0]][j]= amatrix[p[0]][p[1]]='x'return matrix
def ston(a,b,matrix):recover(b,matrix)k=1for j in range(0,n):if matrix[p[0]][j] == 'x':breakelse:matrix[q[0]][q[1]+k] = matrix[p[0]][j]matrix[p[0]][j] = 'x'k+=1return matrix
def stov(a,b,matrix):for i in range(0,n):if matrix[q[0]][i] == 'x':k=ibreakfor j in range(p[1],n):if matrix[p[0]][j] == 'x':breakelse:matrix[q[0]][k] = matrix[p[0]][j]matrix[p[0]][j] ='x'k+=1return matrix
def xhan(a,b,matrix):temp = matrix[p[0]]matrix[p[0]] = matrix[q[0]]matrix[q[0]] = tempreturn matrix
for i in range(0,n):matrix[i][0]=i

搭积木——pythonOJ笔记相关推荐

  1. 秀出新天际的SpringBoot笔记,让开发像搭积木一样简单

    什么是 Spring Boot Java (面向对象编程语言)经过30多年的发展,产生了非常多的优秀框架.Spring (为解决企业应用程序开发的复杂性而创建的框架)曾是最受欢迎的Java框架之一, ...

  2. gpxclear寄存器写0和写1_画图,搭积木,写对象 [TF 笔记 0]

    前言 从2019年9月底到现在,TF 2.0 已经正式发布三个多月了.但其实很多和 2.0 相关的特性,比如说 eager 模式,@tf.function 装饰器和 AutoGraph, 以及 ker ...

  3. 【机器视觉案例】(10) AI视觉搭积木,手势移动虚拟物体,附python完整代码

    各位同学好,今天和大家分享一下如何使用 opencv+mediapipe 完成手势移动虚拟物体,可自定义各种形状的物体,通过手势搭积木.先放张图看效果. 规则:当食指在某个物体内部,并且中指指尖和食指 ...

  4. 蓝桥杯-搭积木-java

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...

  5. Kaggle HousePrice : LB 0.11666(排名前15%), 用搭积木的方式(一,原理)

    关键词: 机器学习, 特征工程,调参, 比赛, Kaggle, House Price, 搭积木, 管道, Pandas Pipe, Sklearn Pipeline 本文预计阅读时间需要15分钟. ...

  6. 测试流程图_挑战美国Postman VS 龙测搭积木接口测试,谁与争锋

    大家做接口测试是不是还在用Postman, SoapUI,JMeter以及公司内部开发的接口测试平台呢?那是不是觉得比较烦呢?比如每次运行下一个接口总是要运行一下登录接口来复制其生成的登录Token? ...

  7. 《陪孩子像搭积木一样学编程》,一起来玩Scratch(1)使用Scratch编程的基本流程...

    编程是一件很有趣的事情.初次接触编程,你可能不知所措,别担心,这并不复杂.首先,为了让读者对编程有大概的了解,可以把编写Scratch程序的过程分成7个步骤(如图1.8).注意,这是理想状态.在实际的 ...

  8. 搭积木java,Jimu:像搭积木一样DIY原生Android App

    正如本站之前所报道过的,现在国内国外市场上的App生成工具很多,无需编程就能DIY.目前正在众筹平台Kickstarter上融资的Jimu也是一款App生成工具,顾名思义,Jimu希望将App创建变得 ...

  9. 让制作APP变成搭积木

    移动互联网的发展,APP的发展让人们的生活逐渐与APP离不开关系,银行财务管理APP,外卖配送APP,商城APP,甚至小区的大门也可以通过APP来控制开关. 那么如何将APP真正的大众化呢? 而衡道的 ...

最新文章

  1. javascript高级程序设计之面向对象的程序设计
  2. Web容器启动中执行某个Java类
  3. HttpURLConnection根据URL下载图片
  4. 使用mintty(_如何使用Mintty改善Cygwin控制台
  5. ubuntu ls命令
  6. QQ注册时间查询非常准确源码程序
  7. 每日小记2012.5.1
  8. 六石编程学:自动化测试的优点
  9. 【优化算法】变异策略的改进型花朵授粉算法【含Matlab源码 480期】
  10. smart检测指标详解
  11. Using RCU‘s CPU Stall Detector(待更新)
  12. 原来js让任务栏闪烁这么简单
  13. 数学的三大核心领域——几何学范畴
  14. 合肥工业大学计组实验五
  15. 酷狗与鸿蒙系统,酷狗音乐鸿蒙版app
  16. 好用的任务管理工具有哪些?可以管理日常任务的便签
  17. 小程序 账本小记 统计月收入 月支出 源码分享
  18. 调戏小米手环2之认证原理
  19. 制造业企业erp软件测试工作,浅谈制造业ERP项目的验收测试
  20. i.MX 6ULL 驱动开发 二十九:向 Linux 内核中添加自己编写驱动

热门文章

  1. 王道计算机网络第三章
  2. C语言计算两纬线间子午线弧长1/2
  3. vmware workstation 9 安装Ubuntu 12.04 WIN7 64 位 出现问题及解决办法
  4. 基于embedded.mobileprovision描述文件查看iOS苹果证书到期时间三种方案
  5. 4.EMC整改案案例解析及分析(静电辐射发射)。
  6. 多媒体——图片——使用相机拍摄图片
  7. c语言圆周率小数点后500万位,活久见!德科学家整理出圆周率小数点后500万位数字...
  8. ClassNotFoundException: org.codehaus.plexus.logging.LoggerManager
  9. 雨听 | 解决连接蓝牙后谷歌浏览器无声音(其他应用有声音)问题
  10. win7 屏保播放视频