การเขียนโปรแกรมปริศนา & รหัสกอล์ฟ

คำถาม & คำตอบสำหรับผู้ชื่นชอบการเขียนโปรแกรมปริศนา

28
ส่งออกข้อความ Arecibo
ข้อความ Arecibo เป็นข้อความวิทยุระหว่างดวงดาวปี 1974 ซึ่งมีข้อมูลพื้นฐานเกี่ยวกับมนุษยชาติและโลกที่ส่งไปยังกระจุกดาวทรงกลม M13 ด้วยความหวังว่าหน่วยข่าวกรองต่างดาวอาจได้รับและถอดรหัส ... ข้อความประกอบด้วยเลขฐานสอง 1,679 ประมาณ 210 ไบต์ ... เลือกหมายเลข 1,679 เนื่องจากเป็น semiprime (ผลิตภัณฑ์ของจำนวนเฉพาะสองหมายเลข) ที่จะจัดเรียงเป็นแถว 73 แถวโดย 23 คอลัมน์ การจัดเรียงทางเลือก 23 แถวคูณ 73 คอลัมน์สร้างชุดอักขระที่ไม่สามารถเข้าใจได้ (เช่นเดียวกับรูปแบบ X / Y อื่น ๆ ทั้งหมด) นี่คือข้อความที่เพิ่มสีเพื่อเน้นส่วนต่าง ๆ การส่งสัญญาณไบนารีจริงไม่มีข้อมูลสี ที่มา: Wikipedia งานของคุณคือการส่งออกข้อความ Arecibo ในการจัดเรียง 23x73 ที่แน่นอนที่แสดงในภาพ รูปแบบเอาต์พุตใด ๆ เหล่านี้ยอมรับได้: ข้อความโดยใช้อักขระหนึ่งตัวสำหรับหนึ่งตัวและอีกหนึ่งตัวเป็นศูนย์ …

23
พหุนามพิมพ์สวย
บทนำ มนุษย์เป็นเผ่าพันธุ์ที่น่าทึ่ง แต่เราก็อาจจะเข้าใจได้ยากในบางครั้ง - โดยเฉพาะอย่างยิ่งสำหรับคอมพิวเตอร์ โดยเฉพาะอย่างยิ่งเราดูเหมือนจะชอบเขียนชื่อพหุนามในรูปแบบที่ซับซ้อนมากและมีกฎเกณฑ์ที่ไม่เจาะจง โปรแกรมสั้นที่สุดที่คุณสามารถเขียนเพื่อจัดรูปแบบพหุนามถูกต้องโดยใช้กฎเหล่านี้คืออะไร ท้าทาย อินพุต รายการจำนวนเต็มระหว่าง -1000 ถึง 1,000 (รวม) แสดงถึงค่าสัมประสิทธิ์ของพหุนามกับรายการสุดท้ายเป็นค่าสัมประสิทธิ์ของ x ^ 0 (ค่าคงที่) ครั้งที่สองเป็นค่าสัมประสิทธิ์ของ x ^ 1 เป็นต้น เอาท์พุต สตริงที่แสดงพหุนามนี้ในรูปแบบทางคณิตศาสตร์ที่จัดรูปแบบอย่างถูกต้องของมนุษย์ กฎ: เครื่องหมายบนสัมประสิทธิ์นำจะแสดงเฉพาะเมื่อมันเป็นลบ Right: -x^2+3 Wrong: +x^2+3 ส่วนประกอบที่มีค่าสัมประสิทธิ์เป็น 0 จะไม่ถูกพิมพ์ (ยกเว้นกรณีมุมซึ่งค่าสัมประสิทธิ์ทั้งหมดเป็น 0 *) Right: x^5-x^2+3 Wrong: x^5+0x^4+0x^3-x^2+0x+3 ค่าสัมประสิทธิ์-1และ+1จะแสดงโดยไม่ต้อง 1 ยกเว้นว่าเป็นค่าคงที่ Right: x^5-x^2+1 Wrong: 1x^5-1x^2+1 เลขชี้กำลังจะแสดงก็ต่อเมื่อมันมีค่ามากกว่า …

22
ซ่อนเข็มไว้ในกองหญ้า (ตำรวจ)
นี่เป็นส่วนหนึ่งของการท้าทายของตำรวจและโจร ไปที่นี่เพื่อเป็นส่วนหนึ่งของพวกโจร The Cops 'Challenge Haystackคุณควรจะเขียนโปรแกรมหรือฟังก์ชั่นในภาษาที่คุณเลือกซึ่งเอาท์พุทสตริง แต่ก็ต้องเป็นไปได้ที่จะเอาชุดย่อยบางส่วนของตัวละครจากโปรแกรมของคุณ (โดยไม่ต้องเรียงลำดับส่วนที่เหลือ) เช่นว่าสตริงส่งผลเป็นยังเป็นโปรแกรมที่ถูกต้องในภาษาเดียวกันซึ่งจะพิมพ์Needleแทน ทั้งสองโปรแกรม / ฟังก์ชั่นอาจเลือกพิมพ์บรรทัดใหม่ขึ้นบรรทัดเดียว (แยกจากกัน) แต่ไม่มีอะไรอื่น เอาต์พุตต้องคำนึงถึงขนาดตัวพิมพ์และต้องเป็นไปตามปลอกที่ให้มา แน่นอนว่าเป้าหมายของคุณคือซ่อน "เข็ม" ไว้อย่างดี แต่ทราบว่าส่งของคุณสามารถแตกกับใด ๆวิธีการแก้ปัญหาที่ถูกต้องไม่ได้เป็นเพียงคนที่คุณตั้งใจ โปรดระบุในคำตอบของคุณ: ภาษา (และเวอร์ชันหากเกี่ยวข้อง) ของการส่งของคุณ ขนาดของโปรแกรม Haystack ในหน่วยไบต์ โปรแกรม Haystack นั้นเอง วิธีการส่งออกถ้ามันไม่ได้เป็น STDOUT หากเป็นไปได้ให้ลิงก์ไปยังล่าม / ผู้แปลออนไลน์สำหรับภาษาที่คุณเลือก การส่งของคุณอาจเป็นโปรแกรมหรือฟังก์ชั่น แต่ไม่ใช่ตัวอย่างและคุณต้องไม่ถือว่าสภาพแวดล้อม REPL คุณต้องไม่รับอินพุตใด ๆ และคุณสามารถส่งออกผ่านทาง STDOUT, ค่าส่งคืนของฟังก์ชันหรือพารามิเตอร์ function (out) ทั้งสองโปรแกรม / ฟังก์ชั่นจะต้องเสร็จสิ้นภายใน 5 วินาทีบนเครื่องเดสก์ท็อปที่เหมาะสมและจำเป็นต้องกำหนดไว้ล่วงหน้า …

30
Terza Rima ที่ยาวมาก ๆ
ลักษณะ เอาท์พุทรูปแบบสัมผัสสำหรับ Terza Rima ที่ยาวมาก อินพุต ไม่มี. เอาท์พุต ABA BCB CDC DED EFE FGF GHG HIH IJI JKJ KLK LML MNM NON OPO PQP QRQ RSR STS TUT UVU VWV WXW XYX YZY กฎระเบียบ คุณสามารถเลือกระหว่างการแยกบทด้วยช่องว่างหรือบรรทัดใหม่ดังนั้น: ABA BCB... หรือ ABA BCB ... อนุญาตให้ใช้ช่องว่างต่อท้ายหนึ่งบรรทัดต่อบรรทัดและอนุญาตให้ขึ้นบรรทัดใหม่ได้หนึ่งบรรทัด เอาต์พุตอาจเป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็กก็ได้ นี่คือโค้ดกอล์ฟดังนั้นโค้ดที่สั้นที่สุดเป็นไบต์สำหรับแต่ละภาษาจะชนะ

23
เอาท์พุท Trinity Hall Prime
ขึ้นอยู่กับคำถาม Math.SE นี้ ; จำนวนที่คัดลอกมาจากคำตอบนี้ แน่นอนว่ามาจากวิดีโอ Numberphile งานของคุณคือส่งออกหมายเลขเฉพาะ 1350 หลักต่อไปนี้: 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888111111111111111111111111888888111111111111111111111111888888111111811111111118111111888888111118811111111118811111888888111188811111111118881111888888111188811111111118881111888888111888811111111118888111888888111888881111111188888111888888111888888111111888888111888888111888888888888888888111888888111888888888888888888111888888111888888888888888888111888888811188888888888888881118888188811188888888888888881118881188881118888888888888811188881118888111888888888888111888811111888811118888888811118888111111188881111111111111188881111111118888111111111111888811111111111888811111111118888111111111111188881111111188881111111111111118888811118888811111111111111111888881188888111111111111111111118888888811111111111111111111111888888111111111111111111111111118811111111111111111111111111111111111111111111062100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 คุณอาจเลือกที่จะรวมบรรทัดใหม่ในผลลัพธ์ กฎระเบียบ นี่คือkolmogorov-complexดังนั้นจึงไม่มีอินพุต โปรแกรมของคุณจะต้องสิ้นสุดภายในหนึ่งชั่วโมงในคอมพิวเตอร์มาตรฐาน - ถ้าปิดฉันจะใช้ของฉันเพื่อทำการทดสอบ หากโปรแกรมของคุณทำงานนานกว่านาทีหรือไม่สิ้นสุดใน TIO โปรดระบุเวลาในคอมพิวเตอร์ของคุณ นี่คือcode-golfดังนั้นโค้ดที่สั้นที่สุดเป็นไบต์ชนะ

26
สร้างคำศัพท์
ความท้าทาย งานของคุณคือการสร้างโปรแกรมที่รับอินพุตสตริงใด ๆ และส่งออกอินพุตในรูปแบบกำลังสอง สตริงว่างควรส่งคืนสตริงว่าง ตัวอย่าง รับอินพุต: golf โปรแกรมของคุณควรส่งออก: golf o l l o flog การป้อนข้อมูล: 123 เอาท์พุท: 123 2 2 321 การป้อนข้อมูล: a เอาท์พุท: a การป้อนข้อมูล: Hello, world! เอาท์พุท (สังเกตช่องว่างระหว่าง, และ w - ช่องว่างไม่ใช่แค่ขึ้นบรรทัดใหม่): Hello, world! e d l l l r o o , w w , o …

22
ทำให้ฉัน 22.5 ด้วยดอกกุหลาบ
รับสายที่เป็นหนึ่งในทิศทางบนเข็มทิศ 16 จุดเพิ่มขึ้น เอาท์พุทสองทิศทางที่อยู่ติดกับทิศทางอินพุตทันทีตามลำดับทวนเข็มนาฬิกา คุณต้องจัดการคู่เหล่านี้ (และคู่เหล่านี้) เท่านั้น: Input Output N NNW NNE NNE N NE NE NNE ENE ENE NE E E ENE ESE ESE E SE SE ESE SSE SSE SE S S SSE SSW SSW S SW SW SSW WSW WSW SW W W WSW WNW WNW W …

30
จำนวนเอาต์พุตสูงสุด 2 ^ n-1“ เรียงลำดับ”
รับจำนวนเต็มบวกnเป็นอินพุตและเอาต์พุตเลขทศนิยม (บางส่วน) ที่สามารถสร้างขึ้นได้โดยใช้n bits เรียงตามวิธีดังต่อไปนี้: รายการแรกตัวเลขทั้งหมดที่สามารถสร้างได้ด้วยเพียงหนึ่ง1และส่วนที่เหลือ0ในการเป็นตัวแทนไบนารี (เรียงลำดับ) จากนั้นตัวเลขทั้งหมดที่สามารถสร้างขึ้นด้วยสองติดต่อกัน 1ส่วนที่เหลือ0จากนั้นสามติดต่อกัน 1และอื่น ๆ เรามาดูกันว่ามันมีลักษณะอย่างไรสำหรับn = 4 : 0001 - 1 0010 - 2 0100 - 4 1000 - 8 0011 - 3 0110 - 6 1100 - 12 0111 - 7 1110 - 14 1111 - 15 ดังนั้นเอาต์พุตสำหรับn = 4คือ: 1, 2, …

30
คำสั่ง“ สำหรับ” ของคุณเอง
การเรียนการสอน "สำหรับ" ของคุณเอง สมมติว่าคุณมีอินพุตต่อไปนี้: a, b, c, d อินพุตสามารถอยู่ในบรรทัดเดียวโดยใช้รูปแบบใด ๆ "a / b / c / d" หรือ "a, b, c, d" ฯลฯ คุณสามารถมี 4 อินพุต คุณต้องโค้ดพฤติกรรมดังต่อไปนี้ (รหัสหลอกที่นี่): var i = <a> while (i <b> <c>) print i i = i + <d> print "\n" นี่คือกรณีทดสอบบางส่วน: input : 1,<,10,1 output …
38 code-golf 

14
Backspace และพิมพ์รายการคำอีกครั้ง
ต่อไปนี้เป็นวิธีการถอยกลับและพิมพ์อีกครั้งจากสตริงหนึ่งไปยังอีกสตริงหนึ่ง: เริ่มจากสตริงแรก ลบอักขระที่ท้ายจนผลลัพธ์เป็นส่วนนำหน้าของสตริงที่สอง (ขั้นตอนนี้อาจใช้เวลา 0 ขั้น) เพิ่มอักขระที่ท้ายจนผลลัพธ์เท่ากับสตริงที่สอง (ขั้นตอนนี้อาจใช้ 0 ขั้นตอนเช่นกัน) ตัวอย่างเช่นเส้นทางจากfooabcไปยังfooxyzมีลักษณะดังนี้: fooabc fooab fooa foo foox fooxy fooxyz งาน ระบุรายการคำให้เขียนโปรแกรมที่backspace-and-retypesมาจากสตริงที่ว่างไปยังทุกคำในรายการอย่างต่อเนื่องกลับไปที่สตริงว่าง เอาต์พุตสตริงกลางทั้งหมด ตัวอย่างเช่นเมื่อกำหนดรายการอินพุต["abc", "abd", "aefg", "h"]เอาต์พุตควรเป็น: a ab abc ab abd ab a ae aef aefg aef ae a h กฎระเบียบ คุณอาจส่งคืนหรือพิมพ์รายการสตริงหรือสตริงเดี่ยวที่มีตัวคั่นบางตัวเลือก คุณอาจเลือกที่จะรวมสตริงว่างเริ่มต้นและสุดท้าย อินพุตมีการรับประกันว่ามีอย่างน้อยหนึ่งคำและแต่ละคำรับประกันว่าจะมีตัวอักษร ASCII ตัวพิมพ์เล็ก ( a- z) เท่านั้น แก้ไข:สตริงที่ต่อเนื่องกันในอินพุตมีการรับประกันว่าจะไม่เท่ากัน …
38 code-golf  string 

30
อย่าให้ห้า!
คำถาม: 5คุณจะได้รับเริ่มต้นและสิ้นสุดของจำนวนเต็มลำดับและควรกลับจำนวนของจำนวนเต็มที่อยู่ภายในซึ่งไม่ได้มีหลัก ควรระบุหมายเลขเริ่มต้นและปลายทาง! ตัวอย่าง: 1,9 → 1,2,3,4,6,7,8,9 →ผล 8 4,17 → 4,6,7,8,9,10,11,12,13,14,16,17 →ผล 12 50,60 → 60 →ผล 1 -59, -50 →→ผล 0 ผลลัพธ์อาจมีห้า หมายเลขเริ่มต้นจะเล็กกว่าหมายเลขปลายทางเสมอ ตัวเลขทั้งสองสามารถเป็นลบได้! ฉันอยากรู้วิธีแก้ปัญหาของคุณและวิธีการแก้ปัญหาของคุณ อาจจะมีใครบางคนในคุณจะพบทางออกที่ง่ายคณิตศาสตร์บริสุทธิ์ แก้ไข นี่คือความท้าทายในการเล่นกอล์ฟดังนั้นรหัสที่สั้นที่สุดชนะ
38 code-golf  math 

30
ตัวเลขนี้เป็นปัจจัยหรือไม่
งาน รับหมายเลขธรรมชาติเป็นอินพุตงานของคุณคือส่งออกค่าจริงหรือเท็จตามว่าอินพุตเป็นปัจจัยของจำนวนธรรมชาติใด ๆ คุณสามารถสันนิษฐานได้ว่าจำนวนการป้อนข้อมูลจะเป็นในช่วงของตัวเลขการสนับสนุนจากภาษาของคุณ แต่คุณต้องไม่ละเมิดประเภทจำนวนพื้นเมืองทำเป็นปัญหา มาตรฐานช่องโหว่ใช้ อินพุต คุณจะได้รับหมายเลขธรรมชาติ (ประเภทIntegerหรือคล้ายกัน) คุณสามารถป้อนข้อมูลในแบบที่คุณต้องการยกเว้นสมมติว่าเป็นตัวแปรที่กำหนดไว้ล่วงหน้า อนุญาตให้อ่านจากไฟล์คอนโซลกล่องโต้ตอบ ( prompt) กล่องอินพุตและอื่น ๆ อนุญาตให้ป้อนค่าเป็นอาร์กิวเมนต์ของฟังก์ชันได้เช่นกัน! เอาท์พุต โปรแกรมของคุณควรส่งออกค่าจริงหรือเท็จตามว่าหมายเลขอินพุตเป็นปัจจัยของจำนวนธรรมชาติใด ๆ ตรวจสอบให้แน่ใจว่าค่าความจริง / เท็จของคุณสอดคล้องกับอินพุตทั้งหมดเช่นถ้าคุณใช้คู่ 1 และ 0 เพื่อแสดงค่าความจริงและเท็จตามลำดับจากนั้นโปรแกรมของคุณจะต้องแสดงผลลัพธ์ 1 สำหรับอินพุตทั้งหมดที่ควรมีค่าจริงและ 0 สำหรับ อินพุตทั้งหมดที่ควรมีค่าเป็นเท็จ คุณสามารถเอาท์พุทในแบบที่คุณต้องการยกเว้นการเขียนลงในตัวแปร อนุญาตให้เขียนไฟล์คอนโซลหน้าจอและอื่น ๆ ได้ ฟังก์ชั่นreturnได้รับอนุญาตเช่นกัน! โปรแกรมของคุณจะต้องไม่สร้างข้อผิดพลาดสำหรับการป้อนข้อมูลใด ๆ ! กรณีทดสอบ Input Output 1 Truthy (0! or 1!) 2 Truthy (2!) …

13
ครอบคลุมผลรวมศูนย์
บทนำ พิจารณารายการL ที่ไม่ว่างของจำนวนเต็ม ชิ้นศูนย์รวมของLเป็น subsequence ที่ต่อเนื่องกันของLที่มีผลรวมเท่ากับ 0. ตัวอย่างเช่น[1, -3, 2]เป็นชิ้นเป็นศูนย์รวมของ[-2, 4, 1, -3, 2, 2 , -1, -1]แต่[2, 2]ไม่ใช่ (เพราะมันไม่เท่ากับ 0) และไม่ใช่[4, -3, -1] (เพราะมันไม่ต่อเนื่องกัน) คอลเลกชันของชิ้นผลรวมเป็นศูนย์ของLคือหน้าปกผลรวมเป็นศูนย์ของLหากทุกองค์ประกอบเป็นของชิ้นอย่างน้อยหนึ่งชิ้น ตัวอย่างเช่น: L = [-2, 4, 1, -3, 2, 2, -1, -1] A = [-2, 4, 1, -3] B = [1, -3, 2] C = …

30
ทุกคำจาก babab ถึง zyzyz
งานของคุณคือการเขียนโปรแกรมที่จะส่งออกรายการที่สามารถอ่านได้ของทุกคำห้าตัวอักษรด้วยโครงสร้าง พยัญชนะ - สระ - พยัญชนะ - สระ - พยัญชนะ เอาต์พุตควรเรียงลำดับตามตัวอักษรด้วยหนึ่งคำต่อบรรทัดและไม่มีคำซ้ำสองครั้ง สามารถเป็นตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่ แต่ไม่ผสม ดังนั้นรายการสามารถเริ่มต้นและสิ้นสุดเช่นนี้: babab babac babad ... zyzyw zyzyx zyzyz เสียงสระคือa - e - i - o - u - yส่วนอีก 20 ตัวอักษรเป็นพยัญชนะ คำไม่จำเป็นต้องเป็นคำในพจนานุกรมที่แท้จริง รหัสที่สั้นที่สุดชนะ หมายเหตุ: ไม่กี่ปีที่ผ่านมาฉันสะดุดโปรแกรมในเว็บไซต์มหาวิทยาลัยที่ทำอย่างนั้น เปลี่ยนชื่อและนามสกุลของฉันให้พอดีกับข้อ จำกัด ของ cvcvc และฉันจะไปทำตัวเอง

30
ค้นหาจำนวนมากที่สุดที่อยู่ติดกับศูนย์
ท้าทาย: ใช้เวกเตอร์ / รายการเลขจำนวนเต็มเป็นอินพุตและส่งออกจำนวนที่มากที่สุดที่อยู่ติดกับศูนย์ ข้อมูลจำเพาะ: รูปแบบอินพุตและเอาต์พุตตัวเลือกเช่นเคย คุณอาจคิดว่าจะมีอย่างน้อยหนึ่งศูนย์และอย่างน้อยหนึ่งองค์ประกอบที่ไม่ใช่ศูนย์ กรณีทดสอบ: 1 4 3 6 0 3 7 0 7 9 4 9 0 9 0 9 15 -2 9 -4 -6 -2 0 -9 -2 -11 0 0 0 0 0 -12 10 0 0 20 20 ขอให้โชคดีและเล่นกอล์ฟอย่างมีความสุข!
38 code-golf  number 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.