Nei tempi classici di Starbucks prima di queste nuove stampanti per adesivi e di dispositivi wireless wireless per palmari con scanner palmari, nei giorni inebrianti del 2000, Starbucks aveva un sistema conciso per descrivere le bevande con una sintassi rigorosa e una forma codificata di accompagnamento.
In verticale sulla tazza ci sono una serie di scatole etichettate che possono contenere determinati valori .:
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
Ma useremo una forma orizzontale per una più facile manipolazione. Questi sono i nomi dei 6 campi dell'input che possono essere di qualsiasi forma conveniente. Esempi qui sono CSV semplici. I campi Custom e Syrup possono essere concatenati ciascuno di diversi valori. È possibile utilizzare qualsiasi sottodelimitatore conveniente. Gli esempi qui usano lo spazio. Il campo Colpi è anche una concatenazione di un numero (possibile) e una designazione della dimensione della tazza (che è implicita nella tazza fisica ma si adatta naturalmente a questo posto nella codifica).
I valori del campo Decaf sono tradotti in parole come questa
-blank- -nothing-
X "decaf"
1/2 "half-caf"
1/3 "one-third-caf"
2/3 "two-thirds-caf"
Logicamente, i valori frazionari sono ammessi solo quando il numero di colpi è divisibile per il denominatore; ma per questa sfida non è necessario rilevare o diagnosticare questo errore.
Il campo Colpi dovrebbe essere suddiviso nel suo componente numerico (se presente) e nell'identificatore della dimensione. Il numero deve essere visualizzato in forma di tupla latina: singolo, doppio, triplo, quadruplo, quintuplo, oltre 5 basta stampare il numero e il suffisso "-tuple", ad es. 7-tuple
,16-tuple
. Le designazioni delle dimensioni sono:
S short
T tall
G grande
V venti
Per esempio.
2T double tall
3G triple grande
Il campo Sciroppo può contenere uno o più di diversi token con numero / lettercode facoltativi. Il numero massimo di uno sciroppo è 20. Anche quello è troppo. LOL.
V vanilla
C caramel
M mocha
H hazelnut
Per esempio.
2V 2C two vanilla two caramel
H hazelnut
M H 1V mocha hazelnut one vanilla
Il campo Latte può contenere uno dei seguenti.
Wh whole-milk
% two-percent
N skim
B breve
Il campo Personalizzato può contenere uno o più modificatori con facoltativo x
o -
segno.
x extra F foam
- no WC whip
M mocha drizzle
CR caramel drizzle
Il campo Drink contiene un ID drink.
E espresso
EM espresso macchiato
ECP espresso con panna
A americano
L latte
C cappuccino
CM caramel macchiato
Qualsiasi campo può essere vuoto ad eccezione della designazione delle dimensioni e dell'ID bevanda.
Esempi.
,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
Non è necessario diagnosticare intrugli errati o illogici come un "no foam ... cappuccino *.
Complicazione aggiuntiva
Solo per le bevande con la parola espresso
, il numero single
deve essere sostituito da solo
e double
deve essere sostituito da doppio
. E la dimensione può essere non specificata e omessa. Inoltre, solo per la espresso
bevanda nuda stessa, se l'unica altra specifica è una di queste due serie di colpi appositamente sostituite, allora la parola espresso
stessa dovrebbe essere omessa.
,2,1V,B,,EM => doppio one vanilla breve espresso macchiato
,1,,,,E => solo
,2,,,,E => doppio
,3,,,,E => triple espresso
Ulteriori osservazioni su "leggere una tazza"
Questa parte non è un requisito per questa sfida, ma può essere un utile perfezionamento nell'applicazione di questo tipo di sistema verbalizzato in altri domini.
Ho menzionato la sintassi all'inizio e applicando lo schema a flussi di parole in arrivo, gli ordini potevano essere trasmessi verbalmente da diversi acquirenti al barista che producevano bevande. La struttura approssimativa SIZE .... DRINK
fornisce la demarcazione tra diversi ordini pronunciati contemporaneamente. Vi è quindi la tendenza a rendere tutti gli attributi interni come frasi aggettivali, quindi l'ordine ha anche una valida struttura di frasi in inglese. Quindi whip
è spesso parlato with whip
o whipped
ed foam
è spesso parlato foamy
o with foam
.
Quindi, per alcuni baristi dei vecchi tempi , non ti "correggono" quando ripetono l'ordine nel formato corretto ( beh, ... a volte ). Stanno semplicemente organizzando le informazioni allo scopo di ricordare esattamente tutti i dettagli. Schematizzando le informazioni, un intero ordine di bevande diventa una singola unità allo scopo di applicare il numero magico 7 più o meno 2 . Quindi un barista con questa abilità può tenere in testa 5-9 ordini a condizione che altre distrazioni non consumino troppo spazio per la testa. :)