`
easylife
  • 浏览: 14695 次
  • 性别: Icon_minigender_1
  • 来自: 忘记
最近访客 更多访客>>
社区版块
存档分类
最新评论

Answer to Best of Ruby Quiz, quiz 4 "the animal quiz"

阅读更多
$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

    《Best of Ruby Quiz》是一本聚焦于Ruby编程语言的精选问答集锦,旨在帮助开发者深入理解和掌握Ruby的各种特性。这本书的描述简洁明了,"Best of Ruby Quiz"直接点出了其核心内容——一系列关于Ruby的精彩挑战和问题...

    《Best of Ruby Quiz》

    读者大多可以想出一种办法来解决这些问题,往往还能 通过思考和重构找到第二种优雅的设计,但这本书却给你列出了第三种、第四种真正精巧的解决方案——充分利用Ruby技巧才能得出的解决方案。

    《RUBY QUIZ - The Solitaire Cipher 》

    通过查看提供的文件列表,我们看到有“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》概述 - **书籍标题**:本书名为《Pragmatic Bookshelf: Best of Ruby Quiz Mar. 2006》,是一本专注于Ruby编程语言的经典练习册。 - **书籍内容**:...

    Best.of.Ruby.Quiz

    《Best.of.Ruby Quiz》是一本专为Ruby初学者精心编写的英文教程,旨在帮助新手逐步掌握这门强大而优雅的编程语言。Ruby作为一种动态、面向对象的脚本语言,因其简洁的语法和强大的元编程能力,深受开发者的喜爱。...

    Pragmatic.Bookshelf.Best.of.Ruby.Quiz.Mar.2006.pdf

    《Pragmatic Bookshelf Best of Ruby Quiz Mar 2006》是一本专注于Ruby编程语言的书籍,由Pragmatic Bookshelf出版社出版。这本书的独特之处在于它采用了问答的形式,即"Quiz",来帮助读者深入理解和掌握Ruby的核心...

    ruby_quiz.rar

    "Pragmatic.Bookshelf.Best.of.Ruby.Quiz.Mar.2006.pdf"是这本书的电子版,出版于2006年3月,由Pragmatic Bookshelf出版社发行。 Ruby是一种动态、面向对象的脚本语言,以其简洁、优雅的语法和强大的元编程能力著称...

    SSD3-quiz4

    【SSD3 Quiz4 知识点详解】 SSD3,全称为Software System Development 3,是卡耐基梅隆大学面向对象程序设计的一门课程。Quiz 4作为该课程的重要组成部分,旨在检验学生对面向对象编程核心概念的理解,以及在实际...

    ssd3 quiz4答案

    在"ssd3 quiz4答案"中,我们可能讨论以下几个关键知识点: 1. **需求工程**:这是软件开发的起始阶段,包括需求获取、分析、规格化和验证。在Quiz 4中,可能会有与需求文档编写、用例描述或用户故事相关的问题。 2...

    SSD4 Practical Quiz4 答案

    SSD4 Practical Quiz4 是一个针对固态存储技术(Solid State Drives)的实践测试,主要涵盖了关于SSD的工作原理、性能优化、故障诊断和维护等方面的知识。在这个测试中,参与者可能面临的问题可能涉及以下几个关键...

    BestofRubyQuizFreePdfBook.pdf 英文原版

    Best of Ruby Quiz – Free Pdf Book

    ssd3 practical quiz 6

    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

    【标题】"ssd3 practical quiz4" 是一个与软件工程相关的实践测验,很可能源自2007年卡耐基梅隆大学的课程。这个测验可能旨在检验学生对软件开发过程、软件设计原则、编程技能以及项目管理的理解。 【描述】提及的...

    ssd3quiz4答案

    SSD3Quiz4是针对固态存储技术(Solid State Drives)的一个练习测试,主要涵盖了SSD的基础知识、工作原理、性能优化以及常见问题解决等内容。这个资源包含了该测试的答案,经过修正,对于正在学习SSD相关知识或者...

    SSD 4 Quiz答案

    ### SSD4 Quiz知识点详解 #### Fitts's Law与用户界面设计 Fitts's Law是一种预测人类在指向目标时所需时间的模型,这在人机交互领域具有重要意义。根据Quiz1的第一题,正确答案是选项(b),指出指向目标所需的时间...

    [Getting and Cleaning data] Quiz 4

    This is codes for quiz for "getting and cleaning data" in coursera.

    SSD5 Multiple-Choice Quiz 1 answer

    在SSD5数据结构的Quiz 1中,我们看到了一系列关于C++编程语言的基础知识问题。这些问题涵盖了数组、类与继承、标识符规则、算法、输入/输出操作以及预处理器等多个核心概念。以下是每个问题的详细解答: 1. 对于一...

    Software.Testing.2nd.Edition (Sams)软件测试(英文版)

    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 ...

Global site tag (gtag.js) - Google Analytics