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

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

6
ตรวจสอบว่าตัวอย่างข้อมูลภาษาโปรแกรมคืออะไร
ความท้าทายของคุณคือการใช้ซอร์สโค้ดเป็นอินพุตและเอาต์พุตซึ่งภาษาการเขียนโปรแกรมนั้นถูกเขียนขึ้น ตัวอย่างเช่นคุณอาจมีอินพุต class A{public static void main(String[]a){System.out.println("Hello, World!");}} และเอาท์พุท Java เป้าหมายหลักสองข้อของคุณคือความหลากหลาย (ภาษาการเขียนโปรแกรมที่คุณสามารถตรวจจับได้) และความแม่นยำ (ความสามารถในการตรวจจับภาษาเหล่านี้) สำหรับหลายภาษา (โปรแกรมที่ใช้ได้มากกว่าหนึ่งภาษา) คุณสามารถตัดสินใจได้ว่าจะทำอย่างไร คุณสามารถเอาท์พุทภาษาที่โปรแกรมของคุณคิดว่าน่าจะเป็นไปได้มากกว่าหรือคุณสามารถส่งออกข้อผิดพลาดหรือคุณสามารถเลือกอาเรย์ที่เป็นไปได้ (ซึ่งอาจจะได้รับ upvotes มากกว่าข้อผิดพลาด!) นี่คือการประกวดความนิยมเพราะมันจะยากมากที่จะระบุเกณฑ์การชนะวัตถุประสงค์ที่แตกต่างกัน ผู้ลงคะแนนโปรดลงคะแนนว่าสามารถตรวจจับได้กี่ภาษาและมีความแม่นยำเท่าใด

10
ตัวต้านทานค่าที่ผิดปกติ
บทนำ เมื่อสร้างโครงการอิเล็กทรอนิกส์แผนผังอาจเรียกตัวต้านทานที่มีค่าผิดปกติ (กล่าวคือ 510 โอห์ม) คุณตรวจสอบชิ้นส่วนในถังขยะและพบว่าคุณไม่มีตัวต้านทาน 510 โอห์ม แต่คุณมีค่าทั่วไปมากมายด้านบนและด้านล่างค่านี้ ด้วยการรวมตัวต้านทานแบบขนานและอนุกรมคุณควรจะสามารถประมาณตัวต้านทาน 510 โอห์มได้ดีพอสมควร งาน คุณต้องเขียนฟังก์ชั่นหรือโปรแกรมที่รับรายการค่าตัวต้านทาน (ตัวต้านทานที่คุณเก็บไว้) และค่าเป้าหมาย (ซึ่งคุณมุ่งหวังที่จะประมาณ) โปรแกรมจะต้องพิจารณา: ตัวต้านทานส่วนบุคคล ตัวต้านทานสองตัวในอนุกรม ตัวต้านทานสองตัวขนานกัน โปรแกรมควรคำนวณการรวมกันที่เป็นไปได้ทั้งหมดของตัวต้านทาน 1 และ 2 จากรายการหุ้น (รวมถึงสำเนาสองตัวที่มีค่าตัวต้านทานเดียวกัน) คำนวณอนุกรมและความต้านทานแบบขนานของพวกเขาจากนั้นเรียงลำดับการกำหนดค่าตามความเหมาะสม รูปแบบเอาต์พุตควรเป็นหนึ่งการกำหนดค่าต่อบรรทัดโดยมี+ชุด|denoting และdenoting ขนานและบางพื้นที่หรือเครื่องหมาย = ก่อนความต้านทานสุทธิ สูตร ความต้านทานของตัวต้านทานหนึ่งตัวคือ R1 ความต้านทานสุทธิของตัวต้านทานสองตัวในอนุกรมคือ R1 + R2 ความต้านทานสุทธิของตัวต้านทานสองตัวแบบขนานคือ 1 / (1/R1 + 1/R2) dist = abs(Rapprox / …

5
เคล็ดลับสำหรับการเล่นกอล์ฟใน brainfuck
คุณมีเคล็ดลับทั่วไปอะไรในการเล่นกอล์ฟใน brainfuck? ฉันกำลังมองหาความคิดที่สามารถนำไปใช้กับปัญหารหัสกอล์ฟโดยทั่วไปซึ่งอย่างน้อยค่อนข้างเฉพาะเจาะจงกับ brainfuck (เช่น "ลบความคิดเห็น" ไม่ใช่คำตอบ) กรุณาโพสต์หนึ่งเคล็ดลับต่อคำตอบ

4
การแก้ปัญหาสามปัญหาที่เปิดอยู่กับ Oracle ที่หยุดทำงาน
คุณได้รับฟังก์ชั่น: h1 (f, * args) และ h2 (f, * args) ทั้งสองเป็นวิธีที่กำหนดไว้แล้วสำหรับคุณ (ที่นี่เครื่องหมายดอกจันระบุจำนวนตัวแปรของการขัดแย้ง) f คือฟังก์ชั่น * args คือรายการพารามิเตอร์ที่จะส่งผ่านไปยังฟังก์ชันนั้น h1 ส่งคืนค่าบูลีน: เป็นจริงถ้าฟังก์ชั่น f หยุดชะงักเมื่อเรียกใช้บน * args และ False หากไม่ (สมมติว่าเครื่องที่รันอยู่จะมีเวลาและหน่วยความจำไม่สิ้นสุดและล่าม / คอมไพเลอร์สำหรับภาษาที่คุณกำลังเขียน รู้วิธีจัดการกับเวลาและหน่วยความจำไม่สิ้นสุด) ถ้า f (* args) จะทำการเรียกไปยัง h1 หรือ h2 เสมอ h1 จะส่งข้อยกเว้น h2 ทำตัวเหมือน h1 ยกเว้นว่าถ้า f ทำการเรียกไปยัง h1 h2 …
23 code-golf  math 

6
อัตราส่วนเลโก้เกียร์
ฉันกำลังสร้างหุ่นยนต์เลโก้ยักษ์และฉันจำเป็นต้องสร้างอัตราส่วนเกียร์พิเศษบางอย่างโดยใช้ชุดเกียร์ ฉันมีจำนวนมากของเกียร์ที่มีขนาดเลโก้เกียร์ธรรมดา: 8, 16, 24 หรือ 40 ฟัน เขียนโปรแกรมที่ฉันสามารถใช้ในการใส่อัตราส่วนการใส่เกียร์และโปรแกรมบอกฉันว่าควรใช้การรวมกันของเกียร์เพื่อให้ได้อัตราส่วนที่ต้องการ อัตราส่วนการป้อนข้อมูลจะถูกระบุในการป้อนข้อมูลมาตรฐาน (หรือเทียบเท่าภาษาของคุณ) ที่มีจำนวนเต็มสองจำนวนคั่นด้วยลำไส้ใหญ่ อัตราส่วนของa:bวิธีการที่เพลาส่งออกควรเปลี่ยนa/bเวลาเป็นเร็วเป็นเพลาอินพุต เอาต์พุตไปยังเอาต์พุตมาตรฐานควรเป็นบรรทัดเดียวที่มีรายการอัตราส่วนเกียร์ว่างโดยคั่นด้วยช่องว่างในรูปแบบx:yที่xขนาดของเกียร์บนเพลาอินพุตและyเป็นขนาดของเกียร์บนเพลาเอาท์พุท คุณต้องใช้จำนวนเกียร์ต่ำสุดเท่าที่จะเป็นไปได้สำหรับอัตราส่วนที่กำหนด แต่ละคนxและต้องเป็นหนึ่งในy8,16,24,40 ตัวอย่าง: 1:5 -> 8:40 10:1 -> 40:8 16:8 9:4 -> 24:16 24:16 7:1 -> IMPOSSIBLE 7:7 -> 6:15 -> 16:40 หากอัตราทดเกียร์ที่ต้องการเป็นไปไม่ได้ให้พิมพ์ "IMPOSSIBLE" หากไม่ต้องการเกียร์ให้พิมพ์สตริงว่าง นี่คือรหัสกอล์ฟคำตอบที่สั้นที่สุดชนะ
23 code-golf  math 

30
ตัวอักษรในหมายเลขโทรศัพท์
ปัญหา: คุณกำลังสร้างโทรศัพท์ใหม่ที่ผู้คนสามารถพิมพ์หมายเลขโทรศัพท์พิเศษ1-800-programและพวกเขาจะถูกแปลงเป็นหมายเลขโทรศัพท์ที่ใช้งานได้โดยอัตโนมัติเช่น1-800-7764726(สำหรับตัวอย่างก่อนหน้า) โปรแกรมของคุณจะได้รับสตริงหากความยาวของตัวเลขตัวอักษรและขีดกลางและแปลงตัวอักษรทั้งหมดให้เป็นตัวเลขที่เกี่ยวข้อง นี่คือปุ่มกดสำหรับการอ้างอิง: กฎ: โปรแกรมของคุณจะได้รับสตริง มันจะประมวลผลและกลับ / พิมพ์สตริงอื่น ยอมรับภาษาใดก็ได้ เนื่องจากเป็นcode-golfรหัสที่สั้นที่สุดจะเป็นผู้ชนะ
23 code-golf  number 

5
ทำคะแนนในเกมของ Go
การให้คะแนนเกมGoเป็นงานที่ไม่ง่ายเกินไป ในอดีตมีการถกเถียงกันหลายเรื่องเกี่ยวกับวิธีการออกแบบกฏเพื่อให้ครอบคลุมกรณีมุมแปลก ๆ ที่อาจเกิดขึ้น โชคดีที่ในภารกิจนี้คุณไม่ต้องทำสิ่งที่ซับซ้อนเช่นชีวิตและความตายหรือการตรวจจับเซกิ ในภารกิจนี้คุณต้องใช้โปรแกรมที่ให้คะแนนเกมตามกฎ Tromp-Taylorโดย Komi ขั้นตอนการให้คะแนนค่อนข้างง่าย: จุด P, ไม่ใช่สี C, ถูกพูดถึง C หากมีเส้นทาง (จุดแนวตั้งหรือแนวนอน) จุดสีที่อยู่ติดกันของ P จาก P ไปยังจุดสี C คะแนนของผู้เล่นคือจำนวนจุดสีของเธอ รวมถึงจำนวนคะแนนที่ว่างที่เข้าถึงได้เฉพาะสีของเธอ ตัวอย่างเช่นพิจารณากระดานต่อไปนี้ X, Oและ-แสดงว่าสีดำ, สีขาวและทาสีทางแยก: - - - X - O - - - - - - X - O - - - - - - …

3
แก้ปริศนา 15 ตัว (ตัวต่อเลื่อนกระเบื้อง)
15 Puzzle เป็นเกมไขปริศนาที่โด่งดังเกี่ยวกับการเลื่อน 15 แผ่นรอบบนตาราง 4x4 เริ่มต้นจากการกำหนดค่าแบบสุ่มเป้าหมายคือการจัดเรียงกระเบื้องในลำดับที่ถูกต้อง นี่คือตัวอย่างของ Puzzle 15 ที่ผ่านการแก้ไขแล้ว: 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 การเคลื่อนที่ของปริศนาแต่ละครั้งจะมีรูปแบบขึ้น / ลง / ซ้าย / ขวา การย้าย "ลง" ประกอบด้วยการเลื่อนไทล์ที่อยู่เหนือจุดที่ว่างลง การเคลื่อนที่ "ขวา" ประกอบด้วยการเลื่อนไทล์ไปทางขวาเข้าสู่จุดที่ว่างเปล่า นี่คือวิธีที่กระดานมองตามการเคลื่อนไหวของลงและขวา 01 02 03 04 05 06 07 08 09 10 …

21
แปลงทศนิยมซ้ำเป็นเศษส่วน
คำถามนี้ไม่จำเป็นต้องใช้กับการยกเลิกทศนิยม - ทศนิยมซ้ำยังสามารถแปลงเป็นเศษส่วนผ่านอัลกอริทึม งานของคุณคือการสร้างโปรแกรมที่ใช้ทศนิยมซ้ำเป็นอินพุตและส่งออกตัวเศษและส่วนที่เกี่ยวข้อง (ในเงื่อนไขต่ำสุด) ที่สร้างการขยายทศนิยม เศษส่วนมากกว่า 1 9/5ควรจะแสดงเป็นเศษส่วนที่ไม่เหมาะสมเช่น คุณสามารถสันนิษฐานได้ว่าอินพุตนั้นเป็นค่าบวก ทศนิยมซ้ำจะได้รับในรูปแบบนี้: 5.3.87 กับทุกอย่างหลังจากจุดที่สองซ้ำแล้วซ้ำอีกเช่นนี้ 5.3878787878787... โปรแกรมของคุณจะส่งออกจำนวนเต็มสองจำนวนที่แสดงถึงตัวเศษและส่วนโดยคั่นด้วยเครื่องหมายทับ (หรือรูปแบบที่เทียบเท่าในภาษาของคุณหากคุณไม่ได้พิมพ์ข้อความธรรมดา): 889/165 โปรดทราบว่าการยกเลิกทศนิยมจะไม่มีอะไรหลังจากจุดที่สองและทศนิยมที่ไม่มีส่วนทศนิยมที่ไม่ซ้ำจะไม่มีอะไรระหว่างจุดสองจุด กรณีทดสอบ กรณีทดสอบเหล่านี้ครอบคลุมกรณีมุมที่ต้องการทั้งหมด: 0..3 = 1/3 0.0.3 = 1/30 0.00.3 = 1/300 0.6875. = 11/16 1.8. = 9/5 2.. = 2/1 5..09 = 56/11 0.1.6 = 1/6 2..142857 = 15/7 0.01041.6 = 1/96 …

12
ทั้งคู่เป็นภาพระดับสีเทา
ปรับภาพสีเทาให้เป็นขาวดำบริสุทธิ์ด้วยอัลกอริทึมของคุณเอง แนวทาง: คุณต้องคิดอัลกอริธึมใหม่ของคุณเอง คุณไม่สามารถใช้อัลกอริทึมที่มีอยู่แล้ว (เช่น Floyd-Steinburg) แต่คุณสามารถใช้เทคนิคทั่วไป โปรแกรมของคุณจะต้องสามารถอ่านภาพและสร้างภาพที่มีขนาดเท่ากัน นี่คือการประกวดความนิยมดังนั้นใครก็ตามที่ชนะได้ดีที่สุด (ใกล้เคียงกับต้นฉบับมากที่สุด) และสร้างสรรค์มากที่สุด (พิจารณาจากคะแนนโหวต) โบนัสหากรหัสย่อแม้ว่าจะไม่จำเป็นก็ตาม คุณสามารถใช้ภาพสีเทาใดก็ได้ที่คุณต้องการเป็นอินพุตควรมีขนาดใหญ่กว่า 300x300 รูปแบบไฟล์ใดก็ได้ อินพุตตัวอย่าง: ตัวอย่างผลลัพธ์: นี่เป็นงานที่ค่อนข้างดี แต่ก็ยังมีเส้นและลวดลายที่มองเห็นได้

15
สตริงภูมิประเทศ
นี่คือตัวอย่างอินพุตดังนั้นฉันสามารถอธิบายได้ว่าปัญหาคืออะไร: ((1 2)(3 (4 5) moo)) (i (lik(cherries)e (woohoo))) คิดว่าบรรทัดของข้อความนี้เป็นแผนที่ภูมิประเทศของภูเขาบางแห่ง วงเล็บแต่ละชุดแสดงความสูงหนึ่งหน่วย หากเรา "ดู" สิ่งนี้จากด้านข้างเพื่อให้เราเห็นภูเขาในแนวตั้งเราจะเห็น: 4 5 cherries woohoo 1 2 3 moo lik e i เมื่อกำหนดหนึ่งในแผนที่ภูมิประเทศเหล่านี้ให้ส่งออกแผนที่ แต่ในระดับแนวตั้งเช่นผลลัพธ์ด้านบน แยกรายการต่าง ๆ ในแผนที่ด้วยจำนวนตัวอักษรไปยังรายการถัดไป ตัวอย่างเช่นมี 4 ช่องว่างในการส่งออกระหว่างและmoo iเช่นเดียวกันมี 4 ตัวอักษรในการป้อนข้อมูลระหว่างและmooi รหัสที่ทำสิ่งนี้ในจำนวนอักขระน้อยที่สุดชนะ

7
แปลงการแสดงออกมัดเป็นสัญลักษณ์ postfix
เมื่อฉันเห็นชื่อของคำถามที่ปิดนี้ฉันคิดว่ามันดูเหมือนการแข่งขันกอล์ฟที่น่าสนใจ ดังนั้นฉันขอเสนอเป็นเช่นนี้: ท้าทาย: เขียนโปรแกรมการแสดงออกหรือย่อยซึ่งได้รับการแสดงออกเกี่ยวกับคณิตศาสตร์ในสัญกรณ์มัดเช่น1 + 2ผลลัพธ์ที่ได้แสดงออกเหมือนกันในสัญกรณ์ postfix1 2 +คือ (หมายเหตุ: ความท้าทายที่คล้ายกันถูกโพสต์เมื่อต้นเดือนมกราคม อย่างไรก็ตามฉันรู้สึกว่างานทั้งสองนั้นมีความแตกต่างกันพอสมควรเพื่อแสดงให้เห็นถึงความท้าทายที่แยกต่างหากนี้นอกจากนี้ฉันสังเกตเห็นหัวข้ออื่นหลังจากพิมพ์ทุกอย่างด้านล่าง ไม่เพียงทิ้งมันไป) การป้อนข้อมูล: การป้อนข้อมูลประกอบด้วยมัดที่ถูกต้องแสดงออกคณิตศาสตร์ซึ่งประกอบด้วยตัวเลข (จำนวนเต็มไม่เป็นลบแสดงเป็นลำดับหนึ่งหรือตัวเลขทศนิยมเพิ่มเติม) สมดุลวงเล็บเพื่อระบุ subexpression จัดกลุ่มและสี่มัดไบนารีผู้ประกอบการ + , -, และ* /สิ่งเหล่านี้อาจถูกแยกออก (และนิพจน์ทั้งหมดล้อมรอบ) ด้วยจำนวนช่องว่างโดยพลการซึ่งควรละเว้น 1 สำหรับผู้ที่ชื่นชอบไวยากรณ์อย่างเป็นทางการนี่เป็นไวยากรณ์ที่เหมือน BNF ง่าย ๆ ที่กำหนดอินพุตที่ถูกต้อง เพื่อความกระชับและชัดเจนไวยากรณ์จะไม่รวมช่องว่างเพิ่มเติมซึ่งอาจเกิดขึ้นระหว่างโทเค็นใด ๆ สอง (นอกเหนือจากตัวเลขภายในตัวเลข): expression := number | subexpression | expression operator expression subexpression := "(" expression ")" …
23 code-golf  math 

30
10 พิมพ์ CHR $ (205.5 + RND (1)); : GOTO 10 ใน PHP (หรืออย่างอื่นสำหรับเรื่องนั้น)
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Code Golf Stack Exchange อพยพ 7 ปีที่ผ่านมา เพิ่งสนทนา 'กล้า' กับเพื่อนร่วมงานเกี่ยวกับความรัดกุมของคำสั่งพื้นฐานดังต่อไปนี้: 10 PRINT CHR$(205.5+RND(1)); : GOTO 10 มันเป็นชื่อของหนังสือเล่มนี้และจะพิมพ์ลำดับ/และ\ตัวละครโดยสลับกันระหว่างสองแบบสุ่มทำให้เกิดรูปแบบคล้ายกับสิ่งนี้: (ภาพที่ยืมมาจากhttp://www.flickr.com/photos/rndmcnlly/5058442151/sizes/o/in/photostream/ ) ด้วยความที่เป็นความรู้ PHP เราสงสัยว่าวิธีที่กะทัดรัดที่สุดในการเขียนสิ่งเดียวกันใน PHP คืออะไรและเกิดขึ้นกับสิ่งนี้: while(1) { echo chr(47 + 45 * rand(0,1)); } chr(47)เป็น/ตัวอักษรและ chr (92) \เป็น ดังนั้นคำสั่งecho chr(47 + 45 * rand(0,1));จะสุ่มเลือกระหว่างสองคลื่นไส้โฆษณา ในภาษาที่คุณเลือกให้เขียนโปรแกรมหรือฟังก์ชั่นที่สั้นที่สุดเพื่อส่งออกลำดับ\และ/ตัวละครแบบสุ่มที่ไม่มีที่สิ้นสุดซึ่งตัวละครแต่ละตัวมีความเป็นไปได้ที่จะถูกเลือกเท่ากัน

8
สันทนาการของ Piet Mondrian Composition
สวัสดีตอนบ่าย, เป้าหมายของคุณคือในการสร้างไบต์ของซอร์สโค้ดอย่างน้อยที่สุดให้สร้างภาพเขียน 'Composition' ของ Piet Mondrian (เช่น Composition # 10 ) การพักผ่อนหย่อนใจสามารถใช้สีจริงหรือแทนที่ด้วยสีที่เหมาะสมจากจานสี 16 ค่าเริ่มต้นของ Windows การพักผ่อนหย่อนใจของคุณสามารถแสดงผลใน PNG, BMP หรือ NetPBM ไม่ว่าจะเป็นไฟล์หรือไปที่ STDOUT หรือตรงไปที่หน้าจอ นันทนาการของคุณต้องมีความละเอียด 512x512 หรือสูงกว่า นันทนาการของคุณต้องไม่ใช้อินเทอร์เน็ต หากโปรแกรมของคุณต้องการไฟล์ข้อมูลขนาดของไฟล์นั้นจะถูกเพิ่มเข้าไปในขนาดแหล่งที่มาของคุณ คะแนนของคุณจะเป็นขนาดของไฟล์ต้นฉบับในหน่วยไบต์ โปรดระบุสิ่งที่คุณกำลังวาดใหม่และระบุลิงก์ไปยังภาพต้นฉบับและรูปภาพของการพักผ่อนหย่อนใจของคุณ โชคดี.

30
บูรณาการใหม่สำหรับวง [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Code Golf Stack Exchange ปิดให้บริการใน3 ปีที่ผ่านมา For มีการใช้ลูปอย่างกว้างขวางในหลายภาษา แต่คุณจะทำอย่างไรถ้าไม่มีภาษารองรับ สร้างวิธีการที่จะดำเนินการขั้นพื้นฐานforห่วงโดยไม่ต้องใช้โครงสร้างการทำซ้ำใด ๆ ( for, foreach, while,doฯลฯ ) พื้นฐานสำหรับการวนซ้ำที่คุณต้องการทำซ้ำถูกตั้งค่าเช่นนี้ for(i=0;i<1000;i++) คุณต้องสามารถทำซ้ำสิ่งนี้ได้โดยไม่ต้องใช้โครงสร้างการทำซ้ำ มันจะต้องรันโค้ดในภาษาของคุณที่จะอยู่ในเนื้อความของลูป evalอนุญาตให้ใช้รูปแบบใดก็ได้แม้ว่าจะไม่สามารถดำเนินการได้forลูปได้ด้วยตัวเอง คุณสามารถทดสอบรหัสของคุณโดยพิมพ์รหัสiด้วยช่องว่าง 100 ครั้งเพิ่มกรณีทดสอบนี้ที่ส่วนท้ายของคำตอบเพื่อยืนยันรหัสกับผู้อื่น ไม่มีข้อ จำกัด เกี่ยวกับสิ่งที่มันต้องเป็นทั้งหมดที่ต้องทำคือทำซ้ำforลูป ผู้ชนะจะได้รับการตัดสินบนพื้นฐานของการโหวตในเวลาที่เลือก

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