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

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

21
จำลองการกดแป้น
งานของคุณคือการจำลองการกดแป้นที่ผู้ใช้พิมพ์ อินพุต อาเรย์สตริงหรือสตริงที่มีตัวคั่นที่คุณเลือก (นอกช่วง 32-126) ที่มี 'การกดแป้นพิมพ์' อย่างน้อยหนึ่งรายการ อาร์เรย์นี้จะมีสตริงสองประเภทเท่านั้น: การกดแป้นพิมพ์แบบพาสซีฟ (ตัวอักษรเดียว) และคำสั่ง (ตัวอักษรภายในเครื่องหมายวงเล็บ[ ]) การกดแป้นเรื่อย ๆ รหัสอักขระ ASCII [32-126] คำสั่ง: [B] : backspace (ลบอักขระตัวสุดท้ายที่เพิ่มหากมี) [C] : คัดลอกทุกสิ่งที่เขียนไปแล้ว [D] : ลบสิ่งที่เขียนทั้งหมด [P] : วางสิ่งที่คัดลอกมา เอาท์พุต สตริงที่ผลิตโดยการกดแป้น ตัวอย่าง ['H', 'e', 'l', 'l', 'o'] -> 'Hello' ['H', 'e', 'l', 'l', 'o', ' ', …
33 code-golf  string 

18
ค้นหาทศนิยมตำแหน่งที่ n ของ pi
มี30 ความท้าทายที่ทุ่มเทให้กับ piแต่ไม่มีใครขอให้คุณค้นหาทศนิยมที่ n ดังนั้น ... ท้าทาย สำหรับจำนวนเต็มใด ๆ ในช่วงของการ0 <= n <= 10000แสดงทศนิยมทศนิยมอันดับที่ n ของ pi กฎระเบียบ ทศนิยมเป็นตัวเลขทุกหลัง 3. โปรแกรมของคุณอาจเป็นฟังก์ชั่นหรือโปรแกรมเต็มรูปแบบ คุณต้องแสดงผลลัพธ์ในฐาน 10 คุณอาจได้รับnจากวิธีการอินพุตที่เหมาะสม (stdin, input (), พารามิเตอร์ฟังก์ชัน, ... ) แต่ไม่ฮาร์ดโค้ด คุณสามารถใช้การจัดทำดัชนีแบบ 1ถ้าเป็นของภาษาที่คุณเลือก คุณไม่ได้มีการจัดการกับข้อมูลที่ไม่ถูกต้อง ( n == -1, n == 'a'หรือn == 1.5) อนุญาตให้สร้างบิวด์อินได้ถ้าพวกมันรองรับทศนิยมอย่างน้อย 10k รันไทม์ไม่สำคัญเนื่องจากเป็นรหัสที่สั้นที่สุดและไม่ใช่รหัสที่เร็วที่สุด นี่คือcode-golfรหัสที่สั้นที่สุดในหน่วยไบต์ชนะ กรณีทดสอบ f(0) == …
33 code-golf  math  pi 

24
Loeschian หมายเลขนี้หรือไม่
จำนวนเต็มบวกkคือจำนวน Loeschianถ้า kสามารถแสดงเป็นi*i + j*j + i*jสำหรับi, jจำนวนเต็ม ตัวอย่างเช่นหมายเลข Loeschian บวกแรกคือ: 1( i=1, j=0); 3( i=j=1); 4( i=2, j=0); 7( i=2, j=1); 9( i=-3, j=3); ... โปรดทราบว่าi, jหารับkไม่ได้ที่ไม่ซ้ำกัน ตัวอย่างเช่น9สามารถสร้างด้วยi=3, j=0. ลักษณะอื่น ๆ ที่เทียบเท่าของตัวเลขเหล่านี้คือ: kสามารถแสดงเป็นi*i + j*j + i*jสำหรับi, jintegers เชิงลบ (สำหรับคู่ของจำนวนเต็มแต่ละi, jมีคู่ของ integers เชิงลบที่ทำให้เดียวกันk) มีชุดของkรูปหกเหลี่ยมที่ต่อเนื่องกันซึ่งก่อให้เกิด tesselation บนตารางหกเหลี่ยม (ดูภาพประกอบสำหรับk = 4และสำหรับk …
33 code-golf  math  number  number-theory  decision-problem  code-golf  kolmogorov-complexity  code-golf  sequence  code-golf  path-finding  chess  code-golf  string  ascii-art  kolmogorov-complexity  code-golf  math  arithmetic  code-golf  code-golf  number  code-golf  geometry  code-golf  math  code-golf  code-golf  kolmogorov-complexity  alphabet  code-golf  regular-expression  hexagonal-grid  king-of-the-hill  path-finding  java  code-golf  string  sorting  code-golf  string  grid  code-challenge  compression  code-golf  random  code-golf  sequence  arithmetic  code-golf  number  grid  tiling  code-golf  tips  code-golf  sequence  number-theory  recursion  code-golf  string  grid  code-golf  math  number  combinatorics  permutations  string  code-challenge  code-golf  sequence  number-theory  subsequence 

18
อัศวินหมายเลขของ Numpad
สำหรับตัวเลขที่ไม่เป็นศูนย์บนnumpadมาตรฐาน 789 456 123 พิจารณาวางอัศวินหมากรุกที่ตัวเลขใด ๆ และเคลื่อนไปรอบ ๆ ด้วยการกระโดดรูปตัว L ปกติจำนวนใด ๆ ติดตามจำนวนเต็มทศนิยมบวก จำนวนเต็มบวกใดที่สามารถแสดงออกได้ในลักษณะนี้? หนึ่งในนั้นคือ38ตั้งแต่อัศวินสามารถเริ่มต้นบนและเลื่อนไปทางซ้ายและขึ้นไป3 และยังเป็นไปได้8381383 3ตัวเองเป็นไปได้ถ้าไม่มีการกระโดด (ซึ่งได้รับอนุญาต) 5เป็นเช่นกัน แต่ไม่สามารถเข้าถึงตัวเลขอื่น ๆ ได้จาก5ดังนั้นจึงเป็นหมายเลขเดียวที่ตัวเลขนั้น5ปรากฏขึ้น เขียนโปรแกรมหรือฟังก์ชั่นที่รับค่าจำนวนเต็มฐานสิบบวก (คุณอาจใช้มันเป็นสตริงได้หากต้องการ) และพิมพ์หรือส่งกลับค่าความจริงหากตัวเลขสามารถแสดงได้โดยอัศวินบนเลขฐานแปดตามวิธีที่อธิบายไว้falsyค่า รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ Tiebreaker เป็นคำตอบก่อนหน้า ตัวอย่าง Truthy: 1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 18, 38, 61, 81, 294, 349, 381, 383, 729, 767, …

5
ทำฉากสี่เหลี่ยม
โปรแกรมเมอร์ทุกคนรู้ว่าวงเล็บ[]{}()<>สนุกมาก เพื่อทำให้ความสนุกทวีความรุนแรงมากขึ้นกลุ่มของวงเล็บสานแบบสานสามารถเปลี่ยนเป็นไดอะแกรมน่ารักและคลุมเครือ [{][<(]})>(())สมมติว่าคุณมีสตริงที่มีวงเล็บสมดุลเช่น ขั้นตอนที่หนึ่งคือการหมุนสตริง 45 องศาตามเข็มนาฬิกา (ใน Mathematica สามารถทำได้เกือบRotate[ur_string,-pi/4]) นี่คือผลลัพธ์ของขั้นตอนแรก: [ { ] [ < ( ] } ) > ( ( ) ) ถัดไปเพิ่มช่องว่างในแนวทแยงระหว่างตัวละครแต่ละตัว [ { ] [ < ( ] } ) > ( ( ) ) จากนั้นเริ่มต้นด้วยวงเล็บปีกกาซ้ายสุดและวาดสี่เหลี่ยมระหว่างมันและคู่ของมันในอาชญากรรม +---+ | | | { | | | +---+ [ …

30
เขียนโปรแกรมเพื่อยืดหยุ่นสตริง
คำกริยาที่ดีในชื่อ เขียนโปรแกรมที่ได้รับสายป้อนข้อมูลจะ "ยืดหยุ่น" สายนี้และส่งออกผลลัพธ์ การทำให้สตริงยืดหยุ่นนั้นทำได้ดังนี้: อักขระตัวแรกจะปรากฏขึ้นหนึ่งครั้ง อักขระตัวที่สองแสดงขึ้นสองครั้ง อักขระที่สามแสดงขึ้นสามครั้งและต่อไปเรื่อย ๆ อย่างที่คุณเห็นจำนวนการทำซ้ำของตัวละครบางตัวนั้นเกี่ยวข้องกับดัชนีของตัวละครซึ่งตรงข้ามกับที่เกิดขึ้นก่อนหน้าในสตริง คุณสามารถคาดหวังว่าจะได้รับเฉพาะอักขระ ASCII ที่พิมพ์ได้ จากลิงค์ต่อไปนี้อักขระเหล่านี้มีค่าทศนิยม 32-126 ตัวอย่าง: Why: Whhyyy SKype: SKKyyyppppeeeee LobbY: LoobbbbbbbYYYYY (โปรดสังเกตว่ามี 7 b อย่างไรตั้งแต่ b แรกแสดง 3 ครั้งและ b ที่สองแสดง 4 ครั้งทำให้รวม 7 b) A and B: A aaannnnddddd BBBBBBB ไบต์ที่สั้นที่สุดชนะ :)
33 code-golf  string 

30
รวมอาเรย์
งานง่าย: รวมอาเรย์ของ ints การรวมอาเรย์นี้ประกอบด้วยสิ่งต่อไปนี้: อินสแตนซ์ทั้งหมดของ 0 ต้องถูกย้ายไปยังจุดสิ้นสุดของอาร์เรย์ ไม่ควรมี 0s ระหว่างจำนวนเต็มที่ไม่ใช่ศูนย์ ดัชนีที่ไม่เป็นศูนย์ทั้งหมดควรรักษาคำสั่งซื้อของตน ท้าทาย รวมอาเรย์ด้วยจำนวนไบต์น้อยที่สุด คุณกำลังรวมอาเรย์ของความยาวแบบสุ่มด้วยขนาดสูงสุดถึงภาษาของคุณด้วยจำนวนเต็มแบบสุ่ม การป้อนข้อมูลอาจเป็นวิธีที่เป็นธรรมชาติสำหรับภาษาของคุณ ตัวอย่าง อินพุต 0 5 8 8 3 5 1 6 8 4 0 3 7 5 6 4 4 7 5 6 7 4 4 9 1 0 5 7 9 3 0 2 2 …

29
มันเป็นรหัสคำนำหน้า?
ในทฤษฎีข้อมูล "รหัสคำนำหน้า" เป็นพจนานุกรมที่ไม่มีคีย์ใดเป็นคำนำหน้าของอีก กล่าวอีกนัยหนึ่งนี่หมายความว่าไม่มีสตริงใดเริ่มต้นด้วยสตริงอื่นใด ตัวอย่างเช่น{"9", "55"}เป็นรหัสคำนำหน้า แต่{"5", "9", "55"}ไม่ใช่ ข้อได้เปรียบที่ใหญ่ที่สุดของเรื่องนี้คือข้อความที่เข้ารหัสสามารถเขียนลงโดยไม่มีตัวคั่นระหว่างพวกเขาและมันจะยังสามารถถอดรหัสได้โดยไม่ซ้ำกัน สิ่งนี้แสดงให้เห็นในอัลกอริธึมการบีบอัดเช่นการเข้ารหัส Huffmanซึ่งจะสร้างรหัสคำนำหน้าที่ดีที่สุดเสมอ งานของคุณง่าย: ได้รับรายการของสตริงตรวจสอบว่ามันเป็นรหัสคำนำหน้าที่ถูกต้องหรือไม่ ข้อมูลของคุณ: จะมีรายการของสตริงในรูปแบบที่เหมาะสม จะมีสตริง ASCII ที่พิมพ์ได้เท่านั้น จะไม่มีสตริงว่างเปล่า ผลลัพธ์ของคุณจะเป็นค่าจริง / เท็จ : ความจริงถ้ามันเป็นรหัสคำนำหน้าที่ถูกต้องและเป็นเท็จถ้ามันไม่ ต่อไปนี้เป็นกรณีทดสอบจริง: ["Hello", "World"] ["Code", "Golf", "Is", "Cool"] ["1", "2", "3", "4", "5"] ["This", "test", "case", "is", "true"] ["111", "010", "000", "1101", "1010", "1000", "0111", "0010", …

30
เปิดเบราว์เซอร์เพื่อ http://codegolf.stackexchange.com
งานของคุณคือเพื่อเปิดหน้าต่างเบราว์เซอร์ของเบราว์เซอร์เริ่มต้นที่จะhttp://codegolf.stackexchange.com รหัสของคุณจะต้องเปิดเบราว์เซอร์เองและไม่สามารถพึ่งพาเปิดได้ นี่คือรหัสกอล์ฟดังนั้นคำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ

15
ค้นหาการซิงโครไนซ์
รับอินพุตของสตริงที่ประกอบด้วยqs ซึ่งเป็นตัวแทนของบันทึกย่อประจำไตรมาสและes ที่เป็นตัวแทนของโน้ตที่แปดให้ส่งออกดัชนีของบันทึกประจำไตรมาสที่มีการทำข้อมูลให้ตรงกัน การทำข้อมูลให้ตรงกันนั้นซับซ้อน แต่สำหรับวัตถุประสงค์ของการท้าทายนี้คำจำกัดความของเรา "ทำข้อมูลให้ตรงกัน" จะง่ายมาก: บันทึกไตรมาสที่เริ่มต้นที่ "ผิดจังหวะ" - นั่นคือเต้นนับเป็น "และ" ใน n / 4 เวลา. สิ่งนี้อาจถูกกำหนดให้เป็นบันทึกประจำไตรมาสใด ๆ ที่นำหน้าด้วยเลขคี่แปดของเลขคี่ ตัวอย่างเช่นบันทึกย่อที่มีเครื่องหมาย*ด้านล่างนี้จะถูกพิจารณาว่ามีการทำข้อมูลให้ตรงกันและดัชนีของพวกเขาจะแสดงด้วย: eqqeqqeqqe ** ** 12 78 Output: 1 2 7 8 ข้อมูลที่ป้อนจะประกอบด้วยจำนวนหน่วยวัดทั้งหมดในเวลา 4/4 (บันทึกประจำไตรมาสคือหนึ่งในสี่ของการวัดและโน้ตที่แปดคือแปดของการวัด) (อินพุตจะไม่มีวันว่าง) เอาต์พุตอาจเป็นสตริงเดี่ยวที่มีองค์ประกอบคั่นด้วยตัวคั่นใด ๆ ที่ไม่มีตัวเลขหรืออาร์เรย์ / รายการ / ฯลฯ ผลลัพธ์อาจเป็นแบบอิง 1 (เช่นดัชนีแรกคือ 1 แทน 0) หากคุณต้องการและอาจอยู่ในฐานตัวเลขใด ๆ …
33 code-golf  music 

30
ช่วยฉันเปิดกล่อง
ฉันมีกล่อง ASCII-art และฉันต้องการโปรแกรมเพื่อเปิด ตัวอย่าง การป้อนข้อมูล: ------- | | |_____| เอาท์พุท: / / / / / / / | | |_____| สเปค บรรทัดแรกจะประกอบด้วย-อย่างน้อย 3 บรรทัดเท่านั้น แถวกลางจะเริ่มต้นด้วย|ช่องว่างและลงท้ายด้วย| แถวกลางทั้งหมดจะเหมือนกัน แถวสุดท้ายจะเริ่มต้นด้วย|have _และลงท้ายด้วย a| แถวทั้งหมดจะมีความยาวเท่ากัน เปิดกล่อง: แต่ละรายการ-ควรถูกแทนที่ด้วย a /ในเส้นและตำแหน่งจากน้อยไปหามาก

18
ขาอื่น ๆ ของพีธากอรัส
พีธากอรัสทำขาของเขาปลิวไปในสงคราม มันจะต้องถูกตัดออกและแม้ว่าเขาเกือบจะเสียชีวิต แต่เขาก็ผ่านเข้ามาและทำการกู้คืนอย่างสมบูรณ์ ตอนนี้หลังจากปีที่เดินกับไม้ค้ำเขาได้รับสิทธิพิเศษในการรับขาเทียม! แม้ว่ามีหลายอย่างที่เหมาะสม แต่มีอะไรบ้าง งาน รับจำนวนเต็มบวกเป็นอินพุตที่ความยาวของขาข้างหนึ่งของพีทาโกรัสทริปเปิลเอาท์พุทเป็นไปได้ทั้งหมดสำหรับขาอีกข้าง ตัวอย่างเช่น Pythagorean triple ที่เล็กที่สุดคือ (3,4,5) ซึ่งเป็นรูปสามเหลี่ยมที่มีความยาวสองขา 3 และ 4 และสามเหลี่ยมด้านยาว 5 ตัวอย่าง Leg:5 12 Leg:28 21 45 96 195 Leg:101 5100 Leg:1001 168 468 660 2880 3432 4080 5460 6468 10200 38532 45540 71568 501000 กฎระเบียบ nการป้อนข้อมูลจะเป็นจำนวนเต็มบวกเดียว เอาต์พุตอาจอยู่ในลำดับใด ๆ โดยมีตัวคั่นใด ๆ ในฐานใด …
33 code-golf 

5
เครื่องจำลองแรงโน้มถ่วง
คำแถลง คุณจะได้รับชุดของลูกตกอยู่ในตาราง 2D ตารางนี้ล้อมรอบด้วยกำแพงที่ไม่เปลี่ยนรูปและไม่สามารถแตกได้ดังนั้นการกระทำทั้งหมดที่อยู่ในนั้น งานของคุณคือการกำหนดสถานการณ์ของสถานการณ์ที่จะเกิดขึ้นหลังจากแรงโน้มถ่วงทำงานทั้งหมด องค์ประกอบภายในกริด - พื้นไม่เปลี่ยนทิศทางของลูกบอลตก \ เลื่อนไปทางขวาเปลี่ยนเส้นทางของลูกบอลหนึ่งตำแหน่ง (1) ทางขวา / สไลด์ซ้ายเปลี่ยนเส้นทางของลูกบอลหนึ่งตำแหน่งที่เหลือ (1) o ลูกบอล. กฎระเบียบ ลูกตก ชั้นและภาพนิ่งไม่ตก หากลูกบอลกระทบกับสไลเดอร์ที่จะผ่านกำแพง ( \#หรือ#/) หรือข้ามผ่านพื้นสไลด์จะทำหน้าที่เป็นพื้น เมื่อลูกบอลกระทบกับลูกบอลอีกลูกหนึ่งจะกลายเป็นลูกบอลหนึ่งลูก แต่เพิ่มพลังของพวกเขาให้เท่ากับจำนวนลูกทั้ง ลูกใหม่ (เข้าร่วม) จะยังคงทำงานตามปกติ เมื่อลูกบอลไม่สามารถเคลื่อนที่ได้อีกต่อไปมันจะถูกแทนที่ด้วยพลังของมัน พลังของลูกบอลจะต้องไม่เกิน 9 อินพุต กริดจะได้รับในตัวแปรสตริงที่มีชื่อสั้นที่สุดในภาษาที่คุณเลือก โดยค่าเริ่มต้นเราจะใช้aเป็นอินพุต ตัวอย่างของอินพุตตรงตามที่ได้รับ: ##########\n# \ #\n#o #\n# - -\o #\n#/- \ #\n# \oo-/\#\n#-/ \ /#\n# \ \ …

11
กำลังเล่นเพลงอะไร
แรงบันดาลใจจากxkcd นี้ คุณทำงานให้กับแซมและพวกเขามีโครงการสำหรับคุณ ลูกค้าบางรายบ่นว่าแอพของพวกเขาใช้พื้นที่มากเกินไปในโทรศัพท์ของพวกเขาดังนั้นพวกเขาต้องการให้คุณเขียนโค้ดแอพเวอร์ชัน lite น่าเสียดายที่รหัสที่มีอยู่ของคุณสามารถเข้าใจคำว่า "na" เท่านั้นและคุณจะต้องจัดส่งเร็ว ๆ นี้ ไม่เป็นไรเราจะทำดีที่สุดกับสิ่งที่เรามี ความท้าทาย คุณต้องเขียนโปรแกรมเต็มรูปแบบที่รับอินพุตของผู้ใช้หรือรับอาร์กิวเมนต์บรรทัดคำสั่งและพิมพ์ชื่อและศิลปินของเพลง เนื่องจากเราพยายามแก้ไขลูกค้าที่บ่นเกี่ยวกับขนาดของโปรแกรมรหัสของคุณจะต้องสั้นที่สุด อินพุตจะเป็นสตริงที่ประกอบด้วย na ทั้งหมดโดยมีช่องว่างเดียวระหว่างพวกเขา ตัวพิมพ์เล็ก / ตัวพิมพ์ใหญ่โดยพลการ นี่ถือว่าเป็นอินพุตที่ถูกต้อง: Na Na nA na NAนี่คืออินพุตที่ไม่ถูกต้อง: nah nah NA naNa bananaคุณต้องพิจารณาว่าเพลงกำลังเล่นอะไรและพิมพ์ออกมาในรูปแบบนี้: Song: <trackname> Artist: <artist> หากอินพุทของคุณมีค่าเท่ากับ 8 na สิ่งนี้จะตรงกับสองเพลงแยกดังนั้นคุณต้องพิมพ์ทั้งสอง: Song: Batman Theme Artist: Neal Hefti และ Song: Na Na Hey …

4
แยก ASCII
กำหนด 95 อักขระที่พิมพ์ได้ใน ASCII บวกบรรทัดใหม่แยกมันออกเป็นสองกลุ่มเท่ากับ 48กลุ่มตัวอักษร (ต่อไปนี้เรียกว่ากลุ่ม A และกลุ่ม B) สร้างการแมปแบบหนึ่งต่อหนึ่งที่คุณเลือก (คุณมีดุลยพินิจโดยรวม) ระหว่างสองกลุ่ม กล่าวอีกนัยหนึ่งคือAอาจแมปไปaและกลับกัน แต่Aอาจแมปไป>และกลับกันหากนั่นคือสิ่งที่คุณต้องการสำหรับโปรแกรมของคุณ เมื่อคุณแยก ASCII ออกเป็นสองกลุ่มแล้วให้เขียนสองโปรแกรมและ / หรือฟังก์ชั่นโดยใช้เฉพาะอักขระในแต่ละกลุ่มตามลำดับ กล่าวอีกนัยหนึ่งให้เขียนหนึ่งโปรแกรม / ฟังก์ชั่นที่ใช้เฉพาะอักขระในกลุ่ม A และอีกหนึ่งโปรแกรม / ฟังก์ชั่นที่ใช้อักขระในกลุ่ม B เท่านั้น โปรแกรมเหล่านี้จะต้องสามารถรับอักขระหนึ่งตัวเป็นอินพุตได้ โปรแกรมที่เขียนด้วยอักขระในกลุ่ม A ควรเอาท์พุท / ส่งคืนอักขระเดียวกันหากอินพุตเป็นกลุ่มอักขระ A และกลุ่มอักขระ A ที่แม็พหากได้รับอักขระกลุ่ม B; โปรแกรมกลุ่ม A ควรแสดงอักขระกลุ่ม A เสมอ ในทำนองเดียวกันโปรแกรมกลุ่ม B ควรเอาท์พุทอักขระเดียวกันถ้าเป็นอักขระกลุ่ม B และอักขระกลุ่ม …

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