计算ruby coursera中跨行错误的最大字数

计算ruby coursera中跨行错误的最大字数,ruby,rspec,coursera-api,Ruby,Rspec,Coursera Api,现在快两周了,我不能把它从我的脑袋里拿出来。我是ruby的新手,我一直在学习RubyonRails的最后一部分,这是一门关于coursera的入门课程。这当然很容易找出问题所在,但这次我需要帮助及时完成这门课程 #在(此)module2_assignment2.rb文件中执行此分配的所有部分 #实现一个名为LineAnalyzer的类。 类线性分析器 #在LineAnalyzer类中实现以下只读属性。 #*最高\u wf\u计数-单个单词出现次数最多的数字(计算) #*最高\u wf\u单词-

现在快两周了,我不能把它从我的脑袋里拿出来。我是ruby的新手,我一直在学习RubyonRails的最后一部分,这是一门关于coursera的入门课程。这当然很容易找出问题所在,但这次我需要帮助及时完成这门课程

#在(此)module2_assignment2.rb文件中执行此分配的所有部分
#实现一个名为LineAnalyzer的类。
类线性分析器
#在LineAnalyzer类中实现以下只读属性。
#*最高\u wf\u计数-单个单词出现次数最多的数字(计算)
#*最高\u wf\u单词-出现次数最多的单词数组(计算)
#*内容-分析的字符串(提供)
#*测线号-分析的测线号(提供)
#在LineAnalyzer类中添加以下方法。
#*initialize()-获取一行文本(内容)和行号
#*计算单词频率()-计算结果
#实现initialize()方法以:
#*输入一行文字和行号
#*初始化内容和行号属性
#*调用calculate\u word\u frequency()方法。
#实现calculate_word_frequency()方法以:
#*计算单个单词在中出现的最大次数
#提供的内容并将其存储在最高的\u wf\u计数属性中。
#*识别使用次数最多的单词,并
#将其存储在最高的单词属性中。
属性访问器:最高\u wf\u计数,:最高\u wf\u字,:内容,:行号
def初始化(内容、行)
@内容=内容
@行\编号=行
@最高\u wf\u计数=0
@最高单词数=[]
计算单词频率()
终止
def计算单词频率()
@最高单词数=Hash.new
words=@content.split
单词.each{| w|
如果@highest\u wf\u words.has\u key?(w)
@最高\u wf\u字[w]+=1
其他的
@最高单词[w]=1
终止
}
@最高的单词。按{单词,计数{计数}排序
@最高的单词。每个do |键,值|
如果值>@最高\u wf\u计数
@最高\u wf\u计数=值
终止
终止
终止
def最高wf计数=(数字)
@最高\u wf\u计数=个数
终止
终止
#实现一个名为Solution的类。
类解决方案
#在解决方案类中实现以下只读属性。
#*分析器-文件中每行的LineAnalyzer对象数组
#*跨\u行的最大\u计数\u-分析器数组中具有最大\u wf\u字属性值的数字。
#*跨多行的最高\u计数\u单词\u-具有最高\u wf\u单词属性的线性分析器对象的过滤数组
#等于先前确定的各_行中的最高_计数。
#在解决方案类中实现以下方法。
#*analyze_file()-将“test.txt”处理到一个线性分析器数组中,并将其存储在分析器中。
#*使用\u最高\u频率()计算\u线\u-确定跨\u线的最高\u计数\u,并
#最大\u计数\u单词\u跨\u行属性值
#*打印\u最高\u单词\u频率\u跨\u行()-打印中LineAnalyzer对象的值
#指定格式的\u行中的最大\u计数\u单词\u
#实现analyze_file()方法()以:
#*按行读取“test.txt”文件
#*为文件中的每一行创建一个线性分析器数组
#实现计算线与最高频率()方法,以:
#*计算分析器数组中LineAnalyzer对象包含的最高\u wf\u计数的最大值
#并将此结果存储在“跨线最高计数”属性中。
#*标识分析器数组中具有最高\u wf\u计数的LineAnalyzer对象等于跨\u线的最高\u计数
#属性值之前已确定,并跨行存储在最高\u计数\u单词\u中。
#实现print_highest_word_frequency_over_line()方法
#*以指定格式跨行以最高\u计数\u单词\u打印对象的值
属性读取器:分析器:行间最高计数,行间最高计数单词
def初始化
@各线的最高计数=零
@跨行的最高单词数=零
@分析器=[]
终止
def analyze_文件()
File.foreach('test.txt')do |内容,行|
LineAnalyzer=LineAnalyzer.new(内容,行)
@分析仪@最高计数@跨线
@最高\u计数\u跨\u线=分析仪。最高\u wf\u计数
终止
analyzers.highest_wf_words.each do| key,value|
if analyzers.highest\u count\u words\u跨\u行<值
@跨行的最高单词数
在这里,跨行的最高\u计数\u单词\u返回字符串数组,您正在调用每个字符串中的最高\u wf\u单词的方法。但该方法实际上是在类LineAnalyzer中定义的


希望这能帮助你解决很多问题

  • 您的解决方案#analyze_file方法,您试图使用常量(
    LineAnalyzer
    )作为变量:
    LineAnalyzer=LineAnalyzer.new(content,line)
    。您需要更改为:

    line_analyzer = LineAnalyzer.new(content, line)
    @analyzers << line_analyzer
    

  • 坦率地说,我对这些测试感到困惑,对于如何让它们通过,我也不是特别兴奋。我知道这门课教的是非惯用Ruby。但希望上述内容能让你走上正轨。

    这其中缺少一点 对于跨行的最高单词数

    @highest_count_words_across_lines = @analyzers.select do |analyzer|
       analyzer.highest_wf_count == @highest_count_across_lines
    end
    

    实际上,他们在要求对象,而你在给出值。

    test.txt
    包含什么?@moveson
    这是一个非常非常非常非常酷的实验,真的
    可爱的小实验
    它会起作用吗可能会起作用吗?你认为会吗
    @highest_count_across_lines = analyzers.map(&:highest_wf_count).max
    
    @highest_count_words_across_lines = @analyzers.select do |analyzer|
       analyzer.highest_wf_count == @highest_count_across_lines
    end