คุณได้รับการว่าจ้างให้เขียนรหัสบางส่วนสำหรับแอปที่เขียนตามคำบอกซึ่งใช้การป้อนข้อมูลด้วยเสียงจากแหล่งพูดพูดแยกเป็นคำและเขียนลงบนหน้าจอ
ฝ่ายบริหารไม่เชื่อใจคุณในทุกสิ่งที่มีพลังมากในโครงการ - คุณรู้จักที่จะนั่งรอบ ๆ และตีกอล์ฟตลอดทั้งวันแทนที่จะทำงานของคุณโชคไม่ดี - พวกเขาแค่ให้งานง่าย ๆ แก่คุณเท่านั้น: เปลี่ยน ประโยคที่มีเครื่องหมายวรรคตอนสลับกันเป็นประโยคที่จัดรูปแบบอย่างถูกต้องโดยกำหนด 'รูปแบบที่เหมาะสม' ไว้ด้านล่าง
ประโยคเป็นสตริงของอินพุต Word เป็นกลุ่มของอักขระที่ไม่ใช่ช่องว่างที่ต่อเนื่อง
^เครื่องหมายวรรคตอนเป็นคำที่มีตัวอักษรตัวแรกคือคำจะเป็นตัวพิมพ์ใหญ่หากตัวอักษรตัวแรกของ Word ไม่ใช่ตัวพิมพ์เล็ก (คำที่เป็นตัวพิมพ์ใหญ่จะตรงกับ regex
/[^a-z].*/)คำแรกของประโยคจะต้องเป็นตัวพิมพ์ใหญ่
A
^COMMAคืออักขระเครื่องหมายจุลภาค,และมีช่องว่างหลัง แต่ไม่นำหน้า จะกลายเป็นaaa ^COMMA bbbaaa, bbbเป็นเครื่องหมายจุลภาคที่มีลักษณะเหมือน
^COLON:เป็นเครื่องหมายจุลภาคที่มีลักษณะเหมือน
^SEMICOLON;เป็นเครื่องหมายจุลภาคที่มีลักษณะเหมือน
^PERIOD.คำต่อไปนี้^PERIODจะต้องเป็นตัวพิมพ์ใหญ่เป็นช่วงเวลาที่ดูเหมือนว่า
^BANG!A
^DASHคืออักขระเส้นประ-และมีช่องว่างทั้งก่อนหน้าและถัดไปA
^HYPHENเป็นอักขระเส้นประ-แต่ไม่มีที่ว่างในการติดตามหรือนำหน้า^EMDASHคือยัติภังค์ (ไม่รีบ!)--ที่จะสะกดAn
^OPENQUOTEเป็นอักขระเครื่องหมายคำพูด"ที่มีช่องว่างนำหน้า แต่ไม่ได้ติดตาม คำต่อไปนี้^OPENQUOTEจะต้องเป็นตัวพิมพ์ใหญ่ หาก^OPENQUOTEจะนำหน้าด้วยคำที่ไม่ได้เป็นเครื่องหมายวรรคตอนเพิ่มระหว่างคำว่าและ^COMMA^OPENQUOTEหาก a^OPENQUOTEนำหน้าด้วยเครื่องหมายวรรคตอนที่ทำให้คำถัดไปเป็นตัวพิมพ์ใหญ่คำนี้จะข้าม^OPENQUOTEไปที่คำถัดไปA
^CLOSEQUOTEคือ digraph,"ที่มีช่องว่างตามหลัง แต่ไม่นำหน้า หาก^CLOSEQUOTEนำโดย^COMMA,^PERIODหรือ^BANGที่เครื่องหมายวรรคตอนหายไปและ^CLOSEQUOTEถูกสะกด,",."หรือ!"ตามลำดับ หากเครื่องหมายวรรคตอนที่หายไประบุการใช้อักษรตัวพิมพ์ใหญ่การใช้อักษรตัวพิมพ์ใหญ่นั้นจะต้องเกิดขึ้นกับคำถัดไปที่มีอยู่ช่องว่างเริ่มต้นหรือต่อท้ายในผลลัพธ์สุดท้ายเต็มรูปแบบจะต้องถูกลบออกและสตริงใด ๆ ของสองหรือมากกว่าช่องว่างในแถวจะต้องถูกยุบลงในอักขระช่องว่างเดียว
กรณีใด ๆ ที่ไม่ได้กล่าวถึงข้างต้น (เช่น
^COMMA ^COMMAหรือ^SEMICOLON ^CLOSEQUOTEหรือ^UNDEFINEDPUNCTUATION) จะไม่เกิดขึ้นในอินพุตที่มีรูปแบบที่เหมาะสมและเป็นพฤติกรรมที่ไม่ได้กำหนดไว้
ทีมพัฒนาแจ้งให้คุณทราบดังต่อไปนี้:
โครงการกำลังเขียนเป็นภาษา[ภาษาของคุณที่นี่]และควรสั้นที่สุดเท่าที่จะเป็นไปได้เพื่อให้ใช้พื้นที่น้อยที่สุดเมื่อเป็นแอพสำหรับ Android / iPhone คุณพยายามอธิบายว่านั่นไม่ใช่วิธีการพัฒนาแอป แต่พวกเขาไม่ฟัง แต่เดี๋ยวก่อนช่างเป็นเรื่องบังเอิญ! คุณเป็นนักกอล์ฟที่ยอดเยี่ยมใน[ภาษาของคุณที่นี่] !
แอปจะไม่มีสิทธิ์การเข้าถึงเว็บใด ๆ และจะไม่มีห้องสมุดใด ๆ ที่ติดตั้งซึ่งจัดรูปแบบนี้ให้คุณ คุณอาจโน้มน้าวให้ทีมนำไปสู่การอนุญาตให้คุณใช้ไลบรารี regex หากมีอยู่ในภาษาของคุณ แต่ถ้าคุณคิดว่าคุณต้องการ
การสนับสนุนใบเสนอราคาซ้อนที่ใช้เครื่องหมายคำพูดคู่ / เดี่ยวได้รับการวางแผนอย่างถูกต้องสำหรับแอปเวอร์ชันที่ใหม่กว่า แต่ไม่ใช่เวอร์ชันที่คุณใช้งานอยู่ในขณะนี้ดังนั้นอย่ากังวลเกี่ยวกับเรื่องนี้
ฝ่ายบริหารเป็นแฟนตัวยงของการพัฒนาที่ขับเคลื่อนด้วยการทดสอบดังนั้นทีมนักพัฒนาจึงมีลิงคีย์บอร์ดที่โชคดีที่เขียนการทดสอบบางส่วนสำหรับโปรแกรมของคุณ: (เพิ่มบรรทัดใหม่เพื่อให้สามารถอ่านได้
การป้อนข้อมูล:
hello ^COMMA world ^BANGเอาท์พุท:
Hello, world!การป้อนข้อมูล:
once upon a time ^COMMA there was a horse ^PERIOD that horse cost me $50 ^PERIOD ^OPENQUOTE eat your stupid oats ^COMMA already ^BANG ^CLOSEQUOTE I told the horse ^PERIOD the horse neighed back ^OPENQUOTE no ^CLOSEQUOTE and died ^PERIOD THE ENDเอาท์พุท:
Once upon a time, there was a horse. That horse cost me $50. "Eat your stupid oats, already!" I told the horse. The horse neighed back, "No," and died. THE ENDการป้อนข้อมูล:
begin a ^PERIOD b ^COMMA c ^COLON d ^SEMICOLON e ^BANG f ^HYPHEN g ^DASH h ^EMDASH i ^OPENQUOTE j ^PERIOD ^OPENQUOTE k ^SEMICOLON ^OPENQUOTE l ^CLOSEQUOTE m ^BANG ^CLOSEQUOTE n ^PERIOD 0x6C6F6C endเอาท์พุท:
Begin a. B, c: d; e! F-g - h--i, "j. "K; "l," m!" N. 0x6C6F6C end
นี่คือรหัสกอล์ฟ: คะแนนต่ำสุดชนะ คุณสามารถเขียนฟังก์ชันของอาร์กิวเมนต์สตริงหนึ่งตัวหรือโปรแกรมอ่านจาก STDIN และเขียนไปยัง STDOUT
prompt()?