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

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

30
ตัวอักษรแนวทแยงมุมกับอินพุต
แรงบันดาลใจจากโพสต์นี้ สำหรับผู้ที่ทำเครื่องหมายคำถามนี้ว่าเป็นคำซ้ำฉันขอให้คุณอ่านคำถามเพื่อดูว่าของฉันเป็นการดัดแปลงของลิงค์ที่เชื่อมโยง หนึ่งที่เชื่อมโยงไม่ได้ขอให้ป้อนข้อมูลและเป็นเพียงพิมพ์ตัวอักษรแนวทแยงมุม ความท้าทาย กำหนดอินพุตระหว่าง 1-26 โดยรวมให้พิมพ์ตัวอักษรแนวทแยงมุม แต่เริ่มพิมพ์ในแนวตั้งที่ดัชนีของอินพุตที่กำหนด ตัวอย่าง รับอินพุต: 16 โปรแกรมของคุณควรส่งออก: a b c d e f g h i j k l m n o p q r s t u v w x y z การป้อนข้อมูล: 4 เอาท์พุท: a b c d e f g h i …

30
เหรียญยูโรและธนบัตร
เนื่องจากประเทศส่วนใหญ่ที่ใช้ยูโรมี ,ตัวคั่นทศนิยมคุณต้องใช้ด้วยเช่นกัน ภารกิจคือส่งออกค่าทั้งหมดของเหรียญยูโรและธนบัตรในลำดับจากน้อยไปหามาก คุณต้องใส่ส่วนท้าย,00ของค่าจำนวนเต็ม 0,01 0,02 0,05 0,10 0,20 0,50 1,00 2,00 5,00 10,00 20,00 50,00 100,00 200,00 500,00 ฉันยอมรับทั้งเอาต์พุตไปยัง stdout หรือฟังก์ชั่นที่ส่งคืนอาร์เรย์ / รายการ หากเอาต์พุตคือ stdout ตัวคั่นที่ยอมรับได้ระหว่างค่าคือ: space, tab หรือ newline จะไม่มีคำตอบที่ยอมรับเว้นแต่ฉันจะเห็นคนที่ฉันคิดว่าสร้างสรรค์มาก code-golfดังนั้นฉันต้องการรู้คำตอบสั้น ๆ ด้วยภาษา ปรับปรุง: 0ค่าศูนย์นำหน้าไม่เป็นที่ยอมรับ ขออภัยฉันควรทำให้ชัดเจนก่อน อัปเดต 2: นอกจากนี้ยังเป็นที่ยอมรับฟังก์ชั่นกลับสตริง

30
ความแตกต่างที่ N
ในคณิตศาสตร์วิธีหนึ่งที่จะคิดออกว่าประเภทของความสัมพันธ์ที่กำหนด (เส้นตรง, กำลังสอง, ฯลฯ ) คือการคำนวณความแตกต่าง ในการทำเช่นนั้นคุณจะต้องบันทึกรายการค่า y ที่ช่องว่างระหว่างค่า x ที่เหมือนกันและลบแต่ละค่าออกจากตัวเลขด้านบนสร้างรายการของตัวเลขหนึ่งที่สั้นกว่าจากรายการก่อนหน้า หากรายการผลลัพธ์ประกอบด้วยตัวเลขที่เหมือนกันทั้งหมดความสัมพันธ์มีความแตกต่าง 1 (เป็นเส้นตรง) หากพวกเขาไม่เหมือนกันแล้วคุณทำซ้ำกระบวนการในรายการใหม่ หากตอนนี้พวกเขาเหมือนกันความสัมพันธ์มีความแตกต่างของ 2 (มันเป็นกำลังสอง) หากพวกเขาไม่เหมือนกันคุณเพียงดำเนินการต่อกระบวนการนี้จนกว่าพวกเขาจะ ตัวอย่างเช่นหากคุณมีรายการค่า y [1,6,15,28,45,66] สำหรับการเพิ่มค่า x แบบเพิ่มหน่วย: First Differences: 1 6 1-6 =-5 15 6-15 =-9 28 15-28=-13 45 28-45=-17 66 45-66=-21 Second differences: -5 -9 -5+9 =4 -13 -9+13 =4 -17 …

8
เอ่อฉันอยู่ไหน
ไม่นะ! ฉันติดอยู่ในป่าใหญ่ (โอเคไม่ใช่จริง ๆ แต่แค่สมมติมัน) และฉันไม่รู้ว่าฉันอยู่ที่ไหน! โชคดีที่ฉันนำแล็ปท็อปมา แต่เมื่อฉันค้นหา 'แผนที่' มันบอกว่า 'ไม่มีผลลัพธ์' และฉันถามสิ่งนี้ว่าเป็นทางเลือกสุดท้าย โปรดสร้างโปรแกรมที่แสดงลองจิจูดและละติจูดของตำแหน่งของฉันในรูปแบบตัวเลขสองค่าใด ๆ any two number formatรวมถึง: สิ่งอันดับ สตริงรวมถึงลองจิจูดและละติจูด วัตถุ JSON ฯลฯ .. อาจใช้ API หรือไลบรารีใดก็ได้ นั่นคือคุณสามารถสืบค้น Google Maps และอื่น ๆ(ฉันเดาว่าพวกเขาไม่ได้ทิ้ง API ของพวกเขา: \)
26 code-golf 

24
มันเป็นคำสั่งหรือไม่
(แรงบันดาลใจจากโพสต์นี้ใน Puzzling ข้อควรระวัง: สปอยเลอร์สำหรับปริศนาที่มีอยู่ด้านล่าง) ปุ่มกดโทรศัพท์มาตรฐานมีความสัมพันธ์กับตัวอักษรกับตัวเลขดังนี้: 1 -> 2 -> ABC 3 -> DEF 4 -> GHI 5 -> JKL 6 -> MNO 7 -> PQRS 8 -> TUV 9 -> WXYZ 0 -> คำที่ป้อนที่กำหนดจะถูกกำหนดให้เป็นคำสั่งถ้าหากแปลไปยังแป้นกดโดยใช้ด้านบนหมายเลขที่เป็นผลลัพธ์จะไม่ลดลงหรือไม่เพิ่มขึ้น กล่าวอีกนัยหนึ่งจำนวนผลลัพธ์ไม่สามารถเพิ่มและลดลงได้ ตัวอย่างเช่นคำCATแปล228ซึ่งไม่ลดลงและทำให้เป็นคำสั่ง อย่างไรก็ตามคำว่าDOGเป็น364ซึ่งทั้งเพิ่มขึ้นและลดลงและทำให้ไม่ได้รับคำสั่งของ Word ความท้าทาย ได้รับคำเอาท์พุทไม่ว่าจะสั่งหรือไม่ อินพุต คำ (ไม่จำเป็นต้องเป็นคำพจนานุกรม) ประกอบด้วยอักษร ASCII ( [A-Z]หรือ[a-z]) ตัวอักษรในรูปแบบที่เหมาะสมใด ๆ ตัวเลือกของคุณหากอินพุตเป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็กทั้งหมด …

7
ทำธงคลื่น
ใช้ธงแบบนี้: ----------------------------- | | | | | | |=============+=============| | | | | | | ----------------------------- และใส่ตัวเลข: "ความยาวของคลื่น" สมมติว่าความยาวของคลื่นเท่ากับ 5 จากนั้นทุก ๆ 5 ตัวอักษรตามเส้นจากจุดเริ่มต้นให้แทนที่อักขระถัดไป-ด้วยa \และเลื่อนอักขระทั้งหมดหลังจากแถวหนึ่งลงมา ทำซ้ำจนกว่าจะหมด คุณท้ายด้วย: -----\ | -----\ | -----\ |===== | -----\ | ====== | ----- | ==+=== | -----\ | ====== | -----\ | ====| -----\ …

15
แผ่นป้ายทะเบียนเกมสเปน
คำถามนี้จะขึ้นอยู่กับคำถามที่ผมถามในภาษาสเปน ใช่ฉันขออัลกอริทึมเป็นภาษาสเปน :) ในสเปนแผ่นป้ายทะเบียนปัจจุบันมีรูปแบบดังนี้: 1234 XYZ ที่ XYZ เป็นพยัญชนะสามตัวที่นำมาจากชุดพยัญชนะสเปนเต็มรูปแบบ (ยกเว้น 'Ñ' ฉันคิดว่า) บางครั้งเมื่อเดินทางกับภรรยาของฉันเรามักจะเล่นเกม เมื่อเราเห็นป้ายทะเบียนเราใช้พยัญชนะสามตัวและพยายามสร้างคำที่มีพยัญชนะทั้งสามปรากฏตามลำดับเดียวกันกับในแผ่นป้ายทะเบียน ตัวอย่าง (เป็นภาษาสเปน): BCD BoCaDo (valid) CaBezaDa (not valid) FTL FaTaL (valid) FLeTar (not valid) FTR FleTaR (valid, wins) caFeTeRa (valid, loses) ผู้ชนะคือผู้ที่ใช้จำนวนอักขระน้อยที่สุดอย่างที่คุณเห็นในตัวอย่างสุดท้าย ความท้าทาย เขียนโปรแกรมหรือฟังก์ชั่นที่สั้นที่สุดที่ได้รับรายการคำและชุดของพยัญชนะสามตัวและค้นหาคำที่สั้นที่สุดในรายการที่มีพยัญชนะสามตัวตามลำดับเดียวกัน สำหรับจุดประสงค์ของเกมนี้เคสไม่สำคัญ อินพุตสำหรับรายการคำ (พารามิเตอร์แรก) จะเป็นอาร์เรย์ของstringประเภทภาษาของคุณ พารามิเตอร์ที่สอง (สามพยัญชนะ) stringจะเป็นอีก หากดีกว่าสำหรับภาษาของคุณให้ลองstringใช้ตัวอักษรสามตัวในรายการสุดท้ายของรายการพารามิเตอร์ทั้งหมด stringการส่งออกจะเป็นอีก คำในรายการคำจะไม่ถูกประดิษฐ์หรือคำที่ไม่มีที่สิ้นสุดพวกเขาจะคำที่ปรากฏในพจนานุกรมมาตรฐานใด ๆ หากคุณต้องการขีด …

30
ดัชนีของแถวที่มีองค์ประกอบที่ไม่ใช่ศูนย์ส่วนใหญ่
นี่เป็นวิธีง่าย ๆ :ใช้เมทริกซ์ของจำนวนเต็มเป็นอินพุตและสร้างดัชนีของแถวที่มีองค์ประกอบที่ไม่เป็นศูนย์มากที่สุด คุณอาจคิดว่าจะมีเพียงหนึ่งแถวที่มีองค์ประกอบที่ไม่ใช่ศูนย์มากที่สุด กรณีทดสอบ: สิ่งเหล่านี้เป็น 1 ดัชนีคุณสามารถเลือกได้ว่าต้องการ 0 หรือ 1 ดัชนี 1 0 row = 1 --- 0 -1 0 0 row = 1 --- 1 1 0 0 0 0 0 5 0 0 2 3 0 0 0 0 5 6 2 2 row = 4 --- …
26 code-golf  matrix 

9
Polyglots GCD / LCM!
ความท้าทายของคุณคือการสร้างโปรแกรมหรือฟังก์ชั่นที่ส่งออกGCDของอินพุตของมันในภาษาหนึ่งและLCMของอินพุตของมันในอีกภาษาหนึ่ง Builtins สำหรับ GCD หรือ LCM (ฉันกำลังดูคุณ Mathematica) ได้รับอนุญาต แต่ไม่ได้รับการสนับสนุน จะมี 2 อินพุตซึ่งจะเป็นจำนวนเต็มบวกเสมอไม่เกิน 1,000 กรณีทดสอบ แต่ละบรรทัดเป็นหนึ่งกรณีทดสอบในรูปแบบx y => GCD(x,y) LCM(x,y): 1 1 => 1 1 1 2 => 1 2 4 1 => 1 4 3 4 => 1 12 7 5 => 1 35 18 15 => 3 90 …

7
การแสดงออกหนึ่งค่ามากมาย
การใช้สัญลักษณ์ทางคณิตศาสตร์ที่คุ้นเคยของเรา: +, x, วงเล็บ, และจำนวนตรรกยะใด ๆ ทำให้ง่ายต่อการสร้างนิพจน์ที่ประเมินค่าไปยังหมายเลขที่ต้องการ ตัวอย่างเช่น1+(2x3)=7, (1+2)+(3x6.5)=22.5และอื่น ๆ น่าเบื่อพอสมควร ±ในความท้าทายนี้เราจะใช้ผู้ประกอบการใหม่: การใช้±นิพจน์หมายความว่าคุณจำเป็นต้องประเมินนิพจน์โดยแทนที่±ของด้วย+หรือด้วย-วิธีที่เป็นไปได้ทั้งหมดและส่งคืนชุดของค่าที่เป็นไปได้ทั้งหมด ตัวอย่างเช่น: 1±2±3 = {-4,0,2,6}เพราะ1±2±3สามารถใด ๆ ของ1+2+3, 1+2-3, 1-2+3และ1-2-3และค่านิยมของพวกเขา6,0,2,-4ตามลำดับ (±2)x(2±3) = {-10,-2,2,10} ด้วยเหตุผลที่คล้ายกัน ตอนนี้มันจะเปิดออกให้ชุดของตัวเลขจริงที่แตกต่างใด ๆ ก็เป็นไปได้ที่จะสร้างการแสดงออกด้วย+, x, (, ), ±และตัวเลขจริงที่ประเมินชุดที่กำหนด งาน งานของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นในภาษาที่คุณเลือกที่จะใช้ลำดับ (รายชื่อ / อาร์เรย์ / รูปแบบที่สะดวกใด ๆ ) ของจำนวนเต็มและผลการแสดงออก (เป็นสตริง) ประกอบด้วย+, x, (, ), ±และตัวเลขเหตุผลที่ประเมินถึงชุดของตัวเลขที่กำหนด โปรดทราบว่าตัวละครที่แน่นอน±ไม่สำคัญ คุณสามารถใช้ตัวละครอื่นที่คุณต้องการตราบใดที่มันสามารถแยกแยะได้จากตัวละครอื่นที่คุณกำลังใช้ …

30
สร้างเมทริกซ์กระดานหมากรุก
ใช้เป็นจำนวนเต็มบวกnเป็น input และเอาท์พุทn โดย nเมทริกซ์หมากรุกประกอบด้วย1และ0 ตัวเลขบนซ้ายควรเป็น1เสมอ กรณีทดสอบ: n = 1 1 n = 2 1 0 0 1 n = 3 1 0 1 0 1 0 1 0 1 n = 4 1 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1 รูปแบบอินพุตและเอาต์พุตเป็นทางเลือก …

5
รหัสตัวละครที่แตกต่างกัน
หมายเหตุ: ความท้าทายนี้อนุญาตเฉพาะคำตอบในภาษาที่รวบรวม งาน งานของคุณค่อนข้างง่ายทำสองโปรแกรมที่ต่างกันเมื่อรวบรวมผลลัพธ์ในผลลัพธ์เดียวกัน เกณฑ์การให้คะแนน ที่นี่คือที่ที่ความสนุกเข้ามาคะแนนของคุณจะเป็นจำนวนไบต์ที่ไม่ซ้ำใครในหนึ่งโปรแกรม ตัวอย่างเช่นหากโปรแกรมทั้งสองของคุณ (เข้ารหัสในIBM Code หน้า 437 ) คือ ☻☻Program A และ ☺Program B อักขระที่อยู่ในโปรแกรมเดียวคือ ☻☺AB ดังนั้นคะแนนคือ 4 โปรดทราบว่า ☻จะปรากฏสองครั้งในโปรแกรมแรก แต่จะนับเพียงครั้งเดียว เป้าหมายของคุณคือการได้รับคะแนนสูงสุดคะแนนสูงสุดที่เป็นไปได้คือ 256 ที่นี่คือโปรแกรมการให้คะแนนที่ใช้กับโปรแกรมที่เข้ารหัส ASCII เงื่อนไข ทุกไบต์ในทั้งสองโปรแกรมควรจะถูกแทนที่ด้วยไบต์ที่แตกต่างกันทำให้โปรแกรมรวบรวมผลลัพธ์ที่แตกต่างกันหรือไม่สามารถรวบรวมทั้งหมดเข้าด้วยกัน การลบไบต์ใด ๆ ควรทำเช่นเดียวกัน คุณสามารถใช้การรวมสถานะใด ๆ ก็ได้ตราบใดที่ทั้งสองโปรแกรมทำงานด้วยค่าสถานะเดียวกัน การรวบรวมผลลัพธ์ควรเป็นแบบคงที่ (เช่นไม่ควรเปลี่ยนแปลงจากการเรียกใช้เพื่อเรียกใช้) หากผลลัพธ์แตกต่างจากเครื่องหนึ่งไปยังอีกเครื่องหนึ่งแสดงว่าเครื่องมีจุดประสงค์เพื่อใช้งาน เอาต์พุตของการคอมไพล์ควรเป็นไบต์สำหรับไบต์ที่ไม่เหมือนกัน "เทียบเท่า" หรือ "คล้ายกันมากพอ" ผลลัพธ์ของการคอมไพล์ควรไม่ว่างเปล่า คำเตือน / ข้อผิดพลาดไม่จำเป็นต้องเหมือนกันระหว่างการรวบรวม หากโปรแกรมหรือการคอมไพล์มีอักขระที่ไม่สามารถพิมพ์ได้ให้แน่ใจว่ารวม hexdump …

21
จัดกลุ่มรายการตามความถี่
รับรายการจำนวนเต็มจัดกลุ่มองค์ประกอบที่เกิดขึ้นเป็นอันดับแรกจากนั้นจัดกลุ่มรายการถัดไปเป็นลำดับถัดไปเรื่อย ๆ จนกระทั่งแต่ละองค์ประกอบที่ไม่ซ้ำกันในรายการได้รับการจัดกลุ่มหนึ่งครั้ง ตัวอย่าง: การป้อนข้อมูล: [1,2,3] เอาท์พุท: [[1,2,3]] การป้อนข้อมูล: [1,1,1,2,2,3,3,4,5,6] เอาท์พุท: [[1],[2,3],[4,5,6]] การป้อนข้อมูล: [1,1,1,4,5,6,6,6,7,7,8,8,8,8,8,8,8,9,5,6,5,6,5,6,5,6,-56] เอาท์พุท: [[6, 8],[5],[1],[7],[9,4,-56]] การป้อนข้อมูล: [] เอาท์พุท: [] การป้อนข้อมูล: (empty input) เอาท์พุท: ERROR/Undefined/Doesn't matter กฎระเบียบ การจัดกลุ่มจะต้องเปลี่ยนจากความถี่สูงสุดไปเป็นความถี่ต่ำสุด คำสั่งภายในของการจัดกลุ่มเป็นแบบสุ่ม (ตัวอย่างที่ 3 อาจมี[8,6]แทน) นี่คือรหัส - กอล์ฟชนะน้อยที่สุดนับไบต์ ที่เกี่ยวข้อง เรียงลำดับองค์ประกอบที่แตกต่างของรายการตามลำดับจากมากไปน้อยตามความถี่

30
วันนี้คือวันอะไร?
ท้าทาย แปลกอย่างนี้ยังไม่เสร็จ: ส่งออกวันที่ปัจจุบัน กฎระเบียบ รูปแบบวันที่ที่คุณควรปฏิบัติตามมีดังนี้: YYYY-MM-DD โดยที่เลขศูนย์และเดือนควรมีค่าเป็นศูนย์ถ้าน้อยกว่า 10 ตัวอย่างเช่นหากโปรแกรมทำงานในวันที่ 24 พฤษภาคม 2017 ก็ควรส่งออก 2017-05-24 วันที่สามารถอยู่ใน UTC หรือวันที่ท้องถิ่น คุณต้องจัดการกับ leaps ปี เช่นในปีอธิกสุรทินเดือนกุมภาพันธ์มี 29 วัน แต่ 28 วันในปีปกติ การชนะ รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ
26 code-golf  date 

30
ลบ, ​​บวก, คูณ, ยกกำลัง?
นี่คือ CMC (ความท้าทายในการแชทมินิ) ที่ฉันโพสต์ในห้องแชทของเรา, Ninteenth Byte , บิตที่ผ่านมา ความท้าทาย รับจำนวนเต็มบวกxขึ้นอยู่กับ 2 บิตสุดท้ายxทำต่อไปนี้: x & 3 == 0: 0 x & 3 == 1: x + x x & 3 == 2: x * x x & 3 == 3: x ^ x (exponentiation) Input / Output Single Integer -> Single …
26 code-golf  math 

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