The Scenario
If you have been to McDonald's, you know there are numerous different ways to make a Big Mac(TM) Sandwich
(for example, you can make it with cheese or without cheese). Furthermore, you know you can enumerate
the total number of possible different sandwiches by counting the number of mutually exclusive variants per ingredient. For example:
$cheese_variants = 2; ## qw(with without)
$bun_variants = 2; ## qw(plain with_seeds)
$bun_toast_variants = 3; ## qw(non_toasted light dark )
### limited to these ingredients, there are 2 * 2 * 3 ways
### to make a Big Mac(TM) sandwich
The Problem
The manager of an expirimental McDonald's outpost on the moon wants to develop a cash register that
has a *single button* for every possible Big Mac(TM) sandwich. The manager wants to give each possible sandwich it's own unique "name" so that the clerks need only push one button in order to specify any of the possible sandwiches.
The Constraints
- The "names" of the sandwiches have to be unique.
- The "names" of the sandwiches have to be as few characters as possible, so they can fit on the small cash register.
- The "names" of the sandwiches have 'human friendly' so the clerks can get a clue of the sandwiches they represent, with as little 'rote memorization' as possible.
The Attempts So Far
- CheeseWithBunPlainToastedDark (too verbose)
- C:Yes;B:Plain;T:Dark; (no good, ingredient abbrev may collide with new ingredient names in the future, also, we cannot use chars that wont fit into a perl variable name)
- uuid_2004_dead_beef29ac_000 (no good, the clerks dont know what a uuid is, and the name should have at least *some* minimal connection to the sandwich content)
- id_002 (each digit represents an ingredient variant. It is compact, but what if there are more than 16 variants per an ingredient? We run out of digits.)
The Question
What is considered 'best practices' for deriving a naming convention such as this? Has anyone tried something similar? What is the linguistic theory or CS research topic that covers this?
The Disclaimer
- Big Mac(TM) is a trademark of McDonald's Inc. and is used only to illustrate the problem in a socially well-known context. The author neither endorses the products of, nor is afilliated with, nor makes any representation whatsoever regarding the business practices or policies of McDonald's Inc.
- The 'real' reason for this question has nothing to do with McDonald's, it is an attempt to get input on a generic inventory problem, from the perspective of the folks reading this post.
- Ignore the obvious 'real-world' problem that you would need an impractically large number of individual "names" to represent every possible sandwich. We don't care. The real goal is to come up with a compact naming system, not to make a better cash register.
- This is just out of curiousity in order to rule out possibilities that have not yet been considered.
- This is not a request for help with a homework problem.
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.