มีวิธีที่ดีในการดำเนินการคูณแบบยาวสำหรับจำนวนเต็มสองจำนวนโดยไม่ต้องทำอะไรนอกจากนับซึ่งบางครั้งจะมีการแชร์ผ่านอินเทอร์เน็ต คุณเขียนตัวเลขของแต่ละหมายเลขเป็นจำนวนบรรทัดเอียงโดยมีตัวเลขสองตัวทำมุม 90 องศา จากนั้นคุณสามารถนับการแยกในคอลัมน์แยกที่เกิดขึ้นได้ ไดอะแกรมอาจอธิบายสิ่งนี้ได้ นี่คือตัวอย่างสำหรับการคำนวณ21 * 32
:
หากคุณ google สำหรับ "การคูณด้วยภาพ / กราฟิกแบบยาว" คุณจะพบตัวอย่างอีกมากมาย
ในการท้าทายนี้คุณต้องสร้างไดอะแกรมเหล่านี้โดยใช้ ASCII art สำหรับตัวอย่างเดียวกันเอาต์พุตจะมีลักษณะดังนี้:
\ /
X /
\ / X /
\ X / X
X X / \ /
/ X X X /
/ X \ / X
/ \ X / \
X X
/ X \
/ \
อาจเป็นวิธีที่ง่ายที่สุดที่จะเข้าใจกฎการก่อสร้างสำหรับสิ่งเหล่านี้จากตัวอย่าง (ดูด้านล่าง) แต่ที่นี่มีรายละเอียดบางส่วน:
- กลุ่มตัดเป็น
X
กลุ่มที่ไม่ได้ตัดของเส้นที่มีหรือ/
\
- ควรจะมีหนึ่งส่วนที่แน่นอนหลังจากทางแยกด้านนอกสุด
- ควรมีหนึ่งส่วนที่แน่นอนระหว่างทางแยกที่เป็นของตัวเลขที่แตกต่างกัน หากไม่มีศูนย์ตัวเลขเหล่านี้จะส่งผลในการติดต่อกัน
/
หรือ\
ส่วน - คุณได้ให้การสนับสนุนการป้อนข้อมูลเชิงบวกใด ๆ (อย่างน้อยถึงขีด จำกัด บางอย่างที่เหมาะสมเช่น 2 16หรือ 2 32 ) และตัวเลขใด ๆ จากการ
0
9
แต่คุณอาจคิดว่ามีค่านำมิได้ท้าย0
s - คุณต้องไม่พิมพ์เว้นวรรคนำหน้าหรือนำหน้าหรือต่อท้ายบรรทัดว่าง
- คุณสามารถพิมพ์ช่องว่างต่อท้ายได้ แต่ต้องไม่เกินกล่องที่จัดแนวตามแนวแกนของไดอะแกรม
- คุณสามารถเลือกที่จะพิมพ์ขึ้นบรรทัดใหม่ขึ้นบรรทัดเดียว
- คุณสามารถเลือกได้ว่าจะเรียงลำดับหมายเลขใดให้คุณสองหมายเลข อย่างไรก็ตามคุณต้องสนับสนุนหมายเลขที่กำหนดเองสำหรับการวางแนวทั้งสองดังนั้นคุณจึงไม่สามารถเลือกบางอย่างเช่น "กำหนดจำนวนที่มากขึ้นก่อน"
- หากคุณรับอินพุตเป็นสตริงคุณสามารถใช้ตัวคั่นที่ไม่ใช่ตัวเลขระหว่างตัวเลขสองตัว
คุณสามารถเขียนโปรแกรมหรือฟังก์ชั่น, รับอินพุตผ่าน STDIN (หรือทางเลือกที่ใกล้เคียงที่สุด), อาร์กิวเมนต์บรรทัดคำสั่งหรืออาร์กิวเมนต์ของฟังก์ชันและส่งผลลัพธ์ผ่าน STDOUT (หรือทางเลือกที่ใกล้เคียงที่สุด), ค่าส่งคืนของฟังก์ชันหรือพารามิเตอร์
นี่คือรหัสกอล์ฟคำตอบที่สั้นที่สุด (เป็นไบต์) ชนะ
ตัวอย่าง
1*1
\ /
X
/ \
2*61
\ /
\ X /
X X /
/ X X /
/ X X /
/ X X /
/ X X
/ X \ /
/ \ X
X \
/ \
45*1
\ /
\ X
\ X \
\ X \
\ X \
X \
\ / \
\ X
\ X \
\ X \
X \
/ \
21001*209
\ /
X /
/ X
/ / \
\ / / \ /
X / X /
\ / X / X /
\ X / \ / / X /
X X \ / / / X /
/ X \ X / / / X /
/ \ \ / X / / / X /
\ X / X / / / X /
X X / X / / / X /
/ X X / X / / / X
/ X X / X / / / \
/ X X / X / /
/ X X / X /
/ X X / X
/ X X / \
/ X X
/ X \
/ \