В классические времена 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
Поле Syrup может содержать один или несколько из нескольких маркеров необязательного числа / буквенного кода. Максимальное количество сиропа - 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 приказов, если другие отвлекающие факторы не занимают слишком много места в голове. :)