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

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

30
EvenSt-ring C ode - g ol! f
'Even string' คือสตริงใด ๆ ที่พาริตี้ของค่า ASCII ของตัวละครสลับกันอยู่เสมอ ตัวอย่างเช่นสายอักขระEvenSt-ring$!นั้นเป็นเลขคู่เนื่องจากค่า ASCII ของอักขระคือ: 69 118 101 110 83 116 45 114 105 110 103 36 33 และความเท่าเทียมกันของตัวเลขเหล่านี้คือ: Odd Even Odd Even Odd Even Odd Even Odd Even Odd Even Odd ซึ่งเป็นการสลับตลอดทาง อย่างไรก็ตามสายเช่นHello world!เป็นไม่สตริงแม้เนื่องจากค่า ASCII คือ: 72 101 108 108 111 32 87 111 …
36 code-golf  string 

20
คำนวณฟังก์ชัน Carmichael
คำอธิบายงาน ในทฤษฎีจำนวนที่ฟังก์ชั่นคาร์ไมเคิ λใช้เวลาเป็นจำนวนเต็มบวก nและผลตอบแทนน้อยจำนวนเต็มบวกkเพื่อให้kอำนาจ -th ของแต่ละจำนวนเต็มcoprimeเพื่อnเท่ากับ 1 โมดูโลn ป.ร. ให้ไว้เป็นจำนวนเต็มบวกn , การแก้ปัญหาของคุณจะต้องคำนวณλ (n) รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ โปรแกรมของคุณควรทำงานในเชิงทฤษฎีสำหรับอินพุตที่มีขนาดใหญ่โดยพลการ แต่ไม่จำเป็นต้องมีประสิทธิภาพ เคล็ดลับ ลำดับของทุกλ (n)เป็นOEIS A002322 การใช้งาน Python ที่ไม่ได้รับความนิยมจะมีลักษณะเป็น from fractions import gcd def carmichael(n): coprimes = [x for x in range(1, n) if gcd(x, n) == 1] k = 1 while not all(pow(x, k, n) …

23
การนับแพะเข้าสู่โหมดสลีป
บางคนนับแกะเพื่อนอน คนอื่นนับแพะ เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้จำนวนเต็มบวก N และส่งออกแพะ N-1 ที่ตื่นขึ้นมาแล้วตามด้วยแพะหลับหนึ่งตัวราวกับว่ามีคนกำลังนับ N แพะและในที่สุดพวกมันก็ผล็อยหลับไป ตื่นตัวเหมือนแพะ: \ ___/o> -(___)" '' '' แพะที่กำลังนอนหลับมีลักษณะเช่นนี้: \ ___/-> ,(___)" `` `` พวกมันถูกล่ามโซ่ไว้ด้วยกันโดยมีช่องว่างเดียวระหว่างเคราและหางแพะที่อยู่ติดกัน: \ \ \ ___/o> ___/o> ___/-> -(___)" -(___)" ,(___)" '' '' '' '' `` `` เอาต์พุตได้รับอนุญาตให้มีช่องว่างต่อท้ายและบรรทัดใหม่ต่อท้ายเดียว รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ ตัวอย่าง N = 1: \ ___/-> ,(___)" `` `` N = …

13
รูปภาพของเพื่อนเก่าในงานศิลปะ ASCII
ฉันหวังว่ารูปนี้จะคุ้นเคยกับคุณ มันเป็นหนึ่งในPacmanผีในเขารัฐ 'ความเสี่ยง'หลังจาก Pacman ได้กินยาพลังงาน ความท้าทาย นึกภาพผีของเราในกรอบเล็ก ๆ โดยใช้ศิลปะ ASCII ในระดับปกติ (เพิ่มเติมเกี่ยวกับเรื่องนี้ในภายหลัง) แต่ละตารางในภาพด้านบนควรตรงกับตัวละครตัวหนึ่งและกรอบควรมีการแยกตัวละครหนึ่งตัวขึ้นและลงและตัวแยกสองตัวไปทางซ้ายและขวาของผี : #################### # # # #### # # ######## # # ########## # # ############ # # ############ # # ### ## ### # # #### ## #### # # ############## # # ############## # # ## …

25
ขยายอาร์เรย์ C
ในภาษาการเขียนโปรแกรม C มีการกำหนดอาร์เรย์ดังนี้: int foo[] = {4, 8, 15, 16, 23, 42}; //Foo implicitly has a size of 6 ขนาดของอาร์เรย์ถูกอนุมานจากองค์ประกอบการเริ่มต้นซึ่งในกรณีนี้คือ 6 คุณยังสามารถเขียนอาร์เรย์ C ด้วยวิธีนี้ปรับขนาดอย่างชัดเจนแล้วกำหนดขนาดองค์ประกอบตามลำดับ int foo[6]; //Give the array an explicit size of 6 foo[0] = 4; foo[1] = 8; foo[2] = 15; foo[3] = 16; foo[4] = 23; foo[5] …
36 code-golf  string  parsing  c 

30
ทำเหรียญที่ยุติธรรม
คุณมีเหรียญที่ผลิตหรือ0 1แต่คุณสงสัยว่าเหรียญอาจมีอคติหมายความว่าความน่าจะเป็นของ0(หรือ1) ไม่จำเป็นต้อง 1/2 ที่รู้จักกันดีขั้นตอนที่จะ "เปลี่ยน" เหรียญลำเอียงเป็นเหรียญที่เป็นธรรม (คือเพื่อให้ได้ผลเท่ากัน) ที่เสนอโดยฟอนนอยมันน์เป็นดังนี้ สร้างบล็อก (ไม่ทับซ้อนกัน) ของสองเหรียญโยนจนกว่าทั้งสองค่าของบล็อกจะแตกต่างกัน และส่งออกค่าแรกในบล็อกนั้น (ค่าที่สองจะทำเช่นกัน แต่สำหรับวัตถุประสงค์ของการท้าทายนี้เราเลือกแรก) โดยสังหรณ์ใจ1อาจมีแนวโน้มมากกว่า0แต่01และ10จะมีโอกาสเท่ากัน ตัวอย่างเช่นอินพุต1110...จะยกเลิกบล็อกแรกจากนั้นสร้าง1บล็อกจากบล็อกที่สอง ... ขั้นตอนนี้มีราคาแพงเนื่องจากมีการใช้การทอยเหรียญหลายครั้งเพื่อสร้างผลลัพธ์เดียว ความท้าทาย ใช้ลำดับเลขศูนย์และจำนวนเต็มแทนการโยนเหรียญเดิมและสร้างผลลัพธ์จำนวนสูงสุดตามขั้นตอนข้างต้นจนกว่าจะหมดการป้อนข้อมูลทั้งหมด บล็อกสุดท้ายอาจไม่สมบูรณ์ถ้าจำนวนค่าอินพุตเป็นเลขคี่ ตัวอย่างเช่นลำดับการป้อนข้อมูล11111จะไม่สร้างผลลัพธ์ (บล็อกสองรายการแรกมีค่าเท่ากันและบล็อกที่สามไม่สมบูรณ์) กฎระเบียบ อินพุตสามารถมีจำนวนของค่าที่ไม่เป็นลบได้ไม่จำเป็นต้องเป็นค่าบวกหรือแม้แต่ รูปแบบอินพุตอาจเป็น: อาเรย์ของศูนย์และคน; สตริงของศูนย์และคนที่มีตัวคั่นตัวเลือก รูปแบบผลลัพธ์อาจเป็น: สตริงของศูนย์และคนที่มีหรือไม่มีตัวคั่น; อาเรย์ของศูนย์และคน; สตริงที่มีศูนย์หรือหนึ่งเดียวคั่นด้วยขึ้นบรรทัดใหม่; รูปแบบที่สมเหตุสมผลและเหมาะสมกับภาษาของคุณ รหัสกอล์ฟ ไบต์ที่น้อยที่สุดจะเป็นผู้ชนะ กรณีทดสอบ อินพุตและเอาต์พุตอยู่ที่นี่เพื่อถือว่าเป็นสตริง Input --> Output '1110' --> '1' '11000110' --> '01' '1100011' --> '0' …

30
Fibonacci-Orial
คำนิยาม ลำดับ Fibonacci F(n)บนจำนวนเต็มบวกถูกกำหนดดังนี้: 1. F(1) = 1 2. F(2) = 1 3. F(n) = F(n-1) + F(n-2), where n is an integer and n > 2 ฟีโบนักชี-Orial [F(1), F(2), ..., F(n)]ของจำนวนเต็มบวกเป็นผลิตภัณฑ์ของ งาน ได้รับจำนวนเต็มบวกnหา Fibonacci-Orial nของ รายละเอียด fibonacci-orial ของ100ต้องคำนวณภายใน 5 วินาทีบนคอมพิวเตอร์ที่เหมาะสม Testcases n Fibonacci-orial of n 1 1 2 1 …

27
สร้างเครื่องเมตรอนอม
บทนำ เมื่อหลายวันก่อนฉันต้องการเครื่องเมตรอนอมสำหรับบางอย่าง ฉันไม่มีที่ว่างดังนั้นฉันจึงดาวน์โหลดแอพจาก App Store แอพนี้มีขนาด 71 MB !!! 71 MB สำหรับการทำ tic-toc ... ?! ดังนั้นรหัส - กอล์ฟเข้ามาในใจของฉันและฉันสงสัยว่าพวกคุณบางคนสามารถปรับปรุงสิ่งนี้ได้ไหม ท้าทาย กอล์ฟรหัสบางอย่างที่ส่งเสียงบางอย่าง มันค่อนข้างไม่เกี่ยวข้องเลยว่าเสียงแบบไหน หากจำเป็นต้องสร้างไฟล์เสียงบางส่วน ... แต่เสียงบี๊บของระบบจะทำงานเช่นกัน ( นี่คือเสียงที่ฉันสร้างขึ้น ... ไม่มีอะไรพิเศษ ) อินพุต : จังหวะต่อนาทีของเอาต์พุตเครื่องเมตรอนอม ตัวอย่าง นี่เป็นเวอร์ชั่น Java ที่ไม่ใช่กอล์ฟ! มันเป็นเพียงการแสดงให้คุณเห็นงาน public class Metronome { public static void main(String[] args) throws InterruptedException { int …
36 code-golf  music  audio 

14
กระดาษชำระลึกลับ
วันนี้คุณต้องแก้ปัญหาในทางปฏิบัติมาก: คุณต้องวนกี่แผ่นในม้วนกระดาษชำระของคุณ? ลองดูข้อเท็จจริงบางอย่าง: เส้นผ่าศูนย์กลางของกระบอกกระดาษชำระเปลือยคือ 3.8 ซม กระดาษชำระหนึ่งแผ่นมีความยาว 10 ซม. ความหนาของกระดาษชำระหนึ่งแผ่นคือ 1 มม. ก่อนที่คุณจะพันรอบกระบอกสูบครั้งแรกมันจะมีเส้นรอบวงเป็นซม. 3.8 * pi ทุกครั้งที่คุณห่อแผ่นหนึ่งรอบ ๆ กระบอกสูบรัศมีของมันจะเพิ่มขึ้นเป็น 0.1 ดังนั้นเส้นรอบวงของมันจะเพิ่มขึ้นโดย. 2 * PI ใช้ข้อมูลนี้เพื่อดูว่าต้องใช้กี่ลูปเพื่อใส่กระดาษชำระnแผ่น (หมายเหตุ: ใช้การประมาณของ Pi ที่อย่างน้อยก็แม่นยำเท่ากับ 3.14159) กรณีทดสอบ : n = 1 : 10 / (3.8 * pi) = .838 ลูป n = 2 : (เราสามารถสร้างลูปได้กี่ครั้ง) 1 …

2
หอจะสมดุลหรือไม่
บทนำ ให้หอคอย ASCII และแรงลมเขียนโปรแกรมหรือฟังก์ชั่นเพื่อพิจารณาว่าหอคอยจะสมดุลหรือไม่หรือจะตกแบบไหน ตัวอย่างเช่นหอคอยแรกยอดคงเหลือ แต่ที่สองตกไปทางซ้าย # # # # ### ### ### ### # # # # ##### ##### ### ### ### # นี่เป็นความท้าทายครั้งแรกของฉัน ฉันหวังว่าคุณจะสนุกกับมัน. คำสั่ง หอประกอบด้วยบล็อกการเชื่อมต่อแทนด้วย#รูปแบบและวัตถุแข็ง แต่ละบล็อกเป็นสี่เหลี่ยมจัตุรัสที่มีความกว้างและความสูงของหนึ่งหน่วยและมีความหนาแน่นคงที่ มีสองแรงที่กระทำบนหอคอยน้ำหนักและแรงลม กองกำลังทั้งหมดทำหน้าที่ในแต่ละบล็อกและผ่านจุดศูนย์กลางของบล็อก เนื่องจากน้ำหนักของมันแต่ละบล็อกมีกำลังลดลงของหนึ่งหน่วยที่ทำหน้าที่เกี่ยวกับมัน นอกจากนี้แต่ละบล็อกที่ไม่มีบล็อกอื่นที่อยู่ติดกับด้านข้างของลมมีแรงที่ทำหน้าที่เป็นแนวนอนในทิศทางของลม ขนาดของแรงนี้ให้เป็นอินพุต ทิศทางของลมจะถูกระบุโดยธง ASCII บางแห่งในอินพุต จะมีแฟล็กในอินพุตหากและต่อเมื่อลมไม่เป็นศูนย์ ธงไม่ส่งผลกระทบต่อกองกำลังใด ๆ ธงจะมีลักษณะตรงตามที่ปรากฏด้านล่าง Flag design and corresponding wind direction: o~~ ~~o |~~ …

1
โปรแกรมหุ่นยนต์คัพซ้อน
ฉันแน่ใจว่าทุกคนเคยเห็นมาก่อนถ้วยนั้นสามารถวางซ้อนกันเป็นปิรามิด (และรูปทรงอื่น ๆ ): A A A A A A A A A A A A A A A A A ใช่Aเป็นตัวละครที่เพียงพอที่จะเป็นตัวแทนของถ้วย สามารถเพิ่มถ้วยใหม่ได้ทั้งบนพื้นดินทางด้านขวาของโครงสร้างหรือบนถ้วยที่อยู่ติดกันสองถ้วย นี่คือโครงสร้างข้างต้นอีกครั้ง แต่จุดที่มีอยู่ทั้งหมดสำหรับถ้วยใหม่ถูกทำเครื่องหมายด้วย_: _ A A A A A _ _ A A A A A A A A A A A A _ _ _ สมมติว่าเราต้องการสร้างหุ่นยนต์ที่สามารถประกอบกองถ้วยเหล่านี้ หุ่นยนต์จะเข้าใจคำแนะนำง่ายๆสองข้อในการจัดการโครงสร้างดังกล่าว …

1
ปัญหา“ เติมกริด”
ความท้าทายด้วยกฎง่ายๆ แต่อัลกอริธึมที่ไม่สำคัญ :-) งาน รับอินพุตในรูปแบบของจำนวนเต็มคั่นด้วยช่องว่าง: N A B S โดยที่ N คือความยาวด้านของเมทริกซ์จตุรัส 2D ที่เต็มไปด้วยตัวเลขเฉพาะ (จำนวนเต็ม) ระหว่าง A และ B สำหรับแต่ละแถวและคอลัมน์ในเมทริกซ์นี้ผลรวมจะเท่ากันเสมอ: S. (กล่าวอีกนัยหนึ่งเมทริกซ์คือจตุรัสกึ่งเวทมนต์) บันทึก: ตัวเลขทั้งหมดเป็นค่าบวก ข้อยกเว้นคือ A ซึ่งสามารถเป็น 0 ตัวอย่าง สำหรับ 3 1 10000 2015 ทางออกที่ถูกต้องจะเป็น สำหรับ 8 1 300 500 ทางออกที่ถูกต้องจะเป็น เอาท์พุต ผลลัพธ์ของคุณควรเป็นตาราง ASCII ตัวอย่างสำหรับตัวอย่างแรกด้านบน: 384 159 1472 1174 499 …
36 code-golf  math  grid 

22
ตัวย่อสามารถทำให้เซ็นเซอร์ข้อความของคุณแคบลงได้อย่างชัดเจน
ด้วยเหตุนี้คุณต้องมีวิธีที่ดีกว่าในการออกกำลังกายหากวลีเป็นตัวย่อของคำ คุณคิดว่ามันจะคุ้มค่าที่จะดูว่าวลีและคำที่เป็นปัญหานั้นเป็นตัวย่อแบบเรียกซ้ำ งานของคุณ: ป.ร. ให้คำและวลีที่แล้วคั่นด้วยเส้นเอาท์พุทถ้าวลีเป็นตัวย่อแล้วถ้ามันเป็นตัวย่อ recursive (วลีมีสิ่งที่มันหมายถึง) ข้อมูลที่ป้อนจะประกอบด้วยอักขระตามตัวอักษรและช่องว่าง โปรแกรมของคุณไม่ควรตรงตามตัวพิมพ์ใหญ่ - เล็ก ตัวอย่างอินพุต / เอาต์พุต: กรณีที่ 1: การป้อนข้อมูล: Acronyms Acronyms can really obviously narrow your message sensors เอาท์พุท: True True กรณีที่ 2: การป้อนข้อมูล: FAQ frequently asked questions เอาท์พุท: True False กรณีที่ 3: การป้อนข้อมูล: foo bar baz เอาท์พุท: False False กรณีที่ 4: …

14
ผลรวมอยู่เสมอ 15
เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้อาร์เรย์ของจำนวนเต็มที่ไม่เป็นลบเป็นอินพุตและเอาต์พุตชุดของเวกเตอร์ / อาร์เรย์ที่มีองค์ประกอบของอาร์เรย์อินพุตตามลำดับให้แยกเพื่อให้เวกเตอร์แต่ละอันรวมกันเป็น 15 ถ้าผลรวมของแรก อิลิเมนต์ N จะไม่ "โดน 15" ดังนั้นจำนวนที่ผ่าน 15 ต้องถูกตัดออกและส่วนที่เหลือจะเป็นองค์ประกอบแรกของเวกเตอร์ถัดไป สิ่งนี้จะดำเนินต่อไปจนกว่าจะถึงจุดสิ้นสุดของอาร์เรย์อินพุต หากผลรวมของเวกเตอร์สุดท้ายนั้นน้อยกว่า 15 จะต้องเพิ่มจำนวนท้ายเพื่อให้ผลรวมเพิ่มขึ้น ฉันคิดว่ากฎนั้นเข้าใจง่ายกว่าโดยดูจากตัวอย่าง: Input: 3 7 5 10 Output: 3 7 5 <- Sum is 15 10 5 <- 5 is added to make the sum 15 Input: 2 4 5 9 2 3 5 …

30
หมายเลขคาตาลัน
หมายเลขคาตาลัน ( OEIS ) มีลำดับของตัวเลขธรรมชาติมักจะปรากฏใน combinatorics หมายเลขคาตาลันที่ n คือจำนวนคำ Dyck (สตริงที่สมดุลของวงเล็บหรือวงเล็บเช่น[[][]]; กำหนดอย่างเป็นทางการเป็นสตริงโดยใช้อักขระสองตัวคือ a และ b เช่นว่าสตริงย่อยใด ๆ ที่เริ่มต้นจากจุดเริ่มต้นมีจำนวนอักขระมากกว่าหรือเท่ากับตัวเลข อักขระ b และสตริงทั้งหมดมีจำนวนอักขระ a และ b เท่ากัน) ที่มีความยาว 2n หมายเลขคาตาลันที่ n (สำหรับ n> = 0) ถูกกำหนดอย่างชัดเจนด้วยเช่น: เริ่มต้นจาก n = 0 หมายเลข 20 คาตาลันแรกคือ: 1, 1, 2, 5, 14, 42, 132, 429, 1430, …

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