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

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

12
เหลือน้ำเท่าไหร่?
ที่นี่ในแคลิฟอร์เนียเราอยู่ในฤดูแล้งดังนั้นเราจำเป็นต้องรู้ว่ามีน้ำเหลืออยู่เท่าไหร่เพื่อที่เราจะได้อนุรักษ์น้ำให้ได้มากที่สุด เนื่องจากน้ำมี จำกัด การใช้รหัสของคุณจะต้องสั้นที่สุด ตัวอย่าง | | | | |~~~| |___| Output: 0.5 |~~~~~| | | | | |_____| Output: 1 | | |__| Output: 0 (or bonus) สเปค ข้อมูลที่ป้อนจะประกอบด้วย: |_ ~และบรรทัดใหม่ทั้งหมดเท่านั้น เหนือสิ่ง~อื่นใดถือว่าเป็นอากาศ _พื้นที่ด้านล่าง~และ~ถือว่าเป็นน้ำ water / (air + water)เปอร์เซ็นต์ของน้ำด้านซ้ายเป็นเครื่องคอมพิวเตอร์โดย ผลลัพธ์ของคุณจะต้องแม่นยำถึงทศนิยม 4 ตำแหน่ง (เว้นแต่คุณจะได้รับโบนัสเป็นเปอร์เซ็นต์) อินพุตจะเป็นรูปสี่เหลี่ยมผืนผ้าเสมอ ~จะเป็นในหนึ่งบรรทัดถ้าที่ใด ๆ อินพุตอาจเป็นทางเลือกที่มีฟีดบรรทัดต่อท้ายหากคุณต้องการ โบนัส หากคุณไปสำหรับทั้งสองโบนัสโบนัส -15% …
29 code-golf 

30
มันเป็นคำที่แปลก?
ท้าทาย ให้คำเดียวเป็นอินพุตให้พิจารณาว่าคำนั้นเป็นคี่หรือคู่ คำพูดที่แปลกและแม้แต่ สมมติกฎทั่วไป: odd + odd = even even + odd = odd odd + even = odd even + even = even ในตัวอักษรตัวอักษรแปลกคือ: aeiou และตัวอักษรคู่คือ: bcdfghjklmnpqrstvwxyz เช่นเดียวกับตัวพิมพ์ใหญ่ ( AEIOUเป็นเลขคี่และBCDFGHJKLMNPQRSTVWXYZสม่ำเสมอ) จากนั้นคุณ 'เพิ่ม' ตัวอักษรแต่ละตัวในคำด้วยกัน ตัวอย่างเช่นคำcatsนี้เทียบเท่ากับ: even + odd + even + even ซึ่งทำให้ง่ายต่อการ: odd + even ซึ่งช่วยให้ง่ายต่อการ: odd ดังนั้นคำว่าcatsแปลก ตัวอย่าง …

7
ช่วยให้สถาปนิกมองเห็นเส้นขอบฟ้า
เป็นส่วนหนึ่งของโครงการวางผังเมืองคุณได้รับมอบหมายให้สร้างโปรแกรมหรือฟังก์ชั่นที่จะแสดงเส้นขอบฟ้าของเมืองจากข้อมูลที่ได้รับจากสถาปนิก โครงการอยู่ในช่วงเริ่มต้นเท่านั้นดังนั้นร่างคร่าวๆจึงเพียงพอ แน่นอนว่าวิธีที่ง่ายที่สุดคือการวาดเส้นขอบฟ้าในรูปแบบ ASCII-art อาคารทั้งหมดจะอยู่ริมแม่น้ำดังนั้นพวกเขาจึงอยู่ในแนวเดียวกัน สถาปนิกจะให้ความสูงของแต่ละอาคารเป็นอินพุตและรหัสของคุณควรแสดงเส้นขอบฟ้า ข้อมูลจากสถาปนิกจะเป็นจำนวนเต็มหรือครึ่งจำนวนเต็ม หากจำนวนนั้นเป็นจำนวนเต็มอาคารจะมีหลังคาเรียบในขณะที่ครึ่งจำนวนเต็มจะส่งผลให้เกิดหลังคาแหลม ศูนย์จะพื้นราบ ผนังของอาคารแยกออกจากกัน 3 ตัวในขณะที่ศูนย์จะเป็นตัวกว้างเพียงตัวเดียว อาคารที่อยู่ติดกันแบ่งปันกำแพง สำหรับรายละเอียดและคำชี้แจงเกี่ยวกับผลลัพธ์โปรดดูตัวอย่างด้านล่าง: N = 3 ___ | | | | |___| N = 3.5 _ / \ | | | | |___| N = 6 ___ | | | | | | | | | | |___| n …

30
ความน่าจะเป็น 1 / N
เนื่องจากมีความท้าทายของcode-golfไม่เพียงพอ: สร้างโปรแกรมหรือฟังก์ชั่นที่ไม่มีชื่อตัวเลือกที่กำหนด (โดยวิธีการใด ๆ ) จำนวนเต็ม 1 output N ≤ 10000 ส่งออกค่า True ของภาษาของคุณด้วยความน่าจะเป็นแบบหลอกเทียมที่ 1 / N, False มิฉะนั้น โปรดทราบว่าข้อกำหนดสำหรับการตั้งชื่อถูกลบแล้ว รู้สึกอิสระที่จะแก้ไขคำตอบและคะแนนตาม บางภาษาใช้ 1 (หรือ -1) และ 0 สำหรับจริงและเท็จซึ่งก็ใช้ได้เช่นกัน ตัวอย่าง: ตัวอย่างการทดสอบอินพุต: 4 -> True 4 -> False 4 -> False 4 -> False 4 -> False 4 -> True 4 -> …

1
กราฟระนาบของฉันคืออะไร?
งานของคุณคือการตรวจสอบว่ากราฟเป็นระนาบ กราฟคือระนาบถ้ามันสามารถฝังตัวในระนาบหรือกล่าวอีกนัยหนึ่งว่าสามารถวาดได้โดยไม่ต้องข้ามขอบ อินพุต:คุณจะได้รับกราฟที่ไม่ระบุทิศทางในรูปแบบที่คุณเลือกดังนี้: รายการขอบเช่น [(0, 1), (0, 2), (0, 3)] แผนที่ Adjacency เช่น {0: [1, 2, 3], 1:[0], 2:[0], 3:[0]} เมทริกซ์ที่อยู่ติดกันเช่น [[0, 1, 1, 1], [1, 0, 0, 0], [1, 0, 0, 0], [1, 0, 0, 0]] ชื่อโหนดอาจเป็นตัวเลขสตริงหรือคล้ายกัน แต่รูปแบบที่คุณเลือกจะต้องสามารถรองรับกราฟโดยพลการ ไม่มีการวางโค้ดในชื่อโหนด จะไม่มีลูปตัวเอง ตัวเลือกอินพุตมาตรฐานรวมถึง STDIN อาร์กิวเมนต์บรรทัดคำสั่งและฟังก์ชันอาร์กิวเมนต์ เอาท์พุท:คุณควรส่งคืนเอาต์พุตที่เฉพาะเจาะจงสำหรับกราฟระนาบทั้งหมดและเอาท์พุทที่เฉพาะเจาะจงที่แตกต่างกันสำหรับกราฟ nonplanar ทั้งหมด ตัวเลือกเอาต์พุตมาตรฐานรวมถึง STDOUT ค่าส่งคืนของฟังก์ชัน …

6
อสมการ 2D
วัตถุประสงค์ ให้ตารางของตัวเลขเติมความไม่เท่าเทียมกัน สมมติฐาน จำนวนคอลัมน์และแถวในตารางเท่ากัน ขนาดสูงสุดของกริดคือ 12x12 ตารางประกอบด้วยเลขจำนวนเต็ม 0-9 เท่านั้น ผลลัพธ์อาจมีการขึ้นบรรทัดใหม่ที่ต่อท้าย ข้อมูลเข้าตรงตามที่เขียนไว้ด้านล่างรวมถึงช่องว่างและการขึ้นบรรทัดใหม่ ตัวอย่างการป้อนข้อมูล 4 2 3 1 6 2 3 1 6 9 2 1 0 2 1 6 ตัวอย่างผลลัพธ์ 4>2<3>1 ^ " " " 6>2<3>1 " ^ v " 6<9>2>1 v v v ^ 0<2>1<6 ตัวอย่างอินพุต (2) 1 2 3 …
29 code-golf 

30
ค้นหาจำนวนที่มากที่สุดและน้อยที่สุดในอาร์เรย์
งาน งานง่ายมาก กำหนดอาร์เรย์ที่มีจำนวนเต็มและสตริงเท่านั้นให้ส่งออกจำนวนที่มากที่สุดและจำนวนที่น้อยที่สุด กรณีทดสอบ Input: [1, 2, 3, 4, 5, 6, 7, 8] Output: 1, 8 Input: [5, 4, 2, 9, 1, 10, 5] Output: 1, 10 Input: [7, 8, 10, "Hello", 5, 5] Output: 5, 10 ตัวเลขในสตริงไม่ถือว่าเป็นจำนวนเต็ม: Input: [1, 2, 3, 4, "5"] Output: 1, 4 หากมีเพียงจำนวนเต็มเดียวมันเป็นทั้งจำนวนเต็มที่มากที่สุดและน้อยที่สุด: Input: [1] …

24
เครื่องหมายกริดที่ง่ายมาก
เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้เวลาในสามจำนวนเต็มบวก, W, H, และเอ็นพิมพ์หรือกลับ W × H ตารางของ.'s ที่ชับทุกปกติภาษาอังกฤษเพื่อการอ่านถูกแทนที่ด้วย.X ตัวอย่างเช่นเมื่อกำหนด W = 7, H = 3, N = 3 กริดจะมีความกว้าง 7 ตัวอักษรและสูง 3 และทุก ๆ อักขระที่สามที่อ่านจากด้านบนซ้ายคือX: ..X..X. .X..X.. X..X..X หากอินพุตคือ W = 10, H = 4, N = 5 เอาต์พุตจะเป็น: ....X....X ....X....X ....X....X ....X....X หมายเหตุ "ลำดับการอ่านภาษาอังกฤษปกติ" หมายถึงการเลื่อนจากซ้ายไปขวาในแต่ละบรรทัดจากบรรทัดบนถึงล่าง เมื่อ N คือ …

8
พิมพ์ธงชาติอเมริกัน!
วันท้าทายพิเศษสำหรับวันชาติสหรัฐอเมริกา (USA) คุณต้องเขียนโปรแกรมที่พิมพ์การเป็นตัวแทน ASCII ของ The American Flag 0 |--------------------------------------------------------- | * * * * * * #################################| | * * * * * | | * * * * * * | | * * * * * #################################| | * * * * * * | | * …

10
วงเล็บเป็นเชิงอรรถ
พื้นหลัง โปรแกรมเมอร์ LISP ได้ยึดครองโลก! วงเล็บถูกประกาศเป็นอักขระศักดิ์สิทธิ์และจากนี้ไปสามารถใช้ในโปรแกรม LISP เท่านั้น มีการตัดสินใจแล้วว่าวงเล็บในงานวรรณกรรมจะถูกแทนที่ด้วยเชิงอรรถและเป็นงานของคุณที่จะทำให้สิ่งนี้เป็นข้อความ Markdown ที่ง่ายขึ้น อินพุต ข้อมูลของคุณมีสายเดียวที่มีตัวอักษร ASCII ,.!?()ช่องว่างและอักขระพิเศษ มันจะไม่มีการขึ้นบรรทัดใหม่หรือตัวเลข วงเล็บจะถูกจับคู่อย่างถูกต้อง เอาท์พุต คุณจะแปลงวงเล็บที่จับคู่แต่ละคู่ในสตริงอินพุตให้เป็นเชิงอรรถ สิ่งนี้เกิดขึ้นดังนี้: แทนที่คู่จับคู่แรกของวงเล็บและย่อยระหว่างพวกเขาเป็นจำนวนมากโดยการทำงานที่เริ่มต้นจาก1ห่อระหว่างแท็ก Markdown และ<sup></sup> ต่อท้ายส่วนท้ายของสตริง สองบรรทัดใหม่ แท็ก Markdown <sub>, หมายเลขจากขั้นตอนที่ 1 พื้นที่ สตริงย่อยระหว่างวงเล็บและ แท็กปิด</sub>ตามลำดับนี้ หากยังมีวงเล็บอยู่ในสตริงให้ไปที่ขั้นตอนที่ 1 เอาต์พุตของคุณคือสตริงผลลัพธ์ซึ่งอาจมีการขึ้นบรรทัดใหม่ คุณไม่ต้องใช้อัลกอริทึมที่แน่นอนนี้ตราบใดที่ผลลัพธ์ของคุณถูกต้อง โปรดทราบว่าอาจมีวงเล็บซ้อนกันอยู่ ในกรณีนี้เราจะมีเชิงอรรถที่มีการอ้างอิงถึงเชิงอรรถอื่น ๆ ซับสตริงระหว่างวงเล็บอาจว่างเปล่า ดูกรณีทดสอบด้านล่างสำหรับตัวอย่าง กฎและเกณฑ์การให้คะแนน คุณสามารถเขียนโปรแกรมเต็มหรือฟังก์ชั่น จำนวนไบต์ต่ำสุดที่ชนะและช่องโหว่มาตรฐานไม่ได้รับอนุญาต ถ้าภาษาของคุณไม่สนับสนุน natively ตัวเลขทศนิยม ( ไอ Retina …

30
Palindrome สวัสดีชาวโลก
งานของคุณคือการสร้างโปรแกรมที่พิมพ์ "Greetings, Planet!" ตรงกับคอนโซล ดูเหมือนง่ายพอใช่ไหม นี่คือเคล็ดลับ รหัสจะต้องเป็นแบบ palindrome ซึ่งหมายความว่าอ่านจากขวาไปซ้ายเหมือนในซ้ายไปขวา ไม่อนุญาตช่องโหว่มาตรฐาน

4
Eternal 2014 - ปริศนา PCG.SE ปีใหม่ 2558
ดังนั้นตอนนี้ถึงปี 2015 และคำตอบมากมาย จากปริศนาของปีที่แล้ว กำลังเริ่ม สร้างผลลัพธ์ที่ไม่ถูกต้องตอนนี้เป็นเวลาสำหรับคำถามที่เกี่ยวข้องกับหมายเลข 2015 ยกเว้น ... ทำไม คุณไม่ชอบหรือไม่ถ้าคำตอบตามปัญหาของปีที่แล้วของคุณถูกต้อง? ทำไมเราไม่เปลี่ยนปฏิทินของเราเพื่อที่จะไม่เคยมีมาก่อนในปี 2015 และเราเพียงแค่อยู่ต่อในปี 2014 ตลอดไปและตลอดไป? มากำหนดสัญกรณ์วันใหม่ที่เรียกว่าสัญกรณ์ Eternal 2014ดังต่อไปนี้: สำหรับวันปี 2014 และก่อนวันที่จะเป็นเช่นเดียวกับในปฏิทินเกรโกเรียน สำหรับวันที่ในปี 2015 เป็นต้นไปปีจะอยู่ที่ 2014 และเดือนที่จะเป็นหมายเลขที่มันจะถ้ารอบเดือนเดียวกันในปี 2014 จะยังคงอยู่ตลอดไป 12 เดือนที่ผ่านมาดังนั้น2015-02-08จะเป็น2014-14-08และจะเป็น2020-12-31 2014-85-02โปรดทราบว่าวันอธิกสุรทินนั้นไม่นับเพราะปี 2014 ไม่ใช่ปีอธิกสุรทิน งานของคุณคือการสร้างโปรแกรมหรือฟังก์ชั่นที่จะใช้วันที่ทางดาราศาสตร์ของจูเลียนเป็นอินพุตและส่งคืนสตริงที่มีวันที่ตรงกับวันที่จูเลียนนั้นใน Eternal 2014 ในรูปแบบYYYY-MM-DDหรือDD/MM/YYYYรูปแบบ คุณอาจคิดว่าวัน Julian ที่ป้อนจะเป็นจำนวนเต็มตั้งแต่1721426(1 มกราคม 1) ถึง2914695(23 มกราคม 3268) รวม ปีอาจมีเลขศูนย์นำหน้าไปที่ตัวเลข 4 หลักหรือไม่ …

6
นั่นคือ BS! (เกมการ์ด)
BSเป็นเกมไพ่ที่เป้าหมายของเกมคือสูญเสียไพ่ทั้งหมดของคุณ เกมประกอบด้วยผู้เล่นสี่คนและสำรับไพ่ 52 ใบ ผู้เล่นแต่ละคนจะสุ่มไพ่ 13 ใบ โดยปกติการ์ดจะมีป้ายกำกับ 2 - 10, Ace, Jack, Queen, King แต่เพื่อความง่ายบัตรจะมีหมายเลขตั้งแต่ 0 - 12 แม้ว่าจำนวนไพ่ในมือของผู้เล่นจะเป็นข้อมูลสาธารณะ แต่ผู้เล่นเท่านั้นที่รู้ว่าการ์ดใดที่อยู่ในมือของเขา เกมไปดังนี้ตำแหน่งผู้เล่นคนแรกเป็นบัตรจำนวนมากที่มีป้ายกำกับ0ในขณะที่เขาต้องการที่จะอยู่ในกองทิ้ง (หมายเหตุว่าเขาไม่จำเป็นต้องเล่นทั้งหมดของบัตรของเขาที่มีป้ายกำกับ0แต่มักจะอยู่ในความสนใจที่ดีที่สุดของเขาที่จะทำเช่นนั้น ) เขาต้องเล่นไพ่อย่างน้อยหนึ่งใบ ผู้เล่นคนที่สองเล่นไพ่ให้มากที่สุดเท่าที่เขาต้องการจะติดป้าย1ผู้เล่นคนที่สามเล่น2และต่อไปเรื่อย ๆ หลังจาก 12 มันจะรีเซ็ตเป็น 0 จะเกิดอะไรขึ้นถ้าคุณไม่มีการ์ดใด ๆ ที่คุณควรเล่น จำไว้ว่าคุณต้องเล่นไพ่อย่างน้อยหนึ่งใบ - ในความเป็นจริงคุณสามารถเล่นไพ่ใด ๆ ที่คุณต้องการ! (ที่จริงแล้วแม้ว่าคุณจะมีการ์ดที่ถูกต้องคุณสามารถโกหกและเล่นการ์ดอื่น) อย่างไรก็ตามบางคนสามารถโทรหาคุณและพูดว่า "BS!" หากคนนั้นถูกต้องและคุณโกหกคุณต้องนำไพ่ทั้งหมดไปทิ้งในกอง เป็นรางวัลผู้เล่นที่เรียกคุณออกมาวางไพ่ใบใดใบหนึ่งในกองทิ้ง หากผู้กล่าวหาผิดเขาจะต้องนำไพ่ทั้งหมดไปทิ้งในกอง โปรดทราบว่าคุณไม่สามารถโกหกจำนวนไพ่ที่คุณเล่น ข้อมูลรายละเอียดเพิ่มเติม: ในตอนต้นของเกมผู้เล่นสุ่มสี่คนได้รับเลือกให้เล่น เนื่องจากจะมีอย่างน้อย 1,000 …

16
ใช้ตัวดำเนินการไบนารีของ INTERCAL
ภาษาคอมไพเลอร์ที่ไม่มีตัวย่อที่ออกเสียงได้อย่างย่อINTERCALเป็นภาษาการเขียนโปรแกรมที่ไม่เหมือนใคร ท่ามกลางคุณสมบัติที่ไม่สามารถพิสูจน์ได้ของมันคือตัวดำเนินการไบนารี INTERCAL ของสองผู้ประกอบการไบนารีแทรก (ยังเป็นที่รู้จักกันในชื่อMingle ) และเลือก Interleave แสดงด้วยการเปลี่ยนแปลง (¢) และ select ถูกแสดงด้วย sqiggle (~) Interleave ทำงานโดยรับตัวเลขสองตัวในช่วง 0-65535 และสลับบิตของพวกเขา ตัวอย่างเช่น 234 ¢ 4321 234 = 0000011101010 4321 = 1000011100001 Result: 01000000001111110010001001 Output: 16841865 เลือกงานโดยใช้ตัวเลขสองตัวในช่วง 0-65535 รับบิตในตัวถูกดำเนินการแรกซึ่งอยู่ในตำแหน่งเดียวกับ 1 วินาทีในตัวถูกดำเนินการตัวที่สองและบรรจุบิตเหล่านั้นอย่างถูกต้อง 2345 ~ 7245 2345 = 0100100101001 7245 = 1110001001101 Taken : 010 …
29 code-golf 

13
สร้างตัวเลขที่เป็นมิตรกับแป้นพิมพ์
รูปแบบแป้นพิมพ์คอมพิวเตอร์ทั่วไปส่วนใหญ่มีปุ่มตัวเลขทศนิยม 1234567890 วิ่งไปที่ด้านบนเหนือปุ่มสำหรับตัวอักษร ให้ทศนิยมหลักของย่านเป็นชุดของตัวเลขจากคีย์หลักของตัวเองและจากคีย์หลักทันทีไปทางซ้ายและขวาถ้าพวกเขามีอยู่ ยกตัวอย่างเช่นเขตของ 0 เป็น{0, 9}และเขต 5 {4, 5, 6}คือ ตอนนี้กำหนดหมายเลขที่เป็นมิตรของแป้นพิมพ์เป็นจำนวนเต็มบวก (ในรูปแบบทศนิยมที่ไม่มีเลขศูนย์นำหน้า) ที่สามารถพิมพ์ลงในเค้าโครงด้านบนเพื่อให้ทุกหลักที่ต่อเนื่องกันของตัวเลขหลังจากตัวเลขตัวแรกอยู่ในละแวกของตัวเลขก่อนหน้า ตัวเลขหลักเดียว (1-9) เป็นมิตรกับแป้นพิมพ์ ตัวเลขเช่น 22321 นั้นใช้งานง่ายสำหรับแป้นพิมพ์เพราะทุกหลัก (ไม่นับครั้งแรก) อยู่ในละแวกของตัวเลขก่อนหน้านี้ หมายเลขเช่น 1245 ไม่เหมาะสำหรับแป้นพิมพ์เพราะ 4 ไม่อยู่ในละแวกที่ 2 (หรือกลับกัน) ตัวเลขเช่น 109 ไม่เป็นมิตรกับแป้นพิมพ์เพราะ 0 ไม่ได้อยู่ในละแวกที่ 1 ปลายจะไม่วนซ้ำ โดยวางแป้นพิมพ์ตัวเลขในการสั่งซื้อจากที่เล็กที่สุดไปหามากที่สุดที่เราสามารถสร้างลำดับจำนวนเต็ม นี่คือ 200 คำแรกของลำดับหมายเลขที่เป็นมิตรกับแป้นพิมพ์: N KFN(N) 1 1 2 2 3 3 4 …

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