人、狼、羊、草过河的小游戏

'''
想要实现的功能是,智能的选择过河的顺序
'''def is_valid_status(status):if status[1] == status[2] and status[0] != status[1]:print('狼吃羊')return Falseif status[2] == status[3] and status[0] != status[2]:print('羊吃草')return Falsereturn Truedef create_all_next_status(status):'''一种状态的下面会有多种子状态,将合理的子状态全部输出:param status::return:'''next_status_list = []for i in range(0, 4):if status[0] != status[i]:continuenext_status = [not status[0], status[1], status[2], status[3]]next_status[i] = next_status[0]if is_valid_status(next_status):next_status_list.append(next_status)return next_status_listdef is_done(status):return status[0] and status[1] and status[2] and status[3]def readable_status(status, is_across):result = ''for i in range(0, 4):if status[i] == is_across:if len(result) != 0:result += ","result += name[i]return "[" + result + "]"def print_history_status(history_status):for status in history_status:print('%s=======%s' % (readable_status(status, False), readable_status(status, True)))def search(history_status):global scheme_countcurrent_status = history_status[len(history_status) - 1]next_status_list = create_all_next_status(current_status)print(len(next_status_list))for next_status in next_status_list:print(next_status)if next_status in history_status:continuehistory_status.append(next_status)# 判断是否完成if is_done(next_status):scheme_count += 1print_history_status(history_status)else:search(history_status)history_status.pop()if __name__ == '__main__':# 初始化开局,都没到对岸name = ['farmer', 'wolf', 'sheep', 'grass']scheme_count = 0status = [False, False, False, False]# 历史局面列表history_status = [status]search(history_status)print('finish search, find' + str(scheme_count) + ' scheme')

人、狼、羊、草过河的小游戏Python实现相关推荐

  1. 狼羊菜过河(C实现)

            题目描述:农夫需要把狼.羊.菜和自己运到河对岸去,只有农夫能够划船,而且船比较小,除农夫之外每次只能运一种东西,还有一个棘手问题,就是如果没有农夫看着,羊会偷吃菜,狼会吃羊.请考虑一种 ...

  2. JAVA课程设计——“小羊吃蓝莓”小游戏

    JAVA课程设计--"小羊吃蓝莓"小游戏 1. 团队课程设计博客链接 http://www.cnblogs.com/HXY071/p/7061216.html 2. 个人负责模块或 ...

  3. 猜秘密三位数(人、机互相猜)小游戏

    题目: 猜秘密三位数(人.机互相猜)小游戏 问题描述: 你和计算机都各自选定一个秘密的三位数,然后互相猜对方的数字.用几个A表示对方猜的三位数中有几个数是完全正确的.用几个B表示对方猜的三位数中有几个 ...

  4. 算法之狼羊菜过河问题

    算法之狼羊菜过河问题 1.带羊再带狼 回来时把羊带上 然后把白菜带到对岸 最后把羊带过去 2..带羊再带菜 回来时把羊带上 然后把狼带到对岸 最后把羊带过去 关键点在于羊和两个都有联系,而狼不吃菜,

  5. *python解决狼羊菜过河问题

    python解决狼羊菜过河问题 A岸有菜,羊,狼,农夫农夫必须将他们都送到B岸每次只能送一个,在保证他们不会被吃的前提下,完成任务,并得出步骤. 代码: A=[["狼",1],[& ...

  6. 23款小游戏-Python一行代码就能玩

    给IT入门加星标,提升编程技能 free-python-games,一行代码就能进入使用Python开发的小游戏快乐玩耍! 安装 pip install freegames Python包括随您的安装 ...

  7. python飞机大战加背景音乐_python实现飞机大战小游戏 python飞机大战中的音频文件怎么改成MP3...

    怎么样用Python写飞机大战游戏 python开发飞机大战外星人游戏怎么弄双人模式新的一年,哪怕仍是一个人,也要活得像一支队伍,为自己的头脑和心灵招兵买马,不气馁,有召唤,爱自由. 主函数 impo ...

  8. 不愧是大厂牛人!用Java实现象棋小游戏(附超详细,超长究极无敌代码)

    本文实例为大家分享了java实现象棋小游戏的具体代码,供大家参考,具体内容如下 用Eclipse编写 java环境1.8jdk 代码如下 package xiangqi象棋; /***中国象棋Java ...

  9. 狼羊白菜过河问题C++

    先从过河原理出发---狼与羊不能单独一起,羊与草不能单独一起,由此可见草是能否过河的关键.因此·草必须第一次过河且不能只是一次过河,这就需要应用到队列,队列的性质先进先出.羊先到对岸之后,因为羊与狼和 ...

最新文章

  1. 人工智能机器学习区别计算机应用,AI、人工智能和机器学习有什么区别
  2. InetAddress类的一些方法
  3. 6个常用的Java开发技巧,快收藏吧!
  4. 发现1个宝藏项目,GitHub上都没有的那种!
  5. python是如何引起的_1.2.8 如何开始使用python
  6. Netty in action—Netty传输服务
  7. android播放音频的格式,android 音频播放_android ios 音频格式_android 播放网络音频...
  8. linux霸天虎3.6.1+windows平台 无线WEB CRACK
  9. 五款服务器配置管理工具
  10. C语言 “百鸡问题”最优解
  11. 王者荣耀鸿蒙抽奖,爆料:天行者抽奖乾坤福袋鸿蒙秘宝将再出现
  12. Python基于OpenCV的交通路口红绿灯控制系统设计
  13. php下单声音提醒,拼多多商家怎么设置下单的声音?开启方法是什么?
  14. 【C语言】编程实现输出矩阵上/下三角的数值。要求:输入一个正整数n和n阶矩阵的数值,打印输出矩阵、下三角和上三角的数值。
  15. android怎么调起记事本,安卓手机上怎么找到便签或记事本?
  16. 前端拖拽drag的使用
  17. 计算机应用能力考试 职称,专业技术人员计算机应用能力考试(全国计算机职称考试网)...
  18. CV(计算机视觉):概述
  19. CQUPT第十三届ACM网赛 H. 活动图 题解
  20. 建荣Ax3268工作简记

热门文章

  1. python中re模块的match、search、findall、sub方法使用
  2. APP性能优化之工具使用- 调试GPU过度绘制
  3. Python3中将\uXXXX字符串转换为可见字符串的解决方案
  4. Mybatis怎么怎么获取刚insert后生成的ID(探索selectKey)
  5. JAVA关于StringBuffer的一些方法
  6. sqlserver 数据库自动备份
  7. Mysql删除重复数据只保留一条
  8. 基础知识复习,html、css、js
  9. svn重新定位提示版本库uuid不匹配
  10. 全角字符和半角字符的概念