У класичні дні Starbucks перед тим, як ці новомодні наклейки-принтери та бездротовий прохідний гарнітур з пальчиковим сканером вимикаються, у суворі дні 2000-х років Starbucks створили стисну систему для опису напоїв із суворим синтаксисом та супровідною кодованою формою.
По вертикалі на чашці є серія мічених коробок, яка може містити певні значення:
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. Кожне поле та Сироп може бути об'єднанням кількох значень. Ви можете використовувати будь-який зручний субделімітер. Приклади тут використовують простір. Поле "Постріли" також є об'єднанням (можливого) числа та позначенням розміру чашки (який неявний у фізичній чашці, але природно вміщується в цьому місці в кодуванні).
Значення поля Decaf переводяться такими словами
-blank- -nothing-
X "decaf"
1/2 "half-caf"
1/3 "one-third-caf"
2/3 "two-thirds-caf"
За логікою, дробові значення допустимі лише тоді, коли кількість знімків ділиться на знаменник; але для цього завдання не потрібно виявляти та не діагностувати цю помилку.
Поле "Кадри" має бути розбито на його числовий компонент (якщо є) та ідентифікатор розміру. Число повинно бути відображене в латинській формі кортежу: одинарний, подвійний, потрійний, чотириразовий, чотирьохкратний, понад 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
Поле "Напій" містить один ідентифікатор напою.
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 замовлень у голові за умови, що інші відволікання не займають занадто багато місця для голови. :)