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

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

5
ตรวจสอบว่าตัวอักษรสามตัวสามารถสร้าง "ลูกบาศก์ Godel-Escher-Bach"
คำถามนี้ได้รับแรงบันดาลใจจากปกหนังสือ "Godel, Escher, Bach": ความท้าทายที่นี่คือการเขียนฟังก์ชั่นที่บอกว่าตัวอักษรที่กำหนดสามตัวสามารถสร้างรูปปั้น 3 มิติที่สามารถอ่านได้จากสามด้าน สำหรับแบบฝึกหัดนี้ตัวอักษรเดียวที่คุณสามารถใช้ได้คือบิตแมป 26 5px * 5px: หรือเป็นเลขฐานสอง (A ถึง Z): 01110 11110 01111 11110 11111 11111 11111 10001 11111 11111 10001 10000 10001 10001 01110 11110 01110 11110 01111 11111 10001 10001 10001 10001 10001 11111 10001 10001 10000 10001 10000 10000 10000 10001 …
29 code-golf  3d 

2
รหัสอะไรที่คอมไพล์ในภาษาจำนวนมากที่สุด? [ปิด]
หากไม่รวมโปรแกรมเล็ก ๆ น้อย ๆ รหัสใดที่รวบรวมในจำนวนภาษามากที่สุด (โดย "เล็กน้อย" ฉันหมายถึงการยกเว้นคำตอบเช่นโปรแกรมว่างหรือข้อความที่จะถูกสะท้อนโดยตรง) รหัสต่อไปนี้เห็นได้ชัดว่ารวบรวมในภาษาการเขียนโปรแกรมต่อไปนี้ทั้งหมด (และพิมพ์สิ่งที่แตกต่างกันในแต่ละภาษา): C, C ++, Perl, TeX, LaTeX, PostScript, sh, bash, zsh และ Prolog %:/*:if 0;"true" +s ||true<</;#|+q|*/include<stdio.h>/*\_/ {\if(%)}newpath/Times-Roman findfont 20 scalefont setfont( %%)pop 72 72 moveto(Just another PostScript hacker,)show(( t)}. t:-write('Just another Prolog hacker,'),nl,halt. :-t. :-initialization(t). end_of_file. %)pop pop showpage(-: */ …

16
เอาท์พุทภาพของรหัสที่มาของคุณ (ไม่ค่อนข้าง -a-Quine)
กอล์ฟรหัส: พิมพ์ภาพของรหัสที่มา ความต้องการ ต้องเอาท์พุทอิมเมจของซอร์สโค้ดเองไม่ใช่เวอร์ชันที่เก็บไว้ที่อื่นและดึงข้อมูลในเวลาทำงาน รหัสจะต้องอ่านได้ชัดเจนเพียงพอที่จะคัดลอกด้วยมือและทำซ้ำผลลัพธ์ สามารถใช้รูปแบบภาพใดก็ได้ โบนัส -10% ของคะแนนถ้าคุณอนุญาตให้ใช้มากกว่าหนึ่งรูปแบบเอาต์พุต -15% ถ้ารหัสของคุณยังควิน 'ความจริง' ie มันไม่ได้อ่านซอร์สโค้ด แต่ซอร์สโค้ดถูกฝังอยู่ (ดูตัวอย่างที่นี่ ) -30% ถ้ารหัสของคุณเป็น quine ที่เข้มงวด - นั่นคือภาพของรหัสจะถูกฝังอยู่ในโปรแกรม (โซลูชั่น Piet ฉันกำลังมองคุณอยู่)

23
พิมพ์หมายเลขที่ปลอดภัยต่อการหมุน
พื้นหลัง คุณกำลังทำงานให้กับผู้ผลิตเกมกระดานบางเกมและจำเป็นต้องผลิตแผ่นไม้ที่มีตัวเลขตั้งแต่ 0 ถึงn ที่สลักไว้สำหรับเกมบางเกม แต่ไม่ต้องกังวลใจต่อกระเบื้องบางส่วนจะกลายเป็นแยกไม่ออกเช่นและ6 9เพื่อหลีกเลี่ยงนี้คุณมีเพื่อให้ตัวเลขที่จะสับสนกับคนอื่น ๆ (และเฉพาะผู้) มีจุด disambiguating เช่นคุณจะมีกระเบื้องเหมือนหรือ9.6089. น่าเสียดายที่คุณต้องใช้อุปกรณ์แกะสลักไม้แบบเก่า แต่ยังสามารถตั้งโปรแกรมได้ซึ่งอินเทอร์เฟซเสียจนคุณต้องเข้ารหัสตัวละครทุกตัวของโปรแกรมด้วยมือในกระบวนการที่น่าเบื่ออย่างไม่น่าเชื่อ โชคดีที่อุปกรณ์เข้าใจภาษาการเขียนโปรแกรมที่มีอยู่ทั้งหมด ดังนั้นคุณกำลังมองหาโปรแกรมที่สั้นที่สุดที่จะพิมพ์กระเบื้องดังกล่าว งานจริง เขียนโปรแกรมสั้นที่สุดที่: รับจำนวนเต็มบวกnเป็นอินพุต การอ่านอินพุตนั้นขึ้นอยู่กับคุณอย่างไร พิมพ์ตัวเลขแต่ละตัวตั้งแต่ 0 ถึงn (รวม 0 และn ) หนึ่งครั้งตามลำดับที่คุณเลือกโดยคั่นด้วยอักขระช่องว่างเดียว (รวมถึงบรรทัดใหม่) ตัวเลขจะถูกพิมพ์โดยไม่มีศูนย์นำหน้า ผนวกจุด (.) กับทุกหมายเลขที่เปลี่ยนเป็นตัวเลขอื่นหมายเลขที่ถูกต้องเมื่อหมุนโดยπ (180 °) แม้ว่าจำนวนนั้นจะมากกว่าn แบบอักษรของคุณ 0 และ 8 คือการหมุนแบบสมมาตรและ 9 คือการหมุน 6 แบบที่ 2 และ 5 นั้นแตกต่างกันตามการหมุน 1 …
29 code-golf  number 

2
ASCII art 3D StreetView
การป้อนข้อมูล: คุณได้รับชุดจำนวนเต็ม (ป้อนผ่าน stdin หรือพรอมต์) เลขจำนวนเต็มทุกคู่ในชุดนี้แสดงถึงความกว้างของอาคาร [ช่วงที่ถูกต้อง: 1..10] และสูง [ช่วงที่ถูกต้อง: 0..10] สมมติว่าอินพุตเป็นรูปแบบที่ถูกต้อง ตัวอย่างอินพุต (บรรทัดที่สองใช้สำหรับการสาธิตเท่านั้น): 1 2 1 1 1 0 2 4 1 3 1 2 2 1 WHWHWHWHWHWHWH ผลลัพธ์ตัวอย่างที่สอดคล้องกัน: ______ / ______ / | | | | __ | | / __ / | __ | | | | …

30
พิจารณาว่า Strings เท่ากันหรือไม่
งานของคุณคือง่าย ตรวจสอบว่าหนึ่งสายเท่ากับอื่น ๆ (ไม่ใช่ที่อยู่ค่า) โดยไม่ต้องใช้ของผู้ประกอบการความเท่าเทียมกัน (เช่น==, ===หรือ.equal()) หรือความไม่เท่าเทียมกัน ( !=, !==) อะไรที่คล้ายกันสำหรับภาษาอื่น ๆ ซึ่งหมายความว่าทุกที่! คุณไม่สามารถใช้โอเปอเรเตอร์เหล่านี้ได้ทุกที่ในรหัส คุณอาจจะ แต่คุณใช้สลับเช่นที่คุณไม่ได้โดยตรงเปรียบเทียบ!expexp != with something else นอกจากนี้คุณไม่สามารถใช้ฟังก์ชั่นใด ๆ เช่นstrcmp , strcasecmpเป็นต้น ในฐานะที่เป็นผู้ประกอบการเปรียบเทียบ ( >=, <=, >, <) พวกเขายังไม่ได้รับอนุญาต ฉันรู้ว่าคำตอบบางอย่างรวมถึงสิ่งนี้ แต่ฉันอยากเห็นคำตอบเพิ่มเติมที่ไม่ได้ทำให้ผู้ปฏิบัติงานเสมอภาคกัน ตัวอย่างการใช้ PHP จะแสดง: <?php $a = 'string'; $b = 'string'; $tmp = array_unique(array($a, $b)); return …
29 code-golf 

21
นับจาก 1 ถึง 100 …ในเลขโรมัน
เขียนโปรแกรมที่มีค่าตั้งแต่ 1 ถึง 100 ในรูปแบบตัวเลขโรมันและพิมพ์ตัวเลขเหล่านี้ด้วยเอาต์พุตมาตรฐาน แต่ละหมายเลขต้องคั่นด้วยช่องว่าง คุณไม่สามารถใช้ฟังก์ชันในตัวเพื่อแปลงเป็นตัวเลขโรมันหรือแอปพลิเคชันหรือไลบรารีภายนอกเพื่อทำเช่นนั้น ผลลัพธ์ที่ต้องการคือ I II III IV V VI VII VIII IX X XI XII XIII XIV XV XVI XVII XVIII XIX XX XXI XXII XXIII XXIV XXV XXVI XXVII XXVIII XXIX XXX XXXI XXXII XXXIII XXXIV XXXV XXXVI XXXVII XXXVIII XXXIX XL XLI XLII …

30
ค้นหาความยาวของลำดับสูงสุด
สมมติว่าเรามีสตริงและเราต้องการหาลำดับซ้ำสูงสุดของจดหมายทุกฉบับ ตัวอย่างเช่นกำหนดอินพุตตัวอย่าง: "acbaabbbaaaaacc" เอาต์พุตสำหรับอินพุตตัวอย่างสามารถเป็น: a=5 c=2 b=3 กฎ: รหัสของคุณอาจเป็นฟังก์ชั่นหรือโปรแกรม - เพื่อให้คุณเลือก อินพุตสามารถเป็นได้โดยพารามิเตอร์ stdin ไฟล์หรือฟังก์ชัน เอาต์พุตควรมีเฉพาะอักขระที่ปรากฏในอินพุต ความยาวสูงสุดของอินพุตคือ 1024 ลำดับเอาต์พุตไม่สำคัญ แต่ต้องพิมพ์ในรูปแบบ [char] = [ลำดับซ้ำสูงสุด] [ตัวคั่น] สตริงสามารถมีอักขระใด ๆ การแข่งขันจะสิ้นสุดในวันพฤหัสบดีที่ 3 เวลา 23:59 UTC
29 code-golf 

28
ปัญหาของฟัส (นับ)
ความท้าทาย เขียนฟังก์ชั่นที่รับจำนวนเต็มบวกสองจำนวนnและkเป็นอาร์กิวเมนต์และส่งกลับจำนวนของคนสุดท้ายที่เหลือจากnหลังจากนับคนk -th แต่ละคน นี่เป็นความท้าทายของนักเล่นกอล์ฟดังนั้นรหัสที่สั้นที่สุดชนะ ปัญหา nคน (หมายเลขจาก1ถึงn ) ยืนเป็นวงกลมและแต่ละk -th นั้นถูกนับจนกระทั่งเหลือคนเดียว (ดูบทความวิกิพีเดียที่เกี่ยวข้อง ) กำหนดจำนวนคนสุดท้ายนี้ เช่นสำหรับk = 3คนสองคนจะถูกข้ามและคนที่สามจะถูกนับออก คือสำหรับn = 7หมายเลขจะถูกนับในลำดับที่ 3 6 2 7 5 1 (ในรายละเอียด1 2 3 4 5 6 7 1 2 4 5 7 1 4 5 1 4 1 4 ) และทำให้คำตอบคือ4 ตัวอย่าง J(7,1) …

30
Rand5 () ถึง Rand7 () [ปิด]
คุณได้รับฟังก์ชั่น Rand5 () ฟังก์ชันนี้คืนค่าจำนวนเต็มแบบสุ่ม (การกระจายเท่ากัน) อย่างสมบูรณ์ระหว่าง 1 ถึง 5 จัดเตรียมฟังก์ชัน Rand7 () ซึ่งใช้ Rand5 () เพื่อสร้างจำนวนเต็มแบบสุ่มอย่างสมบูรณ์ระหว่าง 1 ถึง 7

30
ตรวจสอบว่า 4 คะแนนจากตาราง
เขียนฟังก์ชั่นที่ใช้ 4 จุดบนเครื่องบินเป็นอินพุทและคืนค่าจริงถ้า if 4 คะแนนเป็นรูปสี่เหลี่ยมจัตุรัส คะแนนจะมีพิกัดรวมที่มีค่าสัมบูรณ์ <1,000 คุณสามารถใช้การแทนค่าตามสมควรของ 4 คะแนนเป็นอินพุตได้ คะแนนไม่ได้ระบุไว้ในคำสั่งซื้อใด ๆ รหัสที่สั้นที่สุดชนะ ตัวอย่างสี่เหลี่ยม: (0,0),(0,1),(1,1),(1,0) # standard square (0,0),(2,1),(3,-1),(1,-2) # non-axis-aligned square (0,0),(1,1),(0,1),(1,0) # different order ตัวอย่างที่ไม่ใช่สี่เหลี่ยม: (0,0),(0,2),(3,2),(3,0) # rectangle (0,0),(3,4),(8,4),(5,0) # rhombus (0,0),(0,0),(1,1),(0,0) # only 2 distinct points (0,0),(0,0),(1,0),(0,1) # only 3 distinct points คุณสามารถคืนค่าจริงหรือเท็จสำหรับสี่เหลี่ยมจัตุรัสที่เสื่อม (0,0),(0,0),(0,0),(0,0)
29 code-golf  math 

13
Jimmys สามารถใส่ได้กี่ตัว?
ในการท้าทายที่เรียบง่าย แต่สนุกนี้คุณถูกขอให้ตัดสินว่าจิมมี่จะตกจากแพลตฟอร์มของพวกเขาหรือไม่ จิมมี่มีสามส่วนของร่างกาย/, oและ\จัดเช่นนี้ /o\ -แพลตฟอร์มจะแสดงด้วย จิมมี่จะตกลงมาจากแพลตฟอร์มของพวกเขาหากพวกเขามีสองส่วนของร่างกายที่ไม่ได้อยู่เหนือแพลตฟอร์มโดยตรง ตัวอย่างบางส่วน: /o\ - ------- -จิมมี่จะสมดุลเนื่องจากทุกส่วนของร่างกายของพวกเขาดังกล่าวข้างต้น /o\ ------ --- จิมมี่จะมีความสมดุลตั้งแต่สองส่วนของร่างกายอยู่เหนือ-s /o\ -- ---- -- จิมมี่จะทรงตัวแม้ว่าพวกเขาจะแยกระหว่างสองแพลตฟอร์ม /o\ - จิมมี่จะไม่สมดุลเนื่องจากส่วนของร่างกายสองชิ้นไม่ได้อยู่เหนือแท่น งานของคุณคือการเขียนโปรแกรมที่ใช้แพลตฟอร์มเป็นภาชนะยาวที่มีเพียง - s และs (เช่นสตริง) และส่งออกจำนวน Jimmys ที่สามารถวางบนแพลตฟอร์มดังกล่าวซึ่งจะไม่มีใครตกอยู่และไม่มีใครจะ คาบเกี่ยวกัน จิมมี่อาจมีส่วนใดส่วนหนึ่งของร่างกายทางด้านซ้ายของจุดเริ่มต้นของสายอักขระหรือด้านขวาของจุดสิ้นสุดของสายอักขระ นี่คือรหัสกอล์ฟดังนั้นคำตอบจะได้คะแนนเป็นไบต์โดยมีจำนวนไบต์น้อยกว่าที่เป็นเป้าหมาย กรณีทดสอบ ปัจจัยการผลิต - - - - - -- -- -- ---- - -- -- ------- …
29 code-golf  string 

30
จิมมี่จะร่วงหล่นจากชานชาลาของเขาไหม?
backstory พบกับจิมมี่เพื่อนของฉัน: /o\ จิมมี่เป็นตัวละครตัวเล็ก ๆ ที่ชอบยืนบนแพลตฟอร์ม นี่คือจิมมี่ยืนบนแพลตฟอร์มอย่างปลอดภัย: /o\ ------------- ตอนนี้จิมมี่มีความสมดุลที่ดีดังนั้นเขาจึงสามารถยืนได้อย่างปลอดภัยด้วยขาข้างหนึ่งออกจากแท่นอย่างเช่น: /o\ ------------------- แม้ว่าเขาจะยืนอยู่กับส่วนของร่างกายสองชิ้นหรือมากกว่าจากแพลตฟอร์มเขาจะล้มลง ทั้งสองนี้เป็นตัวอย่างที่ Jimmy จะล้ม: /o\ /o\ ---------- ---------------------- ความท้าทาย ความท้าทายของคุณคือการเขียนโปรแกรมเพื่อตรวจสอบกำหนดสตริงด้วยแพลตฟอร์มและตำแหน่งของ Jimmy หาก Jimmy สามารถยืนบนแพลตฟอร์มได้โดยไม่ล้ม อินพุต: สองบรรทัดแสดงตำแหน่งของจิมมี่และตำแหน่งของแพลตฟอร์มใต้เขา สิ่งนี้อาจมาจากอินพุตสองแบบแยกกันอินพุตเดี่ยวหรืออาเรย์ของการเรียงลำดับบางอย่าง คุณสามารถรับอินพุตผ่านแบบฟอร์มที่สมเหตุสมผลรวมถึงฟังก์ชั่นและอินพุตมาตรฐาน ใช้การเข้ารหัสอย่างหนักหากภาษาของคุณไม่รองรับวิธีการป้อนข้อมูลอื่น ๆ เอาท์พุท: ค่าบูลีนจริงและเท็จหรือจำนวนเต็ม 1 หรือ 0 เพื่อเป็นตัวแทนของจริง / เท็จตามลำดับ ค่าบูลีนนั้นขึ้นอยู่กับว่า Jimmy สามารถอยู่บนแพลตฟอร์มได้หรือไม่ - จริงถ้า Jimmy สามารถอยู่บนแพลตฟอร์มได้หรือเป็นเท็จถ้าเขาจะหลุด ขนาดของแพลตฟอร์มนั้นสามารถเปลี่ยนแปลงได้ตามต้องการ โปรแกรมของคุณควรคำนึงถึงสิ่งนั้น แพลตฟอร์มต้องมีความยาวไม่เป็นศูนย์และแพลตฟอร์มต้องสมบูรณ์ …

28
เอาท์พุทสี่เหลี่ยมสีขาวหรือสีดำทั้งหมดของกระดานหมากรุก
บทนำ นี่คือลักษณะของกระดานหมากรุก คุณจะเห็นว่าa1เป็นสี่เหลี่ยมสีเข้ม อย่างไรก็ตามb1เป็นตารางแสง งาน ความท้าทายคือการให้dark, lightหรือbothการส่งออกทั้งหมดที่มืด , แสงหรือสี่เหลี่ยมทั้งหมด ด้วยตัวคั่น (เช่นช่องว่างหรือขึ้นบรรทัดใหม่) คำสั่งของสี่เหลี่ยมทั้งหมดไม่ได้เรื่อง กรณีทดสอบ Input: dark Output: a1 a3 a5 a7 b2 b4 b6 b8 c1 c3 c5 c7 d2 d4 d6 d8 e1 e3 e5 e7 f2 f4 f6 f8 g1 g3 g5 g7 h2 h4 h6 h8 Input: light …

7
การเปลี่ยนแปลงรหัสที่มา
mbomb007 ขอให้เราทำให้โปรแกรมการทำร้ายร่างกายตนเอง มันเป็นความท้าทายที่น่าสนใจ แต่โดยส่วนตัวแล้วฉันไม่ชอบที่จะสนับสนุนให้โปรแกรมของฉันกลายเป็นการทำร้ายตนเอง ฉันชอบคิดว่าหัวใจของทุกโปรแกรมคือผีเสื้อที่สวยงามรออยู่ เช่นนี้สำหรับการแข่งขันกอล์ฟ Code แรกของฉันฉันท้าทาย Stack Exchange เพื่อแปรสภาพผีเสื้อ โปรแกรมของคุณควรยอมรับรหัสของตัวเองเป็นอินพุทและเอาท์พุทI am a caterpillar!ตามด้วยรหัสสำหรับโปรแกรมอื่นในภาษาเดียวกัน (คุณอาจใส่ตัวแบ่งระหว่างเอาท์พุทหรือไม่ ... แต่เรากำลังพูดถึงผีเสื้อ โปรแกรมที่สองนี้ควรส่งออกI am a beautiful butterfly! การเปลี่ยนแปลง: โปรแกรมนี้ควรแก้ไขตัวเองซึ่งเป็นสาเหตุที่มันถูกส่งตัวเองเป็นอินพุต ฉันไม่ต้องการโปรแกรมซ้อนที่น่าเบื่อที่ไม่มีอะไรนอกจากคำสั่งพิมพ์I am a caterpillar!ตามด้วยการพิมพ์ซอร์สโค้ด คุณต้องเปลี่ยนรหัสตัวเองดังนั้นคำตอบที่น่าเบื่อที่สุดที่ยอมรับได้คือคำตอบที่พิมพ์I am a caterpillarแล้วฉีกสตริงออกจากอินพุต (ซึ่งเกิดขึ้นเป็นรหัส) และพิมพ์นั้น แน่นอนว่านี่เป็นข้อกำหนดเล็กน้อยในการเขียนดังนั้นควรคิดว่าเป็น "วิญญาณแห่งความท้าทาย" ข้อกำหนดอย่างเป็นทางการจะได้รับการตั้งค่าที่ "หากโปรแกรมของคุณได้รับสตริงสุ่มที่มีความยาวเท่ากับโปรแกรมของคุณควรมีโอกาสน้อยกว่า 5% ในการพิมพ์I am a butterflyเมื่อรันโปรแกรมที่สอง" สรุป: เขียนโปรแกรมซึ่งเมื่อให้รหัสของตัวเองเป็นอินพุทแล้วพิมพ์I am a caterpillar!ตามด้วยบล็อกของซอร์สโค้ด บล็อกที่สองของซอร์สโค้ดเมื่อรวบรวม …

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