Last letter-first letter: Difference between revisions

m (→‎{{header|Perl 6}}: explain $name.ord)
Line 2,342:
 
=={{header|Ruby}}==
<lang ruby>defclass add_name(seq)LastL_FirstL
def initialize(names)
last_letter = seq[-1][-1]
@names = names.dup
potentials = $first.include?(last_letter) ? ($first[last_letter] - seq) : []
$ @first = names.group_by {|name| name[0]}
if potentials.empty?
$@sequences <<= seq[]
elseend
potentials.each {|name| add_name(seq + [name])}
def add_name(seq)
last_letter = seq[-1][-1]
potentials = $@first.include?(last_letter) ? ($@first[last_letter] - seq) : []
if potentials.empty?
$ @sequences =<< []seq
else
potentials.each {|name| add_name(seq + [name])}
end
end
def search
@names.each {|name| add_name [name]}
max = $@sequences.max_by {|seq| seq.length}.length
max_seqs = $@sequences.select {|seq| seq.length == max}
puts "there are #{$@sequences.length} possible sequences"
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>
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
Anonymous user