คำถามติดแท็ก compression

เกี่ยวข้องกับการบีบอัดหรือคลายการบีบอัดข้อมูลโดยพลการ ความท้าทายที่เกี่ยวข้องกับการบีบอัดอินพุตเฉพาะหนึ่ง ๆ ควรติดแท็ก [kolmogorov-complex]

23
เขียน Moby Dick ประมาณ
นี่คือไฟล์ข้อความ ASCII 1.2Mbที่มีข้อความของMoby-Dickของ Herman Melville หรือปลาวาฬ งานของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่น (หรือคลาส ฯลฯ - ดูด้านล่าง) ซึ่งจะให้ไฟล์นี้ทีละตัวอักษรและในแต่ละขั้นตอนจะต้องเดาตัวละครต่อไป นี่คือรหัสที่ท้าทาย คะแนนของคุณจะเป็น 2*L + E โดยที่Lขนาดของการส่งของคุณเป็นไบต์และEเป็นจำนวนอักขระที่คาดเดาไม่ถูกต้อง คะแนนต่ำสุดชนะ รายละเอียดเพิ่มเติม การส่งของคุณจะเป็นโปรแกรมหรือฟังก์ชั่น (ฯลฯ ) ที่จะถูกเรียกหรือเรียกใช้หรือส่งข้อมูลหลายครั้ง (1215235 ครั้งเป็นที่แน่นอน.) เมื่อมีการเรียกร้องให้n วันเวลาที่มันจะได้รับn THตัวละครwhale.txtหรือwhale2.txtและจะต้องส่งออกคาดเดาสำหรับ ( 1 + n ) THตัวอักษร Eส่วนประกอบของคะแนนของมันจะเป็นจำนวนรวมของตัวละครว่ามันคาดเดาไม่ถูกต้อง การส่งส่วนใหญ่จะต้องเก็บสถานะบางอย่างในระหว่างการร้องขอเพื่อให้พวกเขาสามารถติดตามจำนวนครั้งที่พวกเขาได้รับการเรียกและสิ่งที่อินพุตก่อนหน้านี้ คุณสามารถทำได้โดยการเขียนไปยังไฟล์ภายนอกโดยใช้staticหรือตัวแปรทั่วโลกโดยการส่งชั้นเรียนมากกว่าฟังก์ชั่นการใช้รัฐ monad หรือสิ่งอื่นที่ทำงานให้กับภาษาของคุณ การส่งของคุณจะต้องมีรหัสใด ๆ ที่จำเป็นในการเริ่มต้นสถานะของมันก่อนการขอร้องครั้งแรก โปรแกรมของคุณควรรันแบบไม่แน่นอนเพื่อที่จะทำการเดาแบบเดียวกันโดยให้อินพุตเหมือนกัน (และจะได้รับคะแนนเดียวกันเสมอ) คำตอบของคุณจะต้องมีไม่เพียง แต่การส่งของคุณ แต่ยังรวมถึงรหัสที่คุณใช้ในการคำนวณEคะแนนส่วนนั้นด้วย ไม่จำเป็นต้องเขียนในภาษาเดียวกับที่คุณส่งและจะไม่ถูกนับรวมกับจำนวนไบต์ คุณได้รับการสนับสนุนให้อ่านได้ …

30
เพ้นท์ Starry Night ตามรหัสในหน่วยความจำ 1kB
หมายเหตุ : Anders Kaseorg ได้รับการยอมรับในตอนนี้เพื่อดึงดูดความสนใจไปยังคำตอบที่ยอดเยี่ยมของเขา แต่ความท้าทายนั้นไม่ได้เกิดขึ้น! ยังคงมีรางวัล 400 แต้มสำหรับทุกคนที่รับคะแนนสูงสุดโดยไม่ต้องใช้การบีบอัดในตัว ด้านล่างนี้เป็นภาพ386x320png ของ Starry Night ของ van Gogh เป้าหมายของคุณคือการทำซ้ำภาพนี้ให้ใกล้เคียงที่สุดเท่าที่จะทำได้ในโค้ดไม่เกิน 1024 ไบต์ สำหรับวัตถุประสงค์ของการท้าทายนี้ความใกล้ชิดของภาพจะถูกวัดโดยความแตกต่างยกกำลังสองในค่าพิกเซล RGB ตามที่อธิบายไว้ด้านล่าง นี่คือรหัสที่ท้าทาย คะแนนจะคำนวณโดยใช้สคริปต์การตรวจสอบด้านล่าง คะแนนต่ำสุดชนะ รหัสของคุณจะต้องเป็นไปตามข้อ จำกัด ต่อไปนี้: มันจะต้องเป็นโปรแกรมที่สมบูรณ์ มันจะต้องส่งออกภาพในรูปแบบที่สามารถอ่านได้โดยสคริปต์ตรวจสอบด้านล่างซึ่งทำงานในเครื่องของฉัน สคริปต์ใช้ไลบรารี PIL ของ Python ซึ่งสามารถโหลดรูปแบบไฟล์ได้หลากหลายรวมถึง png, jpg และ bmp มันจะต้องมีอยู่ในตัวเองอย่างสมบูรณ์โดยไม่ต้องป้อนข้อมูลและไม่โหลดไฟล์ (นอกเหนือจากการนำเข้าห้องสมุดซึ่งได้รับอนุญาต) หากภาษาหรือไลบรารีของคุณมีฟังก์ชั่นที่ส่งออก Starry Night คุณจะไม่ได้รับอนุญาตให้ใช้ฟังก์ชันนั้น มันควรจะทำงานได้อย่างแน่นอนโดยสร้างผลลัพธ์ที่เหมือนกันทุกครั้ง ขนาดของภาพที่ส่งออกจะต้องเป็น 386x320 เพื่อหลีกเลี่ยงข้อสงสัย: คำตอบที่ถูกต้องจะต้องใช้ภาษาโปรแกรมตามกฎ …

30
สร้าง“ H” จาก“ H” ที่เล็กลง
ท้าทาย สร้างฟังก์ชั่นหรือโปรแกรมที่เมื่อได้รับจำนวนเต็มsizeทำต่อไปนี้: ถ้าsizeเท่ากับ 1 เอาต์พุต H H HHH H H ถ้าsizeมากกว่า 1 เอาต์พุต X X XXX X X โดยที่Xเอาต์พุตของโปรแกรม / ฟังก์ชั่นสำหรับsize - 1 (หากคุณต้องการคุณอาจมีกรณีฐานสอดคล้องกับ0ตราบใดที่คุณระบุในคำตอบของคุณ) รูปแบบผลลัพธ์ใด ๆ ต่อไปนี้เป็นที่ยอมรับแล้วแต่จำนวนใดจะสะดวกกว่าสำหรับคุณ: สตริงของโครงสร้างที่ต้องการพร้อมอักขระสองตัวที่แตกต่างกันซึ่งสอดคล้องกับHและspace อาร์เรย์สองมิติพร้อมโครงสร้างที่ต้องการโดยมีค่าแตกต่างกันสองค่าที่สอดคล้องกับHและspace อาร์เรย์ / รายการสตริงที่มีหนึ่งบรรทัดของเอาต์พุตในแต่ละสตริงโดยมีค่าแตกต่างกันสองค่าที่สอดคล้องกับHและspace อนุญาตให้มีช่องว่างนำหน้าตราบใดที่มีช่องว่างนำหน้าจำนวนหนึ่งคงที่ในแต่ละบรรทัด อักขระเอาต์พุตที่แตกต่างกันสองตัวสามารถขึ้นอยู่กับสิ่งที่คุณเลือกตราบใดที่อักขระเหล่านั้นแตกต่างกัน ระบุรูปแบบผลลัพธ์ที่โค้ดของคุณส่งคืน กรณีทดสอบ 1 H H HHH H H 2 H H H H HHH HHH H …
73 code-golf  ascii-art  fractal  code-golf  code-golf  string  code-golf  string  matrix  code-golf  graph-theory  maze  binary-matrix  code-golf  kolmogorov-complexity  random  code-challenge  metagolf  test-battery  brain-flak  text-processing  code-golf  matrix  code-golf  number-theory  primes  code-golf  string  matrix  code-golf  binary  bitwise  code-golf  number  factorial  floating-point  code-golf  number  sequence  code-golf  sequence  cops-and-robbers  code-golf  sequence  cops-and-robbers  code-golf  string  code-golf  math  decision-problem  number-theory  integer  code-golf  number  decision-problem  functional-programming  code-golf  array-manipulation  matrix  code-golf  string  classification  string  code-challenge  binary  compression  decode  code-golf  string  string  code-challenge  balanced-string  encode  code-golf  number-theory  integer  base-conversion  code-golf  math  number-theory  geometry  abstract-algebra  code-golf  array-manipulation  sorting  optimization  code-golf  math  geometry  image-processing  generation  code-golf  string  cops-and-robbers  repeated-transformation  grammars  cops-and-robbers  repeated-transformation  grammars  code-challenge  restricted-source  tips  source-layout  javascript  code-challenge  kolmogorov-complexity  restricted-source  code-golf  combinatorics  counting  math  fastest-code  linear-algebra  code-golf  math  permutations  matrix  linear-algebra  code-golf  string  decision-problem  restricted-source  code-golf  number  array-manipulation  subsequence  code-golf  number  array-manipulation  matrix  code-golf  brainfuck  code-golf  color  code-golf  quine  source-layout  code-golf  subsequence  code-golf  string  ascii-art  code-golf  string  ascii-art  alphabet  code-golf  decision-problem  interpreter  hexagonal-grid  halting-problem  code-golf  string  polynomials  calculus  code-golf  math  decision-problem  matrix  complex-numbers  code-golf  random  code-golf  number  arithmetic 

10
เข้ารหัสรูปภาพเป็นทวีต (รุ่นอัดรูปภาพ Extreme) [ปิด]
อิงจากความท้าทายในการเข้ารหัสภาพ Twitter ที่ประสบความสำเร็จอย่างมากที่ Stack Overflow หากภาพมีค่า 1,000 คำคุณสามารถใส่ภาพเท่าใดในขนาด 114.97 ไบต์? ฉันขอท้าให้คุณใช้วิธีการทั่วไปในการบีบอัดภาพลงในความคิดเห็น Twitter มาตรฐานที่มีเฉพาะข้อความ ASCII ที่พิมพ์ได้ กฎ: คุณต้องเขียนโปรแกรมที่สามารถถ่ายภาพและเอาท์พุทข้อความที่เข้ารหัส ข้อความที่สร้างขึ้นโดยโปรแกรมจะต้องมีความยาวไม่เกิน 140 ตัวอักษรและจะต้องประกอบด้วยตัวอักษรที่มีจุดรหัสอยู่ในช่วง 32-126 เท่านั้น คุณต้องเขียนโปรแกรม (อาจเป็นโปรแกรมเดียวกัน) ที่สามารถนำข้อความที่เข้ารหัสแล้วออกไปเป็นรูปถ่ายที่ถอดรหัสได้ โปรแกรมของคุณสามารถใช้ไลบรารีและไฟล์ภายนอก แต่ไม่ต้องการการเชื่อมต่ออินเทอร์เน็ตหรือการเชื่อมต่อกับคอมพิวเตอร์เครื่องอื่น กระบวนการถอดรหัสไม่สามารถเข้าถึงหรือมีภาพต้นฉบับในทางใดทางหนึ่ง โปรแกรมของคุณต้องยอมรับรูปภาพอย่างน้อยหนึ่งรูปแบบ (ไม่จำเป็นต้องมากกว่านี้): บิตแมป, JPEG, GIF, TIFF, PNG หากภาพตัวอย่างบางส่วนหรือทั้งหมดไม่ได้อยู่ในรูปแบบที่ถูกต้องคุณสามารถแปลงภาพเหล่านั้นด้วยตนเองก่อนที่จะบีบอัดโดยโปรแกรมของคุณ ตัดสิน: นี่เป็นความท้าทายที่ค่อนข้างเป็นอัตวิสัยดังนั้นฉันจะตัดสิน (ในที่สุด) ผู้ตัดสิน ฉันจะมุ่งเน้นการตัดสินของฉันเกี่ยวกับปัจจัยสำคัญสองสามข้อที่แสดงไว้ด้านล่างเพื่อลดความสำคัญ: ความสามารถในการทำงานที่เหมาะสมในการบีบอัดภาพที่หลากหลายรวมถึงภาพที่ไม่อยู่ในรูปตัวอย่าง ความสามารถในการรักษาโครงร่างขององค์ประกอบหลักในภาพ ความสามารถในการบีบอัดสีขององค์ประกอบหลักในภาพ ความสามารถในการรักษาโครงร่างและสีของรายละเอียดเล็กน้อยในภาพ เวลาบีบอัด แม้ว่าจะไม่สำคัญเท่ากับการบีบอัดรูปภาพ แต่โปรแกรมที่เร็วกว่าก็ดีกว่าโปรแกรมที่ทำงานช้ากว่าที่ทำแบบเดียวกัน การส่งของคุณควรรวมถึงภาพที่เกิดขึ้นหลังจากคลายการบีบอัดพร้อมกับความคิดเห็น Twitter …

10
เทียนน้อยเป็นเรื่องน่าเศร้า วาดเขาเป็นก้อนเมฆเพื่อให้กำลังใจเขา
เทียนน้อยเป็นเรื่องน่าเศร้า วาดเขาเป็นก้อนเมฆเพื่อให้กำลังใจเขา หมายเหตุ: การวาดภาพบนคลาวด์จะไม่ทำให้เขามีกำลังใจ วงกลมสามารถนิยามเป็น 3-tuple (x,y,r)โดยที่xตำแหน่ง x ของวงกลมบนระนาบคาร์ทีเซียนyคือตำแหน่ง y ของวงกลมบนระนาบคาร์ทีเซียนและrเป็นรัศมีของวงกลม xและyอาจเป็นลบ rเป็นบวกเสมอ อินพุตเป็นรายการของวงกลมในรูปแบบของช่องว่างคั่น 3-tuples ตัวอย่างเช่น 3,1,1 3,2,1.5 1,2,0.7 0.9,1.2,1.2 1,0,0.8 3,1,1หมายถึง "วงกลมที่มีจุดศูนย์ที่3,11 รัศมี. 3,2,1.5หมายความว่า" วงกลมที่มีจุดศูนย์กลางที่ A 3,2พร้อมกับ 1.5 รัศมี หากเราวาดวงกลมทั้งหมดของอินพุตบนกราฟดูเหมือนว่านี้ (ฉันได้รวมเส้นกริดและป้ายกำกับเพื่อความชัดเจนเท่านั้นพวกเขาไม่จำเป็นต้องใช้): สังเกตว่าวงกลมทั้งหมดกลมกลืนกันอย่างไร นั่นคือพวกเขาทั้งหมดซ้อนทับกันเพื่อให้เกิดกลุ่มใหญ่กลุ่มหนึ่งโดยไม่มีกลุ่มวงกลมเล็ก ๆ แยกออกจากส่วนที่เหลือ อินพุตรับประกันว่าจะเหนียวแน่น สมมติว่าตอนนี้เราวาดเส้นที่เดินทางรอบ "เส้นขอบ" ที่เกิดจากวงกลมเหล่านี้โดยไม่มีเส้นอื่นใด มันจะเหมือนกับการวาดเส้นขอบของเงาที่เกิดจากวงกลมทั้งหมด เมฆที่เกิดขึ้นจะมีลักษณะเช่นนี้: ดังนั้นคลาวด์นี้จึงถูกสร้างขึ้นโดยการวาดเฉพาะส่วนโค้งของวงกลมในอินพุตที่ก่อตัวเป็นเส้นขอบ กล่าวอีกนัยหนึ่งระบบคลาวด์เกิดจากการวาดส่วนโค้งที่ไม่ได้อยู่ในวงกลมอื่น โปรแกรมของคุณจะป้อนข้อมูลในแบบฟอร์มที่อธิบายข้างต้นและส่งภาพที่แสดงคลาวด์ที่เกิดขึ้น รูปร่างโดยรวมของคลาวด์จะต้องถูกต้อง แต่ขนาดสีความหนาของเส้นและลักษณะของจุดยอดนั้นขึ้นอยู่กับคุณ โปรดทราบว่าคลาวด์ต้องสามารถมองเห็นได้ดังนั้นคุณไม่สามารถดึงบางสิ่งบางอย่างเช่น "โปรแกรมนี้วาดคลาวด์สีขาวบนพื้นหลังสีขาว", "โปรแกรมนี้วาดคลาวด์ในระดับที่เล็กที่สุด", …

30
สร้างเมทริกซ์เอกลักษณ์
ความท้าทายนั้นง่ายมาก กำหนดอินพุตจำนวนเต็มnส่งออกn x nเมทริกซ์เอกลักษณ์ เมทริกซ์เอกลักษณ์เป็นข้อมูลที่มีการ1ขยายจากด้านบนซ้ายลงไปด้านล่างขวา คุณจะเขียนโปรแกรมหรือฟังก์ชั่นที่จะส่งกลับหรือแสดงเมทริกซ์เอกลักษณ์ที่คุณสร้างขึ้น ผลลัพธ์ของคุณอาจเป็นอาร์เรย์ 2 มิติหรือตัวเลขคั่นด้วยช่องว่าง / แท็บและบรรทัดใหม่ ตัวอย่างอินพุทและเอาท์พุท 1: [[1]] 2: [[1, 0], [0, 1]] 3: [[1, 0, 0], [0, 1, 0], [0, 0, 1]] 4: [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]] 5: [[1, 0, 0, …

9
การบีบอัดข้อความและการบีบอัด -“ ไม่อีกแล้ว”
จากการอภิปรายเมื่อเร็ว ๆ นี้เกี่ยวกับการใช้เครื่องมือบีบอัดในโค้ดกอล์ฟฉันคิดว่ามันเป็นความท้าทายที่ดีในการเขียนตัวบีบอัดข้อความและตัวขยายการบีบอัดของคุณเอง ท้าทาย: เขียนโปรแกรมสองโปรแกรม : โปรแกรมหนึ่งเพื่อบีบอัดข้อความ ASCII เป็นลำดับไบต์และอีกโปรแกรมหนึ่งเพื่อขยายไฟล์ โปรแกรมไม่จำเป็นต้องเป็นภาษาเดียวกัน โปรแกรมแรกควรอ่านส่วนของข้อความ ASCII (จากไฟล์หรือจากอินพุตมาตรฐานหรือใช้กลไกใดก็ตามที่เป็นธรรมชาติที่สุดในภาษา) และส่งออกเวอร์ชันบีบอัดของมัน (เอาท์พุทที่บีบอัดอาจประกอบด้วยหรือโดยพลการไบต์ไม่จำเป็นต้องอ่าน) โปรแกรมที่สองควรอ่านผลลัพธ์ของแรกและสร้างข้อความอินพุตเดิม เกณฑ์การให้คะแนน: คะแนนของการแก้ปัญหาจะเป็นผลรวมของการนับสามต่อไปนี้: ความยาวของคอมเพรสเซอร์โปรแกรมในตัวละคร ความยาวของการส่งออกของคอมเพรสเซอร์ได้รับการป้อนข้อมูลการทดสอบด้านล่างไบต์ ความยาวของ decompressorโปรแกรม (ถ้าแตกต่างจากคอมเพรสเซอร์) ในตัวละคร คุณควรสังเกตการนับทั้งสามและผลรวมของคำตอบของคุณ ตั้งแต่นี้เป็นรหัสกอล์ฟที่ต่ำกว่าคะแนนที่ดีกว่า กฎและข้อ จำกัด : คุณไม่สามารถใช้เครื่องมือหรือไลบรารีการบีบอัดหรือการคลายการบีบอัดใด ๆ ที่มีอยู่ก่อนแม้ว่าจะมาพร้อมกับภาษาที่คุณเลือก หากมีข้อสงสัยเกี่ยวกับการอนุญาตให้ใช้เครื่องมือหรือฟังก์ชั่นที่กำหนดโปรดถาม โปรแกรมคอมเพรสเซอร์ของคุณต้องสามารถจัดการอินพุตที่ประกอบด้วยข้อความ ASCII ที่พิมพ์ได้รวมถึงแท็บ (ASCII 9) และฟีดบรรทัด (ASCII 10) คุณอาจ แต่ไม่จำเป็นต้องจัดการกับ Unicode และ / หรืออินพุตแบบไบนารีโดยพลการ โปรแกรมตัวขยายการบีบอัดของคุณจะต้องสร้างเอาต์พุตที่ตรงตามที่ได้รับกับคอมเพรสเซอร์เหมือนกับอินพุต โดยเฉพาะอย่างยิ่งระวังอย่าให้มีการป้อนบรรทัดต่อท้ายหากอินพุตไม่มี (อินพุตทดสอบด้านล่างมีฟีดบรรทัดต่อท้ายดังนั้นคุณจะต้องทดสอบแยกต่างหากเคล็ดลับสำหรับ …

16
กระดานหมากรุกที่เล็กที่สุดในการบีบอัด
เขียนอัลกอริทึมหรือโปรแกรมที่สามารถเข้ารหัสและถอดรหัสกระดานหมากรุก เป้าหมายคือการทำให้การเป็นตัวแทนที่เล็กที่สุดของกระดานหมากรุกที่สามารถนำมาใช้ (ถอดรหัสครั้งเดียว) เพื่อกำหนดความเป็นไปได้การเคลื่อนไหวทั้งหมดสำหรับผู้เล่นที่เปิด การเข้ารหัสจะต้องสามารถแสดง: ใครหันมาทางไหน ไม่ว่าจะเป็นผู้เล่นสามารถปราสาทในแต่ละด้าน ไม่ว่าผู้เล่นจะสามารถดำเนินการ en-passant และถ้าเป็นเช่นนั้นซึ่งเบี้ยของพวกเขา? ตำแหน่งของชิ้นงานทั้งหมด หมายเหตุสำคัญเกี่ยวกับการขว้างปา:หากขาวขยับกษัตริย์ของพวกเขาในคราวเดียวแล้วย้ายกลับไปอีกครั้งมันจะต้องชัดเจนว่าพวกเขาไม่สามารถปราสาททั้งสองข้างหลังจากนั้น ถ้าพวกเขาย้ายไปทางซ้ายหรือขวาของพวกเขาเหมือนกัน แม้ว่ากระดานจะอยู่ในสภาพเดียวกันเมื่อสองตาก่อน แต่สภาพเกมก็เปลี่ยนไป ข้อมูลเพิ่มเติมที่นี่: http://en.wikipedia.org/wiki/Chess#Castling หมายเหตุสำคัญเกี่ยวกับผู้สัญจร:นี่คือการย้ายที่ละเอียดอ่อน อ่านกฎสำหรับข้อมูลเพิ่มเติม http://en.wikipedia.org/wiki/Chess#En_passant กำหนดอินพุตและเอาต์พุตตามต้องการ อุปกรณ์ประกอบฉากสำคัญสำหรับใครก็ตามที่สามารถบีบอัดมันได้มากที่สุด! คะแนนของคุณจะถูกกำหนดสถานการณ์กรณีที่เลวร้ายที่สุด - ขนาดที่เป็นไปได้สูงสุดในบิต ตรวจสอบให้แน่ใจว่าคุณแสดงให้เห็นว่าคุณคำนวณจำนวนนั้นอย่างไรและคิดอย่างไร ยิงเพื่อใส่เคสที่แย่ที่สุด!

2
ดนตรีทวีตท้าทาย
นี้เป็นรุ่นที่เสียงของการเข้ารหัสภาพความท้าทายทวิตเตอร์ ออกแบบรูปแบบการบีบอัดสัญญาณเสียงที่สามารถแสดงเพลงอย่างน้อยหนึ่งนาทีใน 140 ไบต์หรือน้อยกว่าของข้อความที่เข้ารหัส UTF-8 ที่พิมพ์ได้ ใช้งานได้โดยการเขียนโปรแกรมบรรทัดคำสั่งที่ใช้อาร์กิวเมนต์ 3 ตัวต่อไปนี้ (หลังชื่อของโปรแกรมเอง): สตริงหรือencodedecode ชื่อไฟล์อินพุต ชื่อไฟล์ที่ส่งออก (หากภาษาการเขียนโปรแกรมที่คุณต้องการไม่มีความสามารถในการใช้อาร์กิวเมนต์บรรทัดคำสั่งคุณอาจใช้วิธีอื่น แต่ต้องอธิบายในคำตอบของคุณ) การencodeดำเนินการจะแปลงจากรูปแบบเสียงที่คุณเลือกเป็นรูปแบบ“ ทวีต” ที่ถูกบีบอัดและการdecodeดำเนินการจะแปลงจากรูปแบบ“ ทวีต” ของคุณไปเป็นรูปแบบเสียงต้นฉบับ (แน่นอนคุณคาดว่าจะใช้การบีบอัดแบบสูญเสียดังนั้นไฟล์เอาต์พุตไม่จำเป็นต้องเหมือนกันกับอินพุตเพียงในรูปแบบเดียวกัน) รวมไว้ในคำตอบของคุณ: ซอร์สโค้ดของโปรแกรมของคุณเต็ม (ถ้ามันยาวเกินไปสำหรับหน้านี้คุณอาจโฮสต์ไว้ที่อื่นและโพสต์ลิงก์ไปที่มัน) คำอธิบายวิธีการทำงาน อย่างน้อยหนึ่งตัวอย่างมีลิงก์ไปยังไฟล์เสียงต้นฉบับข้อความ“ ทวีต” ที่บีบอัดลงไปและไฟล์เสียงที่ได้รับจากการถอดรหัสทวีต (ผู้ตอบรับผิดชอบการยืนยันการใช้งานลิขสิทธิ์อย่างเป็นธรรม) กฎระเบียบ ฉันขอสงวนสิทธิ์ที่จะปิดช่องโหว่ใด ๆ ในกฎการแข่งขันได้ตลอดเวลา [แก้ไขเมื่อวันที่ 24 เมษายน]สำหรับการป้อนข้อมูลencodeฟังก์ชั่นของคุณ(และเอาท์พุทdecodeฟังก์ชั่นของคุณ) คุณสามารถใช้รูปแบบเสียงทั่วไปที่สมเหตุสมผลไม่ว่าจะเป็น: รูปแบบของคลื่นที่ไม่บีบอัดเช่น WAV รูปคลื่นที่บีบอัดเช่น MP3 สไตล์“ Sheet music” เช่น MIDI รูปแบบ“ ทวีต” ที่ถูกบีบอัดของคุณจะต้องเข้ารหัสเสียงในไฟล์อินพุต ดังนั้นเอาต์พุตประเภทต่อไปนี้จะไม่ถูกนับ: …

19
การขยายตัวของวงเล็บ!
ความท้าทายของคุณคือการขยายวงเล็บบางส่วนในอินพุตของโปรแกรมตามที่แสดง: ค้นหาสตริงsระหว่างวงเล็บที่ตรงกันสองตัว[และ]มีตัวเลขnหลักหลังวงเล็บปิด ลบวงเล็บ แทนที่sด้วยตัวเองซ้ำnครั้ง (ถ้าnคือ 0 ให้ลบs ) ไปที่ขั้นตอนที่ 1 จนกว่าจะไม่มีวงเล็บที่ตรงกันในอินพุต กฎและคำชี้แจงเพิ่มเติม: คุณจะรับอินพุตและให้เอาต์พุตผ่านช่องทางที่อนุญาต บรรทัดใหม่ต่อท้ายในเอาต์พุตได้รับอนุญาต คุณต้องจัดการ ASCII ที่พิมพ์ได้ในอินพุตเท่านั้น คุณอาจจะคิดว่าวงเล็บทั้งหมดตรงกันเช่นคุณจะไม่ได้รับการป้อนข้อมูลหรือ[]]]][[[[] คุณอาจสมมติว่าวงเล็บปิดแต่ละตัว]มีตัวเลขหลังจากนั้น กรณีทดสอบ: Input -> Output [Foo[Bar]3]2 -> FooBarBarBarFooBarBarBar [one]1[two]2[three]3 -> onetwotwothreethreethree [three[two[one]1]2]3 -> threetwoonetwoonethreetwoonetwoonethreetwoonetwoone [!@#[$%^[&*(]2]2]2 -> !@#$%^&*(&*($%^&*(&*(!@#$%^&*(&*($%^&*(&*( [[foo bar baz]1]1 -> foo bar baz [only once]12 -> only once2 [only twice]23456789 -> …

9
ช่วยฉันจำสัตว์ประหลาดของฉัน
พื้นหลัง NetHack เป็นเกมคอมพิวเตอร์ตั้งแต่ปี 1987 ก่อนที่จะมีการใช้กราฟิกในเกมคอมพิวเตอร์ มีมอนสเตอร์จำนวนมากในเกมและอาจจำเป็นต้องมีจำนวนมากบนหน้าจอในครั้งเดียวดังนั้นมอนสเตอร์จะถูกวาดในวิธีที่น้อยมาก: มอนสเตอร์จะถูกวาดเป็นอักขระ ASCII บนหน้าจอ นอกจากนี้จะมีการจำนวนมากของมอนสเตอร์ที่มีจำนวนมากของประเภทของมอนสเตอร์ มันเป็นสิ่งสำคัญที่จะรู้ว่าสิ่งที่เป็น; คุณต้องตอบโต้ต่าง ๆ เมื่อเห็นลูกแมวและเห็นมังกร ดังนั้น ASCII ส่วนใหญ่จะใช้เพื่อเป็นตัวแทนของสัตว์ประหลาด ตัวอย่างเช่นลูกแมวเป็นและมังกรสีแดงf Dนี่หมายความว่ามันจะมีประโยชน์มากถ้ารู้ว่าสัตว์ประหลาดที่ให้มามีหน้าตาเป็นอย่างไรเพราะมันจะช่วยให้คุณจดจำได้ถ้าคุณเจอมันในภายหลังในเกม (โปรดทราบว่ามีมอนสเตอร์หลายประเภทมากกว่าที่มีตัวอักษร ASCII ดังนั้นบางตัวจึงใช้ร่วมกัน; มังกรแดงและมังกรสีน้ำเงินมีทั้งคู่D) งาน โปรแกรมของคุณจะต้องใช้ชื่อของมอนสเตอร์ NetHack เป็นอินพุตและสร้างอักขระ ASCII ที่แสดงถึงมันภายในเกมเป็นเอาท์พุท โปรแกรมได้รับอนุญาตให้สมมติว่าการป้อนข้อมูลในความเป็นจริงแล้วเป็นชื่อของมอนสเตอร์ NetHack; มันอาจหากต้องการความผิดพลาดให้ผลลัพธ์ที่ไร้ความหมาย ฯลฯ หากอินพุตไม่ถูกต้อง Stack Snippet ต่อไปนี้เป็นอ็อบเจ็กต์ JSON ที่ให้การแม็พแบบเต็มของอินพุตที่เป็นไปได้กับเอาต์พุตที่สอดคล้องกัน: แสดงตัวอย่างโค้ด { "Aleax": "A", "Angel": "A", "Arch Priest": "@", "Archon": "A", …

14
อัดซูโดกุ
งานของคุณคือการเขียนโปรแกรม (หรือสองโปรแกรมแยกต่างหาก) ในภาษาใด ๆ ที่: สามารถนำกระดาน Sudoku ที่เสร็จสมบูรณ์เป็นอินพุต (ในรูปแบบโลจิคัลใด ๆ ) และบีบอัดลงในชุดอักขระ สามารถใช้การบีบอัดสตริงเป็น input และขยายมันจะได้รับที่แน่นอนเดียวกันคณะกรรมการซูโดกุเสร็จ (การส่งออกในรูปแบบใด ๆ ของตรรกะ 9 แถว) หมายเหตุ:ใช้กฎของ Sudoku เพื่อประโยชน์ของคุณ นั่นคือแนวคิดเบื้องหลังการท้าทายนี้ กฎของ Sudoku เกี่ยวกับ Wikipedia กฎระเบียบ อนุญาตเฉพาะอักขระ ASCII ที่พิมพ์ได้ (32 - 126) ในเอาต์พุตที่บีบอัด (เช่นไม่มีอักขระหลายไบต์ ) คุณสามารถสันนิษฐานได้ว่าอินพุตเป็นบอร์ด Sudoku 3x3 ที่ถูกต้อง (กฎปกติไม่มีการเปลี่ยนแปลง) ฉันจะไม่กำหนดเวลา แต่อย่าสร้างอัลกอริธึมที่ดุร้าย หรือผู้ส่งควรทดสอบการส่งของตนก่อนโพสต์ (ขอบคุณ Jan Dvorak) หากคุณมีคำถามหรือข้อสงสัยใด …

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 

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", …

8
การบีบอัดตารางละติน
ละตินตารางเป็นตารางที่ไม่มีสัญลักษณ์ในแถวหรือคอลัมน์ซ้ำ: 13420 21304 32041 04213 40132 และอย่างที่ผู้เล่นซูโดกุหลายคนรู้คุณไม่จำเป็นต้องใช้ตัวเลขทั้งหมดเพื่ออนุมานตัวเลขที่เหลืออยู่ ความท้าทายของคุณคือการบีบอัดตารางละตินลงในไม่กี่ไบต์เท่าที่จะทำได้ คุณต้องจัดเตรียมหนึ่งหรือสองโปรแกรมที่บีบอัด / คลายการบีบอัด ข้อมูลต่างๆ: หมายเลขที่ใช้มักจะเป็น0..N-1ที่NมีความยาวของขอบของตารางและN<=25 ในการคลายการบีบอัดตารางละตินต้องเหมือนกับอินพุต โปรแกรมของคุณควรที่จะ (de) บีบอัดลาตินสแควร์ใด ๆ (ภายในขนาดสี่เหลี่ยมจัตุรัสสูงสุด) ไม่ใช่เฉพาะที่ฉันให้ไว้ อัตราส่วนการบีบอัดควรจะคล้ายกันเช่นกัน คุณต้องทำการบีบอัดและคลายการบีบอัดเพื่อให้ได้คะแนนของคุณ (ไม่มีจุดสิ้นสุดของจักรวาล) กรณีทดสอบสามารถพบได้บนGitHub คะแนนของคุณคือขนาดรวมของกรณีทดสอบที่บีบอัด แก้ไข: ตั้งแต่วันที่ 20:07 ในวันที่ 7 กรกฎาคมฉันได้อัปเดตกรณีทดสอบ (เพื่อแก้ไขปัญหาการสร้าง) โปรดรันโปรแกรมของคุณอีกครั้งในกรณีทดสอบใหม่ ขอบคุณAnders Kaseorg

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