Hey, be fair to SQLite!
Jacob F.
Let’s let Ruby decide:
class Array
def map_with_index
inject([[], 0]) { |r, a| [r[0] << (yield a, r[1]), r[1] + 1] }[0]
end
alias :mwi :map_with_index
end
class Acronym
TERMS = [
%w{Linux OpenBSD FreeBSD NetBSD},
%w{Apache Lighttpd},
%w{MySQL PostGreSQL SQLite Firebird},
%w{PHP/Perl/Python Ruby LISP},
]
def self.make(*args)
t, fmt = args.dup, ‘and %s’
“%s: %s” % [args.map { |s| s[0,1] }.join, (t << fmt % t.pop;
t.join(’, '))]
end
def self.all(args = [])
ret = []
if args.size == TERMS.size
ret << make(*(args.mwi { |num, i| TERMS[i][num] }))
else
0.upto(TERMS[args.size].size - 1) { |i| ret << all(args << i);
args.pop }
end
ret
end
end
puts Acronym.all
Excluding non-Ruby languages gives us the following list:
LAMR: Linux, Apache, MySQL, and Ruby
LAPR: Linux, Apache, PostGreSQL, and Ruby
LASR: Linux, Apache, SQLite, and Ruby
LAFR: Linux, Apache, Firebird, and Ruby
LLMR: Linux, Lighttpd, MySQL, and Ruby
LLPR: Linux, Lighttpd, PostGreSQL, and Ruby
LLSR: Linux, Lighttpd, SQLite, and Ruby
LLFR: Linux, Lighttpd, Firebird, and Ruby
OAMR: OpenBSD, Apache, MySQL, and Ruby
OAPR: OpenBSD, Apache, PostGreSQL, and Ruby
OASR: OpenBSD, Apache, SQLite, and Ruby
OAFR: OpenBSD, Apache, Firebird, and Ruby
OLMR: OpenBSD, Lighttpd, MySQL, and Ruby
OLPR: OpenBSD, Lighttpd, PostGreSQL, and Ruby
OLSR: OpenBSD, Lighttpd, SQLite, and Ruby
OLFR: OpenBSD, Lighttpd, Firebird, and Ruby
FAMR: FreeBSD, Apache, MySQL, and Ruby
FAPR: FreeBSD, Apache, PostGreSQL, and Ruby
FASR: FreeBSD, Apache, SQLite, and Ruby
FAFR: FreeBSD, Apache, Firebird, and Ruby
FLMR: FreeBSD, Lighttpd, MySQL, and Ruby
FLPR: FreeBSD, Lighttpd, PostGreSQL, and Ruby
FLSR: FreeBSD, Lighttpd, SQLite, and Ruby
FLFR: FreeBSD, Lighttpd, Firebird, and Ruby
NAMR: NetBSD, Apache, MySQL, and Ruby
NAPR: NetBSD, Apache, PostGreSQL, and Ruby
NASR: NetBSD, Apache, SQLite, and Ruby
NAFR: NetBSD, Apache, Firebird, and Ruby
NLMR: NetBSD, Lighttpd, MySQL, and Ruby
NLPR: NetBSD, Lighttpd, PostGreSQL, and Ruby
NLSR: NetBSD, Lighttpd, SQLite, and Ruby
NLFR: NetBSD, Lighttpd, Firebird, and Ruby
Of those, my personal favorites (and, coincidentally, the most juvenile)
seem to be LAMR, LASR, LAFR, FAMR, FAPR, and FASR.