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

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

7
ตีกอล์ฟวงกลมที่เล็กที่สุด!
ปัญหา: ให้คะแนนที่ไม่ว่างเปล่าในระนาบคาร์ทีเซียนหาวงกลมที่เล็กที่สุดที่ล้อมรอบพวกมันทั้งหมด ( ลิงค์ Wikipedia ) ปัญหานี้เล็กน้อยถ้าจำนวนคะแนนเป็นสามหรือน้อยกว่า (ถ้ามีจุดหนึ่งวงกลมจะมีรัศมีเป็นศูนย์ถ้ามีสองจุดส่วนของเส้นตรงที่รวมจุดนั้นคือเส้นผ่านศูนย์กลางของวงกลมถ้ามี จุดสามจุด (ไม่ใช่เครื่องหมาย colinear) เป็นไปได้ที่จะได้รับสมการของวงกลมที่สัมผัสได้ทั้งหมดหากพวกมันเป็นรูปสามเหลี่ยมที่ไม่เป็นปมหรือวงกลมที่สัมผัสเพียงสองจุดและล้อมรอบที่สามหากสามเหลี่ยมนั้นเป็นรูปสามเหลี่ยม ดังนั้นเพื่อความท้าทายนี้จำนวนคะแนนควรมากกว่าสาม ความท้าทาย: อินพุต:รายการของจุดที่ไม่ใช่ colinear 4 จุดขึ้นไป คะแนนควรมีพิกัด X และ Y พิกัดสามารถลอยได้ เพื่อบรรเทาความท้าทายไม่ควรมีสองจุดที่ใช้ร่วมกันพิกัด X เดียวกัน ตัวอย่างเช่น:[(0,0), (2,1), (5,3), (-1,-1)] เอาท์พุท: tuple ของค่า(h,k,r)เช่นนั้นเป็นสมการของวงกลมที่เล็กที่สุดที่ล้อมรอบทุกจุด(x−h)2+(y−k)2=r2(x−h)2+(y−k)2=r2(x-h)^2 + (y-k)^2 = r^2 กฎ: คุณสามารถเลือกวิธีการป้อนข้อมูลใดก็ได้ที่เหมาะกับโปรแกรมของคุณ ควรพิมพ์ผลลัพธ์ไปยังSTDOUTหรือส่งคืนโดยฟังก์ชัน ต้องการภาษา "ปกติ" ทั่วไปใช้ภาษาได้ แต่ภาษาเอสแตงใดก็ได้ คุณสามารถสันนิษฐานได้ว่าคะแนนนั้นไม่ได้ colinear นี่คือโค้ดกอล์ฟดังนั้นโปรแกรมที่เล็กที่สุดในหน่วยไบต์ชนะ ผู้ชนะจะได้รับการคัดเลือกหนึ่งสัปดาห์หลังจากการโพสต์ความท้าทาย โปรดรวมภาษาที่คุณใช้และความยาวเป็นไบต์เป็นส่วนหัวในบรรทัดแรกของคำตอบของคุณ: # …

18
ผกผันคำพูดควิน
ความคาดหวังของการท้าทายนี้คือ: หากโปรแกรมของคุณทำงานตามปกติรหัสทั้งหมดในเครื่องหมายคำพูด ( "- เครื่องหมายคำพูดคู่) ควรถูกพิมพ์ หากโปรแกรมของคุณอยู่ในเครื่องหมายคำพูดคู่ (ในทางกลับกันเครื่องหมายคำพูด) รหัสที่ปกติไม่ได้อยู่ในเครื่องหมายคำพูดควรจะพิมพ์ เช่น: สมมติว่าคุณมีรหัสต่อไปนี้: fancyStuff("myCode"); "I like".isGreat(); ถ้าฉันใช้มันฉันคาดหวังผลลัพธ์ของ: myCode I like อย่างไรก็ตามถ้าฉันใส่ในเครื่องหมายคำพูดฉันจะได้รับ: "fancyStuff("myCode"); "I like".isGreat();" เมื่อเรียกใช้รหัสนี้ผลลัพธ์ที่คาดหวังจะเป็น: fancyStuff( ); .isGreat(); เห็นได้ชัดว่าตัวอย่างข้างต้นไม่ได้เป็นการตอบสนองการทำงานในภาษาใด ๆ งานของคุณคือการเขียนรหัสที่มีประสิทธิภาพในลักษณะนี้ กฎระเบียบ ช่องโหว่มาตรฐานใช้ ค่าที่พิมพ์ทั้งในแบบฟอร์มที่ยกมาและไม่ได้ระบุไว้ต้องไม่ว่างเปล่าหรือประกอบด้วยช่องว่างเท่านั้น ซึ่งหมายความว่าโปรแกรมทั้งหมดต้องมีชุดคำพูดอย่างน้อยหนึ่งชุด อย่างไรก็ตามอนุญาตให้ใช้ช่องว่างต่อท้าย / นำหน้า ไม่ต้องดูรหัสของคุณชื่อไฟล์ที่ต้องการ ฯลฯ คำพูดที่ไม่ตรงกันจะไม่ได้รับอนุญาต หากมีหลายสตริงพวกเขาสามารถพิมพ์เป็นบรรทัดใหม่ (ในตัวอย่าง) หรือในวิธีอื่นที่มนุษย์สามารถอ่านได้ - ไม่มีอาร์เรย์หรือวัตถุ นี่คือcode-golfดังนั้นคำตอบที่สั้นที่สุดในจำนวนไบต์ชนะ

20
ใช้ Casenader Doomsday Dice's Catuckative ของ Homestuck
ท้าทาย ฉันถูกโจมตีโดยลูกเรือเที่ยงคืนที่ร้ายกาจและฉันจำเป็นต้องเรียกCatenative Doomsday Dice Cascaderเพื่อปกป้องตัวเอง เนื่องจากฉันมีพื้นที่เหลือน้อยฉันจึงต้องใช้รหัสให้สั้นที่สุด อัลกอริทึมสำหรับ Casenader Dice Catenative Doomsday มีดังต่อไปนี้: ครั้งแรกแม่พิมพ์รีดหกด้านใน Prime Bubble จะถูกรีดและผลลัพธ์จะพิจารณาว่ามีการวนซ้ำของขั้นตอนถัดไปกี่ครั้ง เริ่มต้นด้วยการตายหกด้าน หลายต่อหลายครั้งเมื่อการหมุนของ Prime Bubble ตายตัวให้คูณจำนวนด้านในการตายครั้งต่อไปด้วยผลลัพธ์ของการหมุนของ Die ปัจจุบัน ตัวอย่างเช่นหากในการหมุนรอบแรกของการตายหกด้านการหมุนของคุณคือ 2 การตายครั้งต่อไปของคุณจะมี 6 * 2 = 12 ด้าน เป้าหมายของคุณคือการเขียนฟังก์ชั่นหรือโปรแกรมที่ไม่ต้องป้อนข้อมูลและส่งออกผลลัพธ์สุดท้ายของการรีดตายครั้งสุดท้าย เนื่องจากนี่คือcode-golfจำนวนไบต์ต่ำสุดในแต่ละภาษาจึงชนะ! ตัวอย่าง ตัวอย่าง # 1 (ถ่ายโดยตรงจากลิงก์ด้านบน): The Prime Bubble rolls a 6, meaning that the Cascader will …
29 code-golf  random 

2
ลำดับเกลียว
พื้นหลัง ลำดับ OEIS A272573อธิบายถึงเกลียวบนกริดหกเหลี่ยมดังนี้: เริ่มหมุนวนของตัวเลขบนกระเบื้องหกเหลี่ยมโดยมีหกเหลี่ยมเริ่มต้นเป็น (1) = 1 a (n) เป็นจำนวนเต็มบวกที่เล็กที่สุดที่ไม่เท่ากับหรือก่อนหน้านี้ติดกับเพื่อนบ้าน ลำดับเริ่มต้น 1, 2, 3, 4, 5, 6, 7, 4, 6, 8, 5, 9, 8, 10, 2, 11, ... นี่คือภาพประกอบของรูปแบบเกลียว: a(11) != 1เพราะตอนนั้น3และ1จะอยู่ติดกันสองแห่ง a(11) != 2เพราะตอนนั้น3และ2จะอยู่ติดกันสองแห่ง a(11) != 3เพราะจากนั้น3จะติดกับตัวเอง a(11) != 4เพราะตอนนั้น3และ4จะอยู่ติดกันสองแห่ง a(11) = 5ดังนั้น ท้าทาย ความท้าทายคือการเขียนโปรแกรมที่คำนวณA272573 นี่คือรหัส - กอล์ฟดังนั้นรหัสที่สั้นที่สุดจึงชนะ

11
มาวาด Triforce กัน
The Triforceเป็นสิ่งประดิษฐ์สวมบทบาทในThe Legend of Zeldaทำจากสามเหลี่ยมสามด้านที่มีรูปลักษณ์เหมือนกันแสดงถึงพลังสติปัญญาและความกล้าหาญ หลายเกมในเทพนิยายรวมถึงภาพเคลื่อนไหวเมื่อสามส่วนเข้าด้วยกันในที่สุด จุดประสงค์ของความท้าทายนี้คือการวาดเฟรม 2 มิติเดียวของภาพเคลื่อนไหวที่ทำให้ง่ายขึ้นโดยมีความกว้างที่กำหนดสำหรับรูปสามเหลี่ยมและระยะห่างที่กำหนดระหว่างส่วนต่างๆ อินพุต การป้อนข้อมูลประกอบด้วยสองจำนวนเต็ม: ความกว้างและค่าระยะห่างs ≥ 0w≥1W≥1w\ge1s ≥ 0s≥0s\ge0 เอาท์พุต เฟรมต้องถูกวาดตามข้อกำหนดต่อไปนี้: /\ / \____________ this part is horizontally centered / \ /______\ \___ s empty lines / /\ /\ / \ / \______ w+1 backslashes / \ / \ /______\ /______\ \_______ 2w …

16
เพื่อค้นหาหมู่เกาะที่ 1 และ 0 ในเมทริกซ์
กำหนดเมทริกซ์สองมิติเป็น 0 และ 1s ค้นหาจำนวนเกาะสำหรับ 1s และ 0s โดยที่เพื่อนบ้านอยู่ในแนวนอนและแนวตั้งเท่านั้น Given input: 1 1 1 0 1 1 1 0 output = 1 1 Number of 1s island = 1 xxx- xxx- Number of 0s island = 1 ---x ---x ------------------------------ Given input: 0 0 0 0 1 1 1 1 …

26
ลูกศรตัวแปรเหล่านั้น!
ท้าทาย โรบินชอบมีการประกาศตัวแปรของเขาในรูปของลูกศร นี่คือวิธีที่เขาทำ: อินพุตสตริงจำนวนเท่าใดก็ได้ จัดเรียงตามความยาว เอาท์พุทพวกเขาสั่งจากกลางถึงรูปหัวลูกศรเชิงลบประมาณเช่นนี้ (ใดก็ตามสั่งกอล์ฟที่ดีที่สุด): 5 or 4 3 2 1 1 2 3 4 5 กรณีทดสอบ การป้อนข้อมูล: bow arrows sheriffOfNottingham kingRichard maidMarian princeJohn sherwoodForest เอาท์พุท: sheriffOfNottingham kingRichard maidMarian bow arrows princeJohn sherwoodForest การป้อนข้อมูล: a bb cc เอาต์พุต (ใช้ได้ทั้งคู่): bb a cc cc a bb การป้อนข้อมูล: one four …

15
ทดแทนแม่เหล็กตู้เย็น
เมื่อมีการเขียนข้อความที่มีแม่เหล็กติดตู้เย็น, คุณมักจะพบว่าตัวเองทำหน้าที่แทนสำหรับ1 Iในการท้าทายนี้เป้าหมายของคุณคือค้นหาว่าสามารถเขียนข้อความโดยใช้ตัวอักษรของข้อความอื่นได้หรือไม่ การทดแทนที่ได้รับอนุญาตคือ: A = 4 B = 8 C = U E = M = W = 3 G = 6 = 9 I = 1 L = 7 N = Z O = 0 R = 2 S = 5 ตัวอย่างเช่นข้อความCIRCA 333สามารถจัดใหม่ที่จะสะกดICE CREAMที่สองคนแรก3ที่จะหมุน 180 องศาเพื่อให้ทั้งสองEs และสุดท้าย3คือ 90 …

19
อายุเท่าไหร่
เขียนโปรแกรมสั้น ๆ ซึ่งใช้เวลาเป็นวินาทีในการแสดงอายุและแสดงผลการประมาณเวลานั้นเป็นภาษาอังกฤษ โปรแกรมของคุณจะต้องแสดงเวลาที่แม่นยำน้อยที่สุดซึ่งผ่านไปแล้วโดยใช้เมตริกต่อไปนี้และความยาวเป็นวินาที: second = 1 minute = 60 hour = 60 * 60 day = 60 * 60 * 24 week = 60 * 60 * 24 * 7 month = 60 * 60 * 24 * 31 year = 60 * 60 * 24 * 365 ตัวอย่าง …
29 code-golf  date 

21
สัญลักษณ์ Levi-Civita
สัญลักษณ์ Levi-Civita สามมิติเป็นฟังก์ชั่นที่fนำจำนวนสามตัวของตัวเลข(i,j,k)แต่ละตัวเข้า{1,2,3}มาเพื่อ{-1,0,1}กำหนดดังนี้ f(i,j,k) = 0เมื่อi,j,kไม่ชัดเจนเช่นi=jหรือj=kหรือk=i f(i,j,k) = 1เมื่อ(i,j,k)การเปลี่ยนแปลงวงจรที่เป็นหนึ่งใน(1,2,3)(1,2,3), (2,3,1), (3,1,2) f(i,j,k) = -1เมื่อ(i,j,k)การเปลี่ยนแปลงวงจรที่เป็นหนึ่งใน(3,2,1)(3,2,1), (2,1,3), (1,3,2) ผลที่ได้คือสัญญาณของการเปลี่ยนแปลงของ(1,2,3)ด้วยไม่ใช่พีชคณิตให้ 0. หรือถ้าเราเชื่อมโยงค่า1,2,3กับฉากเวกเตอร์พื้นฐานหน่วยe_1, e_2, e_3นั้นf(i,j,k)เป็นปัจจัยของเมทริกซ์ 3x3 e_i, e_j, e_kกับคอลัมน์ อินพุต ตัวเลขสามตัว{1,2,3}เรียงตามลำดับ {0,1,2}หรือคุณอาจเลือกที่จะใช้เป็นศูนย์การจัดทำดัชนี เอาท์พุต ค่าฟังก์ชั่นของพวกเขา Levi-Civita {-1,0,1}จาก นี่คือรหัสกอล์ฟ กรณีทดสอบ มีอินพุต 27 ที่เป็นไปได้ (1, 1, 1) => 0 (1, 1, 2) => 0 (1, 1, 3) …

30
สุ่มจนถึง 0
ท้าทาย โพสต์ Sandbox กำหนดจำนวนเต็มบวก(K)เอาท์พุทเป็นจำนวนเต็มสม่ำเสมอสุ่มระหว่าง(Y)[0, K) ถ้าY > 0สมมติและทำซ้ำขั้นตอนจนกว่าK = YY = 0 กฎระเบียบ ต้องป้อนข้อมูลในตอนแรก รูปแบบผลลัพธ์ตามที่คุณต้องการ โปรแกรมของคุณจะต้องเสร็จสิ้น 0 ต้องเป็นผลลัพธ์สุดท้ายเลือกที่จะเป็นบรรทัดว่างแทน 0
29 code-golf  random 

11
เครื่องหมายดอกจันเกลียว
เมื่อพิจารณาถึงขนาดของเกลียวSและขนาดขั้นตอนNให้เอาออกเป็นS*Sเกลียว"สี่เหลี่ยม" ที่มีNเครื่องหมายดอกจันสร้างขึ้นจากรัศมีด้านนอกไปยังด้านในตามเข็มนาฬิกา กรณีทดสอบ (ตัวอย่าง) ด้านล่าง การป้อนข้อมูล: 4 3 เอาท์พุท: *** การป้อนข้อมูล: 4 6 เอาท์พุท: **** * * การป้อนข้อมูล: 4 11 เอาท์พุท: **** * * * **** การป้อนข้อมูล: 6 18 เอาท์พุท: ****** * * * * * * ****** การป้อนข้อมูล: 6 22 เอาท์พุท: ****** *** * * * * * * …

15
ตรีโกณมิติกล่องดำ
เขียนโปรแกรมหรือฟังก์ชั่นที่สามารถแยกแยะความแตกต่างฟังก์ชันตรีโกณมิติต่อไปนี้ 12: sin, cos, tan, asin, acos, atan, sinh, cosh, tanh, asinh, ,acosh atanh โปรแกรมของคุณได้รับหนึ่งในฟังก์ชั่นด้านบนเป็นกล่องดำและควรเอาท์พุทชื่อฟังก์ชั่นตามที่กำหนดไว้ด้านบนหรือวิธีที่มันตั้งชื่อในภาษาของคุณ นี่คือรหัสกอล์ฟดังนั้นคำตอบที่สั้นที่สุดในแต่ละภาษาจะเป็นผู้ชนะ คุณควรแสดงให้เห็นว่ารหัสของคุณทำงานอย่างถูกต้องโดยรวมถึงกรณีทดสอบที่มีทั้ง 12 อินพุตที่เป็นไปได้ หากภาษาที่คุณเลือกไม่ได้รวม build-ins สำหรับฟังก์ชั่นด้านบนทั้งหมดคุณจะต้องจัดเตรียมการปรับใช้ที่เหมาะสมของตัวเองสำหรับคนที่ขาดหายไป ชี้แจงเพิ่มเติม การใช้ตัวเลขที่ซับซ้อนเพื่อสืบค้นช่องดำอนุญาตให้ใช้หากบิลด์อินพื้นฐานสามารถจัดการได้ ในฐานะที่เป็นเมื่อใช้ตัวเลขจริงเท่านั้นแบบสอบถามเพื่อฟังก์ชั่นกล่องดำสามารถให้ข้อผิดพลาดโดเมน ในกรณีนี้คุณควรสมมติว่ากล่องดำสื่อสารเฉพาะการมีอยู่ของข้อผิดพลาด แต่ไม่ใช่จากการทำงานที่เกิดขึ้นdom acosh∩dom atanh=∅dom acosh∩dom atanh=∅ dom\ acosh \cap dom\ atanh = \emptyset หากแทนที่จะมีข้อผิดพลาดค่าอื่น ๆ เช่นNaNหรือnullจะถูกส่งกลับการส่งของคุณควรจะสามารถจัดการได้ ขอบคุณสำหรับข้อเสนอแนะ sandbox ที่เป็นประโยชน์!

7
เรามาถึงจุดที่เราเริ่มแล้ว! ...
ท้าทาย: การป้อนข้อมูล: คุณรับสองอินพุต: - สตริงประกอบด้วย ASCII ที่พิมพ์ได้เท่านั้น (ไม่รวมช่องว่างแท็บหรือบรรทัดใหม่) - อักขระ ASCII ที่พิมพ์ได้ เอาท์พุท: บรรทัดแรกจะมีการป้อนสตริง ทุกi-modulo-3 ครั้งแรกที่เกิดขึ้นของตัวละครนี้จะย้ายไปในทิศทางที่ตะวันออกเฉียงใต้; ทุกi-modulo-3 วินาทีที่เกิดขึ้นจะย้ายในทิศทางใต้; และทุก ๆi-modulo-3 เหตุการณ์ที่สามจะย้ายในทิศทางตะวันตกเฉียงใต้ คุณจะดำเนินการต่อไปจนกว่าอักขระจะอยู่ในตำแหน่งเริ่มต้นเริ่มต้นของพวกเขาอีกครั้ง (ซึ่งหมายความว่ามันจะถูกล้อมรอบจากด้านหนึ่งไปอีกด้านหนึ่งหากจำเป็น) จากนั้นคุณจะพิมพ์บรรทัดสุดท้ายด้วยการป้อนสตริงอีกครั้ง ทำมันให้เสร็จ. (โปรดทราบว่ากรณีทดสอบทั้งหมดจะสิ้นสุดที่อินพุตเริ่มต้นหลังจากที่length(input)แถวส่วนใหญ่รวมถึงแถวที่มีอินพุตต่อท้ายซึ่งอาจเร็วกว่าที่เห็นในกรณีทดสอบครั้งแรกด้านล่างนี้ด้วยความยาว 14 แต่สิ้นสุดหลังจาก 9. ) ทั้งหมดนี้อาจคลุมเครือดังนั้นนี่เป็นตัวอย่าง: กรณีทดสอบ 1: สตริงอินพุต: "This_is_a_test" อักขระอินพุต:'s' เอาท์พุท: This_is_a_test s s s ss s s s sss sss s s ss …

30
ฉันไม่ดีพอสำหรับคุณ
พื้นหลัง: ปัจจุบัน ความท้าทายที่สมบูรณ์แบบตัวเลขค่อนข้างมีข้อบกพร่องและซับซ้อนเนื่องจากจะขอให้คุณส่งออกในรูปแบบที่ซับซ้อนซึ่งเกี่ยวข้องกับปัจจัยของตัวเลข นี่คือrepost ปัญหาการตัดสินใจอย่างหมดจดของความท้าทาย ท้าทาย กำหนดจำนวนเต็มบวกให้กับค่าใด ๆ รูปแบบอินพุตมาตรฐานให้แยกความแตกต่างระหว่างว่าสมบูรณ์หรือไม่ ตัวเลขที่สมบูรณ์แบบคือตัวเลขที่เท่ากับผลรวมของตัวหารที่เหมาะสมทั้งหมด (ตัวหารที่เป็นบวกน้อยกว่าของตัวเอง) ตัวอย่างเช่น666เป็นตัวเลขที่สมบูรณ์แบบเนื่องจากตัวหารคือ1,2,31,2,31,2,3ซึ่งรวมกันได้ถึง666ในขณะที่121212ไม่ใช่ตัวเลขที่สมบูรณ์แบบตั้งแต่ตัวหาร ( 1,2,3,4,61,2,3,4,61,2,3,4,6 ) รวมได้ถึง161616ไม่ได้12121212 กรณีทดสอบ: Imperfect: 1,12,13,18,20,1000,33550335 Perfect: 6,28,496,8128,33550336,8589869056 กฎระเบียบ โปรแกรมของคุณไม่จำเป็นต้องใช้กรณีทดสอบขนาดใหญ่จนเสร็จสมบูรณ์หากมีข้อ จำกัด ด้านหน่วยความจำหรือเวลา เอาท์พุทสามารถเป็นสองค่าที่แตกต่างกันและสอดคล้องกันผ่านรูปแบบการออกที่ได้รับอนุญาต หากไม่ชัดเจนว่าอะไรคือสิ่งที่แสดงถึงความสมบูรณ์แบบ / ไม่สมบูรณ์โปรดระบุในคำตอบของคุณ

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