- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
Perverse Hangman 是一款与常规 Hangman 游戏非常相似的游戏,但有一个重要区别:获胜单词由学院根据猜中的字母动态确定。
例如,假设您有棋盘 _ A I L 和 12 个剩余的猜测。因为有 13 个不同的单词以 AIL 结尾(bail、fail、hail、jail、kail、mail、nail、pail、rail、sail、tail、vail、wail),所以无论你猜哪 12 个字母,房子都一定会赢, 房子会声称所选的单词是你没有猜到的。但是,如果棋盘是 _ I L M,那么您就把房子逼到了墙角,因为 FILM 是唯一以 ILM 结尾的单词。
挑战是:给定字典、单词长度和允许猜测的次数,提出一种算法:
a) 证明玩家总是赢,无论发生什么情况,都为进入房屋角落的玩家输出决策树
b) 通过输出一个无论如何都允许房子逃脱的房子的决策树来证明房子总是赢。
作为玩具示例,考虑字典:
bat
bar
car
如果允许您猜错 3 次,则玩家赢取以下树:
Guess B
NO -> Guess C, Guess A, Guess R, WIN
YES-> Guess T
NO -> Guess A, Guess R, WIN
YES-> Guess A, WIN
最佳答案
这与“如何通过反复称量找到奇数硬币?”几乎是一模一样的。问题。基本的见解是,您正在尝试最大化从猜测中获得的信息量。
构建决策树的贪心算法如下:- 对于每个猜测,选择答案为“真”和答案为“假”的猜测尽可能接近 50-50,因为理论上这提供了最多的信息。
令 N 为集合的大小,A 为字母表的大小,L 为单词中的字母数。
所以把你所有的话放在一个集合里。对于每个字母位置,以及字母表中的每个字母,计算该位置有多少个单词(这可以通过额外的哈希表进行优化)。选择大小最接近集合一半的计数。这是 O(L*A)。
将集合一分为二,取在这个位置有这个字母的子集,并使这两个分支成为树。对每个子集重复,直到你拥有整棵树。在最坏的情况下,这将需要 O(N) 步,但如果你有一个很好的字典,这将导致 O(logN) 步。
关于algorithm - 反常的刽子手问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1859254/
我正在制作刽子手游戏。一切正常,我已经准备好用于使游戏失败并为猜测提供 -1 的代码。虽然将它添加到 else 语句时它会重复等于单词的长度并且它也会给出一个猜测——即使它是正确的?我看不出代码有什么
我是一名 Javascript 学生,正在开发我的 Hangman 游戏。我用于显示 secret 单词的正确破折号数量的循环不起作用。每次只显示一个破折号。感谢帮助。谢谢。 $(document).
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 关于您编写的代码问题的问题必须在问题本身中描述具体问题 — 并且包括有效代码 以重现它。参见 SSC
print("Welcome to hangman. Are you ready to have some fun?") def play(): import random List = ["ra
我刚刚开始学习 Java 作为我的第一门编程语言。 在类里面,我们被分配使用 while 和 for 循环制作一个基本的 Hangman 游戏。 到目前为止我有什么 当用户输入第一个猜测时,它确实识别
我是编程新手。我正在做一个经典的刽子手游戏,但我希望它是从节目中猜测一些角色的名字(名字和姓氏)。 我的问题:破折号打印 name 和 surname 之间的空格而不是忽略它,例如: 密语:鲁伯特·吉
我正在尝试创建一个刽子手游戏,其中每个字母都有一个按钮。我用绝对定位和多个 Action 监听器以困难的方式做到了这一点。有什么办法可以用 for 循环同时完成这两个任务吗? 另外,如何使用多态数组实
我是 Java 新手,所以这听起来可能很傻。 我正在尝试从 Java 创建一个基于 GUI 的刽子手游戏。我已经从数组创建了按钮列表,单击时它返回单个字母作为字符。我有要猜测的单词列表,每次按下按钮时
我已经研究这段代码有一段时间了。我尝试了许多不同的方法来查找玩家在随机生成的单词中正确猜测的输入的索引 - 我认为我当前编写的内容应该有效,但我担心我忽略了一个非常简单的错误。事实上,每当我运行代码时
在我的 Hangman 应用程序中,我为用户创建了一组按钮,然后从文件中随机选择 Hangman 应用程序中猜测的单词...该单词使用 JLabel 打印...但是一旦单击按钮时,应用程序会卡住。谁能
我正在为我的 C 课编程编写一个刽子手程序。我似乎不知道如何执行最后一步,即在玩家猜出所有正确的字母后停止游戏。我感觉问题出在播放功能上。 #include #include #inc
用 python 编写一个 Hangman 程序,在传入一个包含多单词字符串和单单词字符串的文件时遇到了一个问题。 文件: 你好棕色狐狸 狗 猫 水 跳跃 #initialize list wordL
所以我在玩这个游戏的特定部分时遇到了问题。这些是我的初始变量: var words = ["sugar","banana","hulk"]; var guessLeft = 12; var wrong
我是一名优秀的程序员,十分优秀!