$answers = [[["an elephent", true]]]
$stack = []
def input
gets.chomp
end
# convert_answer_to_question
def c_a_t_q(key)
"Is it a/an #{key}? (y or n)"
end
def agent_answer
case gets.chomp
when "y"
true
when "n"
false
else
raise "Invalid input, please input 'y' or 'n'"
end
end
def play_again?
$stack.clear
puts "Thanks.\nPlay again? (y or n)"
if agent_answer
main_process
else
exit
end
end
#convert_question_to_answer
def c_q_t_a(question)
question.match(/Is it (.*)\?$/) ? $1 : raise("Invalid input, please input the sentance 'Is it xxx?'")
end
# warning
def final_answer?
$answers[$stack[0]].size == ($stack[1] + 1)
end
def header_process
puts "Think of an animal..."
rand_num = rand($answers.size)
$stack << rand_num << 0
end
# push common stack to $stack
def p_c_s
$answers << []
($stack[1]).times do |i|
$answers.last << $answers[$stack[0]][i]
end
end
def body_process
current_pair = $answers[$stack[0]][$stack[1]]
puts c_a_t_q(current_pair[0])
if agent_answer == current_pair[1]
if final_answer?
puts "I win. Pretty smart, aren't I?"
else
$stack[1] += 1
body_process
end
else
puts "You win. Help me learn from my mistake before you go... \nWhat animal were you thinking of?"
real_answer = input
puts "Give me a question to distinguish #{real_answer} from #{current_pair[0]}."
distinguish_question = c_q_t_a(input)
puts "For #{real_answer}, what is the answer to your question? (y or n)"
distinguish_answer = agent_answer
p_c_s
$answers.last << [distinguish_question, distinguish_answer] << [real_answer, true]
end
end
def main_process
header_process
body_process
play_again?
rescue => e
puts e.message
play_again?
end
main_process
分享到:
相关推荐
《Best of Ruby Quiz》是一本聚焦于Ruby编程语言的精选问答集锦,旨在帮助开发者深入理解和掌握Ruby的各种特性。这本书的描述简洁明了,"Best of Ruby Quiz"直接点出了其核心内容——一系列关于Ruby的精彩挑战和问题...
读者大多可以想出一种办法来解决这些问题,往往还能 通过思考和重构找到第二种优雅的设计,但这本书却给你列出了第三种、第四种真正精巧的解决方案——充分利用Ruby技巧才能得出的解决方案。
通过查看提供的文件列表,我们看到有“Pragmatic.Bookshelf.Best.of.Ruby.Quiz.Mar.2006.pdf”,这很可能是《Pragmatic Programmer》出版社出版的一本关于Ruby Quiz的最佳解答合集,其中可能包含了对这个具体挑战的...
#### 一、《Pragmatic Bookshelf: Best of Ruby Quiz Mar. 2006》概述 - **书籍标题**:本书名为《Pragmatic Bookshelf: Best of Ruby Quiz Mar. 2006》,是一本专注于Ruby编程语言的经典练习册。 - **书籍内容**:...
《Best.of.Ruby Quiz》是一本专为Ruby初学者精心编写的英文教程,旨在帮助新手逐步掌握这门强大而优雅的编程语言。Ruby作为一种动态、面向对象的脚本语言,因其简洁的语法和强大的元编程能力,深受开发者的喜爱。...
《Pragmatic Bookshelf Best of Ruby Quiz Mar 2006》是一本专注于Ruby编程语言的书籍,由Pragmatic Bookshelf出版社出版。这本书的独特之处在于它采用了问答的形式,即"Quiz",来帮助读者深入理解和掌握Ruby的核心...
"Pragmatic.Bookshelf.Best.of.Ruby.Quiz.Mar.2006.pdf"是这本书的电子版,出版于2006年3月,由Pragmatic Bookshelf出版社发行。 Ruby是一种动态、面向对象的脚本语言,以其简洁、优雅的语法和强大的元编程能力著称...
【SSD3 Quiz4 知识点详解】 SSD3,全称为Software System Development 3,是卡耐基梅隆大学面向对象程序设计的一门课程。Quiz 4作为该课程的重要组成部分,旨在检验学生对面向对象编程核心概念的理解,以及在实际...
在"ssd3 quiz4答案"中,我们可能讨论以下几个关键知识点: 1. **需求工程**:这是软件开发的起始阶段,包括需求获取、分析、规格化和验证。在Quiz 4中,可能会有与需求文档编写、用例描述或用户故事相关的问题。 2...
SSD4 Practical Quiz4 是一个针对固态存储技术(Solid State Drives)的实践测试,主要涵盖了关于SSD的工作原理、性能优化、故障诊断和维护等方面的知识。在这个测试中,参与者可能面临的问题可能涉及以下几个关键...
Best of Ruby Quiz – Free Pdf Book
ssd3 practical quiz 5ssd3 practical quiz 5ssd3 practical quiz 5ssd3 practical quiz 5ssd3 practical quiz 5ssd3 practical quiz 5ssd3 practical quiz 5
【标题】"ssd3 practical quiz4" 是一个与软件工程相关的实践测验,很可能源自2007年卡耐基梅隆大学的课程。这个测验可能旨在检验学生对软件开发过程、软件设计原则、编程技能以及项目管理的理解。 【描述】提及的...
SSD3Quiz4是针对固态存储技术(Solid State Drives)的一个练习测试,主要涵盖了SSD的基础知识、工作原理、性能优化以及常见问题解决等内容。这个资源包含了该测试的答案,经过修正,对于正在学习SSD相关知识或者...
### SSD4 Quiz知识点详解 #### Fitts's Law与用户界面设计 Fitts's Law是一种预测人类在指向目标时所需时间的模型,这在人机交互领域具有重要意义。根据Quiz1的第一题,正确答案是选项(b),指出指向目标所需的时间...
This is codes for quiz for "getting and cleaning data" in coursera.
在SSD5数据结构的Quiz 1中,我们看到了一系列关于C++编程语言的基础知识问题。这些问题涵盖了数组、类与继承、标识符规则、算法、输入/输出操作以及预处理器等多个核心概念。以下是每个问题的详细解答: 1. 对于一...
Performing a High-Level Review of the Specification Low-Level Specification Test Techniques Summary Quiz Chapter 5. Testing the Software with Blinders On Dynamic Black-Box Testing: Testing ...