En los días clásicos de Starbucks, antes de estas nuevas e innovadoras impresoras de adhesivos y unidades de escáner inalámbrico con auriculares inalámbricos, en los embriagadores días del 2000, Starbucks tenía un sistema conciso para describir bebidas con una sintaxis estricta y una forma codificada.
Verticalmente en la taza hay una serie de cajas etiquetadas que pueden contener ciertos valores .:
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
Pero usaremos una forma horizontal para una manipulación más fácil. Estos son los nombres de los 6 campos de la entrada que pueden ser cualquier forma conveniente. Los ejemplos aquí son CSV simples. El campo personalizado y los campos de jarabe pueden ser una concatenación de varios valores. Puede usar cualquier subdelimitador conveniente. Los ejemplos aquí usan espacio. El campo Disparos también es una concatenación de un número (posible) y una designación del tamaño de la copa (que está implícito en la copa física pero que naturalmente encaja en este lugar en la codificación).
Los valores del campo Decaf se traducen en palabras como esta
-blank- -nothing-
X "decaf"
1/2 "half-caf"
1/3 "one-third-caf"
2/3 "two-thirds-caf"
Lógicamente, los valores fraccionales solo están permitidos cuando el número de disparos es divisible por el denominador; pero para este desafío no es necesario detectar o diagnosticar este error.
El campo Disparos debe dividirse en su componente numérico (si está presente) y el identificador de tamaño. El número debe mostrarse en forma de tupla latina: simple, doble, triple, cuádruple, quíntuple, más allá de 5 simplemente imprima el número y el sufijo "-tupla", es decir. 7-tuple
,16-tuple
. Las designaciones de tamaño son:
S short
T tall
G grande
V venti
P.ej.
2T double tall
3G triple grande
El campo Jarabe puede contener uno o más de varios tokens de números / letras opcionales. La cantidad máxima de un jarabe es 20. Incluso eso es demasiado. Jajaja
V vanilla
C caramel
M mocha
H hazelnut
P.ej.
2V 2C two vanilla two caramel
H hazelnut
M H 1V mocha hazelnut one vanilla
El campo Leche puede contener uno de los siguientes.
Wh whole-milk
% two-percent
N skim
B breve
El campo Personalizado puede contener uno o más de varios modificadores con opcional x
o -
signo.
x extra F foam
- no WC whip
M mocha drizzle
CR caramel drizzle
El campo Bebida contiene una identificación de bebida.
E espresso
EM espresso macchiato
ECP espresso con panna
A americano
L latte
C cappuccino
CM caramel macchiato
Cualquier campo puede estar en blanco, excepto la designación del tamaño y la identificación de la bebida.
Ejemplos.
,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
No es necesario diagnosticar brebajes erróneos o ilógicos, como un "capuchino sin espuma ...".
Complicación adicional
Solo para las bebidas con la palabra espresso
, el número single
debe ser reemplazado por solo
y double
debe ser reemplazado por doppio
. Y el tamaño puede ser no especificado y omitido. Además, solo para la espresso
bebida en sí, si la única otra especificación es uno de estos dos números de disparos especialmente reemplazados, entonces la palabra en espresso
sí debe omitirse.
,2,1V,B,,EM => doppio one vanilla breve espresso macchiato
,1,,,,E => solo
,2,,,,E => doppio
,3,,,,E => triple espresso
Observaciones adicionales sobre 'leer una copa'
Esta parte no es un requisito para este desafío, pero puede ser un refinamiento útil en la aplicación de este tipo de sistema verbalizado en otros dominios.
Mencioné la sintaxis al principio, y al aplicar el esquema a las corrientes entrantes de palabras, varios encargados de pedidos podían transmitir verbalmente las órdenes al barista que hacía las bebidas. El marco general SIZE .... DRINK
proporciona la demarcación entre varias órdenes pronunciadas a la vez. Por lo tanto, existe una tendencia a hacer que todos los atributos interiores sean frases adjetivas, por lo que el orden también tiene una estructura válida de sustantivos en inglés. Por whip
lo tanto, a menudo se habla with whip
o whipped
y a foam
menudo se habla foamy
o with foam
.
Por lo tanto, para algunos baristas de la antigüedad , no te "corrigen" cuando repiten el orden en el formato adecuado ( bueno, ... a veces ). Simplemente están organizando la información con el propósito de recordar todos los detalles exactamente. Al esquematizar la información, un pedido completo de bebidas se convierte en una sola unidad con el fin de aplicar el número mágico 7 más o menos 2 . Por lo tanto, un barista con esta habilidad puede mantener 5-9 órdenes en su cabeza siempre que otras distracciones no consuman demasiado espacio para la cabeza. :)