This is the 'proof of concept' solution I wrote for this quiz. It just
uses a regexp approach to extract whatever tab it can find from the
input, and it has the limitations mentioned in the quiz (9 frets, etc).

#!/usr/local/bin/ruby
#
# This is a very simple solution to this quiz, using
# the simple software guitar supplied. Run e.g:
#
#   ./playtab.rb sometab.tab | timidity -Os -
#
# Using the correct -O (s is ALSA - see --help for more).
# Alternatively, file the output and load it in your
# midi player.
#
require 'guitar'

tabre = /(([eADGBE]\|?
         [\-0-9~xhpbrBend\(\)\[\]\{\}=*|#]+
         [.\r\n]*){6})/x
tabs = []

ARGF.read.scan(tabre) {
  tab = $1.split
  tabs << tab if tab.all? { |line| line.length == tab[0].length }
}

axe = Guitar.new(Guitar::CLEAN_ELECTRIC)
tabs.inject([[]]) do |bars,t|
  (t[0].length - 2).times do |i|
    notes = t.inject("") { |s,line| s << line[i+2] }.reverse
    if notes =~ /[|*]{6}/
      bars << []
    else
      bars.last << notes
    end
  end
  bars
end.reject { |a| a.empty? }.each do |bar|
  bar.each do |notes|
    axe.play(notes)
  end
end

$stdout.write(axe.dump)

-- 
Ross Bamford - rosco / roscopeco.REMOVE.co.uk