counterstringคือการจัดเรียงตัวของตัวเองอธิบายข้อมูลการทดสอบบางอย่างที่ถูกนำมาใช้ในการทดสอบซอฟต์แวร์ ไม่แน่ใจว่ามันถูกคิดค้นโดยJames Bachแต่ฉันรู้จากที่นั่น
แนวคิดมีดังนี้: ข้อมูลทดสอบประกอบด้วยเครื่องหมายดอกจัน ( *
) มากมาย ตัวเลขที่อยู่ข้างหน้าเครื่องหมายดอกจันจะบอกคุณว่าข้อมูลการทดสอบอยู่ที่จุดนั้นนานแค่ไหน หากคุณต้องการทราบตำแหน่งในข้อมูลการทดสอบที่ไม่ใช่เครื่องหมายดอกจันให้ค้นหาเครื่องหมายดอกจันล่าสุดดูที่ตัวเลขก่อนหน้านี้และเพิ่มจำนวนหลักที่ตามมา
ลำดับเริ่มต้นดังนี้:
2*4*6*8*11*14*17*20*23*
^
อย่างที่คุณเห็นเครื่องหมายดอกจันที่ทำเครื่องหมายอยู่ที่ตำแหน่ง 14
หากไฟล์เกิดขึ้นจะถูกตัดทอนดังนี้
[...]2045*20
จากนั้นคุณสามารถตรวจสอบว่ามีขีด จำกัด 2047 อักขระที่ใดที่หนึ่ง (2045 โดยที่เครื่องหมายดอกจันบวก 2 2
และ0
)
เป็นหน้าที่ของคุณในการสร้างโปรแกรมที่สั้นที่สุด (นี่คือโค้ดกอล์ฟ ) ที่ส่งออก (std :: out หรือ file หรืออะไรก็ตาม) สตริงทดสอบแบบยาวตามอำเภอใจของรูปแบบนั้น ความยาวเป็นอักขระได้รับเป็นอาร์กิวเมนต์ โปรแกรมจะสนับสนุนข้อมูลทดสอบสูงสุด 2 GB (ค่าอินพุต 2147483647 อักขระ)
ตำแหน่ง "อันตราย" ในไฟล์ 2 GB:
8*11*
98*102*
998*1003*
9998*10004*
99998*100005*
999995*1000003*
9999995*10000004*
99999995*100000005*
999999995*1000000006*
นี่ควรตอบคำถามของ@Leaky Nunหากมีการตัดสินใจระหว่าง 995 * 999 * และ 995 * 1000 * หรือคล้ายกัน: ไม่
จุดสิ้นสุดของไฟล์ 2 GB ที่มีค่าอินพุต 2147483647 คือ:
2147483640*2147483
995*999*
และ995*1000*
หรืออะไรอย่างนั้น?