ลองสร้างตาราง Nx N ของช่องว่างและขีดล่างที่สามารถใช้ในการตรวจสอบด้วยสายตาว่าจำนวนนั้นเป็นจำนวนเฉพาะหรือไม่ (N อาจเป็นจำนวนเต็มบวกใด ๆ )
กริดนี้มีกฎง่าย ๆ สามข้อ:
- คอลัมน์ที่ n ประกอบด้วยรูปแบบการซ้ำของขีดล่าง n - 1 ตามด้วยช่องว่างหนึ่งช่อง รูปแบบนี้เริ่มที่แถวแรกและหยุดอาจเป็นรูปแบบกลางที่แถว N (แถวและคอลัมน์มีการจัดทำดัชนี 1 รายการ)
- คอลัมน์แรกจะถูกแทนที่ด้วยขีดล่างทั้งหมดแทนช่องว่างทั้งหมด
- หากมีช่องว่างเกิดขึ้นที่ใดที่หนึ่งดัชนีแถวเท่ากับดัชนีคอลัมน์มันจะถูกแทนที่ด้วยเครื่องหมายขีดล่าง
ตัวอย่าง: N = 10
1
1234567890 <-- column indices
1__________
2__________
3__________
4_ ________
5__________
6_ _______
7__________
8_ _ ______
9__ _______
10_ __ _____
^ row indices
ดัชนีเป็นเพียงเพื่อความชัดเจน กริดธรรมดานั้นเอง (สิ่งที่โปรแกรมของคุณจะต้องมีเอาต์พุต) คือ:
__________
__________
__________
_ ________
__________
_ _______
__________
_ _ ______
__ _______
_ __ _____
สังเกตว่า:
- คอลัมน์แรกคือขีดล่างทั้งหมด
- คอลัมน์ที่สองไปที่ช่องว่างขีดล่างขีดล่างช่องว่าง ฯลฯ ยกเว้นขีดล่างบนแถว 2
- คอลัมน์ที่สามจะขีดเส้นใต้ขีดล่างช่องว่างขีดล่างขีดล่างช่องว่าง ฯลฯ ยกเว้นขีดล่างบนแถว 3
- เป็นต้น
นอกจากนี้โปรดสังเกตว่านอกเหนือจาก 1 เฉพาะแถวที่มีหมายเลขเฉพาะเท่านั้นที่มีขีดล่างในทุกคอลัมน์
เนื่องจากขีดล่างขยายความกว้างของแบบอักษรทั้งหมดแถวที่มีหมายเลขเฉพาะแต่ละแถวจะทำให้เกิดเส้นทึบต่อเนื่อง ดังนั้นการตรวจสอบว่าตัวเลขนั้นดีหรือไม่ง่ายนัก เพียงตรวจสอบว่าบรรทัดนั้นเป็นเส้นทึบในทุกคอลัมน์หรือไม่ (ในความเป็นจริงแล้วมองขึ้นไปที่รากที่สองของความพอเพียงของดัชนีแถว แต่เอาท์พุทกริดนั้นดูสง่างามกว่า
โปรแกรม
เขียนโปรแกรมที่จะวาดกริดเหล่านี้ให้ N ผ่าน stdin (หรือทางเลือกที่ใกล้เคียงที่สุด) เอาต์พุตไปที่ stdout (หรือตัวเลือกที่ใกล้เคียงที่สุด) และควรมีช่องว่างเครื่องหมายขีดล่างและบรรทัดใหม่เท่านั้นโดยขึ้นบรรทัดใหม่ที่เป็นตัวเลือก
รหัสที่สั้นที่สุดชนะ
nสาย, th ทำให้kตัวอักษร TH พื้นที่ถ้าkเป็นตัวหารของmที่ไม่ได้ 1 mหรือ
