From: w_a_x_man Date: 2010-07-13T12:25:04+09:00 Subject: Re: Golf on CLI code On Jul 6, 6:24 am, Martin DeMello wrote: > On Tue, Jul 6, 2010 at 4:59 AM, Intransition wrote: > > >   def command(argv) > >      lookup = registry.map{ |cc| [cc, cc.cli] }.sort{ |a,b| b[1].size > > <=> a[1].size } > > at the least this should be registry.map {|cc| [cc, cc.cli]}.sort_by > {|a| -a[1].size} > > also, you're never using cc, so why carry it around? > > lookup = registry.map {|cc| cc.cli}.sort_by {|cli| -cli.size} > > and using the ever-handy symbol.to_proc > > lookup = registry.map(&:cli).sort_by(&:size).reverse > > >      x = lookup.find do |cc, cli| > >        t = true > >        cli.each_with_index do |r, i| > >          t = t && (r === argv[i]) > >        end > >        t > >      end > > # untested > lookup.find do |cli| >   cli.zip(argv).inject(true) {|e, (i, j)| e && (i === j)} > end lookup.find{|cli| cli == argv[0,cli.size] } > > >      cmdc = x[0] > >      argv = argv[x[1].size..-1] > >      return cmdc, argv > >    end > > martin