在这些新颖的不干胶标签打印机和无线穿透式耳机掌上扫描仪交易问世之前的星巴克的经典时期,在2000年代的鼎盛时期,星巴克拥有简洁的系统,以严格的语法和随附的编码形式描述饮料。
在杯子的垂直方向上,有一系列带有标签的盒子,其中可能包含某些值:
Decaf
[ ] -blank- X 1/2 1/3 2/3
Shots
[ ] -blank- 0 1 2 3 ... 20 followed by S T G V
Syrup
[ ] -blank- V M C H
Milk
[ ] -blank- Wh % N B
Custom
[ ] -blank- ((-|x)?(F|WC|M|CR) )+
Drink
[ ] E EM ECP A L C CM
但是我们将使用水平形式以便于操作。这些是输入的6个字段的名称,可以是任何方便的形式。这里的示例是简单的CSV。“自定义”字段和“糖浆”字段可以分别是多个值的串联。您可以使用任何方便的子定界符。这里的示例使用空格。Shots字段也是一个(可能的)数字和一个杯子尺寸的名称的串联(这在物理杯子中是隐式的,但在编码中自然适合此位置)。
Decaf字段值被翻译成这样的单词
-blank- -nothing-
X "decaf"
1/2 "half-caf"
1/3 "one-third-caf"
2/3 "two-thirds-caf"
从逻辑上讲,分数值仅在拍摄数量可被分母整除时才被允许;但对于此挑战,无需检测或诊断此错误。
Shots字段应分为其数字部分(如果存在)和大小标识符。数字应以拉丁元组形式显示:单,双,三元组,四元组,五元组,超过5则只需打印数字和后缀“ -tuple”即可。7-tuple,16-tuple。尺寸名称为:
S short
T tall
G grande
V venti
例如。
2T double tall
3G triple grande
糖浆字段可能包含一个或多个可选数字/字母代码标记。糖浆的最大数量为20。即使太高了。大声笑。
V vanilla
C caramel
M mocha
H hazelnut
例如。
2V 2C two vanilla two caramel
H hazelnut
M H 1V mocha hazelnut one vanilla
该牛奶场可以包含一个以下的。
Wh whole-milk
% two-percent
N skim
B breve
自定义字段可能包含几个带有可选x或-符号的修饰符中的一个或多个。
x extra F foam
- no WC whip
M mocha drizzle
CR caramel drizzle
饮料字段包含一个饮料ID。
E espresso
EM espresso macchiato
ECP espresso con panna
A americano
L latte
C cappuccino
CM caramel macchiato
除尺寸名称和饮料编号外,任何字段都可以为空白。
例子。
,3G,V,Wh,,L => triple grande vanilla whole-milk latte
X,2T,,N,,L => decaf double tall skim latte
1/2,V,,,,CM => half-caf venti caramel macchiato
2/3,3V,3V,B,WC,L => two-thirds-caf triple venti three vanilla breve whip latte
,G,,,xCR,CM => grande extra caramel drizzle caramel macchiato
X,4T,2M 2C,B,xWC -F xM,C =>
decaf quadruple tall two mocha two caramel breve extra whip no foam extra mocha drizzle cappuccino
无需诊断诸如“无泡沫...卡布奇诺*”之类的错误或不合逻辑的混合物。
额外并发症
仅对于带单词的饮料espresso,该数字single应该用solo和double代替doppio。并且尺寸可以是未指定和省略的。同样,仅针对裸露espresso饮料本身,如果唯一的其他规格是这两个专门替换的拍摄次数之一,espresso则应省略单词本身。
,2,1V,B,,EM => doppio one vanilla breve espresso macchiato
,1,,,,E => solo
,2,,,,E => doppio
,3,,,,E => triple espresso
关于“读书”的其他意见
这部分不是此挑战的必要条件,但可能是在其他领域应用这种语言化系统的有用改进。
我在一开始就提到了语法,通过将模式应用于传入的单词流,订单可以由几个接单员口头传递给制作饮料的咖啡师。粗略的框架SIZE .... DRINK提供了一次说出的几个命令之间的界限。因此,倾向于将所有内部属性都用作形容词短语,因此该顺序也具有有效的英语名词短语结构。因此,whip往往是口头with whip或whipped并foam经常讲foamy或with foam。
因此,对于一些老式的咖啡师,当他们以正确的格式重复命令时,他们并不会“纠正您”(嗯,...有时)。他们只是为了准确记住所有细节而组织信息。通过对信息进行模式化,整个饮料订单将变成一个单位,以应用7或2的幻数。因此,具备此技能的咖啡师可以将5-9份订单保留在他们的头脑中,前提是其他干扰因素不会占用太多的头部空间。:)