Guest User

Untitled

a guest
Dec 12th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.04 KB | None | 0 0
  1. before = "one two three four"
  2. after = "one six three four five"
  3.  
  4.  
  5. word_count_before = before.scan(/w+/).size
  6. word_count_after = after.scan(/w+/).size
  7.  
  8. if word_count_before > word_count_after #if the string got smaller we still want a positive number when comparing the two
  9. bigger = word_count_before
  10. smaller = word_count_after
  11. else
  12. bigger = word_count_after
  13. smaller = word_count_before
  14. end
  15.  
  16. word_difference = bigger - smaller
  17.  
  18. before = "one two three four"
  19. after = "one six three four five"
  20.  
  21. before, after = [before, after].map(&:split)
  22. common = [before, after].reduce &:&
  23.  
  24. before_not_after = before - common
  25. after_not_before = after - common
  26.  
  27. before, after = [before, after].map(&:split)
  28. # after execution of the line below, before array will contain result
  29. after.each { |e| (i = before.index(e)) && before.delete_at(i) }
  30.  
  31. one = "een redelijk lange tekst om na te gaan of dit programma het verschil kan maken tussen soortgelijke teksten door rekening te houden met combinaties van woorden"
  32. two = "een redelijk lange tekst met bijna dezelfde woorden als de vorige om na te gaan of dit programma het verschil kan maken tussen soortgelijke teksten door rekening te houden met combinaties van woorden"
  33. three = "een totaal andere tekst, ik maak hem lang genoeg om representabel te zijn en zet er enkele woorden bij die in de eerste tekst ook voorkomen"
  34.  
  35. class String
  36. def similarities_with text, lookafter_count=2, lookbefore_count=2
  37. r = [self.split, text.split].each.inject([]) do |r, a|
  38. r << a.each_with_index.inject([]) do |m, (element, index)|
  39. m << a[index-lookbefore_count..index+lookafter_count]
  40. end
  41. end
  42. (r.first & r.last).reject(&:empty?).count
  43. end
  44. end
  45.  
  46. one.similarities_with one # 24
  47. one.similarities_with two # 20
  48. one.similarities_with three # 0
  49. "one two three four".similarities_with("one six three four five", 0, 0) # 3
  50. "one two three four".similarities_with("one six three four five", 1, 1) # 0
  51.  
  52. # and now the difference
  53. one.similarities_with(one) - one.similarities_with(two) # 4
Add Comment
Please, Sign In to add comment