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

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

14
มาวาด Mona Lisa กัน
ในปี 2014 demoscener Jakub 'Ilmenit' Debski การปล่อยตัว 250 ไบต์(1)กราฟิกขั้นตอนการสาธิตสำหรับAtari XLเรียกว่าโมนา มันกำลังวาดภาพต่อไปนี้(2) : งานของคุณคือสร้างภาพเดียวกันโดยใช้ภาษาที่คุณเลือก (1) รายละเอียด: 136 ไบต์ของข้อมูล + 114 ไบต์ของรหัส (2) ภาพต้นฉบับคือ 128x96 รุ่นด้านบนนี้ถูกขยายเป็น 256x192 พิกเซลแตกต่างจากต้นฉบับเล็กน้อย แต่นี่เป็นผลลัพธ์ที่คาดหวังพร้อมรหัสหลอกที่อธิบายไว้ในความท้าทายนี้ อย่างไร? นี่คือรหัสกอล์ฟ แม้ว่าคุณจะได้รับอนุญาตให้ใช้วิธีการใดก็ตามผลลัพธ์ที่ดีที่สุดอาจทำได้โดยใช้อัลกอริทึมดั้งเดิมซึ่งได้อธิบายไว้ด้านล่าง หมายเหตุ : ย่อหน้านี้ไม่ได้สเปค แต่ค่อนข้างคำอธิบายทั่วไป โปรดอ้างอิงถึงรหัสเทียมและการอ้างอิงเพื่อดูรายละเอียดของอัลกอริทึม ภาพนี้ทำจากการแปรงพู่กัน 64 pseudo ( ดูวิดีโอนี้ ) โดยใช้สีต่าง ๆ ดังต่อไปนี้ (ในรูปแบบเลขฐานสิบหก RRGGBB): COLOR = [ 0xFFE289, …

29
เอาท์พุตปิรามิด (หรือทางหลวง)
รับสตริงที่ไม่ว่างเปล่า s, มีความยาวเท่ากัน, และเลขจำนวนเต็มบวก n, แทนความสูง, เขียนพีระมิดโดยใช้กฎต่อไปนี้: ปิรามิดควรมีเส้นที่ไม่เว้นว่าง ขึ้นบรรทัดใหม่ที่ได้รับอนุญาต สำหรับแต่ละ 1 <= i <= n บรรทัด i-th ควรมีสตริงที่มีอักขระแต่ละตัวซ้ำแล้วซ้ำอีกในสถานที่ที่ฉันครั้ง; abcd ทำซ้ำ 3 ครั้งกลายเป็น aaabbbcccddd แต่ละบรรทัดควรอยู่กึ่งกลางด้วยช่องว่างภายในเพื่อให้กึ่งกลางของแต่ละบรรทัดอยู่ในแนวตั้ง อนุญาตให้เว้นวรรคที่ส่วนท้ายของแต่ละบรรทัด คุณยังสามารถขึ้นบรรทัดใหม่ได้สูงสุดหนึ่งบรรทัด แต่ไม่มีช่องว่างอื่นก่อนบรรทัดแรก สตริงอินพุตไม่ได้รับการรับประกันว่าเป็นแบบ palindrome กรณีทดสอบ s = 'o-o o-o', n = 10: o-o o-o oo--oo oo--oo ooo---ooo ooo---ooo oooo----oooo oooo----oooo ooooo-----ooooo ooooo-----ooooo oooooo------oooooo oooooo------oooooo ooooooo-------ooooooo …

21
นอกจากนี้การจัดตำแหน่งอาร์เรย์
บทนำ พิจารณาสองไม่ว่างเปล่าอาร์เรย์จำนวนเต็มบอกว่าA = [0 3 2 2 8 4]และB = [7 8 7 2] ในการเพิ่มการจัดตำแหน่งให้กับพวกเราเราทำดังต่อไปนี้: ทำซ้ำแต่ละครั้งอาร์เรย์พอที่จะมีความยาวรวมLCM (ความยาว (A), ความยาว (B)) ที่นี่lcmหมายถึงตัวคูณร่วมน้อย A -> [0 3 2 2 8 4][0 3 2 2 8 4] B -> [7 8 7 2][7 8 7 2][7 8 7 2] ดำเนินการเพิ่มองค์ประกอบที่ชาญฉลาดในอาร์เรย์ที่ทำซ้ำและตัดผลลัพธ์ที่ได้ในทุกตำแหน่งที่มีการตัดทั้งสองอย่าง A -> [0 …

22
ปี่ธรรมชาติ # 0 - ร็อค
เป้าหมาย สร้างโปรแกรม / ฟังก์ชั่นที่รับอินพุตNตรวจสอบว่าNคู่ของจำนวนเต็มแบบสุ่มนั้นค่อนข้างดีและส่งคืนsqrt(6 * N / #coprime)หรือไม่ TL; DR ความท้าทายเหล่านี้เป็นการจำลองอัลกอริธึมที่ต้องการเพียงแค่ธรรมชาติและสมองของคุณ หากคุณต้องการ Pi ในระหว่างการเปิดเผยซอมบี้วิธีการเหล่านี้จะไม่เปลืองกระสุน ! มีอีกแปดความท้าทายที่จะมา ชำระเงินโพสต์แซนด์บ็อกซ์เพื่อให้คำแนะนำ การจำลอง เรากำลังจำลองอะไร ความน่าจะเป็นที่สองจำนวนเต็มแบบสุ่มนั้นค่อนข้างไพเราะ (เช่น coprime หรือ gcd == 1) 6/Pi/Piดังนั้นวิธีธรรมชาติในการคำนวณ Pi ก็คือการตักก้อนหินขึ้นสองถัง (หรือกำมือ) นับพวกเขา; ดูว่าgcdของพวกเขาคือ 1; ทำซ้ำ หลังจากที่ทำเช่นนี้คู่หลายครั้งจะมีแนวโน้มต่อsqrt(6.0 * total / num_coprimes) Piหากการคำนวณสแควร์รูทในโลกหลังวิกฤติทำให้คุณกังวลไม่ต้องกังวล! มีวิธีการของนิวตันสำหรับสิ่งนั้น เราจำลองสิ่งนี้ได้อย่างไร รับอินพุต N ทำตามNเวลาต่อไปนี้: สร้างเลขจำนวนเต็มบวกแบบสุ่มiและj กับ 1 <= i …
39 code-golf  math  random  pi  approximation  popularity-contest  code-golf  sequence  number-theory  binary  coding-theory  code-golf  math  3d  code-golf  code-golf  math  number  code-golf  kolmogorov-complexity  code-golf  ascii-art  graphical-output  binary-tree  code-golf  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  array-manipulation  hexadecimal  code-golf  math  number  set-theory  code-golf  math  arithmetic  number-theory  integer  code-golf  string  kolmogorov-complexity  code-golf  math  sequence  arithmetic  decision-problem  code-golf  code-golf  ascii-art  code-golf  array-manipulation  parsing  code-golf  string  ascii-art  kolmogorov-complexity  code-challenge  code-golf  sequence  code-golf  number  array-manipulation  sorting  code-golf  string  function  code-golf  arithmetic  code-golf  math  sequence  number-theory  primes  restricted-source  javascript  code-challenge  polyglot  rosetta-stone  code-golf  code-golf  regular-expression  code-golf  math  code-golf  math  primes  code-golf  ascii-art  kolmogorov-complexity  binary  code-golf  math  sequence  code-golf  sequence  subsequence  code-golf  string  code-golf  parsing  music  code-golf  grid  game  path-finding  board-game  code-golf  string  binary  code-golf  array-manipulation  balanced-string  code-golf  code-golf  algorithm  code-golf  string  number  arithmetic  array-manipulation  code-golf  array-manipulation  binary-tree  tree-traversal  code-golf  code-golf  tips  code-golf  string  base-conversion  code-golf  tips  s.i.l.o.s  code-golf  string  ascii-art  code-golf  code-challenge  code-golf  game 

29
นั่งอ่านถ้าคุณผ่านไปเก็บ $ 200
คณะกรรมการการผูกขาด สำหรับความท้าทายของรหัส - กอล์ฟเราจะสร้างเกมกระดานผูกขาด กฎ: ไม่มีการป้อนข้อมูล เอาท์พุทบอร์ด 11x11 โดยที่แต่ละตัวอักขระ ASCII ที่สร้างบอร์ดเป็นตัวอักษรตัวแรกของแต่ละช่องว่างของบอร์ดผูกขาดเวอร์ชั่นอเมริกา อักขระต้องถูกคั่นด้วยช่องว่าง Go ควรเริ่มที่ด้านล่างขวา สตริงที่แน่นอนในการผลิตคือ F K C I I B A V W M G N P T N C C S P P S V C S P E L S B J C V C O R …

23
มีวงกลมเรียงกัน, n จุด
ลากเส้นระหว่างจุดที่แตกต่างกันทุกคู่สำหรับnจุดที่จัดเรียงเป็นวงกลมทำให้เกิดผลลัพธ์ดังนี้ รหัสที่สั้นที่สุด (เป็นไบต์) ชนะ! เส้นของคุณไม่จำเป็นต้องโปร่งใส แต่มันดูดีกว่านี้ ผลลัพธ์จะต้องเป็นกราฟิกแบบเวกเตอร์หรือเป็นภาพอย่างน้อย 600 พิกเซลคูณ 600 พิกเซล (บันทึกเป็นไฟล์หรือแสดงบนหน้าจอ) เพื่อให้การท้าทายคุณจะต้องวาดอย่างน้อย 20

30
มุมมองการระเบิดของสตริง
คุณไม่ชอบไดอะแกรมมุมมองที่ระเบิดซึ่งเครื่องจักรหรือวัตถุถูกแยกออกเป็นชิ้นเล็ก ๆ หรือไม่? ลองทำกับสตริง! ความท้าทาย เขียนโปรแกรมหรือฟังก์ชั่นที่ ปัจจัยการผลิตสตริงที่มีเพียงตัวอักขระ ASCII ; แยกสตริงออกเป็นกลุ่มของอักขระที่ไม่เท่ากับช่องว่าง ("ส่วน" ของสตริง) ผลกลุ่มผู้ที่อยู่ในรูปแบบที่สะดวกใด ๆ กับบางคั่นระหว่างกลุ่ม ตัวอย่างเช่นกำหนดสตริง Ah, abracadabra! ผลลัพธ์จะเป็นกลุ่มต่อไปนี้: ! , aaaaa BB ค d ชั่วโมง RR แต่ละกลุ่มในเอาต์พุตมีอักขระที่เท่ากันโดยลบช่องว่างออก มีการใช้การขึ้นบรรทัดใหม่เป็นตัวคั่นระหว่างกลุ่ม เพิ่มเติมเกี่ยวกับรูปแบบที่อนุญาตด้านล่าง กฎระเบียบ การป้อนข้อมูลที่ควรจะเป็นสตริงหรืออาร์เรย์ของตัวอักษร มันจะมีเฉพาะตัวอักษร ASCII ที่พิมพ์ได้ (ช่วงรวมจากพื้นที่ถึงตัวหนอน) หากภาษาของคุณไม่รองรับคุณสามารถป้อนข้อมูลในรูปแบบของตัวเลขที่แสดงถึงรหัส ASCII คุณสามารถสรุปได้ว่าการป้อนข้อมูลที่มีอย่างน้อยหนึ่งตัวละครที่ไม่ใช่พื้นที่ ส่งออกควรประกอบด้วยตัวอักษร (แม้ว่าใส่เป็นโดยความหมายของรหัส ASCII) จะต้องมีตัวคั่นที่ชัดเจนระหว่างกลุ่มซึ่งแตกต่างจากอักขระที่ไม่ใช่ช่องว่างที่อาจปรากฏในอินพุต ถ้าเอาต์พุตส่งคืนโดยฟังก์ชันส่งคืนอาจเป็นอาร์เรย์หรือสตริงหรืออาร์เรย์ของ chars หรือโครงสร้างที่คล้ายกัน ในกรณีนั้นโครงสร้างให้แยกที่จำเป็น ตัวคั่นระหว่างตัวละครของแต่ละกลุ่มเป็นตัวเลือก หากมีข้อใดข้อหนึ่งกฎเดียวกันจะมีผลบังคับใช้: จะต้องไม่ใช่อักขระที่ไม่ใช่ช่องว่างที่อาจปรากฏในอินพุต …
39 code-golf  string 

30
ตรวจสอบสตริง
หลายภาษามีวิธีการในการกำจัดรายการที่ซ้ำกันหรือ "deduplicate" หรือ "uniquify" รายการหรือสตริง งานทั่วไปที่น้อยกว่าคือ "detriplicate" สตริง นั่นคือสำหรับตัวละครทุกตัวที่ปรากฏขึ้นสองเหตุการณ์แรกจะถูกเก็บไว้ นี่คือตัวอย่างที่ตัวละครที่ควรลบจะมีป้ายกำกับด้วย^: aaabcbccdbabdcd ^ ^ ^^^ ^^ aabcbcdd งานของคุณคือการใช้การดำเนินการนี้อย่างแน่นอน กฎระเบียบ อินพุตเป็นสตริงเดี่ยวอาจว่างเปล่า คุณอาจคิดว่ามันมีตัวอักษรตัวพิมพ์เล็กในช่วง ASCII เท่านั้น เอาต์พุตควรเป็นสตริงเดี่ยวที่ลบอักขระทั้งหมดซึ่งปรากฏอยู่แล้วอย่างน้อยสองครั้งในสตริง (เพื่อให้เกิดเหตุการณ์สองครั้งที่เหลือมากที่สุด) แทนที่จะใช้สตริงคุณสามารถทำงานกับรายการอักขระ (หรือสตริงเดี่ยว) แต่รูปแบบจะต้องสอดคล้องกันระหว่างอินพุตและเอาต์พุต คุณสามารถเขียนโปรแกรมหรือฟังก์ชั่นและใช้วิธีการมาตรฐานของเราในการรับอินพุตและให้เอาต์พุต คุณอาจใช้ภาษาการเขียนโปรแกรมใด ๆแต่โปรดทราบว่าช่องโหว่เหล่านี้เป็นสิ่งต้องห้ามตามค่าเริ่มต้น นี่คือรหัสกอล์ฟดังนั้นคำตอบที่สั้นที่สุดที่ถูกต้อง - วัดเป็นไบต์ - ชนะ กรณีทดสอบ คู่ของเส้นทุกคู่เป็นหนึ่งกรณีทดสอบ, อินพุตตามด้วยเอาต์พุต xxxxx xx abcabc abcabc abcdabcaba abcdabc abacbadcba abacbdc aaabcbccdbabdcd aabcbcdd ลีดเดอร์บอร์ด สแต็คส่วนย่อยที่ด้านล่างของโพสต์นี้สร้างกระดานแต้มนำจากคำตอบ …

29
Pseudofactorial
มีจำนวนที่ค่อนข้างอยากรู้อยากเห็นซึ่งบางครั้งก็ปรากฏขึ้นในปัญหาทางคณิตศาสตร์หรือปริศนา pseudofactorial (N) เป็นพหุคูณสามัญน้อยที่สุด (เช่นต่ำสุด) ของตัวเลข 1 ถึง N; มันคือจำนวนต่ำสุดซึ่งมีตัวเลขทั้งหมดตั้งแต่ 1 ถึง N เป็นปัจจัย เช่น pseudofactorial (7) = 3 * 4 * 5 * 7 ซึ่งเหมือนกับ 7! ยกเว้นว่ามีการลบ 2 และ 6 ออกเนื่องจากมีอยู่ในข้อกำหนดอื่น เขียนโปรแกรมเพื่อคำนวณ pseudofactorial (N) และเช่นเคยรหัสสั้นที่สุดชนะ นี่คือรายการสั้น ๆ สำหรับการใช้งานของคุณ เพิ่มเติมกรณีทดสอบที่สามารถพบได้ใน OEIS ภายใต้A003418 factorial: 1 2 6 24 120 720 5040 …

15
มองขึ้นไปบนฟ้า! มันเป็นอาร์เรย์ที่ยอดเยี่ยมมาก!
ได้รับแรงบันดาลใจจากคำถามนี้จากเพื่อน ๆคู่แข่งของเราในการตรวจสอบรหัส คำนิยาม อาร์เรย์ซุปเปอร์เป็นอาร์เรย์ที่แต่ละองค์ประกอบใหม่ในอาร์เรย์มีขนาดใหญ่กว่าผลรวมขององค์ประกอบทั้งหมดก่อนหน้านี้ด้วย {2, 3, 6, 13}เป็นอาเรย์ super เพราะ 3 > 2 6 > 3 + 2 (5) 13 > 6 + 3 + 2 (11) {2, 3, 5, 11}คือไม่อาร์เรย์สุดเพราะ 3 > 2 5 == 3 + 2 11 > 5 + 3 + 2 อาร์เรย์ duperเป็นอาร์เรย์ที่แต่ละองค์ประกอบใหม่ในอาร์เรย์มีขนาดใหญ่กว่าสินค้าทุกองค์ประกอบก่อนหน้านี้ด้วย {2, 3, …

30
การทดสอบการแบ่งแยก
งาน ได้รับสองจำนวนเต็มบวกอย่างเคร่งครัดnและdเป็น input ตรวจสอบว่าnคือเท่ากันหารโดยdคือถ้ามีจำนวนเต็มคิวn = qdดังกล่าวว่า คุณสามารถเขียนโปรแกรมหรือฟังก์ชั่นและใช้วิธีการมาตรฐานของเราในการรับอินพุตและให้เอาต์พุต เอาท์พุทควรจะเป็นtruthy หรือค่า falsy ; ความจริงถ้าnหารด้วยdและเป็นเท็จอย่างอื่น รหัสของคุณต้องจัดการกับจำนวนเต็มเท่านั้นซึ่งสามารถเป็นตัวแทนได้จริงตราบใดที่มันใช้ได้กับเลขจำนวนเต็ม 8 บิตที่ลงชื่อทั้งหมด อย่างไรก็ตามอัลกอริทึมของคุณต้องใช้งานสำหรับจำนวนเต็มขนาดใหญ่โดยพลการ คุณอาจใช้ภาษาการเขียนโปรแกรมใด ๆแต่โปรดทราบว่าช่องโหว่เหล่านี้เป็นสิ่งต้องห้ามตามค่าเริ่มต้น นี่คือรหัสกอล์ฟดังนั้นคำตอบที่สั้นที่สุดที่ถูกต้อง - วัดเป็นไบต์ - ชนะ กรณีทดสอบ n, d output 1, 1 truthy 2, 1 truthy 6, 3 truthy 17, 17 truthy 22, 2 truthy 1, 2 falsy 2, 3 falsy 2, 4 …

21
คีย์แถวใดอยู่
รับอักขระใด ๆ ต่อไปนี้ (หรือขึ้นบรรทัดใหม่): `1234567890-=~!@#$%^&*()_+qwertyuiop[]\QWERTYUIOP{}|asdfghjkl;'ASDFGHJKL:"zxcvbnm,./ZXCVBNM<>? โปรแกรมของคุณต้องแสดงผลแถวที่อยู่บนแป้นพิมพ์ เนื่องจากแป้นพิมพ์ของฉันเกือบหมดแบตเตอรี่รหัสของคุณต้องสั้นที่สุด แป้นพิมพ์ที่โปรแกรมของคุณควรใช้ (สำหรับการค้นหาแถว) ควรมีลักษณะดังนี้: Row 1:~` !1@2 #3$4 %5^6 &7*8 (9)0 _-+= Row 2: Q W E R T Y U I O P {[ }] |\ Row 3: A S D F G H J K L :; "' ↵ return Row 4: …

24
นาฬิกา ASCII พร้อมเครื่องหมายเวลาและเครื่องหมายจุลภาค
บทนำ ลองนึกภาพว่าเส้นของตัวอักษรเป็นสองแถว แถวบน - จุด - หมายถึงชั่วโมง (ระบบตลอด 24 ชั่วโมง) ในขณะที่ลดลง - เครื่องหมายจุลภาค - หมายถึงนาที ตัวละครตัวหนึ่งสามารถแสดงชั่วโมงนาทีหรือทั้งสองอย่าง - เมื่อเป็นไปได้ ตอนแรกอาจจะมีการแปลงนาทีนับตั้งแต่เที่ยงคืนถึงชั่วโมงและนาที ผลลัพธ์ที่ได้คือสตริงที่แสดงเวลาปัจจุบันใน "รูปแบบจุด" จุดนับ ( เครื่องหมายอัญประกาศเดี่ยวนับที่นี่เป็นจุดและจะถูกเรียกอย่างนั้น! ) คือการนับชั่วโมงตั้งแต่เที่ยงคืนและการนับจุลภาคคือการนับนาที ฉันจะแสดงตัวอย่างบางอย่างเพื่อให้ชัดเจน (หมายเหตุ) hh: mm - result (เฉพาะชั่วโมง) 05:00 - ''''' (เพียงไม่กี่นาที) 00:08 - ,,,,,,,, (ชั่วโมง <นาที) 03:07 - ;;;,,,, (ชั่วโมง> นาที) 08:02 - ;;'''''' …
39 code-golf  string  clock  time 

14
สร้างลำดับของ Temple Skyline
พิจารณากระบวนการต่อไปนี้: รับจำนวนเต็ม N ที่ไม่เป็นลบ เช่น N = 571 แสดงเป็นเลขฐานสองโดยไม่มีเลขศูนย์นำหน้า (ศูนย์ตัวเองเป็นข้อยกเว้นเพียงอย่างเดียวเท่านั้น0) เช่น571= 1000111011ในไบนารี แยกการทำงานของเลขศูนย์และศูนย์ในการแทนเลขฐานสองนี้ เช่น1000111011→ 1, 000, 111, 0,11 เรียงลำดับการวิ่งจากที่ยาวที่สุดไปที่สั้นที่สุด เช่น1, 000, 111, 0, 11→ 000, 111, 11, 1,0 เขียนทับตัวเลขทั้งหมดในการวิ่งแต่ละครั้งด้วยการสลับ1และ0เริ่มต้นด้วย1เสมอ เช่น000, 111, 11, 1, 0→ 111, 000, 11, 0,1 ต่อผลลัพธ์เพื่อรับเลขฐานสองใหม่ เช่น111, 000, 11, 0, 1→ 1110001101= 909ในทศนิยม เมื่อคุณพล็อตค่าที่สร้างโดยกระบวนการนี้คุณจะได้กราฟที่สวยงาม: และหวังเป็นอย่างชัดเจนว่าเหตุใดฉันจึงเรียกลำดับผลลัพธ์ตามลำดับTemple Skyline : …

22
การวิเคราะห์ข้อความ
เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้ในสายอักขระที่รับประกันว่าจะมีอักขระ ASCII ที่พิมพ์ได้ยกเว้นพื้นที่และเป็นความยาวรูปสามเหลี่ยม (1, 3, 6, 10, 15, 15, ... ) พิมพ์หรือส่งคืนสายเดียวกัน แต่รูปร่างเป็นรูปสามเหลี่ยมโดยใช้ช่องว่าง ตัวอย่างบางส่วนจะแสดงสิ่งที่ฉันหมายถึง: ถ้าอินพุตเป็นRเอาต์พุตจะเป็น R ถ้าอินพุตเป็นcatเอาต์พุตจะเป็น c a t ถ้าอินพุตเป็นmonk3yเอาต์พุตจะเป็น m o n k 3 y ถ้าอินพุตเป็นmeanIngfu1เอาต์พุตจะเป็น m e a n I n g f u 1 ถ้าอินพุตเป็น^/\/|\/[]\เอาต์พุตจะเป็น ^ / \ / | \ / [ ] \ หากอินพุตเป็น …

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