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

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

12
พื้นที่ของรูปหลายเหลี่ยมนี้คืออะไร
คำนวณพื้นที่ของรูปหลายเหลี่ยม แรงบันดาลใจจากวิดีโออัลกอริทึมเชือกผูกรองเท้า งาน งานของคุณคือการสร้างโปรแกรมหรือฟังก์ชั่นที่คำนวณพื้นที่ของรูปหลายเหลี่ยม โปรแกรมหรือฟังก์ชั่นถูกกำหนดตามคำนิยามเริ่มต้นในเมตาดาต้า อินพุต คุณจะได้รับพิกัด X และ Y ของแต่ละจุดยอดของรูปหลายเหลี่ยม คุณสามารถรับอินพุตเป็นรายการของ tuples ( [[x1, y1], [x2, y2], etc]), เมทริกซ์หรือรายการแบน ( [x1, y1, x2, y2, etc]) อนุญาตให้มีสองรายการประกอบด้วยxและyพิกัดตามลำดับ จุดยอดมีหมายเลขทวนเข็มนาฬิกาและจุดสุดยอดแรกจะเหมือนกับจุดสุดยอดที่ให้ไว้ดังนั้นปิดรูปหลายเหลี่ยม หากคุณต้องการคุณสามารถป้อนข้อมูลโดยไม่มีจุดสุดยอดครั้งสุดท้าย (ดังนั้นรับแต่ละพิกัดเพียงครั้งเดียว) คุณสามารถสันนิษฐานได้ว่าขอบของรูปหลายเหลี่ยมไม่ได้ตัดกัน คุณสามารถสันนิษฐานได้ว่าจุดยอดทั้งหมดมีพิกัดจำนวนเต็ม เอาท์พุต พื้นที่ของรูปหลายเหลี่ยม อนุญาตวิธีการส่งออกมาตรฐานทั้งหมด หากภาษาของคุณไม่อนุญาตให้มีการหารแบบลอยตัวและวิธีแก้ปัญหาจะไม่ใช่จำนวนเต็มคุณได้รับอนุญาตให้ส่งคืนเศษส่วน ไม่จำเป็นต้องทำให้เศษส่วนเรียบง่ายดังนั้น2/4จะอนุญาตให้ส่งคืนได้ เกณฑ์การชนะ รหัสที่สั้นที่สุดชนะ! กรณีทดสอบ [[4,4],[0,1],[-2,5],[-6,0],[-1,-4],[5,-2],[4,4]] 55 [[1,1],[0,1],[1,0],[1,1]] 0.5 1/2

30
ลบอัตราต่อรองของฉันจากเหตุการณ์ของฉัน
รับค่าเป็นจำนวนเต็มที่ไม่เป็นลบคืนค่าความต่างสัมบูรณ์ระหว่างผลรวมของเลขคู่และผลรวมของเลขคี่ กฎเริ่มต้น มีช่องโหว่มาตรฐาน คุณสามารถรับอินพุตและให้เอาต์พุตโดยวิธีอินพุต / เอาต์พุตมาตรฐานใด ๆ คุณอาจรับอินพุตเป็นสตริงในฐานะจำนวนเต็มหรือเป็นรายการตัวเลข นี่คือโค้ดกอล์ฟดังนั้นโค้ดที่สั้นที่สุดเป็นไบต์ในทุกภาษาชนะ! กรณีทดสอบ อินพุต ~> เอาท์พุท 0 ~> 0 (| 0-0 | = 0) 1 ~> 1 (| 1-0 | = 1) 12 ~> 1 (| 2-1 | = 1) 333 ~> 9 (| 0- (3 + 3 + 3) | = 9) …

26
ทำให้คลื่นสตริง
กำหนดสตริงเป็นอินพุตเอาต์พุตสตริงโดยใช้อัลกอริทึมต่อไปนี้: 1. Split the String by " " (find the words): "Hello World" -> ["Hello","World"] 2. Find the vowel count of each component: [2,1] ( ["H[e]ll[o]","W[o]rld"] ) 3. For each of the components, output the first n letter where n is the number of vowels it contains: ["He","W"] 4. Join …
19 code-golf  string 

9
สัญลักษณ์คำนำหน้ากับเครื่องหมายคำนำหน้า
คำเตือน: ไม่นี่ไม่ใช่เรื่องตลกที่จะเล่นสตริง งาน มีเพียงหนึ่งการดำเนินการที่จะสนับสนุนคือ: การลบ ( -) คุณมีเพียงสองอะตอมที่จะสนับสนุน: ศูนย์ ( 0) และหนึ่ง ( 1) ที่นี่คำนำหน้าสัญกรณ์-ABเทียบเท่ากับสัญกรณ์ postfix AB-ที่AและBเป็นนิพจน์ งานของคุณคือการแปลงนิพจน์ในรูปแบบของคำนำหน้าให้เทียบเท่าในรูปแบบของ postfix คำนิยาม นิพจน์ในรูปแบบนำหน้าถูกสร้างขึ้นโดยไวยากรณ์ต่อไปนี้: S > -SS S > 0 S > 1 การแสดงออกในเครื่องหมาย postfix ถูกสร้างขึ้นโดยไวยากรณ์ต่อไปนี้: S > SS- S > 0 S > 1 ตัวอย่าง Prefix notation: --01-0-01 Parentheses: -(-01)(-0(-01)) Convert: (01-)(0(01-)-)- …
19 code-golf  string 

20
รวมเส้นทแยงมุม
ใช้เมทริกซ์ของจำนวนเต็มบวกเป็นอินพุตและส่งออกผลรวมแต่ละองค์ประกอบบนเส้นทแยงมุมผ่านเมทริกซ์ คุณจะต้องนับเฉพาะเส้นที่ลงตามแนวทแยงมุมและไปทางขวาเท่านั้น คุณต้องเริ่มต้นด้วยเส้นทแยงมุมที่มีเฉพาะองค์ประกอบด้านล่างซ้ายจากนั้นเส้นทแยงมุมสองความยาวด้านบนนั้น (ถ้ามี) และต่อไปจนถึงเส้นทแยงมุมที่มีเฉพาะองค์ประกอบด้านบนขวาดังแสดงด้านล่าง ตัวอย่าง: Input: 8 14 5 1 10 5 5 8 6 6 8 10 15 15 4 11 Output: 15, 21, 20, 32, 29, 13, 1 (Diagonals: {{15},{6,15},{10,6,4},{8,5,8,11},{14,5,10},{5,8},{1}}) Input: 1 Output: 1 Input: 1 5 Output: 1, 5 Input: 4 1 Output: 1, 4 Input: …
19 code-golf  math  matrix 

2
รายการเหล่านี้เท่ากันหรือไม่
อย่างที่คุณทราบกันดีว่าหลามมีรายการอยู่ ในขณะที่คุณอาจไม่ทราบว่ารายการเหล่านี้สามารถมีตัวเอง a = [] a.append(a) Python 2 Python 3 สิ่งเหล่านี้เจ๋งและมีสิ่งที่น่าสนใจมากมายที่คุณสามารถทำได้กับพวกเขาอย่างไรก็ตามคุณไม่สามารถเปรียบเทียบได้ a = [] a.append(a) b = [] b.append(b) a == b Python 2 Python 3 งาน งานของคุณคือการเขียนฟังก์ชั่นใน Python (หรือภาษาใด ๆ ที่สามารถจัดการกับวัตถุหลามโดยตรง) ที่จะมีสองรายการที่อาจมีตัวเองและเปรียบเทียบพวกเขา สองรายการมีค่าเท่ากันหากมีความยาวเท่ากันและไม่มีลำดับของตัวเลขเช่นนั้นซึ่งการทำดัชนีทั้งสองรายการตามลำดับนั้นจะส่งผลให้วัตถุสองรายการที่ไม่เท่ากันภายใต้คำจำกัดความที่เท่ากันนี้ วัตถุที่ไม่ใช่รายการทั้งหมดที่มีอยู่ในรายการจะเป็นจำนวนเต็มหลามเพื่อความง่ายและควรนำมาเปรียบเทียบกับความเสมอภาคของ python สำหรับจำนวนเต็ม โปรแกรมของคุณไม่ควรใช้ความลึกในการเรียกซ้ำของไพ ธ อนเพื่อตรวจสอบว่ารายการนั้นมีความลึกไม่สิ้นสุด นั่นคือ: def isInfinite(a,b): try: a==b return False except RunTimeError: return …

6
Anaglot Polygrams
งาน เขียนโค้ดบางอย่างที่สามารถจัดใหม่เป็น n โปรแกรมที่แตกต่างกันใน n ภาษาที่แตกต่างกันแต่ละอันจะแสดงจำนวนที่แตกต่างกันตั้งแต่ 1 ถึง n ไม่ควรมีสองภาษาเหมือนกัน แต่รุ่นที่แตกต่างกันของ "ภาษาเดียวกัน" จะถือว่าเป็นภาษาที่แตกต่างกันตราบใดที่พวกเขามีหมายเลขรุ่นหลักที่แตกต่างกัน สำหรับความท้าทายนี้สภาพแวดล้อม REPL ไม่แตกต่างจากภาษาแม่ แต่ยังคงเป็นภาษา แต่ละภาษาควรใช้การเปลี่ยนแปลงที่แตกต่างกันของซอร์สโค้ดและส่งออกตัวเลขที่แตกต่างในช่วง พีชคณิตจะถูกนับเป็นไบต์ไม่ได้อยู่ในตัวละคร คุณควรรวมการเปลี่ยนแปลงแต่ละอย่างที่ใช้กับภาษาที่ใช้ในการทดสอบ เกณฑ์การให้คะแนน คะแนนของคุณจะเป็น โดยที่ N คือจำนวนภาษาและ L คือจำนวนลำดับเฉพาะของโปรแกรมไบต์ L ไม่เท่ากับความยาวของโปรแกรม (เว้นแต่ว่าโปรแกรมจะมีขนาด 1 หรือ 0 ไบต์) นี่คือสคริปต์ไพ ธ อนเพื่อคำนวณความอนุเคราะห์ L ของ Conor O'Brien L เท่ากับความยาวของโปรแกรมแฟคทอเรียลหากว่าไม่มีไบท์ซ้ำในโปรแกรม เป้าหมายคือเพื่อเพิ่มคะแนนของคุณ

30
การใช้อักขระในสตริงนานที่สุด
ความท้าทายของคุณ: เขียนฟังก์ชั่นที่ใช้สตริงsอักขระcและพบว่าความยาวของระยะที่ยาวที่สุดของในc ความยาวของการทำงานจะได้รับการsl กฎ : หากsมีความยาว 0 หรือcว่างเปล่าlควรเป็น 0 หากมีกรณีของการไม่มีcในs, lควรเป็น 0 ช่องโหว่มาตรฐานและI / O มาตรฐานกฎใช้ ไม่ว่าที่ใดในsการวิ่งของcs lควรจะเหมือนกัน ใด ๆ ที่ตัวอักขระ ASCII สามารถปรากฏในและsc กรณีทดสอบ : s,c --> l "Hello, World!",'l' --> 2 "Foobar",'o' --> 2 "abcdef",'e' --> 1 "three spaces",' ' --> 3 "xxx xxxx xx",'x' --> 4 "xxxx xx …
19 code-golf  string 

11
เจ็ดสิบเจ็ดเซเว่น
รับจำนวนnและขีด จำกัด บนlรายการตัวเลขที่สามารถสร้างขึ้นได้โดยการคูณสองหรือมากกว่าตัวเลขประกอบด้วยสามัคคีเท่านั้นที่มีความยาวหรือน้อยกว่าที่น้อยกว่าn A161145อยู่ใกล้กับความท้าทายนี้อย่างไรก็ตามคุณจะไม่รวม 7, 77, 777, 7777, 77777, ฯลฯl ตัวอย่าง n=anything, l<49 จะส่งผลให้: [] n=1, l=49 จะส่งผลให้: 7*7=49 f(1,49)=[49] n=1, l=343 จะส่งผลให้: 7*7 =49 7*7*7 =343 f(1,343)=[49,343] n=2,l=6000 จะส่งผลให้: 7*7 =49 7*7*7 =343 7*7*7*7=2401 7*77 =539 7*7*77 =3773 77*77 =5929 f(2,6000)=[49,343,539,2401,3773,5929] n=3, l=604000 จะส่งผลให้: [49, 343, 539, 2401, 3773, …

6
รูปหลายเหลี่ยมที่ขัดแย้ง
ดีทุกคนรักpolyglots คุณจะได้รับจำนวนเต็มสองจำนวนในรูปแบบอินพุตมาตรฐานใด ๆ (ไม่มีการเข้ารหัส) งานของคุณคือการเขียนหลายภาษาที่ค้นหาค่าต่ำสุดในภาษาและค่าสูงสุดระหว่างตัวเลขสองในภาษาอื่นและดำเนินการดังต่อไปนี้: รหัสที่ค้นหาค่าสูงสุดจะต้องคำนวณผลรวมของพวกเขาด้วย โปรแกรมที่ค้นหาค่าต่ำสุดจะต้องคำนวณผลลัพธ์ของการลบ ( max - min) นี่คือ "ส่วนที่ยุ่งยาก" : หากตัวเลขสองตัวเท่ากันโปรแกรมทั้งสองจะต้องไม่แสดงผล / ส่งคืนสิ่งใด (ทั้งไป STDOUTและSTDERRหรือreturnวิธีอื่นใด) ดูรายละเอียดเพิ่มเติมในส่วนข้อมูลจำเพาะเกี่ยวกับการจัดรูปแบบ อินพุต ตามที่ระบุไว้ข้างต้นจำนวนเต็มสองจำนวนที่ใช้เป็นอินพุตในวิธีมาตรฐานใด ๆซึ่งใช้ร่วมกับทั้งสองภาษา รายละเอียดผลลัพธ์ สำหรับโปรแกรมที่ค้นหาmaxรูปแบบควรเป็น:max_value, addition result สำหรับโปรแกรมที่ค้นหาminรูปแบบควรเป็นmin_value, subtraction result (max - min) ผลที่ได้สามารถพิมพ์ด้วยตัวคั่นที่ชัดเจนใด ๆ ( , \n, ,หรือสิ่งอื่นที่คุณต้องการ) กลับมาจากฟังก์ชั่นเป็นสตริงที่มีค่าทั้งสองคาดว่าจะมีตัวคั่นหรือเป็นรายการตัวเลข (เช่น[max_value,sum]) ตัวอย่าง: Input || Max Language Output || Min Language …

30
ตรงข้ามรูทดิจิทัล!
หรือที่รู้จักในชื่อ [analog root] ( ตรงข้ามรูทดิจิทัล! );) รูทดิจิทัลของตัวเลขคือผลรวมของตัวเลขอย่างต่อเนื่องจนกว่าจะเป็นตัวเลขหลักเดียวตัวอย่างเช่นรูทดิจิทัลของ 89456 จะถูกคำนวณดังนี้: 8 + 9 + 4 + 5 + 6 = 32 3 + 2 = 5 รากดิจิตอลของ 89456 คือ 5 ให้ตัวเลขเป็นอินพุตผ่านSTDINพิมพ์ / ส่งกลับตัวเลขสองหลักที่เป็นไปได้ทั้งหมดที่มีรูทดิจิทัลนั้น หากคุณต้องการมันสามารถรวมตัวเองเช่น 05 นี่เป็นอินพุตและเอาต์พุตที่เป็นไปได้ทั้งหมด: (คุณจะต้องเลือกว่าจะรวมศูนย์นำหน้าสำหรับตัวเลขด้วยตนเองหรือไม่) I / O 0 => 0 หรือ 00 หรืออะไรก็ได้ 1 => 01 และ / …

20
อาจเป็นคนแรกที่อยู่กับคุณ
เขียนโปรแกรมเพื่อแทนที่ "แรง" ที่เกิดขึ้นทั้งหมดด้วย "แรก" และเหตุการณ์ทั้งหมด "แรก" ด้วย "แรง" ซึ่งทำให้ตัวพิมพ์ต้นฉบับสำหรับตำแหน่งอักขระทั้งหมด: "ForcefoRcefOrcE" -> "FirstfiRstfIrsT" "FirstfiRstfIrsT" -> "ForcefoRcefOrcE" ส่วนที่เหลือของสตริงจะต้องไม่เปลี่ยนแปลงดังนั้นการรันโปรแกรมของคุณสองครั้งจะส่งคืนสตริงเดิม: "thirst of forces" -> "thirst of firsts" -> "thirst of forces" โปรแกรมของคุณควรทำงานกับสตริงเริ่มต้นใด ๆ คุณควรหลีกเลี่ยงการใช้ตัวอักษรเวทย์มนตร์แทนการเป็นสื่อกลางเพราะถ้าคุณลองเปลี่ยนสามรอบ ("force" -> "zzzzz", "first" -> "force", "zzzzz" -> "first" ) "zzzzz"มันจะล้มเหลวในสายที่มี คุณควรสนับสนุนตัวละครทุกตัวที่อนุญาตให้ใช้ในการกำหนด String โดยภาษาการเขียนโปรแกรมของคุณ (ในกรณีส่วนใหญ่เป็น Unicode) ตัวอย่างการใช้การแทนค่าสไตล์ JSON สำหรับอักขระที่ไม่สามารถพิมพ์ได้ (\ …
19 code-golf  string 

30
พิมพ์ favicon ของ Exchange Exchange
ท้าทาย พิมพ์หรือส่งคืน favicon ของ Exchange Exchange ตามที่ระบุไว้ด้านล่าง: ___________________ / \ --------------------- | | --------------------- | | --------------------- \__________ _____/ | / | / |/ นี่คือรหัสกอล์ฟดังนั้นคำตอบที่สั้นที่สุดในแต่ละภาษาจะเป็นผู้ชนะ

30
ลดลงครึ่งหนึ่ง
งาน ได้รับไม่ว่างเปล่าอาร์เรย์ของ0และ1, 0ลดลงครึ่งหนึ่งความยาวของการทำงานของ อินพุต อาร์เรย์ของและ0 1รูปแบบที่ยอมรับได้: อาร์เรย์จริงในภาษาของคุณ สตริงที่คั่นด้วย Linefeed ของ0และ1 สตริงที่ต่อเนื่องกันของ0และ1 รูปแบบที่เหมาะสมอื่น ๆ ตัวอย่างเช่นสามอินพุตต่อไปนี้เป็นที่ยอมรับทั้งหมด: [1, 0, 0, 1] "1\n0\n0\n1"(ที่ไหน\nคือ linefeed U + 000A) "1001" คุณอาจจะคิดว่าการทำงานของ0จะมีความยาวแม้กระทั่ง เอาท์พุต อาเรย์ของ0และ1ในรูปแบบที่ยอมรับได้ด้านบน Testcases input ↦ output [1,0,0,1,0,0,1] ↦ [1,0,1,0,1] [1,1,0,0,1,1,0,0,1] ↦ [1,1,0,1,1,0,1] [1,1,0,0,1,1,1,0,0,1,1] ↦ [1,1,0,1,1,1,0,1,1] [1,1,1] ↦ [1,1,1] [0,0,1] ↦ [0,1] [0,0] ↦ [0] [1,1,1,0,0,0,0,1,1,1,1,0,0,1,0,0,1,1,0,0,1,1,1,1,0,0,1,0,0] …

2
ผ้าขนหนูพับ!
ผมได้ยินบางที่สิ่งหนึ่งที่เทคโนโลยีไม่สามารถทำได้เลยคือผ้าขนหนูพับ1 ตอนนี้มันเป็นหน้าที่ของคุณที่จะพิสูจน์ว่าข้อความนั้นเป็นเท็จ! รับสายเป็นอินพุทประกอบด้วยสี่เหลี่ยม (ผ้าเช็ดตัว) ดังต่อไปนี้พับผ้าเช็ดตัวแต่ละครึ่งครึ่ง ตัวอย่างเช่น: +------+ +------+ +--+ | | | | | | | | | | | | | | -> +------+ -> +--+ | | | | | | +------+ โปรดสังเกตว่าเมื่อพับผ้าเช็ดตัวมันจะถูกพับขึ้นมาก่อนจากนั้นจากซ้ายไปขวา คุณโปรแกรมต้องเลียนแบบพฤติกรรมนี้เช่นกัน โปรดสังเกตว่าในกรณีทดสอบผ้าเช็ดตัวจะอยู่ในที่เดียวกัน แต่พับ กฎ: วิธีการมาตรฐานของอินพุต / เอาต์พุต ช่องโหว่มาตรฐานใช้ อินพุตและเอาต์พุตควรเป็นสตริง เอาท์พุทท้ายก็โอเคเอาท์พุทตราบใดที่ผ้าเช็ดตัวอยู่ในสถานที่ที่เหมาะสมเมื่อเทียบกับกันและกัน คุณอาจสมมติว่าความยาวของแต่ละด้านของผ้าเช็ดตัวจะหารด้วย 2 เสมอ ผ้าเช็ดตัวที่ผ่านเป็นอินพุตจะเป็นรูปสี่เหลี่ยมผืนผ้าเสมอ ผ้าขนหนูจะถูกแยกออกเสมอ …

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