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

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

7
อ่านวันที่ฟรีฟอร์มของฉัน
ป.ร. ให้ไว้ ณ วันที่เขียนในใด ๆ (ต้องจัดการทั้งหมดในโปรแกรมเดียวกัน) yyyy/mm/dd dateรูปแบบต่อไปแยกมันกลายเป็นที่ถูกต้อง 17th May 2012 March 14th, 2016 20 February 2014 September 14, 2017 Sunday, June 8, 2015 กฎระเบียบ บางครั้งวันที่จะไม่ถูกต้องเช่น วันที่ไม่ถูกต้องสำหรับเดือนหรือจำนวนเดือนในหนึ่งปีคุณต้องจัดการทั้งสองกรณี ไม่ว่าคุณจะเลือกข้อผิดพลาดหรือคืนค่าเท็จที่สอดคล้องกัน (อย่างไรก็ตามจะยึดกับรูปแบบเทมเพลตด้านบน) การเติมเต็มสำหรับวันและเดือนที่น้อยกว่า 10 ต้องใช้เพื่อสร้างเอาต์พุตสองหลัก ชื่อเดือนจะเป็นชื่อเต็มเสมอไม่ใช่ย่อมาจากตัวละครทั้งสาม คุณสามารถสมมติว่าปีจะอยู่ในช่วง 0000-9999 ไม่จำเป็นต้องจัดการกับจำนวนลบ คุณสามารถสร้างโปรแกรมหรือฟังก์ชั่นเต็มรูปแบบเพื่อให้เอาต์พุตสามารถอยู่ในรูปแบบใด ๆ พิมพ์ไปยังคอนโซลหรือส่งคืนจากฟังก์ชัน อินพุตจะเป็นสตริงเสมอเอาต์พุตจะต้องเป็นสตริงเสมอหากทำให้สั้นลงเพื่อใช้เป็นอาร์กิวเมนต์เดี่ยวในอาร์เรย์เช่น ["17th May 2012"]คุณสามารถทำได้และผลลัพธ์ก็เหมือนกัน["2012/05/17"] คุณสามารถสมมติว่าการสะกดคำในอินพุตจะถูกต้อง โบนัส:เพราะใครที่นี่ไม่ชอบความท้าทาย;) หากคุณสามารถจัดการเพื่ออนุญาตรูปแบบการป้อนข้อมูลของคุณThe Fourteenth of March, 2016หรือMarch …
10 code-golf  string  date 

12
เครื่องคิดเลขภาษีขายง่ายของรัฐ
ภาษีการขายในสหรัฐอเมริกานั้นซับซ้อน โดยทั่วไปจะมีภาษีการขายของรัฐ (มีรัฐจำนวนหนึ่งที่ไม่ได้เก็บภาษีการขายของรัฐ) แต่อาจมีภาษีการขายเคาน์ตีภาษีการขายเขตโรงเรียนภาษีการขายเทศบาล (เมือง) หรือ ภาษีการขายในเขตเมืองใหญ่ อาจมีภาษีการขายที่แตกต่างกันในส่วนต่าง ๆ ของเมือง อย่างไรก็ตามสำหรับความท้าทายนี้เราจะมุ่งเน้นเฉพาะภาษีการขายของรัฐ ด้วยจำนวนเงินดอลลาร์สหรัฐที่มากกว่าศูนย์ (ถูกต้องกับทศนิยมสองตำแหน่ง) และรัฐ (ชื่อเต็มหรือตัวย่อสองตัวอักษรตัวเลือกของคุณตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) และใช้แผนภูมิเปอร์เซ็นต์ภาษีการขายด้านล่าง เอาท์พุทภาษีการขายของรัฐที่สอดคล้องกันจะต้องมีการเก็บรวบรวมสำหรับการขายโดยเฉพาะที่ถูกต้องและถูกตัดทอนทศนิยมสองตำแหน่ง โปรดระบุวิธีที่รหัสของคุณจัดการการปัดเศษ แก้ไข: ตัวย่อสำหรับวอชิงตันถูกระบุว่าไม่ถูกต้องเป็น WS แทนที่จะเป็น WA คำตอบอาจใช้ตัวย่ออย่างใดอย่างหนึ่งเนื่องจากเป็นคนโง่ของฉัน State Abbr % Alabama AL 4.00% Alaska AK 0.00% Arizona AZ 5.60% Arkansas AR 6.50% California CA 6.00% Colorado CO 2.90% Connecticut CT 6.35% Delaware DE …

2
ลุงของคุณต้องการความช่วยเหลือในการเมา
Drunk Uncle (ขออภัย ME และ AUS สำหรับการล็อคภูมิภาค) เป็นตัวละครจาก Saturday Night Live เขามักจะสับสนคำพูดสำหรับคนอื่น ๆ ที่ฟังดูเหมือนพวกเขา สำหรับความท้าทายนี้คุณจะต้องแปลงคำพูดปกติให้เป็นดรัมสกิน ขั้นตอนวิธี การแปลไปเป็นแบบ Drunkspeak นั้นจำเป็นต้องสลับลำดับของคำในข้อความ การแลกเปลี่ยนจะขึ้นอยู่กับความคล้ายคลึงกันของคำสองคำที่มึนเมา ความคล้ายคลึงกันมึนเมาถูกกำหนดให้เป็นจำนวนตัวอักษรที่สองคำได้เกิดขึ้นที่ดัชนีเดียวกัน อย่างไรก็ตามคำสองคำที่เหมือนกันมีความคล้ายคลึงกันมึนเมา -1 ตัวอย่างเช่นtreeและfriendมีความคล้ายคลึงกันมึนเมา 2 เนื่องจากทั้งคู่มี 'r' ที่ดัชนี 1 และ 'e' ที่ดัชนี 3 สิ่งที่คุณต้องทำคือค้นหาสองคำในข้อความที่มีความคล้ายคลึงกันมึนเมาสูงสุดแล้วสลับคำเหล่านั้น เมื่อคุณสลับสองคำพวกเขาจะไม่ย้ายอีกต่อไป จากนั้นคุณดูคำศัพท์ที่ถอดเปลี่ยนได้ที่เหลืออยู่และสลับทั้งสองที่มีความคล้ายคลึงกันเมาสุราสูงสุด คุณทำเช่นนี้ต่อไปจนกว่าคุณจะไม่สามารถแลกเปลี่ยนได้อีกต่อไป จากนั้นคุณส่งออก (หรือส่งคืนสำหรับฟังก์ชัน) ข้อความที่อัปเดต ข้อมูลจำเพาะ เพื่อความเรียบง่ายอินพุตคือรายการคำที่ประกอบด้วยอักขระใน [A-Za-z] ทุกอินพุตมีอย่างน้อยหนึ่งคำ การจับคู่ตัวอักษรเป็นตัวพิมพ์เล็กและตัวพิมพ์ใหญ่: Aตรงกับa( หมายเหตุ:เนื่องจากกฎนี้Dogและdogเหมือนกันจึงมี DS เป็น -1) …

10
สร้างจำนวนแฟร์มาต์
กำหนดตัวเลข n ให้พิมพ์หมายเลขเฉพาะแฟร์มาต์หมายเลขที่หมายเลขแฟร์มาต์เป็นรูปแบบ 2 2 k +1 รหัสนี้ควรใช้งานได้จริงในทางทฤษฎีสำหรับ n ใด ๆ (เช่นอย่าฮาร์ดโค้ด) แม้ว่าจะไม่คาดว่าจะยุติการทำงานสำหรับ n> 4 (มันไม่ควรส่งคืน 4294967297 สำหรับ n = 5 เนื่องจาก 4294967297 ไม่ใช่หมายเลขเฉพาะ) โปรดทราบว่าในขณะที่จำนวนแฟร์มาต์ทั้งหมดอยู่ในรูปแบบ 2 2 n +1 แต่ตัวเลขทั้งหมดของรูปแบบ 2 2 n +1 นั้นเป็นจำนวนเฉพาะ เป้าหมายของความท้าทายนี้คือการคืนค่านายกที่ n กรณีทดสอบ 0 -> 3 1 -> 5 2 -> 17 3 -> 257 …
10 code-golf  primes 

15
สร้างจำแลง
หากต้องการ "เลื่อน" เหนือnสถานที่จำนวนหนึ่งให้ทำดังนี้: ลบnตัวเลขสุดท้าย เพิ่มnสำเนาของตัวเลขตัวแรกไปยังจุดเริ่มต้นของตัวเลข ตัวอย่างเช่นการเปลี่ยนหมายเลข31415สามสถานที่ที่จะออกตัวเลขสามหลักสุดท้ายที่จะได้รับ31แล้วเพิ่มสามสำเนาของหลักแรกไปที่ปลายให้333331 หากตัวเลขเป็นลบตัวเลขควรนำมาจากด้านซ้ายแทนและหลักแรกควรเป็น "กรอก" จากด้านขวา ยกตัวอย่างเช่นสตริง31415ตัวเหนือ -3 15555ตำแหน่งให้ ถ้าตัวเลขเป็น 0 ไม่ควรทำการเปลี่ยนแปลง หากการเปลี่ยนแปลงมีค่ามากกว่าความยาวของโปรแกรมตัวเลขที่ถูกกรอกไว้อาจเริ่มถูกลบออก ซึ่งหมายความว่าหากจำนวนที่กำหนดมีค่ามากกว่าความยาวของสตริงจะไม่มีการเปลี่ยนแปลงเพิ่มเติมหลังจากสตริงทั้งหมดกลายเป็นตัวเลขหลักเดียว ความท้าทาย ได้รับสองตัวเลขnและsผลตอบแทนnขยับมากกว่าsตำแหน่ง กรณีทดสอบ n, s -> result 7243, 1 -> 7724 452, -1 -> 522 12, 1 -> 11 153, 4 -> 111 นี่คือรหัสกอล์ฟดังนั้นการส่งที่ถูกต้องสั้นที่สุด (วัดเป็นไบต์) ชนะ
10 code-golf  math 

7
ไฟกระพริบเมื่อไหร่?
ลองนึกภาพคุณมีสองไฟ ไฟเหล่านี้กะพริบเปิดและปิดในอัตราที่กำหนด: Light 0: Delay 0ms and then blink every 1000ms Light 1: Delay 500ms and then blink every 1000ms ลองจำลองไฟเหล่านี้ในช่วง 2000ms แรก: 0ms: Light 0 on 500ms: Light 1 on 1000ms: Light 0 off 1500ms: Light 1 off 2000ms: Light 0 on ความท้าทาย รับรายการของคู่ที่สั่งซื้อซึ่งเป็นตัวแทนของเวลาสำหรับแสงเขียนโปรแกรมหรือฟังก์ชั่นเพื่อส่งออกลำดับสำหรับเมื่อพวกเขากระพริบ อินพุต อินพุตควรอยู่ในรูปแบบต่อไปนี้: TimeToSimulate Light0Delay,Light0Period Light1Delay,Light1Period …
10 code-golf  number 

12
ค้นหาศูนย์ที่สอง
ท้าทาย รับค่าจำนวนเต็มในรูปแบบเสริมของ 32- บิตสองส่งกลับดัชนีของเลขศูนย์ที่สำคัญน้อยที่สุดที่สองในการแทนแบบไบนารีซึ่งดัชนีของ0แทนบิตที่สำคัญน้อยที่สุดและดัชนีของ31แทนบิตที่สำคัญที่สุด หากไม่มีศูนย์ที่สองคุณอาจคืนค่า 0 จำนวนลบค่าเท็จหรือรายงานข้อผิดพลาดด้วยวิธีที่เหมาะสมในภาษาของคุณ คุณสามารถใช้การจัดทำดัชนี 1 แบบได้หากต้องการ แต่กรณีทดสอบด้านล่างจะใช้การจัดทำดัชนีแบบ 0 คุณอาจใช้จำนวนเต็มไม่ได้ลงนามถ้าคุณต้องการ [0, 2^32)ถ้าคุณทำแล้วคุณจะต้องจัดการกับจำนวนเต็มในช่วง [-2^31, 2^31)ถ้าคุณใช้ลงนามจำนวนเต็มคุณต้องจัดการกับจำนวนเต็มในช่วง กรณีทดสอบที่นี่จะใช้จำนวนเต็มที่ลงนาม แต่โปรดทราบว่า-x(ลงนาม) คือ2^32 - x(ไม่ได้ลงนาม) กรณีทดสอบ 0 (0b00) -> 1 1 (0b001) -> 2 10 (0b1010) -> 2 11 (0b01011) -> 4 12 (0b1100) -> 1 23 (0b010111) -> 5 -1 (0b11..11) -> …
10 code-golf  number 

13
สามเหลี่ยมของคลาร์ก
โอเคฉันเพิ่งจะเตะสามเหลี่ยมได้ไม่นาน Clark's Triangle เป็นรูปสามเหลี่ยมที่รายการทางซ้ายสุดของแต่ละแถวคือ 1 และรายการทางขวาสุดนั้นประกอบด้วยจำนวนทวีคูณ 6 ซึ่งเพิ่มขึ้นตามจำนวนแถวที่เพิ่มขึ้น นี่คือการสร้างภาพ 1 6 1 . 12 1 . . 18 1 . . . 24 1 . . . . 30 1 . . . . . 36 เช่นเดียวกับสามเหลี่ยมของ Pascal รายการอื่น ๆ ทั้งหมดคือผลรวมของตัวเลขทางด้านขวาบนและซ้ายบน นี่คือสองสามแถวแรกที่ถูกเติมเต็ม 1 6 1 7 12 1 8 19 …
10 code-golf  math  number 

14
การแปลงเวลา 12 ชั่วโมง
ท้าทาย แปลงและพิมพ์เวลาในรูปแบบ 12 ชั่วโมง HH:MM AM/PM ตัวอย่าง การป้อนข้อมูล: 'Fri Jun 30 2017 21:14:20 GMT-0700 (PDT)' 'Fri Jun 30 2017 00:10:23 GMT-0700 (PDT)' 'Fri Jun 30 2017 12:10:23 GMT-0700 (PDT)' 'Sat Jun 31 2018 8:06:20 GMT-0700 (PDT)' 'Fri Jul 01 2017 01:14:20 GMT-0700 (PDT)' 'Sat Apr 10 2020 09:06:20 GMT-0700 (PDT)' …
10 code-golf 

2
ปลูกต้นไม้ในสนามกอล์ฟ!
ความท้าทายนี้ได้รับแรงบันดาลใจจากแอพนี้ นี้เป็นรุ่นที่ง่ายขึ้นของความท้าทายนี้ ความท้าทายนี้เป็นรหัสกอล์ฟในขณะที่คนอื่น ๆ เป็นเร็วที่สุดรหัส คุณจะได้รับตารางอินพุตสี่เหลี่ยมจตุรัสขนาด6 x 6ซึ่งแบ่งออกเป็น6ส่วนโดยที่เซลล์ของแต่ละพื้นที่มีตัวระบุที่ไม่ซ้ำกัน (ฉันจะใช้ตัวอักษรตัวพิมพ์เล็กจากafในข้อความที่นี่ แต่คุณอาจเลือกสิ่งที่คุณต้องการเช่นจำนวนเต็ม1-6 ) อินพุตอาจมีลักษณะดังนี้ (รูปแบบอินพุตเสริม): aabbbb aabbbb aaccbb acccdb ecccdb eeefff หรือง่ายต่อการมองเห็น: ท้าทาย: คุณต้องวางต้นไม้6ต้นในอุทยานแห่งนี้ตามกฎต่อไปนี้: จะต้องมี1ต้นต่อคอลัมน์และ1ต้นต่อแถว พื้นที่ทั้งหมดจะต้องมีต้นไม้1ต้น ไม่มีต้นไม้ใดที่สามารถติดกับต้นไม้ต้นอื่นได้ทั้งแนวตั้งแนวนอนหรือแนวทแยงมุม วิธีแก้ปัญหาสำหรับเค้าโครงด้านบนคือ: หมายเหตุ: มีเพียงทางออกเดียวสำหรับปริศนาแต่ละตัว กฎเพิ่มเติม: รูปแบบอินพุตและเอาต์พุตเป็นทางเลือก ตัวอย่างเช่นผลลัพธ์อาจเป็นรายการของดัชนีกริดที่มี1/0 เพื่อระบุว่ามีต้นไม้อยู่ในตำแหน่งนั้นหรือเป็นรุ่นที่แก้ไขของอินพุตซึ่งมีการระบุต้นไม้ เวลาดำเนินการจะต้องกำหนดไว้ล่วงหน้า โปรแกรมจะต้องเสร็จสิ้นภายใน 1 นาทีสำหรับแล็ปท็อปที่ทันสมัย บราวนี่ชี้ว่าถ้าคุณไม่ดุร้าย! กรณีทดสอบ: aabbbb aabbbb aaccbb acccdb ecccdb eeefff --- aAbbbb aabbbB aaCcbb acccDb Ecccdb …
10 code-golf  grid  game 

11
Tri-interquine - สามโปรแกรมที่แสดงผลเป็นวง
ที่เกี่ยวข้อง: Interquine โปรแกรม A เอาท์พุทโค้ดของโปรแกรม B เมื่อทำงานและ B เอาต์พุตแหล่งที่มาของ C และ C ที่เอาต์พุตของแหล่ง A เวลานี้คุณไม่สามารถแลกเปลี่ยนตัวละครสองตัวและแลกเปลี่ยนอีกครั้ง :) ที่ต้องการ: เพียงหนึ่งภาษาในทุกโปรแกรม มีข้อ จำกัด ช่องโหว่มาตรฐาน โปรแกรมทั้งหมดนั้นแตกต่างกัน โปรแกรมหนึ่งที่ออกเองไม่มีสิทธิ์ได้รับ เอาต์พุตสองตัวที่กันและกันไม่มีคุณสมบัติเช่นกัน โปรแกรมทั้งหมดไม่ว่างเปล่าหรือมีความยาวอย่างน้อย 1 ไบต์ ไม่มีอะไรให้อ่านเพราะ stdin เชื่อมต่อกับ/dev/null(คุณสามารถละเมิดกฎนี้ได้ถ้าทำได้ ) เอาต์พุตไปที่ stdout อย่าใช้ฟังก์ชันที่สร้างผลลัพธ์แบบสุ่ม เพิ่มเติม: ให้คำอธิบายถ้าเป็นไปได้ คะแนนคือความยาวของโปรแกรมที่สั้นที่สุด (คุณสามารถสร้างโปรแกรมที่มีความยาวได้จากโปรแกรมสั้น ๆ ) กรุณาเขียนความยาวของโปรแกรมทั้งหมดและเน้นจำนวนที่น้อยที่สุด การขึ้นบรรทัดใหม่จะไม่นับรวม ต่ำสุดชนะคะแนน
10 code-golf  quine 

2
ใส่ใหม่ Java / C / C ++ / ฯลฯ รหัส
เขียนโปรแกรมที่เพิ่มหรือลบช่องว่างเพื่อจัดรูปแบบโค้ดได้อย่างดี กฎสำหรับสิ่งที่รหัสควรมีลักษณะเมื่อคุณทำเสร็จ ไม่มีเส้นควรมีมากกว่าหนึ่งและ{} A {ควรเป็นสิ่งสุดท้ายในบรรทัดเสมอ A }ควรเป็นสิ่งเดียวในบรรทัดเสมอ (นอกเหนือจากช่องว่างที่มาก่อนหน้า) จำนวนของช่องว่างด้านหน้าของแต่ละบรรทัดควรเป็นจำนวนคงที่ของจำนวนการซ้อนปัจจุบัน (คุณสามารถใช้การเยื้องในจำนวนที่ต้องการตราบใดที่มันไม่เปลี่ยนแปลง) ไม่ควรใส่หรือลบช่องว่างที่ไม่มีส่วนในการทำให้กฎเหล่านี้เป็นที่พอใจ นับรังบรรทัดแรกเป็น 0 นับการทำรังของสายอื่น ๆ คือการนับการทำรังของบรรทัดก่อนหน้าบวกหนึ่งถ้าบรรทัดก่อนหน้ามีลบหนึ่งถ้าบรรทัดปัจจุบันมี{} {และ}ภายในสตริงตัวอักษรและความคิดเห็นไม่นับในกฎข้างต้น สตริงตัวอักษรเป็นข้อความที่อยู่ในเครื่องหมายคำพูดเดี่ยวหรือคู่โดยที่เครื่องหมายคำพูดเดี่ยวหรือคู่ที่มีจำนวนแบ็กสแลชแปลก ๆ ก่อนที่พวกเขาจะไม่ถูกตีความว่าเป็นจุดสิ้นสุดของตัวอักษรสตริง ความคิดเห็นคือข้อความที่อยู่ใน/*และ*/หรือข้อความที่ไปจาก//ถึงจุดสิ้นสุดของบรรทัด ในเครื่องหมายเริ่มต้นความคิดเห็นหลายบรรทัดบรรทัดเดียวเท่านั้นที่นับได้ ความคิดเห็นจะไม่ถูกแยกวิเคราะห์ภายในตัวอักษรสตริง ตัวอย่าง main() {printf("Hello!"); // I don't care about the world... } becomes: main() { printf("Hello!"); // I don't care about the world... } int main(){ puts("a"); puts("b"); …

6
ลำดับการขโมย: ตำรวจ
นี่คือตำรวจและโจร นี่คือด้ายตำรวจ สำหรับหัวข้อโจรไปที่นี่ ฉันสังเกตเห็นความท้าทาย OEIS (สารานุกรมออนไลน์ของลำดับจำนวนเต็ม) ตั้งแต่ฉันเข้าร่วมไซต์ ดูเหมือนว่ายุติธรรมเท่านั้นที่เรามีความท้าทายตำรวจและโจรที่กำหนดว่าใครคือผู้ที่มีความสำคัญในลำดับเลขจำนวนเต็มออนไลน์ทุกครั้ง แก้ไข: เพื่อป้องกันคำตอบเล็กน้อยตำรวจสูญเสีย 1/2 คะแนนสำหรับการส่งแต่ละครั้งที่มีการถอดรหัส นอกจากนี้สำหรับจุดประสงค์ของการท้าทายนี้จะไม่อนุญาตให้ใช้ลำดับที่คงที่ ใช้กับโซลูชันที่โพสต์หลังจากแก้ไขนี้เท่านั้น ตำรวจ เขียนโปรแกรมหรือฟังก์ชั่นที่ได้รับไม่มีการป้อนข้อมูล deterministically พิมพ์ลำดับใด ๆ จากOEIS โดยการลบชุดย่อยของอักขระโปรแกรมของคุณจะต้องสามารถพิมพ์ลำดับ OEIS ที่แตกต่างกันเมื่อทำงานในภาษาเดียวกัน ลำดับใหม่จะต้องใหม่ทั้งหมดไม่ใช่แค่ชื่อแรกด้วยชื่ออื่นหรือออฟเซ็ตต่างกัน ทั้งลำดับอาจเป็นเพียงค่าคงที่ซ้ำแล้วซ้ำอีก คุณต้องจัดเตรียมฟังก์ชันแรกพร้อมกับชื่อของลำดับ OEIS เพื่อให้สามารถตรวจสอบความถูกต้องได้ ไม่เป็นไรถ้าพฤติกรรมมีปัญหากับค่า MAX_INT ในภาษาของคุณหรือ 256 สิ่งใดที่ใหญ่กว่า โจร ลบตัวละครออกจากการส่งของ Cop บางตัวเพื่อให้โปรแกรมใหม่ของคุณออกลำดับอื่น ๆ จาก OEIS จัดเตรียมฟังก์ชันใหม่พร้อมกับชื่อของลำดับ OEIS ใหม่ นี่คือยูทิลิตี้เพื่อให้แน่ใจว่าการส่งของคุณถูกต้อง (เช่นลบตัวอักษรโดยไม่มีธุรกิจที่ตลก ๆ อย่าตรวจสอบลำดับตัวเอง) คุณควรลบตัวละครหลาย ๆ ตัวออกจากการส่งของ …

2
คำนวณ OEIS A005434
ภารกิจคือการคำนวณOEIS A005434โดยเร็วที่สุด พิจารณาสตริงไบนารีของความยาวS nจัดทำดัชนีจาก1เราสามารถตรวจสอบว่าS[1..i+1]ตรงกับS[n-i..n]ตรงทั้งหมดiในการสั่งซื้อจากไป0 n-1ตัวอย่างเช่น, S = 01010 จะช่วยให้ [Y, N, Y, N, Y]. เพราะนี่คือ0การแข่งขัน0, 01ไม่ตรง10, 010การแข่งขัน010, 0101ไม่ตรงกับ1010 และในที่สุดก็01010ตรงกับตัวเอง กำหนดf(n)ให้เป็นหมายเลขของอาร์เรย์ที่แตกต่างกันของYและNs หนึ่งได้รับเมื่อ iterating เหนือทุก2^nบิตสตริงที่แตกต่างกันไปได้ของความยาวSn สังเกตจะสังเกตเห็นคำถามนี้เป็นตัวแปรที่เรียบง่ายของคำถามที่ผ่านมาของฉันอีก อย่างไรก็ตามฉันคาดหวังว่าเทคนิคที่ฉลาดสามารถทำให้สิ่งนี้เร็วและง่ายขึ้น งาน สำหรับการเพิ่มการnเริ่มต้นที่รหัสของคุณควรเอาท์พุท1n, f(n) ตัวอย่างคำตอบ สำหรับn = 1..24คำตอบที่ถูกต้องคือ: 1, 2, 3, 4, 6, 8, 10, 13, 17, 21, 27, 30, 37, 47, 57, 62, 75, 87, …

1
หมุนเพื่อดูทุกด้าน!
สมมติว่าคุณมีคนตาย 20 ด้าน คุณเริ่มหมุนแม่พิมพ์นั้นและต้องหมุนสองสามครั้งก่อนที่คุณจะหมุนค่าทั้งหมด 20 คุณสงสัยว่าฉันต้องม้วนจำนวนเท่าไรก่อนที่ฉันจะได้รับโอกาส 50% ในการเห็นค่าทั้งหมด 20 ตัว และnฉันต้องม้วนตายกี่ม้วนก่อนจะกลิ้งทุกnด้าน? หลังจากการวิจัยบางอย่างคุณพบว่ามีสูตรสำหรับการคำนวณโอกาสในการหมุนnค่าทั้งหมดหลังจากrม้วน P(r, n) = n! * S(r, n) / n**r โดยที่S(a, b)หมายถึงตัวเลข Stirling ของชนิดที่สองจำนวนวิธีที่จะแบ่งพาร์ติชันชุดของวัตถุ n (แต่ละม้วน) เป็น k ย่อยที่ไม่ว่างเปล่า (แต่ละด้าน) คุณยังพบลำดับ OEISที่เราจะเรียกR(n)ซึ่งสอดคล้องกับลำดับที่เล็กที่สุดrที่P(r, n)อย่างน้อย 50% ความท้าทายคือการคำนวณnคำที่ลำดับของลำดับนี้โดยเร็วที่สุด ความท้าทาย ได้รับnหาที่เล็กที่สุด rที่P(r, n)มากกว่าหรือเท่ากับ0.5หรือ 50% รหัสของคุณในทางทฤษฎีควรจะจัดการกับจำนวนเต็มไม่เป็นลบnเป็น input 1 <= n <= 1000000แต่เราจะได้รับการทดสอบรหัสของคุณในช่วงของ สำหรับการให้คะแนนเราจะใช้เวลาทั้งหมดที่จำเป็นในการทำงานR(n)เกี่ยวกับปัจจัยการผลิตผ่าน110000 เราจะตรวจสอบว่าการแก้ปัญหาของคุณถูกต้องโดยใช้รุ่นของเราR(n)ในการส่งออกของคุณเพื่อดูว่าP(your_output, …

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