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

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

15
รหัสความท้าทายกอล์ฟ m'kay
Mr. Mackeyเป็นตัวละครSouth Park ที่รู้จักกันดีในการเพิ่ม "m'kay" ในทุกสิ่งที่เขาพูด เขียนโปรแกรมหรือฟังก์ชั่นที่แปลงข้อความเป็นสิ่งที่นายแม็คกี้พูด ตำแหน่ง M'kay m'kayมีการสุ่มโอกาส 50%ที่จะถูกเพิ่มเข้ามาหลังจากเครื่องหมายวรรคตอน,, .,?!และ หากเป็นกรณีนั้นจะถูกตามด้วยเครื่องหมายวรรคตอนเดียวกันที่มาก่อนและนำหน้าด้วยช่องว่าง ตัวอย่างเช่นในประโยคTest, test.มีสองสถานที่ที่m'kayสามารถเพิ่ม: หลังเครื่องหมายจุลภาคและหลังช่วงเวลาโดยมีโอกาส 50% ในแต่ละสถานที่ ผลลัพธ์ที่เป็นTest, m'kay, testไปได้คือ หรือหรือTest, test. M'kay.Test, m'kay, test. M'kay. ต้องมีการเพิ่มอย่างน้อยหนึ่งรายการm'kayเสมอ ยิ่งไปกว่านั้นมันไม่ได้อยู่ในสถานที่เดียวกันเสมอและแต่ละสถานที่ที่ถูกต้องซึ่งm'kayสามารถเพิ่มได้ต้องเกิดขึ้นด้วยความน่าจะเป็นที่เท่ากัน นั่นคือคุณไม่สามารถเพิ่มเสมอในตอนท้ายของสตริงเพราะถ้าคุณไม่เคยแบบแผนใด ๆm'kay เพิ่ม m'kayหากมีเพียงหนึ่งรายการm'kayจะต้องมีความน่าจะเป็นเหมือนกันที่จะปรากฏในแต่ละตำแหน่งที่ถูกต้องแม้ว่าจะมีการบังคับใช้ หากm'kayคือหลังจากที่?, .หรือ!ที่mจะต้อง uppercased จำนวนmในm'kayจะต้องรับ uniformely ระหว่างวันที่ 1 และ 3 นั่นคือm'kay, mm'kayและmmm'kayเป็นทางเลือกที่เป็นไปได้ทั้งหมดในแต่ละที่มีความน่าจะเป็น 0.33 ... ถ้ามันจะต้อง uppercased (ดูด้านบนกฎ) ทั้งหมดmจะต้อง …
51 code-golf  string 

20
ตรวจจับการเดินทางข้ามเวลา
คอมพิวเตอร์มีอยู่ทุกที่ในปัจจุบันไม่ว่าจะเป็นรถยนต์รถไฟสเก็ตบอร์ดเครื่องปฏิกรณ์นิวเคลียร์ ความเป็นไปได้ที่ซอฟต์แวร์ของคุณจะทำงานในเวลาเดินทางเป็นเพียงเรื่องของเวลา คุณสามารถจัดการกับมันได้หรือไม่ อย่างน้อยคุณสามารถตรวจจับได้หรือไม่ งานของคุณ: เขียนโปรแกรมที่ลูปและทำการสืบค้นเวลาของระบบเพื่อตรวจจับการเดินทางข้ามเวลา หากเวลาเลื่อนไปข้างหน้าหนึ่งวันขึ้นไประหว่างการค้นหาสองครั้งติดต่อกันแสดงว่าเป็นการเดินทางข้ามเวลา ในกรณีนี้โปรแกรมของคุณควรพิมพ์: TS TS: YYYY? You mean we're in the future? หากเวลาย้อนกลับไประหว่างจำนวนข้อความค้นหาสองรายการติดต่อกันเป็นเวลาย้อนหลัง ในกรณีนี้โปรแกรมของคุณควรพิมพ์: TS TS: Back in good old YYYY. TS TSคือการประทับเวลาก่อนและหลังการเดินทางข้ามเวลา YYYYเป็นปีปลายทาง การประทับเวลาอาจอยู่ในรูปแบบใด ๆ ที่มีอย่างน้อย 4 หลักปี, เดือน, วัน, ชั่วโมง, นาทีและวินาทีโดยคั่นด้วยตัวเลขที่ไม่ใช่ ข้อ จำกัด : คุณต้องสนับสนุนวันที่ในศตวรรษที่ 19, 20 และ 21 อย่างน้อย คุณต้องใช้ภาษาที่มีอยู่ก่อนการโพสต์ความท้าทายนี้ คุณต้องโพสต์คำตอบของคุณหลังจากโพสต์ความท้าทายนี้แล้วเท่านั้น คุณต้องใช้ภาษาที่มีอยู่ก่อนคำตอบของคุณโพสต์ …
51 code-golf  date 

8
อักขระ 1 ตัวที่สร้างข้อความผิดพลาดส่วนใหญ่จากการคอมไพล์ C ++
ดูเหมือนว่าการเปลี่ยนแปลงอย่างง่าย ๆ ในไฟล์ C ++ โดยเฉพาะกับเทมเพลตสามารถสร้างหน้าของข้อผิดพลาดได้ การประกวดครั้งนี้คือการดูว่า "ปังของเจ้าชู้" ที่ใหญ่ที่สุดคืออะไรนั่นคือข้อผิดพลาดที่ละเอียดมากขึ้นด้วยการเปลี่ยนแปลงที่เล็กที่สุดในรหัสที่มา (การเพิ่ม 1 ตัวอักษร) เนื่องจากภาษาอื่นมีสติมากกว่านี้จึง จำกัด เฉพาะ C ++ และ gcc เวอร์ชัน 4.x กฎระเบียบ ไฟล์ต้นฉบับต้นฉบับจะต้องรวบรวมกับ gcc 4.9.2 ไปยังรหัสวัตถุโดยไม่มีข้อผิดพลาด เพิ่มหนึ่งอักขระ ASCII ในซอร์สโค้ดเพื่อสร้างการพิมพ์ที่ผิดพลาดเพิ่มขนาดไฟล์ทีละ 1 ไบต์ คอมไพเลอร์ทำงานด้วยตัวเลือกเริ่มต้น ตัวเลือกที่จำเป็นเช่น-cและ-std=c++11ได้รับอนุญาตตัวเลือก-Wallไม่ได้ ตัวชี้วัดคือ number of bytes of generated error messages ----------------------------------------------------------------------- (bytes of source code with typo) (length of …

24
Minecraft มิเรอร์
นี่คือคาลวิน เพียงแค่พยายามที่จะได้รับ 20 ตัวแทนเพื่อให้ผู้ใช้สามารถแชทในห้องสนทนา PPCG Minecraft เซิร์ฟเวอร์ เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้จำนวนเต็มบวก หากจำนวนเต็มเป็นเลขคู่ (2, 4, 6, ... ) ให้พิมพ์หรือคืนค่าสตริงศิลปะ ASCII ที่แน่นอน: __ __ __ __ ___ /\ /\ | |\ | | / | | /\ | | / \/ \ | | \ | |-- | |--\ /__\ |-- | / \ | …

22
บันทึกสัญลักษณ์แสดงหัวข้อสุดท้ายด้วยตัวคุณเอง
การประกวดสิ้นสุดลงแล้ว ขี้ขลาดเป็นผู้ชนะ คุณสามารถรับชมการแข่งขันที่ผ่านมาที่นี่ ทันใดนั้นซอมบี้ก็ปรากฏขึ้น! โอ้โห! ในการท้าทายที่ท้าทายนี้คุณต้องสร้างบอทเพื่อเอาชีวิตรอดจากซอมบี้วิบัติ หรืออย่างน้อยก็ค้างไว้ให้นานที่สุด ในช่วงเริ่มต้นของเกม 50 ตัวอย่างของแต่ละรายการจะถูกวางแบบสุ่มในพื้นที่เล่นขนาดใหญ่แบบวงแหวน - นั่นคือดูเหมือนว่าจะเป็นสี่เหลี่ยมจัตุรัส แต่ล้อมรอบ ขนาดของพื้นที่เล่นจะแตกต่างกันไปขึ้นอยู่กับจำนวนของรายการ แต่ในขั้นต้น 6% ของสี่เหลี่ยมจะถูกครอบครอง ผู้แข่งขันแต่ละคนเริ่มด้วยกระสุน 3 นัด ในตอนต้นของแต่ละตาซอมบี้จะเพิ่มขึ้นจากพื้นดินในตำแหน่งสุ่มทำลายสิ่งที่อยู่เหนือมัน ผู้เล่นที่อยู่ถัดจากซอมบี้ในช่วงเริ่มเทิร์นจะกลายเป็นซอมบี้ สำหรับผู้เล่นที่มีชีวิตแต่ละคนรหัสของพวกเขาจะถูกเรียก จะได้รับวัตถุPlayerContextที่มีข้อมูลเกี่ยวกับสถานะปัจจุบันและสภาพแวดล้อมของพวกเขา ผู้เล่นแต่ละคนสามารถมองเห็น 8 สี่เหลี่ยมในทิศทางใด ๆ ผู้เล่นจะต้องเลือกที่จะย้าย (เข้าพักยังคงเป็นความเคลื่อนไหวที่ถูกต้อง) โดยกลับหรือยิงคนที่อยู่ใกล้เคียงหรือผีดิบโดยกลับMove Shootปืนของคุณมีช่วงสูงสุด 5 กำลังสอง เมื่อคุณอยู่ในขอบเขตปืนของคุณคุณสามารถยิงตัวเองได้ถ้าคุณมีกระสุนเหลือ หากผู้เล่นสองคนยิงกันพวกเขาทั้งสองตาย หากผู้เล่นสองคนพยายามที่จะย้ายไปยังจัตุรัสเดียวกันพวกเขาจะล้มเหลวและจะกลับไปที่จัตุรัสที่พวกเขาเริ่มต้นจาก หากยังมีข้อขัดแย้งอยู่จะมีการทำซ้ำจนกว่าจะไม่มีความขัดแย้งซึ่งอาจหมายถึงทุกคนกลับมาสู่จุดเริ่มต้น หากผู้เล่นเสียชีวิตจากกระสุนปืนร่างกายที่ตายแล้วจะยังคงอยู่และสร้างสิ่งกีดขวางถาวร สัญลักษณ์แสดงหัวข้อย่อยใด ๆ ที่พวกเขาถืออยู่ยังคงอยู่ในคนของพวกเขาและสามารถถูกผู้เล่นในสี่เหลี่ยมที่อยู่ติดกัน หากมีผู้เล่นหลายคนที่ครอบครองพื้นที่สี่เหลี่ยมที่อยู่ติดกับศพแล้วกระสุนจะถูกใช้ร่วมกันระหว่างพวกเขา แต่ส่วนที่เหลือจะหายไป หากผู้เล่นกลายเป็นซอมบี้แล้วกระสุนของพวกเขาจะหายไป ซอมบี้จะเดินไปหาผู้เล่นที่มีชีวิตอยู่ใกล้ ๆ อย่างไร้เหตุผล ผลงานจะถูกทำคะแนนว่าผู้เล่นที่รอดชีวิตมานานที่สุดจะอยู่รอดได้นานแค่ไหน รายการ …

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

30
สร้างเศษส่วน mandelbrot [ปิด]
งานของคุณคือการวาดชุดดอกแดนบอทใน ascii มันควรมีลักษณะเหมือน จำนวนที่ซับซ้อนcอยู่ในทาจิกิสถานเมื่อลำดับz(n+1) = z(n)^2 + c, z(0) = 0ยังคงล้อมรอบ สำหรับวัตถุประสงค์ของการท้าทายนี้คุณสามารถพิจารณาลำดับที่สิ้นสุดสำหรับถ้าc|z(32)| < 2 พล็อตชุดดอกแดนดิบอตที่ตั้งอยู่บนระนาบเชิงซ้อนจาก (-2 - i) ถึง (1 + i) และความละเอียดขั้นต่ำ 40x30 โดยใช้ตัวอักษร ASCII ในภาษาที่คุณชื่นชอบโดยใช้ตัวละครน้อยที่สุด

30
กำหนดเวอร์ชันภาษาของคุณ
ความท้าทายของคุณคือการเขียนรูปหลายภาษาที่ทำงานในภาษาของคุณในเวอร์ชันที่แตกต่างกัน เมื่อเรียกใช้มันจะส่งออกเวอร์ชันภาษาเสมอ กฎระเบียบ โปรแกรมของคุณควรทำงานในภาษาของคุณอย่างน้อยสองเวอร์ชัน ผลลัพธ์ของโปรแกรมของคุณควรเพียงเป็นหมายเลขรุ่น ไม่มีข้อมูลภายนอก โปรแกรมของคุณอาจใช้วิธีการใดก็ได้ที่คุณต้องการกำหนดหมายเลขรุ่น อย่างไรก็ตามผลลัพธ์จะต้องเป็นไปตามกฎ 2 อย่างไรก็ตามคุณกำหนดหมายเลขเวอร์ชันผลลัพธ์จะต้องเป็นตัวเลขเท่านั้น โปรแกรมของคุณต้องการส่งออกเวอร์ชันภาษาหลักเท่านั้น ตัวอย่างเช่นใน FooBar 12.3.456789-beta โปรแกรมของคุณจะต้องให้ผลลัพธ์ 12 เท่านั้น หากภาษาของคุณใส่คำหรือสัญลักษณ์ไว้ข้างหน้าหรือหลังหมายเลขเวอร์ชั่นคุณไม่จำเป็นต้องส่งออกหมายเลขเหล่านั้น ตัวอย่างเช่นใน C89 โปรแกรมของคุณจำเป็นต้องพิมพ์89เท่านั้นและใน C ++ 0x โปรแกรมของคุณต้องพิมพ์0เท่านั้น หากคุณเลือกที่จะพิมพ์ชื่อเต็มหรือหมายเลขรุ่นรองเช่น C89 เมื่อเทียบกับ C99 นั้นจะต้องเพียงพิมพ์ชื่อ C89 build 32ถูกต้องในขณะที่error in C89 build 32: foo barไม่ โปรแกรมของคุณไม่สามารถใช้แฟล็กคอมไพเลอร์ในตัวแมโครหรือกำหนดเองเพื่อกำหนดรุ่นภาษา เกณฑ์การให้คะแนน คะแนนของคุณจะเป็นความยาวของรหัสหารด้วยจำนวนรุ่นที่ใช้งานได้คะแนนต่ำสุดชนะได้โชคดี!

30
หมีขั้วโลก, หมีขั้วโลก, คุณได้ยินเสียงอะไร?
ข้อความของหนังสือสำหรับเด็กPolar Bear, Polar Bear, What Do Hear Hear? มีรูปแบบที่ง่ายมาก คุณอาจใช้ข้อความเพื่อสอนแนวคิดการเขียนโปรแกรมเบื้องต้น ลูกชายของฉันเบื่อกับความคิดนี้อย่างรวดเร็วดังนั้นฉันจึงตัดสินใจเล่นกอล์ฟด้วยความคิดแทน ความท้าทาย ในภาษาการเขียนโปรแกรมที่คุณเลือกเขียนโปรแกรมที่เล็กที่สุดเท่าที่จะเป็นไปได้ซึ่งจะพิมพ์ข้อความต่อไปนี้ ผลลัพธ์ควรตรงกันทุกประการรวมถึงตัวพิมพ์เล็กช่องว่างและเครื่องหมายวรรคตอน Polar Bear, Polar Bear, what do you hear? I hear a lion roaring in my ear. Lion, Lion, what do you hear? I hear a hippopotamus snorting in my ear. Hippopotamus, Hippopotamus, what do you hear? …

18
มดสำคัญ prime
"มดหลัก" เป็นสัตว์ดื้อรั้นที่นำทางจำนวนเต็มและหารพวกมันจนกว่าจะเหลือเฉพาะช่วงเวลาเท่านั้น! เริ่มแรกเรามีอาร์เรย์อนันต์ A ที่มีจำนวนเต็มทั้งหมด> = 2: [2,3,4,5,6,.. ] อนุญาตpเป็นตำแหน่งของมดในอาร์เรย์ เริ่มแรกp = 0(อาเรย์ถูกทำดัชนี 0) แต่ละเทิร์นมดจะเคลื่อนที่ดังนี้: ถ้าA[p]เป็นไพรม์มดจะย้ายไปยังตำแหน่งถัดไป:p ← p+1 มิฉะนั้นถ้าA[p]เป็นจำนวนคอมโพสิตให้qเป็นตัวหารเล็ก> 1. เราแบ่งA[p]โดยq, และเราเพิ่มไปq A[p-1]มดเคลื่อนไปยังตำแหน่งก่อนหน้า:p ← p-1 นี่เป็นท่าแรกสำหรับมด: 2 3 4 5 6 7 8 9 ... ^ 2 3 4 5 6 7 8 9 ... ^ 2 3 4 5 …

30
Helloellolloloo WorldWorldrldldd
จัดทำโปรแกรมที่ใช้คำที่คุณป้อนและเพิ่มคำนั้นไว้ที่ด้านหลังของตัวเองลบด้วยตัวอักษรตัวแรกจากนั้นทำซ้ำจนกว่าตัวอักษรทั้งหมดจะหายไป ยกตัวอย่างเช่นcatจะกลายเป็นcatattและจะกลายเป็นhellohelloellolloloo ป้อนข้อมูล ใด ๆ ของ 26 ตัวอักษรของตัวอักษรภาษาอังกฤษ อาจมีหลายคำคั่นด้วยช่องว่างและควรใช้การเปลี่ยนแปลงกับทุกคำ เอาท์พุท คำที่ป้อนเข้าโดยที่แต่ละคำใส่ตัวอักษรตัวแรกหายไปจากนั้นตัวอักษรตัวที่สองหายไปเรื่อย ๆ จนกว่าจะไม่มีตัวอักษรเพิ่มอีก ตัวอย่างเพิ่มเติม: ill eel เอาท์พุท illlll eelell laser bat เอาท์พุท laserasersererr batatt darth vader เอาท์พุท dartharthrththh vaderaderdererr นี่คือรหัสกอล์ฟดังนั้นรหัสที่สั้นที่สุดชนะ Clarification: คุณสามารถปฏิบัติต่ออินพุตหรือเอาต์พุตเป็นรายการ คุณสามารถแยกคำด้วยการขึ้นบรรทัดใหม่แทนที่จะเว้นวรรค คุณสามารถเพิ่มช่องว่างต่อท้ายไปยังอินพุต
50 code-golf  string 

30
แสดงตัวคูณร่วมน้อย
รับจำนวนเต็มบวกสองตัว A และ B แสดงให้เห็นถึงผลคูณที่น้อยที่สุดของพวกมันโดยแสดงเครื่องหมายขีดคั่นสองบรรทัด ( -) ด้วยความยาวLCM (A, B) หลังจากเปลี่ยนทุกเส้นประ Ath ในบรรทัดแรกและเส้นประ Bth ทุกเส้นในบรรทัดที่สองด้วยแถบแนวตั้ง ( |) ด้วยวิธีนี้จุดสิ้นสุดของแต่ละบรรทัดจะเป็นเส้นที่สอง|เท่านั้น ตัวอย่างเช่นถ้า A = 6 และ B = 4, LCM (6, 4) = 12 ดังนั้น: two lines of 12 dashes: ------------ ------------ replace every 6th dash in the first line with a vertical …

30
พิมพ์วลี“ และเธอพูดว่า 'แต่นั่นเป็นของเขา'” ใช้ตัวอักษรเท่านั้น
พิมพ์วลีAnd she said, 'But that's his.'โดยใช้เฉพาะอักขระต่อไปนี้: abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ไม่มีเครื่องหมายวรรคตอนหรืออักขระที่ไม่ใช่ตัวอักษรใด ๆ คุณสามารถใช้ภาษาการเขียนโปรแกรมอะไรก็ได้ที่คุณต้องการ ช่องว่างได้รับอนุญาตอย่างสมบูรณ์ โปรแกรมที่สั้นที่สุดชนะ

30
ค้นหาจำนวนที่เล็กที่สุดที่ไม่ได้หาร N
ความท้าทายนี้จะง่ายพอที่จะเป็นพื้นทั้งหมดในชื่อเรื่อง: คุณได้รับเป็นจำนวนเต็มบวกNและคุณควรจะกลับจำนวนเต็มบวกที่เล็กที่สุดซึ่งไม่ได้เป็นตัวหารของN ตัวอย่าง: หารของN = 241, 2, 3, 4, 6, 8, 12, 24มี จำนวนเต็มบวกที่เล็กที่สุดซึ่งไม่ได้อยู่ในรายการนั้นคือ5ดังนั้นนั่นคือผลลัพธ์ที่โซลูชันของคุณควรค้นหา นี่คือลำดับ OEIS A007978 กฎระเบียบ คุณสามารถเขียนโปรแกรมหรือฟังก์ชั่นและใช้วิธีการมาตรฐานของเราในการรับอินพุตและให้เอาต์พุต คุณอาจใช้ภาษาการเขียนโปรแกรมใด ๆแต่โปรดทราบว่าช่องโหว่เหล่านี้เป็นสิ่งต้องห้ามตามค่าเริ่มต้น นี่คือรหัสกอล์ฟดังนั้นคำตอบที่สั้นที่สุดที่ถูกต้อง - วัดเป็นไบต์ - ชนะ กรณีทดสอบ 100 คำแรกคือ: 2, 3, 2, 3, 2, 4, 2, 3, 2, 3, 2, 5, 2, 3, 2, 3, 2, 4, 2, 3, 2, …

30
ขั้นตอนนี้ใช้เวลากี่ขั้นตอนจาก n ถึง 1 โดยการลบตัวหารที่ยิ่งใหญ่ที่สุดออกไป
แรงบันดาลใจจากคำถามนี้มากกว่าที่คณิตศาสตร์ ปัญหา ให้เป็นจำนวนธรรมชาติn ≥ 2ใช้ตัวหารที่ใหญ่ที่สุดของn- ซึ่งจะแตกต่างจากnตัวเอง - nและลบได้จาก 1ทำซ้ำจนกว่าคุณจะได้รับ คำถาม มันไม่กี่ขั้นตอนใช้เวลาไปถึงจำนวนที่กำหนด1n ≥ 2 ตัวอย่างโดยละเอียด n = 30ให้ ตัวหารที่ยิ่งใหญ่ที่สุดของ: 1. 30 is 15 --> 30 - 15 = 15 2. 15 is 5 --> 15 - 5 = 10 3. 10 is 5 --> 10 - 5 = 5 4. 5 …

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