วัตถุประสงค์
เขียนรูทีนที่ยอมรับสตริงของอักขระ ASCII ที่พิมพ์ได้sและส่งคืนสตริงที่มีอักขระเดียวกับsเรียงลำดับใหม่เพื่อให้ไม่มีสตริงย่อยสองอักขระปรากฏมากกว่าหนึ่งครั้ง โปรแกรมต้องประมวลผลสตริงมาตรฐานทั้งหมด (ดูด้านล่าง) ในภายใต้หนึ่งนาทีในแต่ละบนคอมพิวเตอร์ที่ทันสมัย ฉันยังจะได้รับรางวัลโบนัสพิเศษของ50 ตัวแทนไปที่คำตอบให้คะแนนต่ำสุดที่ประมวลผลใด ๆสตริงอักขระ 30 ตัวที่ถูกต้องในภายใต้หนึ่งนาที
ตัวอย่างเช่นเมื่อรับอินพุตMississippi
เอาต์พุตที่ถูกต้องจะเป็นissiMspiips
(ไม่มีสตริงย่อยสองอักขระปรากฏสองครั้ง) ในขณะที่เอาต์พุตไม่ถูกต้องipMsispiiss
(เนื่องจากสตริงย่อยis
ปรากฏสองครั้ง)
รูทีนอาจอยู่ในรูปของ:
- โปรแกรมที่สมบูรณ์อ่านจาก
stdin
(หรือเทียบเท่า) หรือบรรทัดคำสั่งและส่งออกไปยังstdout
(หรือเทียบเท่า) - ฟังก์ชั่นที่ยอมรับอาร์กิวเมนต์สตริงเดี่ยวและส่งคืนสตริง
คุณอาจสมมติว่าสายป้อนข้อมูลยอมรับอย่างน้อยหนึ่งเอาต์พุตที่ถูกต้อง
ความท้าทาย
ชุดคำสั่งของคุณจะต้องประกอบด้วยรหัสอย่างน้อย 5 บรรทัดคั่นด้วยบรรทัดใหม่ บรรทัดว่าง (ซึ่งรวมถึงบรรทัดที่มีเพียงช่องว่างเท่านั้น) จะถูกละเว้นในบริบททั้งหมดและไม่นับรวมในการนับบรรทัดทั้งหมด
การสลับสองบรรทัดในซอร์สโค้ดของคุณต้องสร้างข้อผิดพลาดร้ายแรง โดย "ข้อผิดพลาดร้ายแรง" เราอ้างถึงเงื่อนไขใด ๆ ต่อไปนี้:
- ซอร์สโค้ดไม่สามารถคอมไพล์ด้วยคอมไพเลอร์ / ล่ามประกาศข้อผิดพลาดร้ายแรง
- รูทีนจะยกเลิกพร้อมกับข้อผิดพลาดร้ายแรงขณะทำงานหรือข้อยกเว้นรันไทม์ที่ไม่ได้จัดการ
- รูทีนถูกบังคับให้หยุดทำงานโดยกะทันหันผิดปกติของโปรแกรมที่ไม่สร้างเอาต์พุตใด ๆ ยกเว้นข้อความแสดงข้อผิดพลาดที่เป็นไปได้และ / หรือสแต็คดัมพ์
หรือมิฉะนั้นบล็อกที่ต่อเนื่องกันของรหัสที่ไม่มีอักขระบรรทัดใหม่อาจถูกใช้แทนบรรทัด บล็อกเหล่านี้ควรจะแสดงในบรรทัดของตนเองในไฟล์ต้นฉบับด้วยความเข้าใจว่าการขึ้นบรรทัดใหม่ถูกตัดออกก่อนที่จะคอมไพล์ / ตีความ
ตัวอย่างเช่นรหัส
aaaa
bbbb
cccc
จะรวมตัวกับ
aaaabbbbcccc
ก่อนที่จะถูกประเมิน
ในโหมดนี้เงื่อนไขข้อผิดพลาดร้ายแรงจะใช้กับการสลับบล็อคโค้ดสองรายการใด ๆ (และเพื่อทำการสลับบรรทัดในซอร์สโค้ดก่อนจะขึ้นบรรทัดใหม่) ดังนั้นในตัวอย่างข้างต้นปฏิบัติaaaaccccbbbb
, bbbbaaaacccc
และccccbbbbaaaa
ต้องข้อผิดพลาดร้ายแรงผลิตทั้งหมดทั้งที่ compiletime หรือรันไทม์
การส่งโดยใช้โหมดทางเลือกนี้ควรประกาศการใช้งาน
เกณฑ์การให้คะแนน
ให้nเป็นจำนวนของช่องข้อความที่ไม่ว่างเปล่าในไฟล์ต้นฉบับของคุณโดยมีn ≥ 5 ให้cเป็นจำนวนไบต์ที่ประกอบด้วยบรรทัดข้อความที่ยาวที่สุด (โดยความยาวไบต์) ในไฟล์ต้นฉบับของคุณโดยไม่นับบรรทัดใหม่ที่ต่อท้าย
คะแนนของการส่งมอบให้โดยc ( n + 10)
การส่งที่มีคะแนนต่ำสุดคือผู้ชนะ
ขอให้โชคดี ;)
เกณฑ์มาตรฐาน
Abracadabra Alacazam
Is Miss. Mississauga Missing?
Ask Alaska's Alaskans
GGGGAAAATTTTCCCCgggaaatttccc
A Man A Plan A Canal Panama
Mspiisiipss
ถูกต้องตั้งแต่การทำซ้ำเพียงอย่างเดียวii
ซึ่งไม่ได้เกิดขึ้นในMississippi
?
CooliO
เอาท์พุทoOoCli
?