পাইথন ২.7 - 10971 8077 বাইট
হালনাগাদ:
এলজেডএমএ আসলে কোনও কারণে আমার পক্ষে কাজ করে না, তাই আমি Deflate এ ফিরে গিয়েছিলাম।
পিএনজিকে আরও সঙ্কুচিত করার জন্য আমি একটি অনলাইন সরঞ্জাম পেয়েছি (তারা বলে যে তারা ক্ষয়িষ্ণু সংকোচনের ব্যবহার করে তবে অ্যারেটি অপরিবর্তিত থাকে)
- আমি
__main__.py
স্ক্রিপ্টটি আরও কিছুটা গল্ফ করেছিলাম ...
- আমি দেখতে পেলাম আমি একটি পদক্ষেপ বাদ দিচ্ছি (জিপ সংরক্ষণাগার থেকে ডেটা ফাইলগুলি বের করা)
- যোগ করা ডিএল লিঙ্ক (নীচে দেখুন)
বেশিরভাগ সংক্ষেপণ অ্যালগরিদমগুলি 1 টি মাত্রিক অ্যারে হিসাবে ডেটা দেখে এবং তাই মহাজাগতিক কলে প্রদর্শিত পুনরাবৃত্তি 2 মাত্রিক অক্ষর ক্যাপচার করতে পারে না (আইএমও এলিয়েনদের পক্ষে এটি বুঝতে আরও কঠিন করে তোলে: পি)।
প্রথমত, আমি প্রতিটি অক্ষরকে 7 * 5 অ্যারে হিসাবে নির্বাচন করেছি এবং সমস্ত অনন্য অক্ষরের একটি তালিকা তৈরি করেছি (101 যদি আমি মনে করি)। তারপরে আমি চিত্রটি পুনরুক্ত করেছিলাম এবং যখন কোনও চরিত্র পাওয়া যায়, তখন সেই চরিত্রের অবস্থান এবং সূচি (চরিত্রের তালিকায়) রেকর্ড করা হয়।
এই অবস্থানগুলিকে একক আন্ত দিয়ে প্রতিনিধিত্ব করা যেতে পারে, তবে 2K টিরও বেশি অক্ষর পাওয়া গেছে এবং 0-370966 (ডিভোড ফর্ম) থেকে শুরু করে প্রতিটি অবস্থানের জন্য 3 বাইট পর্যন্ত প্রয়োজন। আমি তবে চরিত্রের অবস্থানগুলি ক্রমে সংগ্রহ করেছি, তাই আমি পরিবর্তে নিখুঁত অবস্থানটিকে অফসেট পজিশনে রূপান্তর করেছি, বেশিরভাগ সংখ্যাটিকে 1 বাইটের চেয়ে কম করে তৈরি করেছি। 1 বাইটের বেশি যে কয়েকটি সংখ্যক ছিল তার জন্য আমি এই তালিকাটি utf-8 এ এনকোড করেছি
সমস্ত মিলিত অক্ষর রেকর্ডিং এবং অপসারণের পরে, আমি পিএনজি সর্বাধিক সংকোচনের সাহায্যে সংরক্ষণ করেছি। আমি তখন পাইথন পুনর্গঠন স্ক্রিপ্ট (বিপরীত একই প্রক্রিয়া), পিএনজি, চ্যাট্যাক্টর টেম্পলেট এবং চরিত্রের অবস্থানের তালিকাটি একটি জিপ ফাইলে প্যাকেজ করেছিলাম যে অজগরটি একটি ফোল্ডার বা জিপ ফাইলটিকে যুক্তি হিসাবে গ্রহণ করতে পারে, এবং এটি শীর্ষ স্তরের নামের যে কোনও ফাইলে কার্যকর করা শুরু করবে __main__.py
। আমি সর্বোত্তম সংকোচনের জন্য আমি 7z এর সাথে কিছুটা খেলাম, যা 1 এম ডিক এবং 32 বিট শব্দ দিয়ে এলজেডএমএ হয়ে উঠেছে।
এখানে ডিকোডার স্ক্রিপ্ট রয়েছে (গল্ফড তবে এখনও মন্তব্য সহ)
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- প্রোগ্রাম উত্তর জমা দিতে পারেন :)