Note that there are some explanatory texts on larger screens.

plurals
  1. POHow does this Ruby app know to select the middle third of sentences?
    primarykey
    data
    text
    <p>I am currently following Beginning Ruby by Peter Cooper and have put together my first app, a text analyzer. However, whilst I understand all of the concepts and the way in which they work, I can't for the life of me understand how the app knows to select the middle third of sentences sorted by length from this line:</p> <pre><code>ideal_sentances = sentences_sorted.slice(one_third, one_third + 1) </code></pre> <p>I have included the whole app for context any help is much appreciated as so far everything is making sense.</p> <pre><code>#analyzer.rb --Text Analyzer stopwords = %w{the a by on for of are with just but and to the my I has some in do} lines = File.readlines(ARGV[0]) line_count = lines.size text = lines.join #Count the characters character_count = text.length character_count_nospaces = text.gsub(/\s+/, '').length #Count the words, sentances, and paragraphs word_count = text.split.length paragraph_count = text.split(/\n\n/).length sentence_count = text.split(/\.|\?|!/).length #Make a list of words in the text that aren't stop words, #count them, and work out the percentage of non-stop words #against all words all_words = text.scan(/\w+/) good_words = all_words.select {|word| !stopwords.include?(word)} good_percentage = ((good_words.length.to_f / all_words.length.to_f)*100).to_i #Summarize the text by cherry picking some choice sentances sentances = text.gsub(/\s+/, ' ').strip.split(/\.|\?|!/) sentances_sorted = sentences.sort_by { |sentence| sentance.length } one_third = sentences_sorted.length / 3 ideal_sentances = sentences_sorted.slice(one_third, one_third + 1) ideal_sentances = ideal_sentences.select{ |sentence| sentence =~ /is|are/ } #Give analysis back to user puts "#{line_count} lines" puts "#{character_count} characters" puts "#{character_count_nospaces} characters excluding spaces" puts "#{word_count} words" puts "#{paragraph_count} paragraphs" puts "#{sentence_count} sentences" puts "#{sentence_count / paragraph_count} sentences per paragraph (average)" puts "#{word_count / sentence_count} words per sentence (average)" puts "#{good_percentage}% of words are non-fluff words" puts "Summary:\n\n" + ideal_sentences.join(". ") puts "-- End of analysis." </code></pre> <p>Obviously I am a beginner so plain English would help enormously, cheers. </p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload