หมายเลขคาตาลัน ( OEIS ) มีลำดับของตัวเลขธรรมชาติมักจะปรากฏใน combinatorics
หมายเลขคาตาลันที่ n คือจำนวนคำ Dyck (สตริงที่สมดุลของวงเล็บหรือวงเล็บเช่น[[][]]
; กำหนดอย่างเป็นทางการเป็นสตริงโดยใช้อักขระสองตัวคือ a และ b เช่นว่าสตริงย่อยใด ๆ ที่เริ่มต้นจากจุดเริ่มต้นมีจำนวนอักขระมากกว่าหรือเท่ากับตัวเลข อักขระ b และสตริงทั้งหมดมีจำนวนอักขระ a และ b เท่ากัน) ที่มีความยาว 2n หมายเลขคาตาลันที่ n (สำหรับ n> = 0) ถูกกำหนดอย่างชัดเจนด้วยเช่น:
เริ่มต้นจาก n = 0 หมายเลข 20 คาตาลันแรกคือ:
1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190...
ท้าทาย
เขียนโปรแกรมหรือฟังก์ชั่นเต็มรูปแบบที่รับจำนวนเต็ม n ที่ไม่เป็นลบผ่านทาง STDIN หรือทางเลือกที่ยอมรับได้และส่งออกหมายเลขคาตาลันที่ n โปรแกรมของคุณจะต้องทำงานอย่างน้อยที่สุดสำหรับอินพุต 0-19
I / O
อินพุต
โปรแกรมของคุณต้องรับอินพุตจาก STDIN อาร์กิวเมนต์ของฟังก์ชันหรือตัวเลือกใด ๆ ที่ยอมรับได้สำหรับเมตาโพสต์นี้ คุณสามารถอ่านตัวเลขที่ป้อนเข้าเป็นการแทนทศนิยมมาตรฐานการแทนค่าแบบยูนารีหรือไบต์
- หาก (และเฉพาะในกรณี) ภาษาของคุณไม่สามารถรับข้อมูลจาก STDIN หรือทางเลือกที่ยอมรับได้มันอาจรับข้อมูลจากตัวแปร hardcoded หรือเทียบเท่าที่เหมาะสมในโปรแกรม
เอาท์พุต
โปรแกรมของคุณจะต้องส่งออกหมายเลขคาตาลันที่ n ไปยัง STDOUT ผลการทำงานหรือตัวเลือกที่ยอมรับได้ต่อเมตาโพสต์นี้ คุณสามารถส่งออกหมายเลขคาตาลันในการแทนทศนิยมมาตรฐานการเป็นตัวแทนเอกหรือไบต์
ผลลัพธ์ควรประกอบด้วยหมายเลขคาตาลันที่น่ากลัวตามด้วยตัวเลือกตามด้วยบรรทัดใหม่อย่างน้อยหนึ่งบรรทัด ไม่สามารถสร้างเอาต์พุตอื่นได้ยกเว้นเอาท์พุทคงที่ของล่ามภาษาของคุณที่ไม่สามารถระงับได้ (เช่นคำทักทายรหัสสี ANSI หรือการเยื้อง)
นี่ไม่เกี่ยวกับการค้นหาภาษาที่สั้นที่สุด นี่คือการค้นหาโปรแกรมที่สั้นที่สุดในทุกภาษา ดังนั้นฉันจะไม่ยอมรับคำตอบ
ในความท้าทายนี้ภาษาที่ใหม่กว่าความท้าทายจะยอมรับได้ตราบใดที่มีการใช้งาน ได้รับอนุญาต (และสนับสนุนให้) เขียนล่ามนี้ด้วยตัวคุณเองสำหรับภาษาที่ยังไม่ได้ใช้งานมาก่อน นอกจากนั้นต้องปฏิบัติตามกฎมาตรฐานทั้งหมดของcode-golf การส่งในภาษาส่วนใหญ่จะได้คะแนนเป็นไบต์ในการเข้ารหัสที่มีมาก่อน (ปกติคือ UTF-8) โปรดทราบว่าอนุญาตให้ใช้บิวด์อินเพื่อคำนวณหมายเลขคาตาลันที่ n
แค็ตตาล็อก
สแต็คส่วนย่อยที่ด้านล่างของโพสต์นี้สร้างแคตตาล็อกจากคำตอบ a) เป็นรายการคำตอบสั้นที่สุดต่อภาษาและ b) เป็นลีดเดอร์บอร์ดโดยรวม
เพื่อให้แน่ใจว่าคำตอบของคุณปรากฏขึ้นโปรดเริ่มคำตอบด้วยหัวข้อโดยใช้เทมเพลต Markdown ต่อไปนี้:
## Language Name, N bytes
ที่N
มีขนาดของส่งของคุณ หากคุณปรับปรุงคะแนนของคุณคุณสามารถเก็บคะแนนเก่าไว้ในพาดหัวโดยการตีพวกเขาผ่าน ตัวอย่างเช่น
## Ruby, <s>104</s> <s>101</s> 96 bytes
หากคุณต้องการรวมหลายตัวเลขไว้ในส่วนหัวของคุณ (เช่นเนื่องจากคะแนนของคุณคือผลรวมของไฟล์สองไฟล์หรือคุณต้องการแสดงรายการบทลงโทษการตั้งค่าสถานะของล่ามแยกต่างหาก) ตรวจสอบให้แน่ใจว่าคะแนนจริงเป็นตัวเลขสุดท้ายในส่วนหัว:
## Perl, 43 + 2 (-p flag) = 45 bytes
คุณสามารถทำให้ชื่อภาษาเป็นลิงค์ซึ่งจะปรากฏในตัวอย่างข้อมูล:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes