คำถามติดแท็ก code-golf

Code-golf เป็นการแข่งขันเพื่อแก้ไขปัญหาเฉพาะในส่วนที่น้อยที่สุดของซอร์สโค้ด

3
การจัดเรียงฟอง
หมายเหตุ: ความท้าทายคัดลอกมาจากคำถามที่ถามที่math.stackexchange เมื่อเร็ว ๆ นี้ฉันมีทักษะในการเป่าฟองสบู่ ตอนแรกฉันจะเป่าฟองสบู่แบบนี้ แต่สิ่งต่าง ๆ เริ่มแปลกประหลาด: หลังจากผ่านไปครู่หนึ่งฉันก็เป่าฟองแปลก ๆ หลังจากเป่าไปหลายร้อยฟองอาจจะถึงพันแล้วหน้าผากของฉันก็เหี่ยวย่นกับคำถาม: เมื่อได้รับฟอง n คุณสามารถจัดเรียงพวกเขาได้ในหลายวิธี ตัวอย่างเช่นถ้า n = 1 จะมีเพียง 1 การจัดเรียงเท่านั้น ถ้า n = 2 จะมีการจัดเรียง 2 แบบ ถ้า n = 3 มีการจัดเรียง 4 รายการ ถ้า n = 4 มีการจัดเรียง 9 รายการ ต่อไปนี้คือการจัดเรียง 9 ฟอง 4 รายการ: หลังจากเป่าฟองสบู่มหัศจรรย์ทั้งหมดนี้ฉันตัดสินใจว่าฉันควรแบ่งปันความสุขในการนับการจัดการกับพวกเขา ดังนั้นนี่คืองานของคุณ: …

24
เมื่อจำนวนเต็มเข้าร่วมคิว
บทนำ คิวเป็นชนิดข้อมูลนามธรรมที่องค์ประกอบเพิ่มไปด้านหน้า (enqueue) และลบออกจากด้านหลัง (dequeue) นอกจากนี้ยังเป็นที่รู้จักกันFIFO (First In First Out)หลักการ มันจะแสดงที่ดีที่สุดด้วยตัวอย่าง: ท้าทาย รับอาร์เรย์ที่ไม่ว่างเปล่าที่มีจำนวนเต็มบวกและองค์ประกอบที่ระบุdequeue (ลบองค์ประกอบ) ออกรายการสุดท้ายของคิว สมมุติว่าXเป็น dequeue ในตัวอย่างนี้ ลองดูรายการต่อไปนี้: [45, X, X, 37, 20, X, 97, X, 85] สิ่งนี้สามารถแปลเป็นรหัสคิวหลอกต่อไปนี้: Queue Enqueue 45 -> 45 Dequeue -> Dequeue -> (dequeue on an empty queue is a no-op) Enqueue 37 -> 37 …

18
ย่ออาร์เรย์
เป้าหมาย: กำหนดอาร์เรย์ของสตริงสร้างเวอร์ชันย่อของแต่ละสตริง รายละเอียด: สำหรับความท้าทายนี้ตัวย่อคืออักขระ N ตัวแรกของสตริง สำหรับสตริงabc: a, abและabcทั้งหมดเป็นตัวย่อที่ถูกต้องในขณะที่bcและacไม่ใช่ ด้วยอาร์เรย์ของสตริงเราต้องการค้นหาชุดย่อที่สั้นที่สุดเช่นที่ได้รับจากอินพุตและตัวย่อใด ๆ คุณสามารถกำหนดว่ารายการใดของอินพุตที่ตัวย่อถูกอ้างถึง ตัวอย่าง: การป้อนข้อมูล: ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"] เราทำงานผ่านสายที่เริ่มต้นด้วยสายแรก วันจันทร์เป็นเพียงสตริงรายการด้วยดังนั้นย่อที่สั้นที่สุดคือMM วันอังคารเริ่มต้นด้วยTแต่วันพฤหัสบดีก็เช่นกัน TUวิธีการนี้ที่เราพยายามสตริง เนื่องจากไม่มีสายอื่น ๆ TUที่เริ่มต้นด้วยการที่เราจะใช้ วันพุธW, วันพฤหัสบดีและวันศุกร์คือThF ตัวอย่างเพิ่มเติม: Input: "one,two,three,four,five,six,seven" Output: "o,tw,th,fo,fi,si,se" Input: "red,orange,yellow,green,blue,purple" Output: "r,o,y,g,b,p" Input: "a,ab,abc" Output: Not valid! No abbreviation for `a` that doesn't apply to …
26 code-golf  string 

8
แปลงเครื่องมือจัดฟันเป็นรั้งมือขวา (Sad Brace)
รั้งมือขวาคือรูปแบบของการใส่รหัสในการจัดฟันแบบหยักและอัฒภาคให้อยู่ในตำแหน่งเดียวที่ด้านขวาของไฟล์ aa โดยทั่วไปถือว่าเป็นการปฏิบัติที่ไม่ดีด้วยเหตุผลหลายประการ ความท้าทาย ใช้สตริงหลายบรรทัดผ่านวิธีการใด ๆ และแปลงรูปแบบการรั้งเป็น Right Hand Brace สำหรับความท้าทายนี้คุณจะต้องใช้มันเพื่อทำงานกับโค้ด Java เท่านั้นอย่างไรก็ตามในทางทฤษฎีมันควรทำงานกับโค้ดใด ๆ ที่ใช้เครื่องมือจัดฟันและเครื่องหมายอัฒภาค คุณต้องคว้า{};ตัวละครทั้งหมดในแถวด้วยช่องว่างใด ๆ ระหว่างพวกเขา เช่น. }},, ; } }\n\t\t}และจัดเรียงมันทางด้านขวาของไฟล์ผ่านการใช้ช่องว่าง ตัวอย่างเช่น: a { b; {c ควรกลายเป็น a { b ;{ c หรืออย่างเป็นนามธรรมมากขึ้นผลักช่องว่างใด ๆ และทั้งหมดจากด้านซ้ายของ{};ตัวละครทั้งหมดไปทางขวา ควรเยื้องบรรทัด บรรทัดที่มีช่องว่างหลังจากการเคลื่อนไหวของ{};ตัวละครอาจถูกลบออก ตัวอย่างเช่น: a{ b{ c; } } d; อาจกลายเป็นอย่างใดอย่างหนึ่ง a { b …

11
หมายเลขคอมโพสิตที่ทนต่อ Bitflip
บางครั้งเมื่อเขียนโปรแกรมคุณต้องใช้จำนวนเฉพาะด้วยเหตุผลบางอย่างหรืออื่น ๆ (เช่นการเข้ารหัส) ฉันคิดว่าบางครั้งคุณต้องใช้หมายเลขคอมโพสิตด้วย บางครั้งอย่างน้อยที่นี่ใน PPCG โปรแกรมของคุณจะต้องสามารถจัดการกับการเปลี่ยนแปลงโดยพลการ และในสถานการณ์ที่วางแผนจะสร้างคำถาม PPCG ที่น่าสนใจอย่างสะดวกสบายบางทีแม้แต่ตัวเลขที่คุณใช้ก็ต้องทนต่อการทุจริต ... คำนิยาม จำนวนคอมโพสิตเป็นจำนวนเต็ม≥ 4 ที่ไม่ได้เป็นนายกคือมันเป็นผลิตภัณฑ์ของจำนวนเต็มสองจำนวนที่มีขนาดเล็กมากกว่า 1 ต่อ A bitflip ทนจำนวนคอมโพสิตถูกกำหนดให้เป็นดังนี้ก็เป็นจำนวนเต็มบวกคอมโพสิตซึ่งถ้าคุณเขียนมัน ในเลขฐานสองในจำนวนบิตที่น้อยที่สุดที่เป็นไปได้คุณสามารถเปลี่ยนหนึ่งหรือสองบิตจากจำนวนและจำนวนยังคงประกอบ ตัวอย่าง ตัวอย่างเช่นพิจารณาจำนวน 84 1010100ในไบนารีว่า นี่คือตัวเลขทั้งหมดที่ต่างกันไม่เกิน 2 บิตจาก: 0000100 4 2 × 2 0010000 16 4 × 4 0010100 20 4 × 5 0010101 21 3 × 7 0010110 22 …

10
การคูณเมทริกซ์สัญลักษณ์
มีหลายวิธีในการอธิบายการคูณเมทริกซ์ ฉันจะยึดติดกับร่างเดียวเพราะฉันเชื่อว่าคนส่วนใหญ่ที่นี่คุ้นเคยกับมัน (และตัวเลขนั้นอธิบายได้ดีมาก) หากท่านต้องการข้อมูลรายละเอียดเพิ่มเติมผมขอแนะนำให้คุณไปที่วิกิพีเดียบทความหรือคำอธิบายในWolframMathWorld คำอธิบายง่ายๆ: สมมติว่าคุณมีเมทริกซ์สองตัวคือAและBโดยที่Aคือ 3-by-2 และBคือ 2-by-3 หากคุณทำการคูณเมทริกซ์เหล่านี้กับเมทริกซ์ABหรือBAคุณจะได้ผลลัพธ์ด้านล่าง: ท้าทาย: ใช้การคูณเมทริกซ์สัญลักษณ์ในภาษาของคุณ คุณจะต้องใช้เมทริกซ์สองตัวเป็นอินพุตซึ่งแต่ละองค์ประกอบในเมทริกซ์จะถูกแทนด้วยอักขระ ASCII ที่ไม่ใช่ whitespace (รหัสคะแนน 33-126) คุณต้องเอาท์พุทผลิตภัณฑ์ของเมทริกซ์เหล่านี้ กฎเกี่ยวกับผลลัพธ์: ผลิตภัณฑ์ของสองรายการจะต้องไม่มีสัญลักษณ์ใด ๆ ในระหว่าง มันabไม่ได้a*b, a·b, times(a,b)หรือสิ่งที่คล้ายกัน มันไม่ได้aaa^2 ผลรวมของเงื่อนไขควรมีช่องว่าง (รหัส ASCII จุด 32) ในระหว่าง มันa bไม่a+b, plus(a,b)หรือสิ่งที่คล้ายกัน เหตุผลสำหรับกฎทั้งสองนี้คือ: อนุญาตให้ใช้อักขระที่ไม่ใช่ white space ทั้งหมดเป็นสัญลักษณ์ในเมทริกซ์ดังนั้นการใช้มันเป็นสัญลักษณ์ทางคณิตศาสตร์จะยุ่งเหยิง ดังนั้นสิ่งที่คุณตามปกติสามารถเขียนเป็นจะเป็นa*b+c*dab cd คุณสามารถเลือกคำสั่งได้ ab cd, dc abและcd baได้รับการทางคณิตศาสตร์ที่พูดภาษาเดียวกันเพื่อให้คุณสามารถเลือกสั่งซื้อที่นี่ด้วย คำสั่งซื้อไม่จำเป็นต้องสอดคล้องกันตราบใดที่มันถูกต้องทางคณิตศาสตร์ …

12
ตัวที่ n
คุณสามารถสร้างรายการของปันส่วนทั้งหมด 0 <r ≤ 1 โดยแสดงรายการที่พวกเขาสั่งซื้อครั้งแรกโดยตัวส่วนแล้วตามด้วยตัวเศษ: 1 1 1 2 1 3 1 2 3 4 1 5 1 2 3 4 5 - - - - - - - - - - - - - - - - - 1 2 3 3 4 4 5 5 5 5 …

6
การพิมพ์ที่มีประสิทธิภาพบน Game Boy
เกมบอยเก่าหลายเกมมักจะต้องมีการป้อนสตริงจากผู้ใช้ อย่างไรก็ตามไม่มีแป้นพิมพ์ สิ่งนี้ได้รับการจัดการโดยการนำเสนอผู้ใช้ด้วย "หน้าจอคีย์บอร์ด" ดังนี้: 'การชี้ตัวอักษร' จะเริ่มที่ตัวอักษร A. ผู้ใช้จะต้องไปที่ตัวละครแต่ละตัวต้องการด้วยD-Pad 's สี่ปุ่ม ( UP, DOWN, LEFTและRIGHT) แล้วกดBUTTON Aไปผนวกกับสตริงสุดท้าย โปรดทราบ: กริดล้อมรอบดังนั้นการกดUPในขณะที่อยู่บนตัวอักษร A จะนำคุณไปยัง T 'ตัวชี้ตัวอักษร' จะยังคงอยู่หลังจากใส่ตัวอักษรต่อท้าย ความท้าทาย แป้นพิมพ์ด้านบนมีตัวเลือกในการเปลี่ยนเคสและเป็นรูปร่างที่ผิดปกติ ดังนั้นเพื่อความง่ายในความท้าทายนี้เราจะใช้แป้นพิมพ์ต่อไปนี้ (ด้านล่างขวาคือ ASCII ถ่าน 32 ช่องว่าง): A B C D E F G H I J K L M N O P Q R …

21
จำนวน n หลักที่เล็กที่สุดที่มีเฉพาะตัวเลขเหล่านี้
คุณจะต้องสร้างนายกเล็กที่สุดด้วยตัวเลขและมันจะมีตัวเลขที่ระบุไว้ในรายการnk ตัวอย่าง: การป้อนข้อมูล: 4 1 2 สำหรับนี้คุณต้องสร้างนายกเล็กที่สุดด้วย4ตัวเลขและที่สำคัญต้องมีเพียงตัวเลขและ12 เอาท์พุท: 2111 การป้อนข้อมูล: 10 0 4 7 เอาท์พุท: 4000000007 การป้อนข้อมูล: 6 5 5 5 5 5 5 5 5 5 5 1 5 5 5 5 5 5 5 5 5 5 เอาท์พุท: 115151 คุณสามารถรับประกันได้ว่าอินพุตจะอยู่ในรูปแบบที่คุณระบุเสมอและคุณสามารถทำอะไรก็ได้หากคุณได้รับอินพุตที่ไม่ถูกต้อง (เช่นอินพุตเป็นตัวเลขหลักเดียวnโดยไม่มีk) หากไม่มีวิธีแก้ไขดังกล่าวต่ออินพุตอยู่โปรแกรมของคุณได้รับอนุญาตให้ทำสิ่งใดสิ่งหนึ่งต่อไปนี้: พิมพ์ banana โยนข้อผิดพลาด วิ่งไปตลอดกาล สิ่งอื่นใด เนื่องจากนี่เป็นโค้ดกอล์ฟพยายามที่จะตั้งรหัสให้สั้นที่สุด …

25
พิมพ์คิวบ์ตาข่ายขนาดที่ระบุ
ท้าทาย เมื่อกำหนดขนาด s ให้พิมพ์ลูกบาศก์สุทธิของขนาดนั้นที่ทำจากสัญลักษณ์แฮช ( #) และช่องว่าง ( ) ตัวอย่าง: 1: # # # # # # 2: # # # # # # # # # # # # # # # # # # # # # # # # 3: # # # # # # # …

16
ถอดรหัส Baby-talk!
เมื่อเด็กเปิดปากพวกเขาไม่เพียง แต่พูดพล่อยๆ จริงๆแล้วพวกเขากำลังพูดในรหัสขั้นสูงที่พิสูจน์ได้สำหรับผู้ใหญ่ ... Baby-talk Cipher เมื่อเด็กพูดถึงมันอาจมีลักษณะคล้ายกับgogooa gagooook aagaaoooy แต่ละส่วนที่คั่นด้วยช่องว่างเดี่ยวแทนอักขระ (ตัวอย่างด้านบนแสดงถึง 3 ตัวอักษร) ในการถอดรหัสส่วนเราจะต้องนับจำนวน As และ Os ที่มี อย่างไรก็ตามเราจะนับเฉพาะสิ่งที่อยู่ติดกับสระอื่นเท่านั้น ตัวอย่างเช่น A ใน 'ปิดปาก' จะไม่นับ แต่ทั้ง A และ O ใน 'gaog' จะเป็นเช่นนั้น การนับตัวอย่างด้านบนจะมีลักษณะเช่นนี้: Section | Num Os | Num As gogooa | 2 | 1 gagooook | 4 | 0 aagaaoooy …

19
ค้นหาปีที่จัดเรียง
ปี 2556 มีทรัพย์สินที่น่าสนใจ: ตัวเลขเรียงต่อกันเมื่อเรียงลำดับ (0123) ลองเรียกหมายเลขประเภทนี้ว่าตัวเลขที่เรียงได้:จำนวนเต็มแบบไม่ลบที่มีตัวเลขฐาน 10 ต่อเนื่องกันหลังจากเรียงลำดับ น่าเสียดายที่สิ่งนี้จะไม่เกิดขึ้นอีกจนกว่าจะถึงปี 2031 และหลังจากนั้นไม่ถึงปี 2103 ความท้าทายของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นที่เมื่อได้รับจำนวนเต็มไม่เป็นลบผ่านวิธีมาตรฐานใด ๆ กฎระเบียบ อินพุตและเอาต์พุตต้องอยู่ในฐาน 10 เอาต์พุตอาจอยู่ในรูปแบบที่เหมาะสม (จำนวนตัวอักษร, สตริงตัวอักษร, อาร์เรย์รายการเดียว, ... ) รหัสของคุณจะต้องสร้างเอาต์พุตที่เหมาะสมภายใน 1 นาทีสำหรับอินพุตทั้งหมดสูงสุด 98764 กรณีทดสอบ 0 -> 1 1 -> 2 9 -> 10 10 -> 12 11 -> 12 99 -> 102 233 -> 234 234 …

2
การจัดเรียงสี่เหลี่ยมโดยพลการเพื่อเติมช่องว่าง
สี่เหลี่ยมเหล่านี้สามารถเติมเต็มพื้นที่สี่เหลี่ยมได้หรือไม่? เมื่อให้รูปสี่เหลี่ยมผืนผ้าคุณจะถูกถามว่าสามารถจัดเรียงให้เต็มพื้นที่สี่เหลี่ยมหรือไม่ รายละเอียด รับพวงของm x nรูปสี่เหลี่ยมโดยพลการ; 0 <= m, n <= 1000ตรวจสอบว่าเป็นไปได้หรือไม่ที่จะจัดเรียงเพื่อให้ครอบคลุมพื้นที่สี่เหลี่ยมโดยไม่ต้องมีรูหรือทับซ้อนกัน ไม่สามารถหมุนสี่เหลี่ยมได้และแต่ละสี่เหลี่ยมจะวางเพียงครั้งเดียวเท่านั้น อินพุต อินพุตสำหรับสิ่งนี้มีความยืดหยุ่นมากตราบใดที่อินพุตให้รายการของมิติพื้นที่ 2 แบบ ตัวอย่างเช่นทั้งสองอย่างต่อไปนี้ถูกต้อง: คั่นด้วย Space, Return 1 2 1 5 4 5 3 6 รายการขนาด [[1, 2], [1, 5], [4, 5], [3, 6]] เอาท์พุต การเรียงลำดับของค่าจริง / เท็จเช่นจริง / เท็จ, 0/1, T / F, จริง / …

26
ความแข็งแบบดิจิตอลของจำนวนเต็ม
เพื่อหาสิ่งที่มีความแข็งดิจิตอลของจำนวนเต็มใช้แทน binary ของตนและนับจำนวนครั้งทั้งชั้นนำและต่อท้ายสามารถลบออกได้จนกว่าจะมีทั้งการเริ่มต้นหรือลงท้ายด้วย1 0จำนวนบิตทั้งหมดที่ถูกลบคือความแข็งแบบดิจิตอล นั่นเป็นคำอธิบายที่ค่อนข้างใช้คำพูด - งั้นมาลองดูตัวอย่างที่ทำงานกันดีกว่า สำหรับตัวอย่างนี้เราจะใช้หมายเลข 3167 ในระบบเลขฐานสองนี่คือ: 110001011111 (โปรดทราบว่าในระหว่างการแปลงเป็นไบนารีคุณควรตรวจสอบให้แน่ใจว่าได้ตัดส่วนนำศูนย์) มันไม่ได้เริ่มต้นหรือลงท้ายด้วย0ดังนั้นเราจึงลบบิต 1 คู่: 1 1000101111 1 เเละอีกอย่าง: 11 00010111 11 แต่ตอนนี้มี 0 ที่จุดเริ่มต้นดังนั้นเราจึงไม่สามารถลบ1คู่ได้อีก โดยรวมแล้ว 4 บิตที่เราลบออกและดังนั้น4คือความแข็งแบบดิจิตอลที่3167 อย่างไรก็ตามสำหรับตัวเลขที่สามารถเขียนเป็น2 n -1สำหรับบวกn (เช่นมีเฉพาะ1ในการเป็นตัวแทนไบนารี) 0 จะไม่ถึงและดังนั้นบิตทั้งหมดสามารถลบออกได้ ซึ่งหมายความว่าค่าความแข็งเป็นเพียงความยาวบิตของจำนวนเต็ม ความท้าทาย งานของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นซึ่งกำหนดจำนวนเต็มไม่เป็นลบn >= 0กำหนดความแข็งแบบดิจิตอล คุณสามารถส่งโปรแกรมเต็มรูปแบบซึ่งดำเนินการ I / O หรือฟังก์ชั่นที่ส่งกลับผลลัพธ์ การส่งของคุณควรทำงานกับค่าที่nอยู่ในช่วงจำนวนเต็มมาตรฐานของภาษาของคุณ กรณีทดสอบ โปรดแจ้งให้ฉันทราบหากสิ่งเหล่านี้ไม่ถูกต้องหรือหากคุณต้องการแนะนำกรณีขอบที่จะเพิ่ม 0 -> 0 …

13
การโกงการทดสอบแบบเลือกตอบส่วนที่ 2
นี้เป็นผลสืบเนื่องไปนี้ความท้าทายโดยAdnan ถ้าคุณชอบความท้าทายนี้คุณก็มีโอกาสที่จะชอบสิ่งนี้เช่นกัน ลองดูสิ! การทดสอบหลายทางเลือกที่มี 8 คำถามแต่ละคนมี 4 BCADBADAตัวเลือกอาจมีคำตอบ: แปลงเป็นสี่อาร์เรย์ที่ต่างกันด้วยจริงและเท็จถ้าตัวอักษรปัจจุบันคือคำตอบมันจะมีลักษณะเช่นนี้ Q#: 1 2 3 4 5 6 7 8 B C A D B A D A A: [0, 0, 1, 0, 0, 1, 0, 1] B: [1, 0, 0, 0, 1, 0, 0, 0] C: [0, 1, 0, 0, 0, …

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