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

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

9
มันเป็นภูเขาหรือไม่?
ท้าทาย สำหรับความท้าทายนี้สตริงที่เป็นภูเขาเป็นสิ่งที่สอดคล้องกับกฎไวยากรณ์M: x(Mx)*ที่ทุกการผลิต x ทั้งหมดเป็นอักขระเดียวกัน เมื่อเยื้องสายภูเขาอาจมีลักษณะเช่นนี้: A B C D C E F E C B A อย่างที่คุณเห็นมันดูเหมือนภูเขาจากทางด้านข้าง นิยามอย่างเป็นทางการ อักขระเดี่ยวใด ๆ ที่aเป็นภูเขา ถ้าSเป็นสตริงภูเขาและaเป็นอักขระแล้วก็aSaเป็นภูเขาซึ่งการวางเคียงกันแสดงถึงการต่อสตริง ถ้าaSaและaTaเป็นสายภูเขาก็aSaTaเป็นสายภูเขา โปรดทราบว่ากฎนี้มีความหมายว่ารูปแบบนี้มีไว้สำหรับการทำซ้ำจำนวนเท่าใดก็ได้ (เช่นaSaTaUa, aSaTaUaVa, aSaTaUaVaWa... มีทั้งหมดภูเขา.) ตัวอย่าง palindromes ความยาวคี่ทั้งหมดเป็นภูเขาตัวอย่างเช่น: t a c o c a t qwertytrasdfdgdsarewqjklkjq เป็นตัวอย่างเล็กน้อย: q w e r t y t r a …

13
ทำ Geiger Counter
Geiger counter เป็นอุปกรณ์ที่ใช้ตรวจจับรังสี เราจะสร้างโปรแกรมตัวนับ Geiger อย่างที่เราทุกคนรู้เมื่อการแผ่รังสีเข้าสู่โปรแกรมคอมพิวเตอร์มันจะทำการสุ่ม 1 ไบต์โดยการสุ่ม ดังนั้นโปรแกรมตัวนับ Geiger จึงเป็นโปรแกรมที่ไม่ได้ทำอะไรเลย แต่เมื่อไบต์ใด ๆ ถูกลบออกโปรแกรมที่พิมพ์จะถูกแก้ไขbeepจะมาเพื่อบ่งบอกถึงการมีอยู่ของรังสี คำตอบจะได้คะแนนเป็นไบต์ด้วยจำนวนไบต์ที่น้อยลง คำตอบต้องมีอย่างน้อย 1 ไบต์ โปรแกรมของคุณอาจพิมพ์beepด้วยการขึ้นบรรทัดใหม่หรือพิมพ์ขึ้นบรรทัดใหม่เดียวเพื่อให้ได้ผลลัพธ์ที่ว่างเปล่าตราบใดที่มันทำอย่างสม่ำเสมอ โปรแกรมของคุณยังอาจใช้เป็นกรณีที่แตกต่างกันสำหรับbeepเช่นBEEP, bEEPหรือBeepตราบใดที่มันไม่ให้อย่างต่อเนื่อง

22
แอนนาแกรมเวลา
โพสต์ครั้งแรก (และลบ) โดย@Tlinkซึ่งส่วนใหญ่จะเป็นแรงบันดาลใจจากคำถาม StackOverflow นี้ เนื่องจากมันเป็นความอัปยศที่ถูกลบไปแล้วเนื่องจากดูเหมือนว่าเป็นการท้าทายที่ดีโดยทั่วไปฉันคิดว่าฉันจะโพสต์ใหม่ด้วยการจัดรูปแบบและกฎที่เหมาะสม (ฉันได้ลองติดต่อ@Tlinkแล้วและได้รับอนุญาตจากเขา / เธอให้โพสต์ แต่เขาไม่ตอบกลับอีกซึ่งเป็นสาเหตุที่ฉันตัดสินใจโพสต์เองตอนนี้) อินพุต:หกหลัก เอาต์พุต:เวลาที่ถูกต้องครั้งแรกหรือครั้งสุดท้ายในรูปแบบ 24 ชั่วโมง ( 00:00:00ผ่าน23:59:59) (คุณสามารถเลือกได้เองว่าคุณจะใช้เวลาที่ถูกต้องครั้งแรกหรือครั้งสุดท้าย) ตัวอย่าง: เมื่ออินพุตถูก 1,8,3,2,6,4เวลาต่อไปนี้สามารถสร้างได้: 12:36:48 12:38:46 12:46:38 12:48:36 13:26:48 13:28:46 13:46:28 13:48:26 14:26:38 14:28:36 14:36:28 14:38:26 16:23:48 16:24:38 16:28:34 16:28:43 16:32:48 16:34:28 16:38:24 16:38:42 16:42:38 16:43:28 16:48:23 16:48:32 18:23:46 18:24:36 18:26:34 18:26:43 18:32:46 18:34:26 …
29 code-golf  date 

8
บอกวิธีการล้มเหลว
ในฐานะนักวิทยาศาสตร์คอมพิวเตอร์คุณอาจคุ้นเคยกับการทำรายการป๊อปและพุชพื้นฐาน เหล่านี้เป็นการดำเนินการอย่างง่ายที่แก้ไขรายการองค์ประกอบ อย่างไรก็ตามคุณเคยได้ยินเรื่องการปฏิบัติการล้มเหลวบ้างไหม? (เช่นเดียวกับflip- flop )? มันค่อนข้างง่าย รับตัวเลขnให้กลับองค์ประกอบnแรกของรายการ นี่คือตัวอย่าง: >>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> a.flop(4) [4, 3, 2, 1, 5, 6, 7, 8, 9, 10] สิ่งดีๆเกี่ยวกับการดำเนินการล้มเหลวคือการที่คุณสามารถใช้มันทำสิ่งบางเย็นในรายการเช่นการเรียงลำดับมัน เราจะทำสิ่งที่คล้ายกับรองเท้าแตะ: รับรายการจำนวนเต็ม "Neighbor it" กล่าวอีกนัยหนึ่งให้เรียงลำดับเพื่อให้องค์ประกอบที่ซ้ำกันปรากฏขึ้นอย่างต่อเนื่อง สามารถทำได้ด้วย flops! ตัวอย่างเช่นใช้รายการต่อไปนี้: >>> a = [3, 2, 1, 4, …

4
ใช้การเพิ่มสตริงที่แท้จริง
หลายภาษาช่วยให้สายที่จะ "เพิ่ม" +กับ อย่างไรก็ตามนี่คือการต่อกันที่แท้จริงการเพิ่มที่แท้จริงจะทำตามสัจพจน์ของกลุ่ม: มันถูกปิด (การเพิ่มสองสตริงใด ๆ เป็นสตริงเสมอ) มันคือการเชื่อมโยง ( (a + b) + c = a + (b + c) ) มีตัวตน ( ∃e: a + e = a ) ทุกองค์ประกอบมีค่าผกผัน ( ∀a: ∃b: a + b = e ) (เรียงต่อกันละเมิดความจริงของกลุ่มที่ 4) ดังนั้นหน้าที่ของฉันคือการใช้การเพิ่มสตริงที่แท้จริงนั่นคือฟังก์ชั่นที่ใช้สองลำดับของไบต์ที่แทนสตริงและส่งกลับค่าที่สามที่ฟังก์ชันของคุณตรงกับความจริงของกลุ่มทั้งหมดในลำดับของไบต์ ต้องทำงานกับลำดับไบต์ทั้งหมดที่แสดงถึงสตริงรวมถึงสตริงไบต์ที่ว่าง นี่คือcode-golfดังนั้นคำตอบจะได้คะแนนเป็นไบต์โดยไบต์น้อยจะดีขึ้น

30
แบบทดสอบภาษาโปรแกรม Mark II - Robbers
ตำรวจท้าทาย ความท้าทายของโจร ค้นหาคำตอบที่มีช่องโหว่ นั่นคือคำตอบที่ยังไม่แตกและยังไม่ปลอดภัยเช่นกัน แตกโดยการหาภาษาของมัน นั่นคือค้นหาภาษาใด ๆที่โปรแกรมที่กำหนดเป็นโปรแกรมที่ถูกต้อง (ขึ้นอยู่กับกฎที่ระบุไว้ในการท้าทายของ Cops 'ด้านบน) ไม่สำคัญว่าจะเป็นภาษาที่ตำรวจต้องการหรือไม่ เมื่อคุณพบภาษาที่ใช้งานได้ให้โพสต์คำตอบไปที่เธรดของ Robbers และแสดงความคิดเห็นใต้คำตอบของ Cop หากคุณมีชื่อเสียงไม่พอที่จะแสดงความเห็นพูดในคำตอบของคุณและใครบางคนจะแสดงความคิดเห็นสำหรับคุณ รูปแบบเอาต์พุตต้องเหมือนกับโซลูชันที่ต้องการของตำรวจเพื่อประกอบการถอดรหัสที่ถูกต้อง ผู้ใช้ทุกคนจะได้รับการเดาเพียงครั้งเดียวต่อคำตอบ ซึ่งรวมถึงการบอกคำตอบให้คนอื่นหรือบอกใบ้ให้คุณเดา คุณต้องไม่ถอดรหัสคำตอบของคุณเอง (ชัด ๆ ... ) ผู้ใช้ที่แคร็กคำตอบจำนวนมากที่สุดจะเป็นผู้ชนะความท้าทายของโจร ความสัมพันธ์จะถูกทำลายโดยผลรวมของจำนวนไบต์ของคำตอบที่แตก (เพิ่มเติมจะดีกว่า) ขอให้โชคดี

27
Code Golf: งู ASCII สัตว์เลี้ยงแนวนอนของคุณเอง
แรงบันดาลใจอย่างมากจากความท้าทายนี้Code Golf: งู ASCII สัตว์เลี้ยงของคุณเอง - ฉันคิดว่าการทำให้เป็นแนวนอนจะเพิ่มความซับซ้อนเป็นพิเศษ ตัวอย่างงูแนวนอน: 0 0 0 0 0 000 00 0 00 000 0 0 000 0 0 0 00 0 000 และกฎคือ: พิมพ์ตัวอักษร 5 บรรทัดอย่างแน่นอน แต่ละบรรทัดมีความยาว 30 ตัวอักษรประกอบด้วยช่องว่างและอักขระที่คุณเลือกเพื่อวาดงูของคุณ งูของคุณเริ่มที่บรรทัดที่ 3 บรรทัดถัดไปที่จะใช้ในการวาดงูของคุณจะต้องเลือกแบบสุ่มจากบรรทัดปัจจุบันของคุณหนึ่งบรรทัดด้านบน (ถ้าคุณยังไม่ได้อยู่ในบรรทัดที่ 1) หรือหนึ่งบรรทัดด้านล่าง (ถ้าคุณยังไม่ได้อยู่ในบรรทัดที่ 5) ตัวเลือกเหล่านี้จะต้องมีน้ำหนักเท่ากัน ดังนั้นถ้าคุณอยู่บนบรรทัดที่ 1 คุณมีโอกาส 50% ที่จะอยู่ในบรรทัดที่ 1 และโอกาส …

21
ลำดับซ้อนกัน
คุณแจกไพ่ที่มีป้ายกำกับ 0 ถึง 9 จากเด็คหนึ่งครั้งสร้างสแต็คที่เริ่มต้นที่ 0 และนับได้ 1 เมื่อคุณแจก 0 คุณวางมันลงบนโต๊ะเพื่อเริ่มกองซ้อนใหม่ เมื่อคุณจัดการการ์ดอื่น ๆ คุณจะวางการ์ดบนการ์ดที่มีมูลค่าลดลงหนึ่งใบ หากไม่มีการ์ดดังกล่าวแสดงว่าเด็คไม่สามารถซ้อนกันได้ ได้รับสำรับตรวจสอบว่ามันสามารถซ้อนกันเมื่อดำเนินการตามคำสั่งที่ได้รับ ให้ลิสต์ของตัวเลขตัดสินใจว่าจะแบ่งพาร์ติชันออกเป็นส่วน ๆ แต่ละชุดของฟอร์มได้หรือไม่0,1,..,k ตัวอย่าง 0012312425ใช้ดาดฟ้า ไพ่สองใบแรกคือ0ดังนั้นพวกเขาไปบนโต๊ะ: Stacks: 00 Deck: 12312425 ต่อไปเราจัดการ1ซึ่งต่อไป0ไม่สำคัญว่า: 1 Stacks: 00 Deck: 2312425 จากนั้นเราจัดการ2บนยอดที่เพิ่งวาง1และ3ด้านบนของมัน 3 2 1 Stacks: 00 Deck: 12425 ถัดไป1, 2และวางไว้บนกองแรกและ4บนยอดหนึ่งวินาที 4 3 22 11 Stacks: 00 Deck: 25 …

30
การล้างบิตที่สำคัญที่สุดจากจำนวนเต็ม
อินพุต อินพุตเป็นจำนวนเต็มบวกเดียว n เอาท์พุต เอาท์พุทเป็นชุดบิตมากที่สุดอย่างมีนัยสำคัญn0 กรณีทดสอบ 1 -> 0 2 -> 0 10 -> 2 16 -> 0 100 -> 36 267 -> 11 350 -> 94 500 -> 244 ตัวอย่างเช่นในไบนารี350 101011110การตั้งค่าบิตที่สำคัญที่สุดของมัน (เช่น1บิตซ้ายสุด) เพื่อ0เปลี่ยนให้เป็น001011110ซึ่งเทียบเท่ากับจำนวนเต็มทศนิยม94คือผลลัพธ์ นี่คือOEIS A053645

11
สร้าง Semi-Zigzag
คุณจะได้รับจำนวนเต็มบวกNเป็นอินพุต งานของคุณคือการสร้างกึ่งคดเคี้ยวไปมาของฝ่ายแต่ละยาวN Nเนื่องจากเป็นการยากที่จะอธิบายงานอย่างชัดเจนนี่คือตัวอย่างบางส่วน: N = 1: O N = 2: O OO N = 3: OO OO OOO N = 4: ooooo OO OO OOOO N = 5: OOOOOO OOO OOO OOO OOOOOO N = 6: OOOOOOO OOO OOO OOO OOO oooooooooooo N = 7: ooooooooo OOOO OOOO OOOO OOOO …

28
ก่อนอื่นพวกเขามา
"ก่อนอื่นพวกเขามา ... "เป็นบทกวีของMartin Niemöller : First they came for the Socialists, and I did not speak out- Because I was not a Socialist. Then they came for the Trade Unionists, and I did not speak out- Because I was not a Trade Unionist. Then they came for the Jews, and …

16
ดั้งเดิมพีทาโกรัสอเนกประสงค์
( ที่เกี่ยวข้อง ) พีทาโกรัส Tripleเป็นรายการ(a, b, c)ที่น่าพอใจสม2 + B 2 c = 2 ดั้งเดิมพีทาโกรัส Triple (PPT) เป็นหนึ่งในสถานที่ที่a, bและcมีทั้งหมดcoprime (เช่นหารเพียงร่วมกันระหว่างสามองค์ประกอบคือ1) ตัวอย่างเช่น(3, 4, 5)สามเหลี่ยมมุมฉากคือ Primitive Pythagorean Triple ที่มีชื่อเสียง ความท้าทาย รับอินพุตn, ส่งออกnPPT th หรือ, รับอินพุตnส่งออกnPPT แรก มีหลายวิธีในการสั่งซื้อ PPTs เหล่านี้เพื่อสร้างรายการที่ได้รับคำสั่งซื้ออย่างดีเพื่อพิจารณาว่าอันไหนคือnth คุณสามารถเลือกการสั่งซื้อใด ๆ ที่คุณต้องการตราบใดที่คุณสามารถพิสูจน์ได้ (อย่างไม่เป็นทางการ) ว่าอัลกอริทึมของคุณสามารถสร้าง PPT ที่เป็นเอกลักษณ์ทุกอย่างที่เป็นไปได้ ตัวอย่างเช่นรหัสของคุณไม่ควรส่งออกทั้งสอง(3,4,5)และ(4,3,5)เนื่องจากเป็นรหัสที่ซ้ำกันของทริปเปิลเดียวกัน - อันใดอันหนึ่งโปรด ในทำนองเดียวกันไม่ว่ารหัสของคุณจะเป็นศูนย์หรือหนึ่งดัชนีก็ดีถ้าคุณระบุว่าคุณกำลังใช้อะไรอยู่ ตัวอย่าง สำหรับตัวอย่างดังต่อไปนี้ฉันใช้หนึ่งในการจัดทำดัชนีเอาท์พุทnPPT, th …

28
การนับจำนวนเข้าด้วยกัน
ความท้าทายของคุณคือการเขียนNตัวอย่างของรหัสดังกล่าวว่าเมื่อคุณ concatenate แรกK ≥ 1 ร่วมกันที่พวกเขาผลิตจำนวนK ยิ่งNสูงยิ่งดี นี่คือการจับ: คุณไม่สามารถใช้ตัวละครมากกว่าหนึ่งครั้งในตัวอย่างของคุณ กฎระเบียบ คุณสามารถใช้อักขระเดียวกันหลายครั้งในข้อมูลโค้ดหนึ่ง (และเพียงหนึ่ง) ตัวอย่างเหล่านี้จะต้องต่อกันตามลำดับที่ปรากฏโดยไม่ต้องข้าม คุณต้องเขียนตัวอย่างอย่างน้อยสองตัว ตัวอย่างทั้งหมดต้องเป็นภาษาเดียวกัน เตือนความจำ: ตัวอย่างไม่จำเป็นต้องเป็นโปรแกรมหรือฟังก์ชั่นเต็มรูปแบบและไม่จำเป็นต้องทำงานด้วยตัวเอง -1เป็นตัวอย่างข้อมูลที่ถูกต้องใน Java เช่น การต่อข้อมูลผลลัพธ์ทั้งหมดต้องส่งออกค่าKตามลำดับ ผู้ชนะคือบุคคลที่มีค่าNสูงสุด Tie-breaker เป็นความยาวของโปรแกรมโดยรวมที่สั้นที่สุดในหน่วยไบต์ ตัวอย่าง สมมติว่าตัวอย่างของคุณมีAD, xc, และ123 ;lแล้ว: AD ควรผลิต 1 ADxc ควรผลิต 2 ADxc123 ควรผลิต 3 และควรผลิตADxc123;l4 โปรแกรมนี้จะมีคะแนนของ4

20
ลอย 754 สู่ Hamming
คุณจะได้รับเป็นอินพุตจำนวนเต็มkในช่วงตั้งแต่-4503599627370496(−2 52 ) ถึง4503599627370496(2 52 ) ในฐานะที่เป็นที่รู้จักกันดีจำนวนเต็มในช่วงนี้สามารถแทนค่าทศนิยมที่มีความแม่นยำสองเท่า คุณควรส่งออกน้ำหนัก Hamming (จำนวนคน) ของการเข้ารหัสของkใน รูปแบบ binary64 สิ่งนี้ใช้ 1 บิตสำหรับเครื่องหมาย, 11 บิตสำหรับเลขชี้กำลัง (เข้ารหัสด้วยออฟเซ็ต) และ 52 สำหรับ mantissa; ดูลิงค์ด้านบนเพื่อดูรายละเอียด ในฐานะที่เป็นตัวอย่างจำนวน22จะแสดงเป็น 0 10000000011 0110000000000000000000000000000000000000000000000000 เนื่องจากมีคนออกเป็น55 โปรดทราบว่า endianness จะไม่ส่งผลกระทบต่อผลลัพธ์ดังนั้นคุณสามารถใช้การแทนค่าภายในที่แท้จริงของเครื่องเพื่อคำนวณผลลัพธ์ได้อย่างปลอดภัย กฎเพิ่มเติม อนุญาตให้ใช้โปรแกรมหรือฟังก์ชั่น สามารถใช้ภาษาโปรแกรมใดก็ได้ ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม หมายเลขอินพุตจะเป็นทศนิยม นอกเหนือจากนั้นหมายถึงอินพุต / เอาต์พุตและรูปแบบมีความยืดหยุ่นตามปกติ รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ กรณีทดสอบ 22 -> 5 714 -> 6 0 -> …

26
หมายเลขบันได
จำนวนบันไดเป็นจำนวนเต็มบวกxเช่นว่าnหลัก TH (หนึ่งในการจัดทำดัชนีเริ่มต้นด้วยหลักสำคัญน้อยที่สุด) มีค่าเท่ากับx% (n + 1) นั่นเป็นคำพูดเล็กน้อยดังนั้นลองมาดูตัวอย่าง ใช้7211311ถ้าเราหามอดูลาร์ตกค้างที่7211311ในช่วง 2-8 เราจะได้สิ่งต่อไปนี้: 7211311 % 2 = 1 7211311 % 3 = 1 7211311 % 4 = 3 7211311 % 5 = 1 7211311 % 6 = 1 7211311 % 7 = 2 7211311 % 8 = 7 ตัวเลขเหล่านี้คือ7211311 ! ดังนั้น7211311คือหมายเลขบันได งาน …

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