ไหลงูยังเป็นที่รู้จักโค้ง Gosperเป็นเส้นโค้งเศษส่วนเติบโตชี้แจงในขนาดที่มีการสั่งซื้อแต่ละ / ทวนของกระบวนการง่ายๆ ด้านล่างนี้เป็นรายละเอียดเกี่ยวกับการก่อสร้างและตัวอย่างบางส่วนสำหรับคำสั่งซื้อต่างๆ:
Order 1 Flow Snake :
____
\__ \
__/
คำสั่งซื้อ 2 Flow Snake :
____
____ \__ \
\__ \__/ / __
__/ ____ \ \ \
/ __ \__ \ \/
\ \ \__/ / __
\/ ____ \/ /
\__ \__/
__/
สั่งงูไหล 3 อัน :
____
____ \__ \
\__ \__/ / __
__/ ____ \ \ \ ____
/ __ \__ \ \/ / __ \__ \
____ \ \ \__/ / __ \/ / __/ / __
____ \__ \ \/ ____ \/ / __/ / __ \ \ \
\__ \__/ / __ \__ \__/ / __ \ \ \ \/
__/ ____ \ \ \__/ ____ \ \ \ \/ / __
/ __ \__ \ \/ ____ \__ \ \/ / __ \/ /
\ \ \__/ / __ \__ \__/ / __ \ \ \__/
\/ ____ \/ / __/ ____ \ \ \ \/ ____
\__ \__/ / __ \__ \ \/ / __ \__ \
__/ ____ \ \ \__/ / __ \/ / __/ / __
/ __ \__ \ \/ ____ \/ / __/ / __ \/ /
\/ / __/ / __ \__ \__/ / __ \/ / __/
__/ / __ \ \ \__/ ____ \ \ \__/ / __
/ __ \ \ \ \/ ____ \__ \ \/ ____ \/ /
\ \ \ \/ / __ \__ \__/ / __ \__ \__/
\/ / __ \/ / __/ ____ \ \ \__/
\ \ \__/ / __ \__ \ \/
\/ \ \ \__/ / __
\/ ____ \/ /
\__ \__/
__/
การก่อสร้าง
พิจารณาลำดับที่ 1 Flow Snake เพื่อสร้างเส้นทางที่มี 7 edge และ 8 vertices (ติดป้ายด้านล่างขยายความเป็นไปได้):
4____5____6
\ \
3\____2 7\
/
0____1/
ตอนนี้สำหรับแต่ละคำสั่งต่อไปคุณเพียงแค่แทนที่ขอบด้วยรูปแบบการหมุนของรูปแบบคำสั่งดั้งเดิม 1 นี้ ใช้กฎ 3 ข้อต่อไปนี้เพื่อแทนที่ขอบ:
1สำหรับขอบแนวนอนให้แทนที่ด้วยรูปร่างเดิมตามที่เป็น:
________
\ \
\____ \
/
____/
2สำหรับ/
ขอบ ( 12
ในโครงสร้างด้านบน) แทนที่ด้วยรุ่นที่หมุนได้ดังต่อไปนี้:
/
/ ____
\ / /
\/ /
/
____/
3สำหรับ\
ขอบ ( 34
และ67
ด้านบน) ให้แทนที่ด้วยรุ่นที่หมุนต่อไปนี้:
/
/ ____
\ \ \
\ \ \
\ /
\/
ตัวอย่างเช่นลำดับที่ 2 ที่มีจุดยอดจากคำสั่งซื้อที่ 1 จะมีลักษณะดังนี้
________
\ \
________ \____ \6
\ \ / /
\____ \5___/ / ____
/ \ \ \
4___/ ________ \ \ \7
/ \ \ \ /
/ ____ \____ \2 \/
\ \ \ / /
\ \ \3___/ / ____
\ / \ / /
\/ ________ \/ /
\ \ /
\____ \1___/
/
0___/
ตอนนี้สำหรับการสั่งซื้อที่สูงขึ้นคุณเพียงแค่แบ่งระดับปัจจุบันเป็นขอบของความยาว 1 /
, 1 \
หรือ 2 _
และทำซ้ำขั้นตอน โปรดทราบว่าแม้หลังจากเปลี่ยนแล้วจุดยอดที่พบบ่อยระหว่างขอบทั้งสองที่ต่อเนื่องกันนั้นยังคงเหมือนกัน
ท้าทาย
- คุณต้องเขียนฟังก์ชั่นของโปรแกรมเต็มรูปแบบที่ได้รับจำนวนเต็มเดียว
N
ผ่านทางอาร์กิวเมนต์ STDIN / ARGV / function หรือเทียบเท่าที่ใกล้เคียงที่สุดและพิมพ์ลำดับการN
ไหลของงูบน STDOUT - จำนวนเต็มอินพุทมากกว่า
0
เสมอ - ไม่ควรมีช่องว่างนำหน้าซึ่งไม่ได้เป็นส่วนหนึ่งของรูปแบบ
- ไม่ควรมีช่องว่างต่อท้ายหรือช่องว่างต่อท้ายมากพอที่จะแพทเทิร์นเพื่อเติมสี่เหลี่ยมมุมต่ำสุดที่สมบูรณ์
- ขึ้นบรรทัดใหม่ต่อท้ายเป็นทางเลือก
ข้อเท็จจริงที่สนุกสนาน
- Flow Snakes เป็นคำเล่นของ Snow Flakes ซึ่งรูปแบบนี้คล้ายกับคำสั่งที่ 2 และสูงกว่า
- โฟลว์และงูมีส่วนร่วมในรูปแบบจริง ๆ ตามรูปแบบที่สร้างขึ้นจากเส้นทางเดียวที่ไหลตลอด
- หากคุณสังเกตเห็นอย่างระมัดระวังรูปแบบลำดับ 2 (และสูงกว่า) ประกอบด้วยการหมุนของรูปแบบคำสั่ง 1 หมุนไปที่จุดสุดยอดทั่วไปของกระแสและขอบก่อนหน้า
- มีตัวแปรที่ไม่ใช่ ASCII ของ Flow Snakes ซึ่งสามารถพบได้ที่นี่และที่อื่น ๆ
นี่คือโค้ดกอล์ฟที่สั้นที่สุดในหน่วยไบต์!
ลีดเดอร์บอร์ด
โพสต์แรกของซีรีส์สร้างกระดานผู้นำ
เพื่อให้แน่ใจว่าคำตอบของคุณปรากฏขึ้นโปรดเริ่มต้นทุกคำตอบด้วยพาดหัวโดยใช้เทมเพลต Markdown ต่อไปนี้:
# Language Name, N bytes
ที่N
มีขนาดของส่งของคุณ หากคุณปรับปรุงคะแนนของคุณคุณสามารถเก็บคะแนนเก่าไว้ในพาดหัวโดยการตีพวกเขาผ่าน ตัวอย่างเช่น
# Ruby, <s>104</s> <s>101</s> 96 bytes