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

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

5
อีกแค่ Perl Hacker [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน3 ปีที่ผ่านมา ความท้าทายกอล์ฟรหัสคลาสสิก เขียนโปรแกรม Perl ที่คลุมเครือที่สุดในการพิมพ์ "Just another Perl hacker" นี่คือบทความ Wikipedia ที่มี คะแนนโบนัสหากเหมาะสมกับ 3 บรรทัด / 70 ตัวอักษร

13
มด ASCII ของ Langton
วาดเส้นทางของมดแลงตัน ลักษณะ สี่เหลี่ยมบนเครื่องบินมีสีต่างกันไม่ว่าจะเป็นสีดำหรือสีขาว เราระบุหนึ่งตารางโดยพลการว่า "มด" มดสามารถเดินทางไปในทิศทางที่สำคัญทั้งสี่ในแต่ละขั้นตอน มดเคลื่อนไหวตามกฎด้านล่าง: ที่สี่เหลี่ยมสีขาวเลี้ยวขวา 90 °พลิกสีของสี่เหลี่ยมเลื่อนไปข้างหน้าหนึ่งยูนิต ที่สี่เหลี่ยมสีดำเลี้ยวซ้าย 90 °พลิกสีของสี่เหลี่ยมเลื่อนไปข้างหน้าหนึ่งยูนิต ข้อมูลจำเพาะ อินพุต: จำนวนเต็ม N ระหว่าง 0 ถึง 725 (รวม) เอาต์พุต: ตาราง 17 คูณ 17 แสดงถึง "เส้นทาง" ของ ant ตามขั้นตอน N กฎระเบียบ มดเริ่มหันขวา (นาฬิกา 3 นาฬิกา) มดเริ่มต้นที่กึ่งกลางของตาราง ใช้_#@สำหรับสี่เหลี่ยมสีขาวสี่เหลี่ยมดำและมดตามลำดับ ตอนแรกกริดนั้นเป็นสีขาวสนิท คุณอาจสร้างโปรแกรมที่สมบูรณ์หรือฟังก์ชั่นในภาษาที่ตีความ อินพุตโดย stdin หรืออาร์กิวเมนต์ ตัวอย่าง อัปเดต:เอาต์พุตของ N = 450 …

18
ภาพยนตร์เรื่อง“ Deaf Grandma” ของ Chris Pine
ฉันเป็นที่ปรึกษาของ RubyLearning และหนึ่งในแบบฝึกหัดที่เรามอบให้กับนักเรียนของเราคือแบบฝึกหัด "คนหูหนวกคุณยาย" จากหนังสือของ Chris Pine " Learn to Program " นี่คือคำอธิบาย: เขียนโปรแกรม Deaf Grandma ไม่ว่าคุณจะพูดอะไรกับคุณย่า (ไม่ว่าคุณจะพิมพ์อะไร) เธอควรตอบด้วย: "อืม?! พูดออกมานี่ซันนี่!" เว้นแต่คุณจะตะโกน (พิมพ์ทุกประเภท) หากคุณตะโกนเธอจะได้ยินคุณ (หรืออย่างน้อยเธอก็คิดอย่างนั้น) และตะโกนกลับมาว่า: "ไม่ไม่ใช่ตั้งแต่ปี 1938!" เพื่อให้โปรแกรมของคุณน่าเชื่อถือจริงๆให้คุณยายตะโกนปีละครั้งกัน อาจสุ่มปีใดก็ได้ระหว่างปี 1930 ถึง 1950 (ส่วนนี้เป็นทางเลือกและจะง่ายกว่ามากถ้าคุณอ่านส่วนของตัวสร้างหมายเลขสุ่มของ Ruby ที่ท้ายบทวิธี) คุณไม่สามารถหยุดคุยกับคุณยายจนกว่าคุณจะ ตะโกน "BYE" หลังจากทำซ้ำหลายคอร์สฉันพยายามดูว่าฉันจะได้ขนาดเล็กแค่ไหนและตอนนี้มีอักขระได้ถึง 112 ตัว: puts (s||='').upcase==s ? "NO, NOT SINCE #{1930+rand(21)}!":"HUH?! SPEAK …
22 code-golf  string 

30
หน้าต่าง Hello World
สร้างหน้าต่างที่กล่าวสวัสดีโลกภายในและไม่มีอะไรอื่น คุณไม่สามารถมีปุ่มตกลงหรือยกเลิกภายใน มันจะต้องเป็นเพียงหน้าต่างธรรมดาที่บอกว่าสวัสดีโลก ฉันไม่สนใจเกี่ยวกับเนื้อหาของกรอบหน้าต่างหรือลักษณะของหน้าต่าง แต่ภายในนั้นต้องบอกว่าสวัสดีโลกเท่านั้น ตัวอย่าง: รหัสที่สั้นที่สุดชนะ แก้ไข: ฉันขอโทษ Johannes Kuhn หน้าต่างต้องอยู่ที่นั่นจริง ๆ มันอาจไม่ได้ปิดทันที ฉันไม่ได้นึกถึงสถานการณ์นี้และไม่ได้คำนึงถึงสิ่งนี้ แก้ไข 2: ขณะนี้เรามี 3 คำตอบผูก (20 ตัวอักษร) ข้อเสนอแนะของผู้ที่ควรจะเป็นผู้ชนะก็ยินดีต้อนรับ

30
การใช้ชุดกำลังไฟที่สั้นที่สุด
นิยามปัญหา พิมพ์ powerset ของชุดที่กำหนด ตัวอย่างเช่น: [1, 2, 3] => [[], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]] แต่ละองค์ประกอบจะถูกพิมพ์บนบรรทัดแยกดังนั้นตัวอย่างข้างต้นจะถูกพิมพ์เป็น: [] [1] [2] ... [1, 2, 3] โค้ดตัวอย่าง (ในตัวอย่าง D, python ที่นี่ ): import std.stdio; string[][] powerset(string[] set) { if (set.length == 1) { return [set, []]; …

28
ตัวเลขที่ไม่ใช่ศูนย์สุดท้ายของ n!
รับจำนวนเต็ม1 ≤ N ≤ 1,000,000เป็นอินพุตเอาต์พุตหลักที่ไม่ใช่ศูนย์สุดท้ายของN! ที่ไหน! เป็นแฟคทอเรียล (ผลิตภัณฑ์ของตัวเลขทั้งหมดตั้งแต่1ถึงNรวมถึง) นี่คือ OEIS ลำดับA008904 โปรแกรมของคุณต้องการเสร็จสิ้นภายใน 10 วินาทีบนเครื่องที่เหมาะสมสำหรับการป้อนข้อมูลที่ถูกต้องใด ๆ กรณีทดสอบ 1 => 1 2 => 2 3 => 6 4 => 4 5 => 2 6 => 2 7 => 4 8 => 2 9 => 8 10 => 8 100 => 4 1000 …

26
การเสนอราคาประมูลต่ำสุดที่ไม่ซ้ำใคร
ขอบคุณสำหรับการเข้าร่วมทั้งหมดเวลาที่กำหนดได้ผ่านไปแล้วและคะแนนสุดท้ายอยู่ท้ายคำถาม ขอแสดงความยินดีกับPhiNotPiในชัยชนะที่ครอบคลุมอย่างเป็นธรรม นี่คือกษัตริย์ของเนินเขาท้าทายจุดมุ่งหมายในการที่จะสร้างโปรแกรมที่ชนะบ่อยกว่าใด ๆ ของฝ่ายตรงข้ามในการประมูลเสนอราคาต่ำสุดที่ไม่ซ้ำกัน อินพุต เมื่อป้อนโปรแกรมจะได้รับการเสนอราคารอบก่อนหน้าทั้งหมดหนึ่งรอบต่อบรรทัดการเสนอราคาทั้งหมดคั่นด้วยช่องว่างดังนี้: 10 4 12 11 12 4 7 3 3 1 2 9 15 1 15 15 9 3 3 21 6 4 3 8 6 13 1 แต่ละคอลัมน์ของอินพุตแสดงถึงการเสนอราคาของหนึ่งบ็อต คอลัมน์แรกคือการเสนอราคาของโปรแกรมที่ได้รับขณะที่ส่วนที่เหลืออยู่ในลำดับที่สร้างแบบสุ่ม ขอบคุณhammarและPeter Taylorสำหรับการป้อนข้อมูลของพวกเขา อินพุตมีไว้เป็นอาร์กิวเมนต์บรรทัดเดียวและบรรทัดเดียว (หลายบรรทัด) สำหรับโปรแกรมของคุณ: ./test1 '1 2 3 4 5 6 1 2' …

3
Meta-bowling Golf
งานของคุณคือการสร้างโปรแกรมที่สั้นที่สุด (A) ที่เอาท์พุทโปรแกรมอื่น (B) ด้วยไบต์ที่ไม่ซ้ำกันมากที่สุดซึ่งจะส่งผลให้โปรแกรมต้นฉบับ (A) โดยพื้นฐานแล้วคุณกำลังเล่นกอล์ฟโปรแกรมครึ่งหนึ่งของคู่ouroboros (หรือที่รู้จักกันเป็นระยะซ้ำควินิน) และโบว์ลิ่งอีกครึ่งหนึ่ง A และ B อาจเป็นภาษาต่าง ๆ กฎและเกณฑ์การให้คะแนน <number of unique bytes in B> / <number of bytes in A>คะแนนสุดท้ายของคุณคือ คะแนนสูงสุดชนะ ควรสังเกตว่าคะแนนสูงสุดทางทฤษฎีคือ 256 โปรแกรม A ต้องมีความยาวอย่างน้อยหนึ่งไบต์ โปรแกรม B ไม่สามารถประกอบไปด้วย no-ops ทั้งหมดอย่างน้อยหนึ่งตัวอักษรจะต้องส่งผลกระทบต่อการส่งออกในบางวิธี กฎมาตรฐานของผลการทดสอบทั้งสองโปรแกรม โดยเฉพาะอย่างยิ่งไม่อนุญาตให้ใช้ข้อผิดพลาด quines เพื่อความสอดคล้องของรูปแบบคำตอบให้เริ่มคำตอบด้วยสิ่งต่อไปนี้: # <Language for A> & <Language for B>, …

2
กอล์ฟที่มีอยู่
คณิตศาสตร์มีสัญลักษณ์มากมาย บางคนอาจพูดสัญลักษณ์มากเกินไป ลองทำคณิตศาสตร์พร้อมรูปภาพกัน ให้มีกระดาษซึ่งเราจะวาดบน ในการเริ่มต้นกระดาษที่ว่างเปล่าที่เราจะบอกว่าเทียบเท่ากับหรือจริง⊤⊤\topจริงจริง\textit{true} ถ้าเราเขียนสิ่งอื่น ๆ ลงบนกระดาษพวกเขาก็จะเป็นจริง ตัวอย่างเช่น ระบุว่าการอ้างสิทธิ์และQเป็นจริงPPPQQQ ตอนนี้ให้เราบอกว่าถ้าเราวาดวงกลมรอบคำสั่งบางคำที่เป็นเท็จ สิ่งนี้แสดงถึงตรรกะไม่ใช่ ตัวอย่างเช่น: บ่งชี้ว่าเป็นเท็จและQเป็นจริงPPPQQQ เรายังสามารถวางวงกลมรอบคำสั่งย่อยหลายรายการ: ตั้งแต่ส่วนภายในวงกลมตามปกติอ่านเป็นโดยการวางวงกลมรอบ ๆ มันจะหมายถึงการไม่ได้ ( P และ Q ) เราสามารถทำรังเป็นวงกลมได้P และ QP และ QP\text{ and }Qไม่ ( P และ Q )ไม่ (P และ Q)\text{not }(P\text{ and }Q) ไม่ ( ( ไม่ใช่ P) และ Q )ไม่ ((ไม่ …
22 math  logic  proof-golf 

12
เป็นวันแคนาดาจริงๆเหรอ?
วันที่ 1 กรกฎาคมเป็นวันแคนาดา (yay Canada)! หรือมันคืออะไร? ดูเหมือนว่าหน้าWikipediaสำหรับวันนี้มีเนื้อหาเกี่ยวกับประเทศแคนาดาจำนวนมาก แต่มีอีกวันไหนที่เป็นชาวแคนาดามากกว่า งานของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นซึ่งใช้วันที่ (เดือนและวัน) เป็นข้อมูลป้อนเข้าและส่งคืนหรือส่งออกจำนวนการกล่าวถึง "แคนาดา" บนหน้า Wikipedia สำหรับวันที่ป้อน กฎบางอย่าง: วันที่อาจถูกป้อนในรูปแบบที่เหมาะสมตามที่คุณเลือก การส่งของคุณจะต้องดึงข้อมูลจาก en.wikipedia.org/wiki/Month_DayURL เพียง แต่"Canada"จะต้องมีการค้นหาและนับสตริงรวมและเฉพาะในกรณีที่ชื่อ "Canadian"ไม่นับ แต่"Canada's"จะนับ ตราบใดที่ข้อความที่ตรงตามตัวพิมพ์ใหญ่ - เล็ก"Canada"อยู่ในสตริงมันคือการจับคู่ เนื้อหาของหน้าจะถูกพิจารณาว่าเป็น.htmlไฟล์ใด ๆ ภายในไฟล์ที่เกี่ยวข้อง(เช่นสิ่งที่ปรากฏขึ้นหากคุณดาวน์โหลดเป็นหน้า.htmlและเปิดใน Notepad) ผลลัพธ์อาจถูกส่งออกไปยัง STDOUT ส่งคืนหรือแสดงในลักษณะอื่นใดที่สมเหตุสมผล กรณีทดสอบ: July 1 => 34 May 14 => 1 Oct 31 => 2 July 4 => 2 …

8
อ่านจอแสดงผลย้อนยุค
ศิลปะถูกขโมยไปจากตัวเลขขนาดใด ตัวเลข 7 ส่วนสามารถแสดงใน ASCII โดยใช้_|ตัวอักษร นี่คือตัวเลข0-9: _ _ _ _ _ _ _ _ | | | _| _| |_| |_ |_ | |_| |_| |_| | |_ _| | _| |_| | |_| _| งานของคุณคือการแยกวิเคราะห์ศิลปะเป็นตัวเลขปกติ หมายเหตุเกี่ยวกับตัวเลข แต่ละหลักมีความกว้างแตกต่างกัน 1 มีความกว้างของ 1 3และ7มีความ2กว้าง 245689และ0ทั้งหมดที่3กว้าง นอกจากนี้ระหว่างตัวเลขแต่ละหลักยังมีอักขระหนึ่งตัว นี่คือชุดถ่านแบบเต็ม: // <- ควรเป็นหนึ่งช่องว่าง แต่การจัดรูปแบบ …

2
คำนวณโคตร
บทเรียนพันธุศาสตร์เล็กน้อย เมื่อคุณเข้าถึงลักษณะหรือฟีโนไทป์ที่มองเห็นได้ของใครบางคนเชื้อสายของประวัติครอบครัวมักถูกนำมาใช้เพื่อหาข้อมูลทางพันธุกรรมที่แท้จริงหรือจีโนไทป์ของสมาชิกในครอบครัวแต่ละคน เมื่อจัดการกับการปกครองแบบง่าย ๆที่เราจะเป็นแผนภูมิสายเลือดที่เรียบง่ายจะเพียงพอที่จะคิดออกอัลลีลหรือรุ่นของยีนที่พวกเขามีของแต่ละคน ในการปกครองง่าย ๆ คนที่มีอัลลีลที่โดดเด่น (แสดงด้วยตัวพิมพ์ใหญ่) มักจะมีลักษณะที่รุ่นนั้นหมายถึงไม่ว่าอัลลีลอื่น ๆ ต้องใช้อัลลีลแบบถอยกลับสองอัน (แทนด้วยตัวพิมพ์เล็ก) เพื่อแสดงเวอร์ชันนั้น กล่าวอีกนัยหนึ่งอัลลีลที่โดดเด่นมักจะปกปิดรุ่นที่ด้อยของยีนนั้น นี่คือตัวอย่างของแผนภูมิสายเลือด: แต่ละแถวที่นี่เป็นยุค แวดวงเป็นเพศหญิงสี่เหลี่ยมเพศชายเส้นแนวนอนคือการแต่งงานเด็กเส้นแนวตั้ง ค่อนข้างง่าย สีดำหมายถึงฟีโนไทป์ถอยสีขาวที่โดดเด่น เริ่มต้นจากด้านบน (ถือว่าอัลลีลเป็นAและa) เรารู้ว่าคนที่ 2 มีaarecessive homozygous เพราะนั่นเป็นตัวเลือกเดียวที่เป็นไปได้สำหรับฟีโนไทป์ถอย ตอนนี้แม้ว่าคนคนหนึ่งอาจเป็นได้ทั้งฟีโนไทป์AaหรือAAที่โดดเด่นเพราะเขามีเด็กถอยเขาต้องAaหรือ heterozygous คุณสามารถทำสิ่งนี้กับคนอื่นทั้งหมด ในกรณีที่คุณไม่ได้มีข้อมูลใด ๆ A_ที่ช่วยให้คุณสามารถที่จะคิดออกอัลลีลที่สองก็สามารถทำได้เช่นดังนั้น: งานของคุณ คุณจะได้รับแผนภูมิสายเลือดในรูปแบบของรายการของรุ่นเช่น[GenI, GenII, etc.]ในรูปแบบสติใด ๆ แต่ละรุ่นจะเป็นรายการของสตริงแต่ละสตริงแสดงถึงบุคคล ผู้คนประกอบด้วยสามส่วน - รหัสประจำตัวฟีโนไทป์และ "การเชื่อมต่อ" ของพวกเขา ID ของพวกเขาเป็นตัวละครเดียว ASCII พิมพ์ที่เป็นเอกลักษณ์ในทั้งต้นอื่นที่ไม่ใช่หรือA a(ไม่ไม่เกิน 95 คนในแผนภูมิ) …

2
เตรียมความพร้อมที่จะตาย?
พื้นหลัง แหล่งที่มาหนึ่งของความสนุกในเกมเล่นตามบทบาทบนโต๊ะคือการรับมือกับการทอยลูกเต๋า การร่ายคาถา Disintegration นั้นอาจจะเกิดขึ้นทันที แต่การกลิ้งและการรวมเข้าด้วยกัน 40 ลูกเต๋าไม่ใช่อย่างแน่นอน! จำนวนของข้อเสนอแนะสำหรับการจัดการนี้จะมีการหารือในที่ rpg.stackexchange.com อย่างไรก็ตามบางส่วนของพวกเขาเช่นการใช้โปรแกรมโรลเลอร์หรือลูกเต๋าเฉลี่ยทำให้ความสนุกและความรู้สึกควบคุมได้จากผู้เล่น อื่น ๆ เช่นการทอยลูกเต๋า 4 ลูกและการคูณทั้งหมด 10 ทำให้ได้ผลลัพธ์ที่แกว่งไปมามากขึ้น (ในขณะที่การเฉลี่ยลูกเต๋ากระทำในทิศทางตรงกันข้าม) คำถามนี้เกี่ยวข้องกับวิธีการลดจำนวนการทอยลูกเต๋าโดยไม่เปลี่ยนผลลัพธ์เฉลี่ย (หมายถึง) หรือความผันผวน (ความแปรปรวน) โน้ตและคณิตศาสตร์ ในคำถามนี้เราจะใช้สัญลักษณ์ต่อไปนี้เพื่อเป็นตัวแทนของลูกเต๋า: n d k (เช่น 40d6) หมายถึงผลรวมของ n ม้วนของ k-sided die n d k * c (เช่น 4d6 * 10) อธิบายการคูณผลลัพธ์ด้วยค่าคงที่ c นอกจากนี้เรายังสามารถเพิ่มม้วน (เช่น 4d6 * …

4
วิธีการนับพยางค์เป็นคำ ๆ
อินพุต:คุณจะถูกส่งผ่านสตริงที่มีคำภาษาอังกฤษคำเดียว ตัวอักษรทั้งหมดจะเป็นตัวพิมพ์เล็กและจะไม่มีตัวอักษรที่ไม่ใช่ตัวอักษรในสตริง เอาท์พุท:คุณจะคืนค่าจำนวนเต็มตั้งแต่ 1 ถึง 7 เพื่อแสดงจำนวนพยางค์ที่คุณคิดว่าเป็น การให้คะแนน:โปรแกรมของคุณจะทำงานกับคำทั้งหมดที่พบในที่เก็บนี้ ถ้าคุณได้รับNคำที่ถูกต้องและโปรแกรมของคุณไบต์ขนาดใหญ่แล้วคะแนนของคุณคือM N-(M*10)ชนะคะแนนมากที่สุด เพื่อสร้างการนับพยางค์ของฉันฉันใช้สิ่งนี้เป็นรายการคำศัพท์ของฉันและนี่เพื่อนับพยางค์

15
การแปลงแบบแผนการเข้ารหัส
ใน Coding Golf คุณควรแปลงหนึ่งการเข้ารหัสด้วย TitleCase เป็น lower_case_with_underscores และในทางกลับกัน! สเปค เปลี่ยนปลอกด้วยวิธีต่อไปนี้: หากอักขระขีดล่างเป็นตัวคั่นให้เปลี่ยนเคสเป็นหัวเรื่องเคสโดยไม่มีตัวคั่นใด ๆ หากมีหลายคำที่ไม่มีตัวคั่นให้เปลี่ยนเคสเป็นตัวพิมพ์เล็กและเพิ่มอักขระขีดล่างเป็นตัวคั่น ในกรณีที่มีเพียงหนึ่งคำ (หรือหนึ่งตัวอักษร): เปลี่ยนปลอกเป็นชื่อเรื่องกรณีถ้าคำเริ่มต้นด้วยตัวพิมพ์เล็ก เปลี่ยนปลอกเป็นตัวพิมพ์เล็กหากคำเริ่มต้นด้วยตัวพิมพ์ใหญ่ อักขระที่อนุญาต: A ถึง Z a ถึง z ขีดล่าง ( _) การป้อนข้อมูลด้วยคำที่ใส่ซองไม่ได้รับอนุญาต ตัวอย่างของกรณีที่ไม่อนุญาต: Coding_Convention_Conversion a_BC ตัวอย่างคดี Input | Expected Output =========================================================== CodingConventionConversion | coding_convention_conversion coding_convention_conversion | CodingConventionConversion abc | Abc Abc | abc ABC …
22 code-golf  string 

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