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

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

30
ใช้งานการแบ่ง
ใช้อัลกอริทึมการหารในภาษาที่คุณชื่นชอบซึ่งจัดการการหารจำนวนเต็ม มันต้องการเพียงจัดการกับจำนวนบวก - แต่คะแนนโบนัสถ้ามันจัดการส่วนลบและผสมสัญญาณด้วย ผลลัพธ์จะถูกปัดเศษลงเพื่อผลลัพธ์ที่เป็นเศษส่วน โปรแกรมอาจไม่ได้มี/, \, divหรือผู้ประกอบการที่คล้ายกัน ต้องเป็นกิจวัตรที่ไม่ได้ใช้ความสามารถในการแบ่งส่วนของภาษา คุณจะต้องจัดการได้มากถึง 32 บิต ไม่อนุญาตให้ใช้การลบซ้ำ ๆ อินพุต ใช้สองอินพุตใน stdin คั่นด้วยบรรทัดหรือช่องว่างใหม่ (ตัวเลือกของคุณ) 740 2 เอาท์พุต 370ในกรณีนี้การส่งออกจะเป็น ทางออกที่สั้นที่สุดชนะ

24
วันศุกร์ที่ 13
อะไรคือโปรแกรมที่สั้นที่สุดที่สามารถทำนายได้ในครั้งต่อไปวันศุกร์จะลดลงในวันที่ 13 ของเดือน ต้องเป็นโปรแกรมการทำงานที่สมบูรณ์แบบ (ไม่ใช่เพียงฟังก์ชั่น / รูทีนย่อย) ต้องพิมพ์วันที่ในรูปแบบต่อไปนี้: YYYY-MM-DD อนุญาตให้ผู้ใช้ระบุวันที่เริ่มต้นเป็นอาร์กิวเมนต์บรรทัดคำสั่งหรือผ่าน STDIN หากผู้ใช้ไม่มีวันที่เริ่มต้นให้ใช้วันนี้เป็นวันที่เริ่มต้น หากวันที่เริ่มต้นเป็นวันศุกร์ที่ 13 โปรแกรมควรค้นหาวันศุกร์ที่ 13 ถัดไป ถ้าฉันจะเรียกใช้โปรแกรมวันนี้ (16 ก.พ. 2011) ฉันควรได้ผลลัพธ์ต่อไปนี้ $ ./fr13th 2013-05-09 2013-09-13 $ ./fr13th 2007-06-29 2007-07-13 $ ./fr13th 2007-07-13 2008-06-13 $ ./fr13th 2011-05-13
15 code-golf  date 

6
การเคลื่อนไหวในตารางหกเหลี่ยม
กำหนดอินพุตของชุดอักขระที่แสดงถึงการเคลื่อนไหวบนกริดหกเหลี่ยมเอาท์พุทพิกัดสุดท้ายของ "พอยน์เตอร์" รูปหกเหลี่ยมของเราจะมีหมายเลขเป็นอย่างนั้น (ลองนึกภาพสี่เหลี่ยมกริดที่มีคอลัมน์เลขคี่ทุกคอลัมน์เลื่อนลงด้านล่างเล็กน้อย): _____ _____ _____ _____ / \ / \ / \ / \ / -3,-2 \_____/ -1,-2 \_____/ 1,-2 \_____/ 3,-2 \ \ / \ / \ / \ / \_____/ -2,-1 \_____/ 0,-1 \_____/ 2,-1 \_____/ / \ / \ / \ / \ / -3,-1 …

18
Floating Point XOR
งานของคุณค่อนข้างง่าย ให้สองลอย, bitwise xor แทนไบนารีของพวกเขาและส่งออกที่เป็นลอย ตัวอย่างเช่น, Normal: 16.7472 ^ 123.61 = 7.13402e-37 Binary: 01000001100001011111101001000100 ^ 01000010111101110011100001010010 = 00000011011100101100001000010110 Normal: 2.2 ^ 4.4 = 1.17549e-38 Binary: 01000000000011001100110011001101 ^ 01000000100011001100110011001101 = 00000000100000000000000000000000 Normal: 7.898 ^ 3.4444 = 1.47705e-38 Binary: 01000000111111001011110001101010 ^ 01000000010111000110101001111111 = 00000000101000001101011000010101 ข้อ จำกัด / ชี้แจง: เข้า / ส่งออกจะได้รับโดยใด ๆวิธีที่สะดวก …

1
ทำให้ Quine แข็งตัว
เมื่อคืนฉันกำลังมองหาความท้าทาย Radiation Hardened Quine แต่ฉันหามันไม่เจอ ปรากฎว่าไม่มีใครถามเลย! ดังนั้นนี่คือ: งานของคุณคือสร้าง quine ซึ่งเป็นโปรแกรมคอมพิวเตอร์ที่ไม่ว่างเปล่าซึ่งพิมพ์ต้นฉบับของตัวเองโดยไม่ต้องอ่าน นอกจากนี้หากคุณลบหนึ่งไบต์จากโปรแกรมต้นฉบับของคุณโปรแกรมใหม่ควรพิมพ์แหล่งที่มาของโปรแกรมต้นฉบับของคุณ นี่คือcode-golfดังนั้นคำตอบจะได้คะแนนเป็นไบต์ด้วยจำนวนไบต์ที่น้อยกว่าจะดีกว่า

30
สองก้าวไปข้างหน้าและถอยหลังหนึ่งก้าว
สมมติว่าฉันอยู่ห่างจากจุดหมายปลายทางของฉันสิบก้าว ฉันเดินไปที่นั่นตามคำพูดเก่า ๆ ว่า "สองก้าวไปข้างหน้าและถอยหลังหนึ่งก้าว" ฉันก้าวไปข้างหน้าสองก้าวย้อนกลับหนึ่งจนกว่าฉันจะยืนอยู่ตรงปลายทางของฉัน (สิ่งนี้อาจเกี่ยวข้องกับการก้าวผ่านปลายทางของฉันและกลับไปที่มัน) ฉันเดินได้กี่ก้าว แน่นอนว่าฉันอาจอยู่ห่างออกไปไม่ถึง 10 ก้าว ฉันอาจอยู่ห่างออกไป 11 ก้าวหรือ 100 ฉันสามารถวัดได้สิบก้าวและเดินต่อไปเรื่อย ๆ เพื่อแก้ปัญหาหรือ ... ฉันสามารถเขียนรหัส! เขียนฟังก์ชั่นเพื่อคำนวณจำนวนขั้นตอนที่ต้องใช้เพื่อให้ได้ N ขั้นตอนตามลำดับ: ไปข้างหน้าสองขั้นตอนและถอยหลังหนึ่งก้าว สมมติว่าคุณเริ่มต้นในขั้นตอนที่ 0 นับ "ก้าวไปข้างหน้าสองขั้น" เป็นสองขั้นตอนไม่ใช่หนึ่งขั้น สมมติว่าทุกขั้นตอนมีความยาวสม่ำเสมอ มันควรกลับจำนวนขั้นตอนแรกเมื่อคุณมาถึงพื้นที่นั้น (ตัวอย่างเช่นขั้นตอน 10 ขั้นตอนใช้เวลา 26 ขั้นตอน แต่คุณจะต้องทำขั้นตอนที่ 30 อีกครั้ง) เราสนใจใน 26 ใช้ภาษาที่คุณชอบ มันควรจะยอมรับจำนวนเต็มบวกใด ๆ ที่เป็นอินพุต สิ่งนี้แสดงถึงขั้นตอนเป้าหมาย จำนวนไบต์ที่น้อยที่สุดชนะ ตัวอย่าง: ฉันต้องการไป 5 …

2
มันเป็นท่าหมากรุกที่ถูกต้องหรือไม่?
ชื่อสำรองของ: ChessMoveQ รับรายการขององค์ประกอบสูงสุด 32 รายการแต่ละรายการประกอบด้วย 4 องค์ประกอบและรายการที่สองที่มี 4 องค์ประกอบพิจารณาว่าการย้ายที่มีรายละเอียดในอินพุตที่สองเป็นการย้ายหมากรุกที่ถูกต้องหรือไม่ รายการแรกระบุตำแหน่งของทั้ง 32 ชิ้นบนกระดาน แต่ละองค์ประกอบจะเป็นไปตามโครงสร้าง<colour>, <piece-name>, <x-coord>, <y-coord>เช่น["W", "K", 5, 1]ซึ่งบ่งชี้ว่าราชาขาวนั้นอยู่บน5, 1( e1บนกระดานหมากรุกทั่วไป) องค์ประกอบทั้งหมดของอินพุตแรกจะไม่ซ้ำกัน <x-coord>และ<y-coord>จะอยู่ระหว่าง 1 ถึง 8 เสมอตัวอย่างหนึ่ง ได้แก่ : [["B", "K", 3, 8], ["B", "Q", 1, 5], ["B", "N", 4, 7], ["B", "N", 7, 8], ["B", "B", 2, 4], ["B", …

1
ควินเปลี่ยนรูปแข็งตัว
งานของคุณคือการสร้างโปรแกรมที่พิมพ์แหล่งที่มาของมันเอง "เฮ้เรามีความท้าทายนี้อยู่แล้วและมีการเปลี่ยนแปลงมากมาย! ทำไมคุณถึงสร้างอีกครั้ง" คุณอาจถาม แต่อันนี้จะเป็นหนึ่งในคนที่ยากที่สุด (หวังว่าต่อไป) ควินของคุณจะต้อง "กลายพันธุ์แข็ง" ซึ่งหมายถึงควินแม้ว่าตัวละครตัวใดตัวหนึ่งของมันจะถูกทำซ้ำในสถานที่จะต้องส่งออกซอร์สโค้ดของโปรแกรมต้นฉบับ ตัวอย่างเช่นถ้าคุณมีควินิน (ตัวอย่างต่อไปนี้ไม่ได้เขียนในภาษาใด ๆ มันเป็นเพียงรหัสเทียม): abcd โปรแกรมเหล่านี้จะต้องส่งออกทั้งหมดabcd: aabcd abbcd abccd abcdd (ในแต่ละโปรแกรมเหล่านั้นa, b, cและdจะซ้ำกันในแต่ละสถานที่ซึ่งหมายถึงตัวละครซ้ำถูกวางโดยตรงหลังจากที่ตัวละครเดิม.) กฎ: ใช้กฎมาตรฐานควินิน อักขระหลายไบต์นับเป็นอักขระเดียวและอักขระไม่ได้ "แยก" เป็นไบต์ที่เกี่ยวข้องเมื่อทำซ้ำ นี่คือรหัส - กอล์ฟดังนั้นรหัสที่สั้นที่สุดในหน่วยไบต์ชนะ!

2
ตอบคำถามให้ฉันหน่อย!
บทนำ บางครั้งฉันเบื่อและไม่มีคำถามใหม่เกี่ยวกับ PPCG ดังนั้นฉันต้องการให้คุณขุดคำถามแบบสุ่มจากอดีตของ PPCG ท้าทาย รับรหัส PPCG ของผู้ใช้เป็นอินพุต (เช่น ID ของฉันคือ30525 ) ส่งออก URL ของคำถาม PPCG ที่เลือกแบบสุ่ม หากคำถามไม่ตรงตามเกณฑ์ต่อไปนี้คุณต้องเลือกคำถามอื่นจนกว่าจะเป็นไปตามเกณฑ์: ผู้ถามคำถามต้องไม่เป็นผู้ใช้ที่มีการป้อน ID ให้กับคำถาม คำถามต้องไม่ได้รับคำตอบจากผู้ใช้ที่มี ID ถูกป้อนเข้ากับคำถาม คำถามต้องไม่ได้รับการตอบ: อาจยากเกินไป คำถามต้องมีคำตอบไม่เกิน 10 ข้อ: อาจเป็นเรื่องง่ายเกินไป คำถามจะต้องติดแท็กรหัสกอล์ฟ กฎระเบียบ ตัวย่อ URL ไม่ได้รับอนุญาต คุณสามารถใช้ Stack Exchange API และ Stack Exchange Data Explorer คุณจะได้รับ ID ผู้ใช้ PPCG ที่แท้จริงเท่านั้น …

5
Binary Convolution
บิดไบนารีอธิบายโดยตัวเลขและถูกนำไปใช้เป็นจำนวนมากM Nสำหรับแต่ละบิตในการแทนค่าไบนารี่ของMถ้าบิตถูกตั้งค่า ( 1) บิตที่สอดคล้องกันในเอาต์พุตจะถูกกำหนดโดย XOR โดยสองบิตที่อยู่ติดกับบิตที่สอดคล้องกันในN(ล้อมรอบเมื่อจำเป็น) หากบิตไม่ได้ตั้งค่า ( 0) Nแล้วบิตที่สอดคล้องกันในการส่งออกจะได้รับจากบิตที่สอดคล้องกันใน ตัวอย่างการทำงาน (ที่มีค่า 8 บิต): อนุญาตN = 150, M = 59. respresentations ไบนารีของพวกเขา (ตามลำดับ) และ1001011000111011 ขึ้นอยู่กับการMเป็นตัวแทนไบนารีของบิต 0, 1, 3, 4 และ 5 มีการ convolved ผลการบิต 0 จะได้รับโดย XORing บิต 1 และ 7 (เนื่องจากเราห่อรอบ) 1ยอม ผลสำหรับบิต 1 จะได้รับโดย XORing บิต 0 …
15 code-golf  binary  integer  bitwise  code-golf  rational-numbers  code-golf  string  palindrome  code-golf  ascii-art  code-golf  code-golf  string  fibonacci  code-golf  math  sequence  code-golf  code-golf  string  palindrome  code-golf  string  code-golf  math  primes  source-layout  code-golf  sequence  binary  integer  code-golf  math  arithmetic  game  code-golf  restricted-source  palindrome  code-golf  restricted-source  palindrome  code-golf  combinatorics  binary  code-golf  string  math  code-golf  ascii-art  number  code-golf  cipher  code-golf  base-conversion  counting  code-golf  sequence  random  classification  code-golf  string  subsequence  code-golf  permutations  code-golf  string  code-golf  string  cipher  code-golf  kolmogorov-complexity  arithmetic  integer  code-golf  quine  markov-chain  code-golf  string  code-golf  code-golf  ascii-art  maze 

18
วิธีลดน้ำหนักอย่างง่ายดาย?
ในคำถามนี้เราจะเน้นไปที่การลดน้ำหนักด้วยการออกกำลังกายแม้ว่าจะยังมีอีกหลายวิธีในการลดน้ำหนัก กีฬาที่แตกต่างกันเผาผลาญแคลอรี่ในปริมาณที่แตกต่างกัน ตัวอย่างเช่นการเล่นบิลเลียดเป็นเวลาหนึ่งชั่วโมงสามารถเผาผลาญแคลอรี่ได้ 102 [1]ในขณะที่เล่นบาสเก็ตบอลเป็นเวลา 15 นาทีสามารถเผาผลาญแคลอรี่ได้ 119 แคลอรี่[1]ซึ่งทำให้น้ำหนักลดลง วิธีที่แม่นยำในการชั่งความสะดวกคือการหารปริมาณแคลอรี่ที่เผาผลาญตามเวลาที่ต้องการซึ่งทำให้ดัชนีความง่าย (EI) ตัวอย่างเช่นการฟันดาบเป็นเวลา 15 นาทีสามารถเผาผลาญ 85 แคลอรี่ซึ่งได้รับ EI 85/15 คุณจะได้รับรายการในรูปแบบนี้: [["fencing",15,85],["billiards",60,102],["basketball",15,119]] หรือรูปแบบอื่น ๆ ที่คุณต้องการ จากนั้นคุณจะแสดงผลกีฬาที่มี EI สูงสุด TL; DR รับรายการของสิ่งอันดับ[name,value1,value2]ผลลัพธ์nameที่value2/value1สูงสุด ข้อ จำกัด คุณไม่สามารถสร้างจำนวนจริงใด ๆ ที่ไม่ใช่จำนวนเต็มในกระบวนการ คุณไม่สามารถใช้เศษส่วนในตัวได้ ข้อมูลจำเพาะ (Specs) หากมีมากกว่าหนึ่งชื่อที่ตอบสนองผลคุณสามารถส่งออกชุดย่อยที่ไม่ว่างเปล่าของพวกเขาหรือองค์ประกอบใด ๆ ของพวกเขา ชื่อจะตรงกับ regex /^[a-z]+$/ซึ่งหมายความว่าจะประกอบด้วยตัวอักษรมาตรฐานตัวพิมพ์เล็กละตินเท่านั้น รายการจะไม่ว่างเปล่า TestCase การป้อนข้อมูล: [["fencing",15,85],["billiards",60,102],["basketball",15,119]] เอาท์พุท: basketball อ้างอิง …

1
สร้างเครื่องเพิ่ม minifloat โดยใช้ประตูตรรกะ NAND
minifloatเป็นตัวแทนไบนารีของจำนวนจุดลอยตัวที่มีบิตน้อยมาก minifloat ในคำถามนี้จะถูกกำหนดเป็นหมายเลข 6 บิตmซึ่งมีการแสดงต่อไปนี้: 1 บิตเพื่อแสดงสัญลักษณ์ของตัวเลข บิตนี้จะเป็น0ถ้าจำนวนเป็นบวกและ1ถ้าจำนวนเป็นลบ 3 บิตเพื่อแสดงเลขชี้กำลังของจำนวน, ชดเชยด้วย3(เช่นเลขชี้กำลังของ110จริงแสดงถึงปัจจัยของ 2 3 , ไม่ใช่ 2 6 ) เลขชี้กำลังของ 000หมายถึงจำนวนย่อย แมนทิสซาหมายถึงส่วนที่เป็นเศษส่วนของจำนวนที่มีส่วนจำนวนเต็ม0คูณด้วยปัจจัยของเลขชี้กำลังต่ำสุดที่เป็นไปได้ (ในกรณีนี้ 2 -2 ) 2 บิตเพื่อแทนแมนทิสซาของจำนวน หากเลขชี้กำลังเป็นอะไรอื่นนอกจาก000หรือ111ที่ 2 1บิตแทนส่วนบางส่วนหลังจากที่ เลขชี้กำลังของการ111แทนinfinityว่า mantissa เป็น0และNaN(ไม่ใช่ตัวเลข) เป็นอย่างอื่น ในบทความ Wikipedia สิ่งนี้จะเรียกว่า minifloat (1.3.2.3) ตัวอย่างบางส่วนของการเป็นตัวแทนของ minifloat นี้: 000000 = 0.00 = 0 000110 = 1.10 …

8
สร้างรูปหลายเหลี่ยมสำหรับ Hello World
สร้างไฟล์ข้อความที่พิมพ์ "Hello World!" ในภาษาการเขียนโปรแกรมให้มากที่สุดเท่าที่จะทำได้เมื่อรวบรวม / ตีความในขณะที่ยังสั้นที่สุด คะแนนสำหรับการส่งของคุณจะถูกคำนวณC / 2 ^ ((L - 1) / 4)โดยที่ "C" คือความยาวของไฟล์ข้อความเป็นตัวอักษรและ "L" คือจำนวนภาษาที่โปรแกรมใช้งานได้แน่นอนคะแนนต่ำสุดชนะแน่นอน

3
การดำเนินการกลุ่มการเปลี่ยนแปลง
มี bijection ที่รู้จักกันดีระหว่างการเรียงสับเปลี่ยนขององค์ประกอบ n และตัวเลข 0 ถึง n! -1 เช่นนั้นการเรียงลำดับพจนานุกรมของการเปลี่ยนลำดับและตัวเลขที่สอดคล้องกันจะเหมือนกัน ตัวอย่างเช่นด้วย n = 3: 0 <-> (0, 1, 2) 1 <-> (0, 2, 1) 2 <-> (1, 0, 2) 3 <-> (1, 2, 0) 4 <-> (2, 0, 1) 5 <-> (2, 1, 0) มันเป็นที่รู้จักกันดีว่าการเรียงสับเปลี่ยนขององค์ประกอบ n ประกอบกันเป็นกลุ่ม (กลุ่มสมมาตรของคำสั่ง n!) - …

12
แสดงโลโก้นกฮูกของ BBC Micro [รุ่น]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Code Golf Stack Exchange ปิดให้บริการใน25 วันที่ผ่านมา คุณสามารถแสดงโลโก้ BBC Micro Owl ตามรหัสด้านบนได้หรือไม่? กฎ: คุณสามารถใช้ภาษาการเขียนโปรแกรมใด ๆ ที่คุณชอบ เอาต์พุตสามารถเป็นข้อความหรือกราฟิก แวดวงไม่ต้องเหลื่อมกัน ผู้ชนะ: คำตอบที่มีผู้โหวตมากที่สุดเป็นผู้ชนะ ความรุ่งโรจน์สำหรับทุกคนที่พยายามทำสิ่งนี้ใน BBC เบื้องต้น คุณสามารถอ่านเกี่ยวกับ BBC Micro ได้ที่นี่

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