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

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

20
คำนวณค่าเฉลี่ยของตัวเลขสองตัว
ข้อจำกัดความรับผิดชอบ: ค่าเฉลี่ยฉันถูกสร้างขึ้น กำหนดค่าเฉลี่ยเลขคณิตของตัวเลขเป็น กำหนดค่าเฉลี่ยทางเรขาคณิตของตัวเลขnเป็น M_0 (x_1, ... , x_n) = \ root {n} \ of {x_1x_2 ... x_n} กำหนดค่าเฉลี่ยฮาร์มอนิกของตัวเลขnเป็น M _ {- 1} (x_1, ... , x_n) = \ frac {n} {\ frac {1 } {x_2} + \ frac {1} {x_2} + ... + \ frac {1} {x_n}} กำหนดค่าเฉลี่ยกำลังสองของจำนวนnเป็น M_2 …
41 code-golf  math 

9
จาวาสคริปต์ที่สงวนไว้
ในฐานะของ ECMAScript 2015 JavaScript มี33 คำหลักที่สงวนไว้เช่นbreak, constและnewเช่นเดียวกับ10 คำหลักที่สงวนไว้ในอนาคตเช่นและletawait งานของคุณคือการเข้าด้วยกันจำนวนมากที่สุดของติดต่อกัน1คำหลักที่สงวนไว้แตกต่างกัน2ในขณะที่เขียนโค้ด JavaScript ทำงาน3 คำหลักที่สงวนไว้อย่างต่อเนื่อง - คำหลักที่สงวนไว้ซึ่งคั่นด้วยช่องว่างและ / หรือวงเล็บและ / หรือเครื่องหมายปีกกาเท่านั้น คำหลักสงวน - ใด ๆลิขสิทธิ์หรือสงวนไว้ในอนาคตเป็นคำหลักของ ECMAScript 2015 ไม่รวมคำหลักที่สงวนไว้จากมาตรฐานที่เก่ากว่ารายการคำหลักที่อนุญาตทั้งหมดได้รับด้านล่าง รหัสการทำงาน - รหัสของคุณควรทำงาน (ระบุเวลาทำงานของคุณหากจำเป็น) ในที่สุดก็หยุดและไม่ทิ้งข้อผิดพลาด runtime ใด ๆ หากรหัสของคุณต้องการรันไทม์เฉพาะคำหลักที่สงวนไว้จะต้องไม่เป็นแบบไม่มีตัวเลือกในสภาพแวดล้อมที่กำหนด รายการคำหลักที่สงวนไว้ แสดงตัวอย่างโค้ด await break case catch class const continue debugger default delete do else enum export …

21
ใช้โอเปอเรเตอร์ "บ้า" ของ Malbolge
หนึ่งในคุณสมบัติที่เป็นเอกลักษณ์ของภาษาโปรแกรมMalbolgeคือOPตัวดำเนินการที่ไม่ได้ใช้งานง่ายซึ่งเรียกว่า "op" ในเอกสารและซอร์สโค้ด แต่รู้จักกันอย่างแพร่หลายว่าเป็นตัวดำเนินการ "บ้า" ตามที่อธิบายโดย Ben Olmstead ผู้สร้างภาษาในเอกสารประกอบของ: " อย่ามองหารูปแบบมันไม่ได้อยู่ที่นั่น " op คือโอเปอเรเตอร์ "tritwise" - มันทำงานกับตัวเลขสามส่วนที่สอดคล้องกันของทั้งสองอาร์กิวเมนต์ สำหรับแต่ละ trit (บิตที่สาม) ผลลัพธ์ของ op จะได้รับจากตารางการค้นหาต่อไปนี้: a op(a,b) 0 1 2 +------- 0 | 1 0 0 b 1 | 1 0 2 2 | 2 2 1 ตัวอย่างเช่นในการคำนวณop(12345, 54321)อันดับแรกให้เขียนตัวเลขทั้งสองเป็นไตรภาคแล้วค้นหาแต่ละคู่ของ trits ในตาราง: 0121221020 …
41 code-golf  number 

27
นับเช่นเดียวกับชาวบาบิโลน
ท้าทาย ให้การแทน ASCII ของหมายเลข Babylonian เป็น input, ส่งออกตัวเลขในเลขอารบิคตะวันตก ระบบตัวเลขของบาบิโลน ชาวบาบิโลนนับอย่างไร ที่น่าสนใจคือพวกเขาใช้ระบบฐาน 60 พร้อมองค์ประกอบของระบบฐาน 10 ก่อนอื่นให้พิจารณาคอลัมน์หน่วยของระบบ: ชาวบาบิโลนมีเพียงสามสัญลักษณ์: T(หรือถ้าคุณสามารถทำให้มัน:) 𒐕ซึ่งเป็นตัวแทน 1 และ<(หรือถ้าคุณสามารถทำให้มัน:) 𒌋ซึ่งเป็นตัวแทน 10 และ\(หรือถ้าคุณทำให้มัน:) 𒑊ซึ่งเป็นศูนย์ หมายเหตุ: ในทางเทคนิคแล้ว\(หรือ𒑊) ไม่ใช่ศูนย์ (เพราะชาวบาบิโลนไม่ได้มีความคิดเป็น 'ศูนย์') 'Zero' ถูกประดิษฐ์ขึ้นในภายหลังดังนั้นจึง\มีการเพิ่มสัญลักษณ์ตัวยึดตำแหน่งในภายหลังเพื่อป้องกันความกำกวม อย่างไรก็ตามสำหรับวัตถุประสงค์ของการท้าทายนี้ก็ถือว่าเพียงพอแล้วที่จะ\เป็นศูนย์ ดังนั้นในแต่ละคอลัมน์คุณเพียงเพิ่มมูลค่าของสัญลักษณ์เช่น: <<< = 30 <<<<TTTTTT = 46 TTTTTTTTT = 9 \ = 0 จะไม่มีมากกว่าห้า<หรือมากกว่าเก้าTในแต่ละคอลัมน์ \จะปรากฏอยู่คนเดียวในคอลัมน์เสมอ ตอนนี้เราจำเป็นต้องขยายเพื่อเพิ่มคอลัมน์เพิ่มเติม วิธีนี้ทำงานเหมือนกับฐานหกสิบอื่น ๆ …

27
รหัส codeee codeee ที่เติบโตด้วยตนเอง
เขียนโปรแกรม (หรือฟังก์ชั่น) (ลองเรียกมันว่า P1) ว่าเมื่อเรียกใช้จะส่งออกโปรแกรม P2 อีกภาษาที่เหมือนกันและ 1 ไบต์ยาวกว่า P1 อย่างแน่นอน โปรแกรม P2 เมื่อทำงานควรส่งออกโปรแกรม P3 ตัวที่ 3 ที่ยาวกว่า 1 ไบต์ 1 ไบต์ P3 จะต้องส่งออกโปรแกรม P4 ที่ยาวกว่าหนึ่งไบต์ P3 และอื่น ๆ เช่นเดียวกันกับ P5, P6, ... , P∞ ห่วงโซ่ของโปรแกรมควรไปเรื่อย ๆ หรือไปยังสถานที่ที่ล่ามไม่สามารถจัดการได้อีกต่อไป (แต่ต้องอยู่ในฐานะโปรแกรมที่ถูกต้องตามหลักเหตุผลในภาษา) กฎระเบียบ ช่องโหว่มาตรฐานต้องห้าม โปรแกรมทั้งหมดในเครือควรเป็นภาษาเดียว ไม่มีการป้อนข้อมูล เอาต์พุตไปที่ stdout หรือค่าส่งคืนของฟังก์ชัน โปรแกรมจะต้องสิ้นสุดหลังจากระยะเวลาหนึ่ง โปรแกรมที่หยุดสร้างเอาต์พุตหลังจากถึงช่วงเวลาที่แน่นอน แต่ไม่เคยยกเลิกจะไม่มีคุณสมบัติ โปรแกรมที่สั้นที่สุด …
41 code-golf  quine 

30
ถอดรหัสสตริง
นี่เป็นความท้าทายครั้งแรกของฉันใน ppcg! อินพุต สตริงที่ประกอบด้วยอักขระ ASCII สองตัวที่แตกต่างกัน ตัวอย่างเช่น ABAABBAAAAAABBAAABAABBAABA ท้าทาย ภารกิจคือถอดรหัสสตริงนี้ตามกฎเหล่านี้: ข้ามอักขระสองตัวแรก แยกส่วนที่เหลือของสตริงออกเป็นกลุ่มละ 8 ตัวอักษร ในแต่ละกลุ่มให้แทนที่อักขระแต่ละตัวด้วย0ถ้าอักขระนั้นเหมือนกันกับอักขระตัวแรกของสตริงเดิมและ1อื่น ๆ ตอนนี้แต่ละกลุ่มแสดงถึงไบต์ แปลงแต่ละกลุ่มให้เป็นอักขระจากรหัสอักขระไบต์ เชื่อมอักขระทั้งหมดเข้าด้วยกัน ตัวอย่าง ลองถอดรหัสสตริงข้างต้น AB AABBAAAA AABBAAAB AABBAABA ^^ ^ ^ ^ | | | | | \---------|---------/ | | Skip Convert to binary ขอให้สังเกตว่าAเป็นตัวอักษรตัวแรกในสตริงเดิมและBตัวที่สอง ดังนั้นแทนที่แต่ละAที่มี0และแต่ละคนด้วยB 1ตอนนี้เราได้รับ: 00110000 00110001 00110010 ซึ่งอยู่[0x30, 0x31, 0x32]ในไบนารี …
41 code-golf  string 

9
การเขียนโปรแกรมเชิงเลื่อน
สตริงสามารถเลื่อนได้โดยตัวเลขnโดยรับค่าไบต์cของอักขระแต่ละตัวในสตริงการคำนวณ(c + n) mod 256และการแปลงผลลัพธ์กลับไปเป็นอักขระ ตัวอย่างเช่นการขยับ"ABC123"ขึ้น 1 ผลในการ"BCD234"ขยับขึ้น 10 ใน"KLM;<="และขยับจาก 255 "@AB012"ใน งาน เลือกเป็นตัวเลขมากnกับการ0 < n < 256เป็นคุณกล้าและเขียนโปรแกรมหรือฟังก์ชั่นที่ใช้เวลาสตริงเป็น input และ ส่งคืนสตริงที่ไม่เปลี่ยนแปลงเมื่อซอร์สโค้ดไม่เปลี่ยนแปลง แต่ กลับสตริงขยับโดยเมื่อซอร์สโค้ดขยับnn กฎระเบียบ คะแนนของการส่งของคุณคือจำนวนของการสนับสนุนnด้วยคะแนนที่สูงขึ้นจะดีกว่า คะแนนสูงสุดคือ 255 การส่งของคุณจะต้องสนับสนุนการเปลี่ยนแปลงอย่างน้อยหนึ่งครั้งดังนั้นคะแนนขั้นต่ำคือ 1 ในกรณีที่เสมอโปรแกรมที่สั้นกว่าจะชนะ โปรแกรมที่ถูกเลื่อนทั้งหมดจะต้องเป็นภาษาเดียวกัน

21
ง่ายต่อการจดจำตัวเลข
ตัวเลขที่จดจำได้ง่าย แต่ในทางทฤษฎีไม่สามารถทำได้ง่าย ความท้าทายของคุณคือการสร้างโปรแกรม / ฟังก์ชั่นในภาษาใด ๆ ที่สร้างตัวเลขสุ่มอย่างสม่ำเสมอซึ่งตรงกับเกณฑ์เหล่านี้: ความยาวคือ5 หลัก มีตัวเลขสองหลักที่ซ้ำกันแยกกันอยู่สองคู่ หนึ่งชุดของตัวเลขที่ซ้ำกันอยู่ที่จุดเริ่มต้นหรือจุดสิ้นสุดและตัวเลขจะอยู่ติดกัน เลขคี่นั้นล้อมรอบด้วยตัวเลขอีกคู่หนึ่ง ตัวเลขสองหลักคู่และหมายเลขอื่น ๆ ควรไม่ซ้ำกัน โปรแกรมของคุณอาจสนับสนุนหมายเลขที่มีเลขศูนย์นำหน้าหรือไม่ขึ้นอยู่กับดุลยพินิจของคุณ หากสนับสนุนเลขศูนย์นำหน้าจะต้องรวมอยู่ในผลลัพธ์: 06088 ไม่ใช่ 6088 หากไม่สนับสนุนเลขศูนย์นำหน้าตัวเลขเช่น 06088 จะไม่ถูกสร้างขึ้นเลย กรณีทดสอบ เอาท์พุทที่ยอมรับ: 55373 55494 67611 61633 09033 99757 95944 22808 65622 22161 เอาต์พุตที่ไม่ยอมรับ: 55555 77787 85855 12345 99233 12131 ABCDE 5033 กรณีทดสอบที่ยอมรับได้มากขึ้นสามารถดูได้ที่ลิงค์ pastebinนี้ สิ่งเหล่านี้สร้างขึ้นด้วยโปรแกรมไพ ธ อนนี้: นำเข้าแบบสุ่ม …

11
ค้นหาเข็มไบนารีในกองหญ้าที่เป็นทศนิยม
ความท้าทาย คุณได้รับ: hรายการที่ไม่ว่างและไม่เรียงลำดับของจำนวนเต็มบวก (กองหญ้า) จำนวนเต็มบวกn (เข็ม) งานของคุณคือการกลับรายการทั้งหมดที่ไม่ซ้ำกัน concatenations ทศนิยมของพีชคณิตชั่วโมงซึ่งแทน binary มีฐานเป็นตัวแทนของn ตัวอย่าง h = [1, 2, 3] n = 65 [321]มีเพียงคนเดียวที่ตรงกับการเรียงต่อกันเพื่อให้การส่งออกที่คาดว่าจะเป็น h = [1, 2, 3] n = 7 เวลานี้มีสาม concatenations ซึ่งมีรูปแบบไบนารี111 [123, 231, 312]การส่งออกที่คาดไว้คือ h = [12, 3] n = 7 มีเพียงการเปลี่ยนลำดับสองแบบเท่านั้นและทั้งคู่กำลังจับคู่กัน [123, 312]การส่งออกที่คาดไว้คือ h = [1, 2, 2] …

30
ข้ามเหมือนกระต่าย!
กำหนดรายการของจำนวนเต็มที่ไม่เป็นลบในรูปแบบที่เหมาะสมให้วนซ้ำข้ามองค์ประกอบมากเท่าจำนวนเต็มที่คุณพูด นี่คือตัวอย่างการทำงาน: [0, 1, 0, 2, 5, 1, 3, 1, 6, 2] | [] ^ First element, always include it [0, 1, 0, 2, 5, 1, 3, 1, 6, 2] | [0] ^ Skip 0 elements [0, 1, 0, 2, 5, 1, 3, 1, 6, 2] | [0, 1] ^ …

30
สิ่งนี้จะหยุด ...
รับสตริงอินพุตSพิมพ์Sตามด้วยตัวคั่นที่ไม่ว่างในวิธีต่อไปนี้: ขั้นตอนที่ 1: Sมี1/2โอกาสถูกพิมพ์และ1/2โอกาสที่โปรแกรมจะยกเลิก ขั้นตอนที่ 2: Sมี2/3โอกาสถูกพิมพ์และ1/3โอกาสที่โปรแกรมจะยกเลิก ขั้นตอนที่ 3: Sมี3/4โอกาสถูกพิมพ์และ1/4โอกาสที่โปรแกรมจะยกเลิก ... ขั้นตอนn: Sมีn/(n+1)โอกาสพิมพ์และมี1/(n+1)โอกาสที่โปรแกรมจะยกเลิก หมายเหตุ สตริงอินพุตจะประกอบด้วยอักขระที่ยอมรับได้ในประเภทสตริงของภาษาของคุณเท่านั้น ตัวคั่นที่ไม่ว่างใด ๆ สามารถใช้ได้ตราบใดที่มันยังคงเหมือนเดิม คาดว่าตัวคั่นจะถูกพิมพ์หลังจากการพิมพ์ครั้งสุดท้ายSก่อนที่โปรแกรมจะสิ้นสุด โปรแกรมมี1/2โอกาสยกเลิกก่อนพิมพ์อะไรก็ได้ บรรทัดใหม่ต่อท้ายเป็นที่ยอมรับ คำตอบของคุณจะต้องพยายามอย่างแท้จริงในการเคารพความน่าจะเป็นที่อธิบายไว้ เห็นได้ชัดว่าเมื่อใดที่nมีขนาดใหญ่สิ่งนี้จะน้อยลงจริง คำอธิบายที่เหมาะสมของวิธีคำนวณความน่าจะเป็นในคำตอบของคุณ (และทำไมพวกเขาจึงเคารพรายละเอียดโดยไม่คำนึงถึงปัญหาการสุ่มหลอกและปัญหาจำนวนมาก) ก็เพียงพอแล้ว เกณฑ์การให้คะแนน นี่คือโค้ดกอล์ฟดังนั้นคำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ

25
หล่นมันเหมือนมันร้อน
ตามที่อธิบายไว้ในคำถามนี้ : Dropsort ซึ่งออกแบบโดย David Morgan-Mar เป็นตัวอย่างของ "อัลกอริทึมการเรียงลำดับ" แบบ linear-time ที่สร้างรายการที่จริงแล้วเรียงลำดับแล้ว แต่มีองค์ประกอบดั้งเดิมบางส่วนเท่านั้น องค์ประกอบใด ๆ ที่ไม่ได้มีขนาดใหญ่เท่ากับองค์ประกอบสูงสุดก่อนหน้านั้นจะถูกลบออกจากรายการและทิ้งไป หากต้องการใช้หนึ่งในกรณีทดสอบของพวกเขาอินพุตของ{1, 2, 5, 4, 3, 7}อัตราผลตอบแทน{1, 2, 5, 7}เป็น4และ3มีทั้งที่ปรับตัวลดลงเป็นขนาดเล็กกว่าก่อนหน้านี้ "เรียง" 5ค่า เราไม่ต้องการอัลกอริทึม "การเรียงลำดับ" เราต้องการให้มันเป็นข้อตกลงที่แท้จริง ดังนั้นฉันต้องการให้คุณเขียนโปรแกรมที่ให้รายการตัวเลขแสดงรายการของรายการ DropSorted (เพื่อเป็นอัลกอริธึมการเรียงลำดับที่สมบูรณ์เราจะต้องรวมรายการเหล่านี้ แต่ การรวมรายการที่เรียงสองรายการก่อนหน้านี้และ การขอให้คุณทำอีกครั้งเป็นการถามคำถามสองคำถามดังนั้นคำถามนี้เป็นขั้นตอน "แยก" ของ DropSort ที่สมบูรณ์ของเราโดยเฉพาะ) อย่างไรก็ตามการจัดเรียงและเนื้อหาของรายการของเราเป็นสิ่งสำคัญ ผลลัพธ์ของโปรแกรมของคุณจะต้องเทียบเท่ากับผลลัพธ์ของ DropSort ตามด้วย DropSort ของค่าที่ถูกทิ้งและอื่น ๆ จนกว่าคุณจะมีรายการของ chain เรียงลำดับเท่านั้น อีกครั้งให้ยืมชุดทดสอบที่มีอยู่ …

30
AlTeRnAtE CaSe
สำหรับความท้าทายในวันนี้คุณต้องเขียนโปรแกรมหรือฟังก์ชั่นที่สลับตัวพิมพ์ของสตริง อย่างไรก็ตามคุณต้องละเว้นอักขระที่ไม่ใช่ตัวอักษร ซึ่งหมายความว่าตัวอักษรทุกตัวต้องมีตัวพิมพ์เล็กและใหญ่กว่าตัวอักษรก่อนและหลัง นี่ซับซ้อนกว่าตัวพิมพ์ใหญ่เล็กน้อยเล็กน้อยเช่นกัน ถ้าคุณใช้สายเช่น hello world และแปลงตัวละครอื่น ๆ ให้เป็นตัวพิมพ์ใหญ่คุณจะได้รับ: hElLo wOrLd ในขณะที่คุณสามารถดูตัวพิมพ์เล็กตามด้วยตัวพิมพ์เล็กo wสิ่งนี้ไม่ถูกต้อง แต่คุณต้องเพิกเฉยช่องว่างโดยให้ผลลัพธ์นี้แก่เรา: hElLo WoRlD อักขระที่ไม่ใช่ตัวอักษรทั้งหมดต้องอยู่ในสภาพเดียวกัน เอาต์พุตสามารถเริ่มต้นด้วยตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็กตราบใดที่มันสลับกันอย่างสม่ำเสมอ นี่หมายความว่าสิ่งต่อไปนี้จะเป็นผลลัพธ์ที่ยอมรับได้: HeLlO wOrLd โปรแกรมของคุณควรทำงานโดยไม่คำนึงถึงกรณีของอินพุต สตริงอินพุตจะมีASCII ที่พิมพ์ได้เท่านั้นคุณจึงไม่ต้องกังวลเกี่ยวกับอักขระที่ไม่สามารถพิมพ์ได้บรรทัดใหม่หรือ unicode การส่งของคุณอาจเป็นโปรแกรมเต็มรูปแบบหรือฟังก์ชั่นและคุณอาจใช้อินพุตและเอาต์พุตในรูปแบบที่เหมาะสม ตัวอย่างเช่นฟังก์ชันอาร์กิวเมนต์ / ค่าส่งคืน STDIN / STDOUT การอ่าน / เขียนไฟล์ ฯลฯ ตัวอย่าง: ASCII -> AsCiI 42 -> 42 #include <iostream> -> #InClUdE <iOsTrEaM> LEAVE_my_symbols#!#&^%_ALONE!!! …
41 code-golf  string 

25
บอกขนาดคอนโซลของฉันหน่อยสิ!
ขนาดเทอร์มินัลการส่งออก (คอลัมน์และแถว) ในรูปแบบเลขฐานสิบสองใด ๆ * 80x25ยกตัวอย่างเช่นการส่งออกอาจจะ แรงบันดาลใจ รวดเร็ว * เอาต์พุตต้องมีทั้งสองมาตรการในหนึ่งหรือสองบรรทัดติดต่อกันและอาจมีมากกว่าหนึ่งบรรทัดนำหน้าและ / หรือต่อท้ายบรรทัดของเอาต์พุต (ทางเลือกตามด้วยบรรทัดใหม่) บรรทัด (สูงสุดสี่) ต้องไม่เกิน max (cols, 1 + len (str (cols))) + len (str (ro‌ ws))
41 code-golf 

30
อยู่ห่างจากศูนย์
งาน กำหนดเป็นจำนวนเต็มไม่ลบnส่งออก1ถ้าnเป็น0และส่งออกค่าเป็นnอย่างอื่น อินพุต จำนวนเต็มที่ไม่เป็นลบ หากคุณต้องการที่จะยอมรับสตริงเป็น input สตริงจะตรงกับ regex ต่อไปนี้: /^(0|[1-9][0-9]*)$/คือมันต้องไม่มีเลขศูนย์ชั้นนำใด ๆ 0ยกเว้นเมื่อมันเป็น หากคุณยอมรับจำนวนเต็มจริงเป็นอินพุตคุณอาจสมมติว่าจำนวนเต็มนั้นอยู่ภายในขีดความสามารถในการจัดการของภาษา เอาท์พุต จำนวนเต็มบวกที่ระบุข้างต้น ไม่อนุญาตเลขศูนย์นำหน้า ส่งออกของคุณควรจะตรงกับ /^[1-9][0-9]*$/regex Testcases input output 0 1 1 1 2 2 3 3 4 4 5 5 6 6 7 7 เกณฑ์การให้คะแนน นี่คือcode-golfดังนั้นคำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ ช่องโหว่มาตรฐานใช้

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