ในยุคคลาสสิคของสตาร์บัคส์ก่อนเครื่องพิมพ์สติกเกอร์ที่ถอดเปลี่ยนได้ใหม่และเครื่องสแกนฝ่ามือชุดหูฟังแบบไดรฟ์แบบไร้สายในยุค 2000 ถึง 2,000 สตาร์บัคส์มีระบบที่กระชับสำหรับการอธิบายเครื่องดื่มด้วยไวยากรณ์ที่เข้มงวด
ในแนวตั้งบนถ้วยมีชุดกล่องที่มีฉลากซึ่งอาจมีค่าบางอย่าง:
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"
ตามหลักเหตุผลค่าเศษส่วนจะอนุญาตได้ก็ต่อเมื่อจำนวนนัดถูกหารด้วยตัวหาร; แต่สำหรับความท้าทายนี้ไม่จำเป็นต้องตรวจสอบหรือวินิจฉัยข้อผิดพลาดนี้
เขตข้อมูลภาพควรแบ่งออกเป็นองค์ประกอบที่เป็นตัวเลข (ถ้ามี) และตัวระบุขนาด หมายเลขควรจะแสดงในรูปแบบ tuple ละติน: เดี่ยวสองสามสามเท่าห้าเท่าเกิน 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
ฟิลด์ Milk อาจมีหนึ่งในสิ่งต่อไปนี้
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มักจะพูดหรือfoamywith foam
ดังนั้นสำหรับบาริสต้าเก่าพวกเขาไม่ได้ "แก้ไขคุณ" เมื่อพวกเขาทำซ้ำคำสั่งในรูปแบบที่เหมาะสม ( ดี ... บางครั้ง ) พวกเขาเพียงแค่จัดระเบียบข้อมูลเพื่อจุดประสงค์ในการจดจำรายละเอียดทั้งหมด โดย schematizing ข้อมูลการสั่งซื้อเครื่องดื่มทั้งหมดจะกลายเป็นหน่วยเดียวเพื่อวัตถุประสงค์ของการใช้จำนวนมายากล 7 บวกหรือลบ 2 ดังนั้นบาริสต้าที่มีทักษะนี้สามารถเก็บคำสั่งได้ 5-9 คำสั่งในหัวของพวกเขาหากสิ่งรบกวนอื่น ๆ ไม่กินพื้นที่ที่มากเกินไป :)