คุณไม่ชอบไดอะแกรมมุมมองที่ระเบิดซึ่งเครื่องจักรหรือวัตถุถูกแยกออกเป็นชิ้นเล็ก ๆ หรือไม่?
ลองทำกับสตริง!
ความท้าทาย
เขียนโปรแกรมหรือฟังก์ชั่นที่
- ปัจจัยการผลิตสตริงที่มีเพียงตัวอักขระ ASCII ;
- แยกสตริงออกเป็นกลุ่มของอักขระที่ไม่เท่ากับช่องว่าง ("ส่วน" ของสตริง)
- ผลกลุ่มผู้ที่อยู่ในรูปแบบที่สะดวกใด ๆ กับบางคั่นระหว่างกลุ่ม
ตัวอย่างเช่นกำหนดสตริง
Ah, abracadabra!
ผลลัพธ์จะเป็นกลุ่มต่อไปนี้:
! , aaaaa BB ค d ชั่วโมง RR
แต่ละกลุ่มในเอาต์พุตมีอักขระที่เท่ากันโดยลบช่องว่างออก มีการใช้การขึ้นบรรทัดใหม่เป็นตัวคั่นระหว่างกลุ่ม เพิ่มเติมเกี่ยวกับรูปแบบที่อนุญาตด้านล่าง
กฎระเบียบ
การป้อนข้อมูลที่ควรจะเป็นสตริงหรืออาร์เรย์ของตัวอักษร มันจะมีเฉพาะตัวอักษร ASCII ที่พิมพ์ได้ (ช่วงรวมจากพื้นที่ถึงตัวหนอน) หากภาษาของคุณไม่รองรับคุณสามารถป้อนข้อมูลในรูปแบบของตัวเลขที่แสดงถึงรหัส ASCII
คุณสามารถสรุปได้ว่าการป้อนข้อมูลที่มีอย่างน้อยหนึ่งตัวละครที่ไม่ใช่พื้นที่
ส่งออกควรประกอบด้วยตัวอักษร (แม้ว่าใส่เป็นโดยความหมายของรหัส ASCII) จะต้องมีตัวคั่นที่ชัดเจนระหว่างกลุ่มซึ่งแตกต่างจากอักขระที่ไม่ใช่ช่องว่างที่อาจปรากฏในอินพุต
ถ้าเอาต์พุตส่งคืนโดยฟังก์ชันส่งคืนอาจเป็นอาร์เรย์หรือสตริงหรืออาร์เรย์ของ chars หรือโครงสร้างที่คล้ายกัน ในกรณีนั้นโครงสร้างให้แยกที่จำเป็น
ตัวคั่นระหว่างตัวละครของแต่ละกลุ่มเป็นตัวเลือก หากมีข้อใดข้อหนึ่งกฎเดียวกันจะมีผลบังคับใช้: จะต้องไม่ใช่อักขระที่ไม่ใช่ช่องว่างที่อาจปรากฏในอินพุต นอกจากนี้มันไม่สามารถเป็นตัวคั่นเดียวกับที่ใช้ระหว่างกลุ่ม
นอกจากนั้นรูปแบบยังยืดหยุ่น นี่คือตัวอย่างบางส่วน:
กลุ่มอาจเป็นสตริงที่คั่นด้วยการขึ้นบรรทัดใหม่ดังแสดงด้านบน
กลุ่มอาจจะแยกออกจากตัวอักษรใด ๆ ที่ไม่ใช่ ASCII
¬
เช่น เอาต์พุตสำหรับอินพุตด้านบนจะเป็นสตริง:!¬,¬A¬aaaaa¬bb¬c¬d¬h¬rr
กลุ่มอาจถูกคั่นด้วยn > 1 ช่องว่าง (แม้ว่าnคือตัวแปร) โดยมีตัวอักษรระหว่างแต่ละกลุ่มคั่นด้วยช่องว่างเดียว:
! , A a a a a a b b c d h r r
ผลลัพธ์อาจเป็นอาร์เรย์หรือรายการสตริงที่ส่งคืนโดยฟังก์ชัน
['!', 'A', 'aaaaa', 'bb', 'c', 'd', 'h', 'rr']
หรืออาร์เรย์อาร์เรย์ถ่าน:
[['!'], ['A'], ['a', 'a', 'a', 'a', 'a'], ['b', 'b'], ['c'], ['d'], ['h'], ['r', 'r']]
ตัวอย่างของรูปแบบที่ไม่อนุญาตตามกฎ:
- ไม่สามารถใช้เครื่องหมายจุลภาคเป็นตัวคั่น (
!,,,A,a,a,a,a,a,b,b,c,d,h,r,r
) เนื่องจากอินพุตอาจมีเครื่องหมายจุลภาค - ไม่อนุญาตให้วางตัวคั่นระหว่างกลุ่ม (
!,Aaaaaabbcdhrr
) หรือใช้ตัวคั่นเดียวกันระหว่างกลุ่มและภายในกลุ่ม (! , A a a a a a b b c d h r r
)
กลุ่มอาจปรากฏขึ้นตามลำดับใด ๆในผลลัพธ์ ตัวอย่างเช่น: ลำดับตัวอักษร (ตามตัวอย่างด้านบน) ลำดับของการปรากฏตัวครั้งแรกในสตริง, ... ลำดับไม่จำเป็นต้องสอดคล้องกันหรือแม้แต่กำหนด
โปรดทราบว่าอินพุตไม่สามารถมีอักขระขึ้นบรรทัดใหม่และA
และa
เป็นอักขระอื่น (การจัดกลุ่มเป็นแบบตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ )
รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ
กรณีทดสอบ
ในแต่ละกรณีทดสอบบรรทัดแรกคืออินพุตและบรรทัดที่เหลือคือเอาต์พุตโดยแต่ละกลุ่มในบรรทัดที่แตกต่างกัน
กรณีทดสอบ 1:
อ่า abracadabra! ! , aaaaa BB ค d ชั่วโมง RR
กรณีทดสอบ 2:
\ o / \ o / \ o / /// \\\ OOO
กรณีทดสอบ 3:
ผู้ชายแผนคลอง: ปานามา! ! ,, : P aaaaaaaaa ค LL มิลลิเมตร NNNN พี
กรณีทดสอบ 4:
"แสดงให้ฉันดูว่าคุณทำยังไงกับกลอุบายที่ทำให้ฉันกรี๊ด" เธอพูด "" , S aaaaa ซีซี DD eeeeeee hhhhhh ii kk mmmm n ooooo RR ssss tttttt ยู WW Y