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

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

30
คำนวณปัจจัยสำคัญ
เรามีความท้าทายในการแยกตัวประกอบที่สำคัญเมื่อไม่นานมานี้ แต่ความท้าทายนั้นเกือบหกปีและแทบจะไม่เป็นไปตามข้อกำหนดปัจจุบันของเราดังนั้นฉันเชื่อว่าถึงเวลาแล้วสำหรับการสร้างใหม่ ท้าทาย เขียนโปรแกรมหรือฟังก์ชั่นที่รับอินพุตเป็นจำนวนเต็มมากกว่า 1 และส่งออกหรือส่งกลับรายการปัจจัยหลัก กฎระเบียบ อินพุตและเอาต์พุตอาจกำหนดโดยวิธีมาตรฐานและในรูปแบบมาตรฐานใด ๆ ปัจจัยที่ซ้ำกันต้องรวมอยู่ในผลลัพธ์ ผลลัพธ์อาจอยู่ในลำดับใดก็ได้ อินพุตจะต้องไม่น้อยกว่า 2 หรือมากกว่า 2 31 - 1 อนุญาตให้มีบิวด์อิน แต่อนุญาตให้รวมโซลูชันที่ไม่ใช่บิลด์ไว้ กรณีทดสอบ 2 -> 2 3 -> 3 4 -> 2, 2 6 -> 2, 3 8 -> 2, 2, 2 12 -> 2, 2, 3 255 -> 3, 5, 17 …

2
พายุเฮอริเคนแมทธิวและสายฟ้า
ท้าทาย แรงบันดาลใจจากความท้าทายนี้และHurricane Matthew ที่น่ารังเกียจเราจะสร้างสายฟ้าแบบไดนามิก n = 15: \ /\ / \ / / /\ /\ / \ \ / / /\ /\ \ / / \ /\ \ /\ / \ \ /\ / \ \ /\ อินพุต Positive Integer nกำหนดความลึกของรอบฟ้าผ่า กฎและข้อ จำกัด /และ\ควรใช้ ความน่าจะเป็นที่ชี้นำทิศทางของสายฟ้ามีดังนี้: 25% แบ่งออกเป็น 2 เส้นทาง เส้นทาง …

2
ไฮเปอร์เกี่ยวกับควาย
แรงบันดาลใจจากHyperprogramming: N + N, N × N, N ^ N ทั้งหมดในที่เดียว ขอบคุณ @MartinEnder และ @trichoplax สำหรับความช่วยเหลือในกล่องทราย คำนิยาม Hyperquines กำหนดhyperquineของnคำสั่งเป็นโปรแกรมหรือฟังก์ชันPเหมือนเต็มquine ที่ตรงกับกฎทั้งหมดที่ใช้กับquines ที่เหมาะสมและนอกจากนี้มีโครงสร้างดังต่อไปนี้ Pคือการรวมกันของกลุ่มอักขระ‡ที่ประกอบด้วยสำเนาnตัวอักษรเดียวกัน เมื่อPจะถูกดำเนินการในการส่งออกคือการเรียงต่อกันในกลุ่มเดียวกันเติมโดยสำเนาอีกหนึ่งของตัวละคร ตัวอย่าง ในการเขียนโปรแกรมภาษาสมมุติที่รหัสที่มาaabbccสร้างการส่งออกaaabbbcccโปรแกรมนี้ถือว่า hyperquine สั่งซื้อ2 คำจำกัดความไม่ต้องการให้อักขระของกลุ่มต่างกันจะแตกต่างกัน ถ้าซอร์สโค้ดaabbccสร้างเอาท์พุทaaaabbbbcccc, โปรแกรมเป็น hyperquine ของการสั่งซื้อ1 ; ซอร์สโค้ดประกอบด้วยกลุ่มอักขระเดี่ยวหกกลุ่มเอาต์พุตของอักขระหกคู่ ในGS2โปรแกรมที่ว่างเปล่าจะพิมพ์ออก\nมาและโปรแกรมจะ\nพิมพ์\n\nออกมา แต่ไม่\nว่ามิได้\n\nมี hyperquines เนื่องจากพวกเขาพวกเขาไม่ตอบสนองคุณสมบัติทั้งหมดของquines ที่เหมาะสม ; ไม่มีส่วนใดของรหัสที่มาเข้ารหัสส่วนต่าง ๆของผลลัพธ์ โซ่ไฮเปอร์วิน นิยามhyperquine chain of length nเป็นลำดับที่แน่นอนของn full programs …

29
จำนวนการเชื่อมโยงกริยา
ปัญหา: งานของคุณคือการตัดสินใจว่าในลำดับของตัวเลขทุกหมายเลขมีอย่างน้อยหนึ่งในตัวเลขของตัวเลขที่นำหน้ามัน ตัวอย่างเช่นสิ่งต่อไปนี้ควรกลับมาจริง [1, 12, 203, 0, 30] ^ ^ Contains a 0 ^ Contains a 2 ^ Contains a 1 ต่อไปนี้ควรกลับสู่ความผิดพลาด: [1, 32, 23, 34] ^ Doesn't contain a 1, therefore false การส่งของคุณอาจเป็นฟังก์ชั่นหรือโปรแกรมเต็มรูปแบบ การป้อนข้อมูล: อินพุตสามารถเรียงลำดับได้ตามสมควร อาร์เรย์ของตัวเลขอาร์เรย์ของสตริงสตริงที่คั่นด้วยตัวเลข ฯลฯ อย่างไรก็ตามการสั่งซื้อมีความสำคัญดังนั้นโครงสร้างใดก็ตามที่คุณเลือกที่จะยอมรับเนื่องจากการป้อนข้อมูลจะต้องมีลำดับที่ชัดเจน สามารถป้อนข้อมูลผ่าน stdin หรือเป็นอาร์กิวเมนต์ คุณสามารถสันนิษฐานได้ว่า: ตัวเลขทั้งหมดจะเป็นจำนวนเต็มไม่เป็นลบ ข้อมูลที่ป้อนจะมีตัวเลขอย่างน้อย 2 ตัวเสมอ หมายเลขอินพุตจะไม่ขึ้นต้นด้วย 0 เอาท์พุท: …
27 code-golf 

30
ตัวแปลงเวลา 12 ชั่วโมงถึง 24 ชั่วโมง
น่าแปลกใจที่งานง่าย ๆ นี้ดูเหมือนจะยังไม่มีอยู่ดังนั้น ... งานของคุณคือการเขียนโปรแกรมที่ใช้เวลาในการป้อนข้อมูลเป็นเวลา 12 ชั่วโมงและแปลงเป็น "เวลาทหาร" หรือรูปแบบเวลา 24 ชั่วโมง ข้อมูลที่ป้อนจะอยู่ในรูปแบบ: HH:MM am/pm แม้ว่าจะอนุญาตให้มีการเปลี่ยนแปลงเล็กน้อย: พื้นที่ที่แยก am / pm จากเวลาที่เหลือเป็นทางเลือก ส่วนสุดท้ายอาจเป็น "am" / "pm" หรือ "a" / "p" การใช้อักษรตัวพิมพ์ใหญ่ใด ๆ ก็ใช้ได้ เอาท์พุทจะเป็นเวลาที่ป้อนเข้าจะถูกแปลงเป็นรูปแบบ 24 ชั่วโมง มันอาจเป็นตัวเลขหรือสตริงก็ได้ สำหรับทั้งอินพุตและเอาต์พุต: 0s ในตอนแรกเป็นตัวเลือก 0s ใน 3 สถานที่สุดท้ายมีผลบังคับใช้ ตัวคั่นคั่นชั่วโมงและนาทีอาจเป็น ":", "" (ช่องว่าง) หรือไม่มีอะไร หมายเหตุอื่น ๆ : …

12
ผลรวมหรือความแตกต่างของสองพลังของทั้งสอง
ความท้าทายของคุณหากคุณเลือกที่จะรับมันคือได้รับจำนวนเต็มK >= 1หาจำนวนที่ไม่เป็นลบAและB เช่นนั้นอย่างน้อยหนึ่งในสองเงื่อนไขต่อไปนี้: K = 2^A + 2^B K = 2^A - 2^B หากไม่มีอยู่จริงAและBโปรแกรมของคุณอาจทำงานในลักษณะใด ๆ (เพื่อชี้แจงAและBสามารถเท่ากับ) กรณีทดสอบ มักจะมีหลายวิธีในการแก้ปัญหา แต่มีเพียงไม่กี่วิธี: K => A, B 1 => 1, 0 15 => 4, 0 ; 16 - 1 = 15 16 => 5, 4 ; 32 - 16 = 16; also 3, …
27 code-golf  math 

11
ตัวเลขของความบริสุทธิ์
วันนี้เราจะดูลำดับaที่เกี่ยวข้องกับฟังก์ชัน Collatz f : เราเรียกลำดับของรูปแบบZ, f (z), f (f (z)) ...ลำดับ Collatz จำนวนครั้งแรกในของเราลำดับ(ที่ 1)เป็น0 ภายใต้การใช้fซ้ำ ๆมันจะตกอยู่ในวัฏจักร0 → 0 → ... จำนวนที่น้อยที่สุดที่เรายังไม่ได้เห็นคือ 1, การทำ(ที่ 2) = 1 ภายใต้การใช้fซ้ำ ๆมันจะตกอยู่ในวัฏจักร1 → 4 → 2 → 1 →… ตอนนี้เราได้เห็นหมายเลข2ในวัฏจักรข้างต้นแล้วดังนั้นจำนวนที่น้อยที่สุดถัดไปคือ(3) = 3 , ตกลงไปในรอบ3 → 10 → 5 → 16 → 8 → 4 …

19
ชั้นหนังสือ ASCII
คุณรู้ว่าชั้นวางซ้อนกันได้ที่โดยทั่วไปเป็นเพียงกล่องไม้ที่สามารถซ้อนกัน? เราจะจำลองการสร้างชั้นหนังสือบางส่วนด้วยศิลปะ ASCII หนังสือของเรามีทุกสิ่งอำนวยความสะดวกในเครื่องแบบขนาดและรูปลักษณ์ทั้งหมดเช่นต่อไปนี้: |X| |X| |X| ชั้นวางหนังสือกล่องแต่ละเสมอสามตัวสูงภายใน (พอที่จะใส่หนังสือยืนตรง) ประกอบด้วย|ตัวอักษรด้านซ้ายและขวา-ตัวอักษรด้านบนและด้านล่างและกว้างพอที่จะพอดีกับXหนังสือ (ที่Xเป็นอินพุท จำนวนเต็ม). ตัวอย่างเช่นนี่คือชั้นวางหนังสือที่มีขนาด3: |---------| | | | | | | |---------| เพราะคุณสามารถใส่3หนังสือลงไปได้อย่างนั้น |---------| ||X||X||X|| ||X||X||X|| ||X||X||X|| |---------| ค่าอินพุทจะเป็นจำนวนเต็มบวกสองตัวXและYที่Xความกว้างของชั้นวางที่เรามี (วัดในหนังสือ) และYจำนวนหนังสือที่เราต้องกองซ้อน หากเรามีหนังสือมากกว่าที่วางในชั้นเดียวเราจำเป็นต้องเพิ่มชั้นวางเพิ่มเติมไปด้านบน ตัวอย่างเช่นนี่คืออินพุต4 wide / 6 books: |------------| ||X||X| | ||X||X| | ||X||X| | |------------| |------------| ||X||X||X||X|| ||X||X||X||X|| ||X||X||X||X|| |------------| หากY …

29
เรียงลำดับสตริงตามตัวอักษร
งาน เป้าหมายของคุณถ้าคุณเลือกที่จะยอมรับมันก็คือการเขียนโปรแกรมที่รับสายอักขระ (หรืออาเรย์ของอักขระ) ออกผลลัพธ์ที่เป็นไปได้ของการเรียงลำดับตัวอักษรในสตริงนั้น ฉันจู้จี้จุกจิกกับผลลัพธ์ของฉันดังนั้นจึงควรเรียงลำดับตัวอักษรโดยไม่มีการซ้ำซ้อน ตัวอย่าง: การป้อนข้อมูล: buzz เอาท์พุท: buzz bzuz bzzu ubzz uzbz uzzb zbuz zbzu zubz zuzb zzbu zzub กฎระเบียบ นี่คือโค้ดกอล์ฟเพื่อให้โค้ดที่สั้นที่สุดชนะ ช่องว่างต่อท้ายในแต่ละ / บรรทัดใด ๆ ก็โอเค บรรทัดใหม่เดียวหลังจากบรรทัดสุดท้ายได้รับอนุญาต (แต่ไม่เกิน)

30
การย่อยสายย่อย
บทนำ สำหรับตัวอย่างนี้เรามาดูสตริงHello, World!และอาร์เรย์[3, 2, 3]กัน ในการค้นหา substring chain เราจะทำตามขั้นตอนต่อไปนี้: หมายเลขแรกของอาร์เรย์คือ3เพื่อให้เราได้รับอักขระย่อยซึ่งเป็น[0 - 3] Helหลังจากนั้นเราจะลบ3อักขระตัวแรกออกจากสตริงเริ่มต้นซึ่งปล่อยเราlo, World!ไว้ ตัวเลขที่สองของอาร์เรย์คือ2เพื่อให้เราได้รับอักขระย่อยจากสตริงใหม่ของเราซึ่งจะช่วยให้เรา[0 - 2] สตริงที่เหลือจะกลายเป็นlo, World! จำนวนสุดท้ายคือซึ่งจะช่วยให้เรา3 ห่วงโซ่ substringคือทั้งหมดของสตริงรวมกันซึ่งจะช่วยให้เรา:, W ['Hel', 'lo', ', W'] สำหรับตัวอย่างเพิ่มเติม: [3, 2, 3], 'Hello, World!' 3 -> Hel 2 -> lo 3 -> , W งาน ได้รับไม่ว่างเปล่าสตริงและไม่ว่างเปล่าอาร์เรย์เท่านั้นประกอบด้วยจำนวนเต็มบวก ( ) เอาท์พุทโซ่ย่อย คุณอาจคิดว่าผลรวมของจำนวนเต็มทั้งหมดในอาร์เรย์ไม่เกินความยาวของสตริง> 0 …
27 code-golf  string 

16
เอาท์พุทเต็นท์คว่ำลง
รับจำนวนเต็มส่งออกเต็นท์คว่ำ อินพุตกำหนดทั้งขนาดของเต็นท์ (ค่าสัมบูรณ์) และระบุว่าทางเข้าอยู่ทางด้านซ้าย (จำนวนลบ) หรือด้านขวา (ตัวเลขบวก) If input = -1: ____ \/_/ If input = -2: ________ \ / / \/___/ If input = -3: ____________ \ / / \ / / \/_____/ If input = 1: ____ \_\/ If input = 2: ________ \ \ / \___\/ If …

21
สายพันธุ์ดั้งเดิม
สตริง Primenary ( binary-prime ) คือสิ่งที่เมื่อเขียนเป็นกริดไบนารีทุกแถวและคอลัมน์จะมีจำนวนรวมทั้งหมด นั่นเป็นคำอธิบายที่คลุมเครือดังนั้นเรามาทำลายตัวอย่างการทำงาน ... สำหรับตัวอย่างนี้เราจะใช้สตริงbunny: ก่อนอื่นให้หาจุดโค้ด ASCII ของตัวละครแต่ละตัวและการแทนค่าไบนารี่: Char | ASCII | Binary b 98 1100010 u 117 1110101 n 110 1101110 n 110 1101110 y 121 1111001 ใช้ค่าไบนารีเหล่านี้จากบนลงล่างและจัดเรียงเป็นตาราง (เพิ่มศูนย์นำหน้าถ้าจำเป็น): 1 1 0 0 0 1 0 1 1 1 0 1 0 1 1 1 …

26
สร้างสตริงอ้างอิงตัวเอง (ค่อนข้าง)
คุณต้องการให้สตริงที่ ( 1 จัดทำดัชนี ) ตัวละครที่ดัชนีคือn nเมื่อnน้อยกว่า 10 "123456789"นี้เป็นเรื่องง่าย: nตัวอย่างเช่นเมื่อเป็น 12 มันจะเป็นไปไม่ได้เนื่องจากตัวเลขที่มากกว่า 9 (ในฐาน 10) ใช้เวลามากกว่าหนึ่งตัว "020406081012"เราสามารถประนีประนอมโดยการหารสตริงสตริงเข้าไปในสองตัวละครนี้: ตอนนี้ดัชนีของการสิ้นสุดของแต่ละย่อย คือnn สิ่งนี้สามารถวางนัยสำหรับdหมายเลข -digit ใด ๆ นี่คือคำอธิบายสำหรับส่วน "0991021" ของสตริงสำหรับตัวเลขสามหลัก: Index: ... * 97 98 99*100 101 102*103 ... * * * *---+---+---*---+---+---*---+ Character: ... * 0 | 9 | 9 * 1 | …

22
จำนวนถึง 1 โดยการลบนายกที่ใหญ่ที่สุดน้อยกว่ามันซ้ำ ๆ ได้หรือไม่?
ท้าทาย: ให้ตัวเลขใช้จำนวนเฉพาะที่ใหญ่ที่สุดน้อยกว่าลบจากจำนวนนี้ทำซ้ำอีกครั้งกับหมายเลขใหม่ที่มีจำนวนเฉพาะที่ใหญ่ที่สุดน้อยกว่าและทำต่อไปจนกว่าจะน้อยกว่า 3 ถ้าถึง 1 โปรแกรมควรส่งออกค่าความจริงมิฉะนั้นโปรแกรมควรส่งออกค่าเท็จ ตัวอย่าง: ทั้งหมดนี้ควรให้คุณค่าที่แท้จริง: 3 4 6 8 10 11 12 14 16 17 18 20 22 23 24 26 27 29 30 32 34 35 37 38 40 41 42 44 46 47 48 50 สิ่งเหล่านี้ควรให้ค่าเท็จ: 5 7 9 13 15 19 21 25 28 …

9
ถอดรหัสรายการไดเรกทอรี Microsoft MS-DOS 5.0 FAT
ระบบไฟล์ Microsoft FAT มีตารางไดเรกทอรีเพื่อแสดงว่า "ไฟล์" ใดที่อยู่ใน "โฟลเดอร์" บนดิสก์ ในขณะนั้นรายการเหล่านี้อัดแน่นข้อมูลจำนวนมากเป็นบิตจำนวนเล็กน้อย มีข้อกำหนดทางเทคนิคมากมายเกี่ยวกับWikiสำหรับผู้อยากรู้อยากเห็น แต่ความท้าทายที่นี่จะมุ่งเน้นไปที่การถอดรหัส "แบบง่าย" ของรายการ แต่ละรายการประกอบด้วยคำไบนารี 32 ไบต์แบ่งออกเป็นหลายส่วน เพื่อความสอดคล้องในการท้าทายนี้เราจะใช้ MS-DOS 5.0 รุ่นไบต์มีการสั่งซื้อเป็นendian ใหญ่และเรากำลังเรียกไบต์0x00เป็นซ้ายสุดและไบต์0x1Fเป็นขวาที่สุด ด้านล่างนี้เป็นแผนผังโดยย่อของส่วนที่เกี่ยวข้องและสิ่งที่ควรเป็นผลลัพธ์สำหรับแต่ละส่วน (เป็นตัวหนา ) 11 ไบต์แรกเป็นชื่อไฟล์ในรูปแบบ ASCII (นี่คือที่ชื่อไฟล์ 8.3 ที่มีชื่อเสียงมาจาก - 8 ไบต์สำหรับชื่อไฟล์, 3 ไบต์สำหรับส่วนขยาย) เหล่านี้คือการเข้ารหัส ASCII แบบตรงและควรมีเอาต์พุตเป็น ASCII ที่มีเครื่องหมายจุด (.) อยู่ระหว่างนั้น หมายเหตุ: ทั้งส่วนที่ 8 และ 3 นั้นบุด้วยช่องว่างเพื่อให้เข้าได้เต็มความยาว การส่งออกควรละเว้นช่องว่าง (เช่นอย่าส่งออก) …

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