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

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

11
คำนวณชื่อเสียงการแลกเปลี่ยนสแต็คของคุณ
พื้นหลัง: ฉันมักจะพบว่าเมื่อเรียกดูไซต์ Stackexchange ฉันเริ่มสงสัยว่าผู้คนได้รับชื่อเสียงในปริมาณเท่าไร ฉันรู้ว่าฉันสามารถพึ่งพา codegolf SE ได้เสมอเพื่อแก้ปัญหาของฉันดังนั้นนี่คือ: สร้างโปรแกรมที่จะยอมรับจำนวนเต็มบวกซึ่งแสดงถึงชื่อเสียงของบุคคล เราจะเพิกเฉยต่อค่าหัวและบอกว่านี่เป็นวิธีเดียวที่จะได้รับ / เสียตัวแทนใน SE (ตารางเต็มที่นี่ ): ทุกบัญชีเริ่มต้นด้วย 1 ตัวแทนและไม่สามารถลงไปด้านล่างได้ คำถามของคุณถูกโหวต = +5 คำตอบของคุณคือ upvoted = +10 คำถามของคุณถูกโหวต = -2 คำตอบของคุณคือ downvoted = -2 คุณลงคะแนนคำตอบ = -1 คำตอบของคุณได้รับการยอมรับ = +15 คุณยอมรับคำตอบ = +2 โปรแกรมของคุณจะต้องทราบว่ามีการกระทำเหล่านั้นเกิดขึ้นกี่ครั้งในบัญชีผู้ใช้นั้นเพื่อไปยังตัวแทนที่พวกเขามี มันจะต้องคิดออกจำนวนการกระทำที่สั้นที่สุดเพื่อไปที่ระดับของตัวแทนนี้ ตัวอย่าง: อินพุต: 11 เอาต์พุต: 1 คำตอบ upvote …
13 code-golf 

1
Brainf ** k Debugger
ความท้าทายของคุณคือการรับข้อมูลเช่นนี้ (โปรแกรม Hello World): ++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++. และเอาท์พุทพรอมต์ (ซึ่งจะเป็น"> "): > ผู้ใช้สามารถป้อนอะไรก็ได้ที่พรอมต์ ดีบักเกอร์แบบง่ายของคุณต้องมีคำสั่งเหล่านี้: S - ขั้นตอน เอาท์พุทตำแหน่งปัจจุบัน (ดูL) หลังจากก้าว S(a positive integer) - ขั้นตอนที่ช่องว่างมากมาย L - ที่ตั้ง คำว่า "ตำแหน่ง" หมายถึงตำแหน่งที่คุณอยู่ในโปรแกรมเสมอ (เช่นตัวชี้คำสั่ง) จัดรูปแบบดังนี้: v +++++++[>+++++++<-]>. +ซึ่งหมายความว่าสถานที่ตั้งปัจจุบันของโปรแกรมเป็นที่สาม G(an integer) - ไปที่ นี่หมายถึงก้าวไปเรื่อย ๆ จนกว่าคุณจะไปถึงที่ตั้งนั้น หากคุณไปถึงจุดสิ้นสุดของโปรแกรมและคุณไม่ได้อยู่ที่นั่นเพียงออกจากโปรแกรม จำนวนเต็มลบหมายความว่าอักขระจำนวนมากจากจุดสิ้นสุด ใช่นี่หมายความว่า-0แตกต่างจาก0และ-1เป็นตัวอักษรที่สองถึงตัวสุดท้าย อย่าส่งเอาต์พุตอะไรสำหรับคำสั่งนี้ D - อาร์เรย์การถ่ายโอนข้อมูล รูปแบบที่ชอบ 1, 2, …

6
หุ่นยนต์ของฉันหลบหนีจากแล็บ!
หุ่นยนต์ของฉันลัดวงจรและวิ่งออกจากห้องแล็บของฉันแบบสุ่ม! โชคดีที่เมื่อใดก็ตามที่เขาทำสิ่งนี้ลำดับการปิดของเขาจะเริ่มต้นทำให้เขามีเวลามากพอที่จะหมุนและวิ่งไปในทิศทางที่หันหน้าไปทางห้ารอบก่อนที่เขาจะปิด ฟังก์ชั่น gyro และ accelerometer ของเขายังคงส่งข้อมูลกลับไปที่ห้องแล็บในขณะที่เขายังอยู่ ข้อมูลจะมาในรูปของตัวเลขสองชุดห้าชุดเสมอ 12:234,-135:47,-68:230,140:324,127,87 ภารกิจนักกอล์ฟของคุณคือ a) จำลองการวิ่งและหมุนรอบของหุ่นยนต์โดยการแสดงตัวเลขห้าชุดในรูปแบบa1:d1,a2:d2,a3:d3,a4:d4,a5:d5ที่a(n) คือมุมตามเข็มนาฬิกา (เป็นองศา) เช่นนั้น-179<=a<=+180เพื่อให้หุ่นยนต์หันจากตำแหน่งปัจจุบัน ( ในขั้นต้นมันจะอยู่ที่ศูนย์ส่วนหัวก่อนที่มันจะวิ่งอาละวาดและหมุนเป็นครั้งแรก) และd(n) คือระยะทางเป็นฟุตที่มันจะวิ่งก่อนที่การเปลี่ยนส่วนหัวครั้งถัดไปจะเป็นเช่น0<=d<=500นั้น และ b) ส่วนหัวที่คำนวณได้จากห้องปฏิบัติการ (ซึ่งหันหน้าไปทางส่วนหัวเป็นศูนย์), ระยะทางเป็นฟุต (สนับสนุนความแม่นยำสูงสุดถึงทศนิยม 3 ตำแหน่ง, -5 ไบต์ถ้าคุณทำได้) และการวางแนว (เป็นองศา) หุ่นยนต์ของฉันหันหน้าไปทางไหนเมื่อปิดสวิตช์ ตัวอย่างง่าย ๆ : Data: 0:1,45:1,90:1,90:1,90:1 Heading: 0 Distance: 1 Orientation: -45 การเลี้ยวและระยะทางแบบสุ่มนั้นสุ่ม ไม่มีค่าชุดที่จะเขียนโค้ดยากเราต้องเห็นการกระทำที่สุ่มภายในโค้ด ข้อ จำกัด ในการสุ่ม: ไม่มีการอ้างอิงตามนาฬิกาหรือวันที่เราจำเป็นต้องดูการrandomอ้างอิงดั้งเดิมภายในโค้ด เมื่อใดก็ตามที่คุณเรียกใช้รหัสนี้การสุ่มต้องนำเสนอตัวเองด้วยความเป็นไปได้ที่จะแสดงมุมที่เป็นไปได้ …
13 code-golf  math 

3
สร้างตัวตรวจสอบการชนะ win to tic tac toe
สร้างโปรแกรมที่สั้นที่สุดในการตรวจสอบที่ได้รับรางวัลใน n dเกม Tic Tac เท้า โปรแกรมของคุณควรทำงานเมื่อn(ความกว้าง) และd(หมายเลขมิติ) อยู่ในช่วงเหล่านี้: n∈[3,6]∩ℕ ie a number from this list: 3,4,5,6 d∈[2,5]∩ℕ ie a number from this list: 2,3,4,5 n = 3; d = 2(3 2คือ 3 จาก 3): [][][] [][][] [][][] n = 3; d = 3(3 3เช่น 3 โดย 3 โดย 3): …

5
ซ่อนคำทักทาย Brainf *** ในรหัสอื่น
เป้าหมายคือการเขียนโปรแกรม (อะไรก็ได้ยกเว้น brainfuck อย่างชัดเจน) ซึ่งพิมพ์กฎที่ดีที่สุดของBarney Stinson : ใหม่ดีกว่าเสมอ เมื่อตีความตามปกติ แต่ Legen ... รอเลย ... น่ากลัว! เมื่อประมวลผลด้วยล่าม Brainfuck ขอให้น้องชายที่ได้รับความนิยมมากที่สุด คุณมีเวลา 72 ชั่วโมงในการเป็นตำนาน

12
ทำวาเลนไทน์ด้วยภาษาที่คุณโปรดปราน [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว เขียนโปรแกรมที่สร้างสรรค์ที่สุดเพื่อแสดงความปรารถนาของคุณในภาษาวาเลนไทน์ที่คุณชื่นชอบในภาษานั้น เช่น #!/usr/bin/perl use Modern::Perl; say "I love Perl";

19
ลาก่อนโลก! [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว เขียนโปรแกรมที่ลบเอง ในขณะที่พฤติกรรมที่แน่นอนอาจมีการกำหนดการนำไปใช้งาน แต่อย่างน้อยก็ควรพยายามลบไฟล์ที่โปรแกรมจัดเก็บไว้ก่อนดำเนินการตามความพยายามอย่างดีที่สุด นี่คือการประกวดความนิยมดังนั้นคำตอบที่มีผู้โหวตมากที่สุดจะเป็นผู้ชนะ

30
นับจำนวนครั้งของจำนวนเต็ม [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน3 ปีที่ผ่านมา ตามคำถามจำนวนเต็มบวก <1,000,000 ประกอบด้วย 2 หลัก . ฉันกำลังมองหาทางออกที่สร้างสรรค์มากที่สุดจะนับทุกจำนวนเต็มจากXการที่มีจำนวนเต็ม Y สามารถจาก 0 ถึงZZY จำนวนเต็มที่พบทุกคนจะนับเพียงครั้งเดียวแม้ว่าจำนวนเต็มZจะปรากฏบ่อยขึ้น ตัวอย่างเช่น: Z = 2 123 counts 1 22222 also counts 1 ฉันจะเริ่มต้นด้วยอัลกอริทึมที่เรียบง่ายจริงๆเขียนใน Java (เพราะทุกคนเป็นที่รัก): public class Count { public static void main(String[] args) { int count = 0; for (int i …

30
โปรแกรมที่สั้นที่สุดในการเรียงลำดับรายการของตัวเลขเป็นประเภทที่แปลก
ใน New Modern Timesเมื่อชาร์ลีแชปลินได้พบกับคอมพิวเตอร์เขาเป็นลูกจ้างในการเรียงลำดับลานขณะที่ตรวจสอบเพื่อตรวจสอบว่าคนงานจะได้อย่างถูกต้องเรียงลำดับรายการ รายการที่มีปัญหาคือแพ็คเก็ตของหินอ่อน แพ็คเก็ตที่มีจำนวนของ Marbles จะถูกเรียงซ้อนในตะกร้าสีแดงและแพ็คเก็ตที่มีจำนวนของ Marbles จะซ้อนกันในตะกร้าสีน้ำเงิน Charlie Chaplin ควรชกโปรแกรมที่จะตรวจสอบว่ามีความผิดปกติใด ๆ ในขั้นตอนการเรียงลำดับ Mack Swain Boss ทันทีของเขาแบ่งปันอัลกอริทึมที่ต้องการรหัส ขั้นตอนวิธี L = List of Marble packets that's already sorted L_ODD = List of packets with Odd Number of Marbles L_EVEN = List of packets with Even Number of Marbles Check_Digit …

14
สี่เหลี่ยมหลอกหลอกเศษส่วน
เป้าหมาย เป้าหมายของโปรแกรมคือการวาดสี่เหลี่ยมศิลปะ ASCII ซ้ำสองเท่าในขนาดที่สลับกันในแนวนอนและแนวตั้ง แต่ละครั้งที่สี่เหลี่ยมมีขนาดเป็นสองเท่าพื้นที่พิเศษจะถูกแทนด้วยอักขระที่แตกต่างกันและพื้นที่ก่อนหน้ายังคงไม่เปลี่ยนแปลง ส่วนที่เล็กที่สุดสองส่วนมีอักขระหนึ่งตัวแต่ละตัวและอาจอยู่ในมุมใดก็ได้ โปรแกรมยอมรับเลขจำนวนเต็มเดียวเป็นอินพุตโดยกำหนดจำนวนของส่วนที่สี่เหลี่ยมผืนผ้าเต็มประกอบด้วย ไม่อนุญาตให้มีทรัพยากรหรืออินพุตภายนอกอื่น ๆ ตัวอย่างอินพุตและเอาต์พุต 10 ABDDFFFFHHHHHHHHJJJJJJJJJJJJJJJJ CCDDFFFFHHHHHHHHJJJJJJJJJJJJJJJJ EEEEFFFFHHHHHHHHJJJJJJJJJJJJJJJJ EEEEFFFFHHHHHHHHJJJJJJJJJJJJJJJJ GGGGGGGGHHHHHHHHJJJJJJJJJJJJJJJJ GGGGGGGGHHHHHHHHJJJJJJJJJJJJJJJJ GGGGGGGGHHHHHHHHJJJJJJJJJJJJJJJJ GGGGGGGGHHHHHHHHJJJJJJJJJJJJJJJJ IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ เกณฑ์การคัดเลือก รหัสที่สั้นที่สุดในหนึ่งสัปดาห์จะชนะคะแนน

11
ค้นหาทุกครั้งที่เป็นไปตามรูปแบบ
งานของคุณคือเขียนโปรแกรมที่พิมพ์ตลอดเวลา (ในรูปแบบ HH: MM, 24 ชั่วโมง) ที่เป็นไปตามรูปแบบใดรูปแบบหนึ่งดังต่อไปนี้: จำนวนชั่วโมงเท่ากับนาทีเช่น 22: 22,01: 01 ชั่วโมงเท่ากับนาทีย้อนกลับเช่น 10:01, 01:10, 22:22 ลำดับที่ตรงกับ H: MM หรือ HH: MM พิมพ์ด้วย HH: MM เสมอ เช่น 00:12, 01:23, 23:45, 03:45, ฯลฯ (เป็นขั้นตอนเดียวเสมอระหว่างตัวเลข) กฎ: คุณสามารถเลือกภาษาที่คุณชอบ คุณไม่สามารถพิมพ์เวลาซ้ำได้ หนึ่งครั้งต่อบรรทัดตามคำสั่งของวัน ผู้ชนะจะได้รับการคัดเลือกใน 5 กุมภาพันธ์ PS: นี่เป็นคำถามแรกของฉันมันอาจมีความไม่สอดคล้องกันบ้าง รู้สึกอิสระที่จะแก้ไข PS2: นี่คือโซลูชันที่คาดหวัง 44 รายการ (นำเสนอโดย Josh และ primo …

3
เขียนคอมไพเลอร์ brainfuck
เขียนโปรแกรมที่ใช้โปรแกรม brainfuck และคอมไพล์มันเป็นรหัสเครื่องที่ปฏิบัติการได้ คุณสามารถกำหนดเป้าหมาย x86, x86_64, jvm (java bytecode) หรือ armv6 และใช้หนึ่งในรูปแบบที่ปฏิบัติการได้ต่อไปนี้: ELF, a.out, ไฟล์คลาส, exe, com ไฟล์สั่งการควรทำงานใน Linux หรือ Windows (หรือ Java อย่างใดอย่างหนึ่ง) ไม่ว่าโปรแกรมของคุณหรือไฟล์ที่เรียกทำงานที่สร้างขึ้นอาจรันโปรแกรมภายนอกใด ๆ (เช่นคอมไพเลอร์, แอสเซมเบลอร์, แอสเซมเบลอร์หรือล่ามอื่น) รหัสที่สั้นที่สุดชนะ

2
ทำการย้ายบนกระดาน Go
คุณได้รับตำแหน่งกระดานสำหรับเกมโกและย้ายไปเล่น คุณต้องแสดงผลว่าการเคลื่อนไหวนั้นถูกกฎหมายหรือไม่และตำแหน่งบอร์ดใหม่หากถูกกฎหมาย คำอธิบายโดยย่อเกี่ยวกับการเคลื่อนไหวของ Go: เกมประกอบด้วยการวางหมากขาวดำ ("หิน") ในที่ว่างบนกระดานสี่เหลี่ยม ชุดชิ้นส่วนที่มีสีเดียวกันซึ่งเชื่อมต่อกัน (4 ทิศทาง) เรียกว่ากลุ่ม สถานที่ว่างบนกระดานที่อยู่ติดกับกลุ่ม (เช่นเดียวกับ 4 ทาง) ถือเป็น "เสรีภาพ" ของกลุ่มนั้น กลุ่มที่มี 0 เสรีภาพจะถูกจับ (ลบออกจากกระดาน) การเคลื่อนไหวที่จะทำให้กลุ่มของตัวเองถูกจับ ("การฆ่าตัวตาย") ถือเป็นเรื่องผิดกฎหมายเว้นแต่ว่าจะทำการจับภาพกลุ่มของฝ่ายตรงข้ามตั้งแต่หนึ่งกลุ่มขึ้นไป (ได้รับเสรีภาพในกระบวนการ สำหรับผู้ที่เกี่ยวข้องคุณไม่จำเป็นต้องจัดการกับ ko (และ superko) นั่นคือคุณสามารถสันนิษฐานได้ว่าการจับ ko นั้นถูกกฎหมาย หากคุณไม่ทราบว่าหมายถึงอะไรเพียงทำตามกฎด้านบนและจะใช้ได้ อินพุต:ตัวเลขระหว่าง 2 ถึง 19 (รวม) เป็นตัวแทนของขนาดกระดานตามด้วยหมายเลข n บรรทัดระหว่าง 0 และ 2 (รวม) เป็นตัวแทนตำแหน่งกระดานตามด้วยหมายเลข 3 คั่นด้วยช่องว่างแทนการย้ายที่จะทำ ในตำแหน่งกระดาน …

7
รหัสมอร์สไปยังเอาต์พุตมาตรฐาน
คำถามนี้เกี่ยวข้องกับการป้อนข้อมูลในรหัสมอร์สเป็น (จุด) และ - (เครื่องหมายลบ) พร้อมช่องว่างเพื่อแยกอินพุต งานของคุณคือการแปลงรหัสเป็นเอาต์พุตมาตรฐาน คุณสามารถสรุปได้ว่าการป้อนข้อมูลที่มีเพียงสัญลักษณ์ตัวอักษรที่พบในตัวอักษรนานาชาติรหัสมอร์สพบที่นี่: http://en.wikipedia.org/wiki/Morse_code#Letters.2C_numbers.2C_punctuation เอาต์พุตทั้งหมดควรใช้อักษรตัวพิมพ์เล็ก ควรตีความพื้นที่สองเท่าเป็นคำเว้นวรรค ตัวอย่างอินพุต: . -..- .- -- .--. .-.. . .-.-.- ... --- ... เอาท์พุท: example. sos รหัสที่สั้นที่สุดหลังจากชนะสองสัปดาห์

3
ใช้เครื่องมือจำลองเครื่องสากล
เป้าหมายคือการเขียนโปรแกรมเต็มรูปแบบที่จำลองเครื่องสากลจาก ICFP 2006 ด้วยรหัสที่สั้นที่สุด เครื่องสากลมีชุดการเรียนการสอนที่ง่ายมากอธิบายที่นี่ อีมูเลเตอร์ต้องอ่านชื่อไฟล์จากอาร์กิวเมนต์บรรทัดคำสั่งและเรียกใช้ไฟล์เป็นโปรแกรมดังนั้นภาษาของคุณจะต้องสนับสนุนอาร์กิวเมนต์บรรทัดคำสั่งและ stdin / out อย่างใด จำลองที่มีการดำเนินการsandmarkภายในเวลาอันสมควร (ไม่ทศวรรษที่ผ่านมา) นี่คือคำอธิบายสั้น ๆ ของชุดคำสั่ง: เครื่องมีการลงทะเบียนแปดครั้งแต่ละคนมีจำนวนเต็ม 32 บิตที่ไม่ได้ลงชื่อ เครื่องเก็บชุดอาร์เรย์ที่จัดทำดัชนีไว้ของเซลล์เลขจำนวนเต็ม 32 บิตที่ไม่ได้ลงชื่อ พูดสั้น ๆ คำแนะนำในการจัดสรรผลตอบแทนทึบแสง 32 บิตซึ่งเป็นมือจับไปยังอาร์เรย์ที่สร้างขึ้นซึ่งมีขนาดคงที่และถือองค์ประกอบ uint 32 บิต อาร์เรย์ 0'th หมายถึงโปรแกรม มันถูกโหลดจากไฟล์ big-endian เมื่อเริ่มต้น นอกจากนี้ยังมี Instruction Pointer ซึ่งชี้ไปที่เซลล์ในอาร์เรย์ 0 ในแต่ละขั้นตอนคำสั่งจะอ่านจากเซลล์ที่ตัวชี้ชี้ไปที่และตัวชี้จะถูกฝังก่อนที่จะทำอะไร บิตที่สำคัญที่สุด 4 บิตแสดงถึง opcode หาก opcode เท่ากับ 13 ดังนั้นบิต …

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