-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathoptimised.rb
57 lines (48 loc) · 1.8 KB
/
optimised.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
start_time = Time.now
dictionary = File.foreach('dictionary.txt').map { |line| line.split.to_s }
one_letter_words = Array.new
two_letter_words = Array.new
three_letter_words = Array.new
four_letter_words = Array.new
five_letter_words = Array.new
six_letter_words = Array.new
concatenated_words = Array.new
for word in dictionary do
if word.length == 5
one_letter_words.push(word)
elsif word.length == 6
two_letter_words.push(word)
elsif word.length == 7
three_letter_words.push(word)
elsif word.length == 8
four_letter_words.push(word)
elsif word.length == 9
five_letter_words.push(word)
elsif word.length == 10
six_letter_words.push(word)
end
end
for word in six_letter_words do
test1 = "[\"#{word.slice(2)}\"]"
test2 = "[\"#{word.slice(2..3)}\"]"
test3 = "[\"#{word.slice(2..4)}\"]"
test4 = "[\"#{word.slice(2..5)}\"]"
test5 = "[\"#{word.slice(2..6)}\"]"
remainder1 = "[\"#{word.slice(3..7)}\"]"
remainder2 = "[\"#{word.slice(4..7)}\"]"
remainder3 = "[\"#{word.slice(5..7)}\"]"
remainder4 = "[\"#{word.slice(6..7)}\"]"
remainder5 = "[\"#{word.slice(7)}\"]"
if one_letter_words.include?(test1) && five_letter_words.include?(remainder1)
concatenated_words.push(word)
elsif two_letter_words.include?(test2) && four_letter_words.include?(remainder2)
concatenated_words.push(word)
elsif three_letter_words.include?(test3) && three_letter_words.include?(remainder3)
concatenated_words.push(word)
elsif four_letter_words.include?(test4) && two_letter_words.include?(remainder4)
concatenated_words.push(word)
elsif five_letter_words.include?(test5) && one_letter_words.include?(remainder5)
concatenated_words.push(word)
end
end
puts "there are #{concatenated_words.size} concatenated words and this took #{Time.now - start_time} seconds to run."