Anonymous user
Last letter-first letter: Difference between revisions
→{{header|Ruby}}
m (→{{header|Perl 6}}: explain $name.ord) |
|||
Line 2,342:
=={{header|Ruby}}==
<lang ruby>
def initialize(names)
last_letter = seq[-1][-1]▼
@names = names.dup
potentials = $first.include?(last_letter) ? ($first[last_letter] - seq) : []▼
if potentials.empty?▼
potentials.each {|name| add_name(seq + [name])}▼
def add_name(seq)
▲ last_letter = seq[-1][-1]
▲ if potentials.empty?
else
▲ potentials.each {|name| add_name(seq + [name])}
end
end
def search
@names.each {|name| add_name [name]}▼
puts "the longest is #{max} names long"▼
puts "there are #{max_seqs.length} such sequences. one is:"▼
end
end
Line 2,362 ⟶ 2,380:
tyrogue vigoroth vulpix wailord wartortle whismur wingull yamask
}
▲$first = names.group_by {|name| name[0]}
▲$sequences = []
▲names.each {|name| add_name [name]}
▲max = $sequences.max_by {|seq| seq.length}.length
▲max_seqs = $sequences.select {|seq| seq.length == max}
lf = LastL_FirstL.new(names)
▲puts "there are #{$sequences.length} possible sequences"
lf.search</lang>
▲puts "the longest is #{max} names long"
▲puts "there are #{max_seqs.length} such sequences. one is:"
▲max_seqs.last.each_with_index {|name, idx| puts " %2d %s" % [idx+1, name]}</lang>
outputs
<pre>there are 2076396 possible sequences
|