पायथन 2.7 - 10,971 8077 बाइट्स
अपडेट करें:
LZMA वास्तव में किसी कारण से मेरे लिए काम नहीं करता है, इसलिए मैं Deflate पर वापस चला गया।
मुझे PNG को और भी संक्षिप्त करने के लिए एक ऑनलाइन टूल मिला (वे कहते हैं कि वे हानिपूर्ण संपीड़न का उपयोग करते हैं, लेकिन सरणी अपरिवर्तित रहती है)
- मैंने
__main__.py
स्क्रिप्ट को थोड़ा और आगे बढ़ाया ...
- मैंने पाया कि मैं एक कदम छोड़ रहा था (ज़िप संग्रह से डेटा फ़ाइलों को निकालना)
- जोड़ा गया डीएल लिंक (नीचे देखें)
अधिकांश संपीड़न एल्गोरिदम डेटा को 1 आयामी सरणी के रूप में देखते हैं, और इसलिए कॉस्मिक कॉल में प्रदर्शित दोहराए जाने वाले 2 आयामी वर्णों को कैप्चर नहीं कर सकते हैं (IMO भी एलियंस को समझने में कठिन बनाता है: P)।
सबसे पहले, मैंने प्रत्येक चरित्र को 7 * 5 सरणी के रूप में चुना और सभी अद्वितीय पात्रों की सूची बनाई (101 यदि मुझे याद है)। तब मैंने छवि पर ध्यान दिया, और जब एक चरित्र मिला, तो उस चरित्र की स्थिति और सूचकांक (चरित्र सूची में) दर्ज किए गए थे।
उन पदों को एक एकल इंट के साथ दर्शाया जा सकता है, हालांकि 2k से अधिक चार्ट पाए जाते हैं, और 0-370966 (डिवमॉड फॉर्म) से लेकर प्रत्येक को 3 बाइट तक की आवश्यकता होती है। हालाँकि मैंने वर्ण स्थिति को एकत्र किया है, इसलिए मैंने इसके बजाय ऑफ़सेट स्थिति में बदल दिया, जिससे अधिकांश संख्या 1 बाइट से कम हो गई। मैंने इस सूची को utf-8 में उन कुछ संख्याओं के लिए जिम्मेदार ठहराया है जो 1 बाइट से अधिक थीं
सभी मिलान किए गए वर्णों को रिकॉर्ड करने और निकालने के बाद, मैंने अधिकतम संपीड़न के साथ png को बचाया। मैंने तब अजगर पुनर्निर्माण स्क्रिप्ट (उसी प्रक्रिया को उल्टा), पीएनजी, चैट बैक्टीरिया टेम्पलेट, और चरित्र स्थिति सूची को सभी को ज़िप फ़ाइल में पैक किया, ताकि इस तथ्य का फायदा उठाया जा सके कि अजगर एक तर्क के रूप में एक फ़ोल्डर या ज़िप फ़ाइल ले सकता है, और यह नामित शीर्ष स्तर की किसी भी फ़ाइल पर निष्पादन शुरू करेगा__main__.py
। मैंने सबसे अच्छा संपीड़न प्राप्त करने के लिए 7z के साथ थोड़ा सा खेला, जो 1M तानाशाह और 32 बिट शब्दों के साथ LZMA निकला।
यहाँ डिकोडर स्क्रिप्ट है (अभी भी टिप्पणियों के साथ)
import sys,zipfile as z
z.ZipFile(sys.argv[0]).extractall() #extract data files from zip to cwd
from numpy import*
o=open #next line overwrites open, which I need
from PIL.Image import*
from scipy.ndimage import*
a=imread('p')[:,:,0]/255 #read image file
a[:2414,0]=0 #draw vertical borders
a[2541:,0]=0
a[2412:,-1]=0
a[:2287,-1]=0
for x in range(0,2921,127):a[[x,x+126],:]=0 #draw horizontal borders
with o('c','rb') as f:t=f.read();C=[int(i)for c in t for i in'{0:08b}'.format(ord(c))] #read character template file and convert to list of bytes
C=array(C[:-1]).reshape([101,7,5]) #re-slice (extra 0 appended to make even number of bytes) and re-shape
with o('l','rb') as f:L=array([ord(x)for x in f.read().decode('utf_8')]).reshape([2158,2]) #read decode and reshape positional list
p=0 #relative position accumulator
for e in L:p+=e[0];x,y=p%127,p/127;a[y:y+7,x:x+5]=C[e[1]] #divmod for x,y position and paste character template onto array at position
i=fromarray(a*255)
i.show()
जिप फाइल के लिए डाउनलोड करने के लिए लिंक ...
0
, खाली घोंघे कार्यक्रम प्रिंट1
, और खाली गोल्फस्क्रिप्ट कार्यक्रम एक नई रेखा प्रिंट करता है। । कोई व्यक्ति 0-बाइट, 373888-प्रोग्राम उत्तर :)