如何把混乱的魔方还原?或许你会跟曾经的我有一样的想法,认为这是一项十分烧脑的活动,直到有一天,一位朋友跟我说,魔方其实很简单,就像堆积木,我想了解过魔方的人都明白,其实还原一个魔方并没有你想象中的那么难,只要按照一定的步骤一步一步操作,最终一定能把魔方还原。

看了上面的图,有没有觉得其实还原魔方真的没那么难呢。

如何实现用户在网页输入开始时间和结束时间之后自动计算出相隔天数?其实随着互联网的快速发展,几乎一切的服务都可以在线上进行预定,最常见的比如你在美团上或者去哪网预定一家酒店,通常会让你选择开始时间和结束时间,等你选择完成之后,网站界面上已经把你预定的天数都已经计算出来了,甚至在你输入的结束时间如果早于开始时间,网站还会友好的提示你重新输入,这是如何实现的呢

看来以上两个例子,有没有发行还原魔方和编程过程当中一些共通的东西,

一、设定目标:还原魔方的目标就是把魔方每个颜色一样的色块组合成一个面,编程就是把用户输入的结束时间和开始时间之间的差计算出来,同时在用户输入的时间有误的时候,能有效的提示用户输入符合常理的日期。虽然两件事有各自的目标,但都目标明确。

二、分解任务:还原魔方过程的关键就在于把目标拆分成一个又一个简单的任务,或许刚开始看到混乱的色块,一下子无从下手,即使下手转动也是转动这个色块,另外的色块有跑掉了,但是,把还原所有色块的这个目标转换成六个阶段:

1、选择一个自己喜欢的颜色作为中心色块,围绕这个中心色块,先还原出一个十字,并将十字的棱块与侧面中心块的颜色保持一致;

2、还原好第一层;

3、还原好第二层的棱块;

4、翻转魔方,在新的顶面上还原十字;

5、翻转魔方顶面四个角,还原好顶面色块;

6、调整四角顺序,魔方还原。

或许你会以为计算两个日期之间的时间差是计算机的最擅长的事情,但是别忘了,日期里面不光有年月日,还有时分秒,这些都是要考虑进去的,所以计算天数的目标就被转化成了四个阶段:

1、获取到用户输入的开始时间和结束时间;

2、根据获取的开始时间和结束时间计算出两个时间的差,当然这个计算结果既不是分钟,也不是小时,更不是天数,而是两个时间之家相差的毫秒数,

3、根据计算的结果与0做比较,如果小于0则提示用户输入的结束时间要大于开始时间,如何大于0,则换算成小时,

4、再根据换算成的小时转换为天数,从而计算出两个日期中间相隔的天数。

三、协调任务

还原魔方的第一个阶段就如同给积木搭好了地基一样,后面的步骤都只是在地基的基础上一层一层的堆合适的积木,直到这个色块跟相邻的色块颜色一致,所以后续每个步骤都是围绕地基不断的做出调整,而编程中计算天数也同样是根据第一步中获取到的开始时间和结束时间,围绕这开始时间和结束时间直接的差值来判断用户输入的时间是否符合常理,从而计算出来两个日期时间相隔的天数。

魔方和编程,看似不相干的两件事,但其实都是锻炼我们大脑的思维能力和解决问题的能力,当有一天,我们已经不再执迷于一个又一个的招式的时候,或许我们能看到更清晰的世界。

PHP语言编程魔方,编程和魔方相关推荐

  1. 乐高魔方机器人编程及图纸_魔方机器人教程图纸程序下载【Reinhard Grafl】作品...

    视频很小,可以用流量观看,不是土豪也没事. 下面先看一下使用说明的翻译吧. 1. 搭建 用LDD打开release/CubeSpinner.lxf,照图搭之!这个魔方机器人的大多数零件来自EV3套件, ...

  2. C语言嵌入式系统编程修炼之道——性能优化篇

    C语言嵌入式系统编程修炼之道--性能优化篇 作者:宋宝华  e-mail:[email]21cnbao@21cn.com[/email] 1.使用宏定义 在C语言中,宏是产生内嵌代码的唯一方法.对于嵌 ...

  3. C语言嵌入式系统编程修炼之(六)性能优化

    C语言嵌入式系统编程修炼之性能优化 使用宏定义 在C语言中,宏是产生内嵌代码的唯一方法.对于嵌入式系统而言,为了能达到性能要求,宏是一种很好的代替函数的方法. 写一个"标准"宏MI ...

  4. 编写书籍《C语言嵌入式系统编程修炼之道》序言

    序言        目前,嵌入式系统已经无处不在,遍布于世界的每一个角落.智能家电.手机.PDA.汽车.通信电台等几乎所有的电力.电器与电子产品都包含一个或多个嵌入式系统.有人的地方就有江湖,有电的地 ...

  5. c语言二级编程题库,二级C语言题库-编程题.doc

    二级C语言题库-编程题 第 PAGE \* Arabic \* MERGEFORMAT 27 页第 PAGE \* Arabic \* MERGEFORMAT 27 页 1.请编写函数fun,其功能是 ...

  6. extern quot;Cquot; 的含义:实现C++与C及其他语言的混合编程

    C++中extern "C"的设立动机是实现C++与C及其他语言的混合编程. C++为了支持函数的重载.C++对全局函数的处理方式与C有明显的不同. 对于函数void foo( i ...

  7. C语言嵌入式系统编程修炼

    C语言嵌入式系统编程修炼之内存操作篇 数据指针 在嵌入式系统的编程中,常常要求在特定的内存单元读写内容,汇编有对应的MOV指令,而除C/C++以外的其它编程语言基本没有直接访问绝对地址的能力.在嵌入式 ...

  8. Go语言TCP Socket编程

    2019独角兽企业重金招聘Python工程师标准>>> Go语言TCP Socket编程 Golang的 主要 设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端 程序必不 ...

  9. 在C语言中以编程的方式获取函数名

    在C语言中以编程的方式获取函数名 仅仅为了获取函数名,就在函数体中嵌入硬编码的字符串,这种方法单调乏味还易导致错误,不如看一下怎样使用新的C99特性,在程序运行时获取函数名吧. 对象反射库.调试工具及 ...

  10. C语言嵌入式系统编程修炼之道——屏幕操作篇

    C语言嵌入式系统编程修炼之道--屏幕操作篇 作者:宋宝华  e-mail:[email]21cnbao@21cn.com[/email] 1.汉字处理 现在要解决的问题是,嵌入式系统中经常要使用的并非 ...

最新文章

  1. java jquery提交表单_Jquery ajax提交表单几种方法
  2. 关于adb devices连不上手机的几种情况
  3. python 浏览器自动化测试,python中使用chrome进行自动化测试,浏览器变量设置
  4. hdu1799 循环多少次?(组合递推公式的使用)
  5. Sublime Text 3插件安装方法
  6. 【技术干货+限时活动】openstack原理及在华为云中的应用
  7. 从原理带你掌握Spring MVC拦截处理器知识
  8. 艾伟:C#类和接口、虚方法和抽象方法及值类型和引用类型的区别
  9. c#类似跑马灯抽签小程序
  10. 【转】汇编指令与机器码的相互转换
  11. 哲学家就餐问题及其实现
  12. 网站打开慢解决办法——在Google Chrome浏览器中安装ReplaceGoogleCDN插件
  13. win 7共享计算机改名,不用再去找软件 批量改名Win7一键搞定
  14. cad2016的自动修复此计算机,CAD中遇到文件损坏,别着急,这几招能帮你挽回损失...
  15. AD18运行PCB DRC显示一处警告, Design contains shelved or modified (but not repoured) polygons.
  16. com.sun.mail.smtp.protected void rcptTo() 方法
  17. java在线运行工具,终于搞明白了
  18. 比SUM函数还高级的求和函数,你知道吗?
  19. Linux 下 Login 和 Logout 详解
  20. discuz建站视频教程 免费个人建站视频教程

热门文章

  1. Java将编辑器内容生成pdf文件下载
  2. python web 数据可视化框架_利用django框架,手把手教你搭建数据可视化系统(一)...
  3. 职高计算机应用基础学的什么,职高计算机应用基础教法初探
  4. 翡翠手链的寓意是什么?要如何保养它才好!
  5. VS 错误: cout 不明确
  6. (第三天)磁盘分区----LVE逻辑卷
  7. UT2016学习笔记
  8. STM32学习(一)—STM32固件库的使用
  9. python爬取拉钩网招聘信息分析
  10. C++中的模板(template)