একটি মহাজাগতিক কল প্রেরণ করুন


16

মহাজাগতিক কল কে একটি বার্তা 1999 এবং 2003 সালে মহাকাশ পাঠানো বিস্তারিত এটা 23 127 * 127px একবর্ণ বিটম্যাপ ইমেজ তৈরি হচ্ছে হল এখানে

আপনার মিশনটি এমন একটি প্রোগ্রাম লিখতে হয় যা পুরো 127 * 2921px বার্তাটি প্রদর্শিত হয়, হয় একটি পাঠ্য হিসাবে (জিরো ,গুলি এবং লাইন ব্রেকগুলি দিয়ে তৈরি) বা চিত্র হিসাবে (স্ক্রিনে আঁকা বা ডিস্কে সংরক্ষিত)। বিজয়ীদের দুটি বিভাগ থাকবে: একটি পাঠ্য আউটপুট এবং একটিতে চিত্র আউটপুট।

সমস্ত ছলছলির অনুমতি রয়েছে, সাধারণ ফাঁকগুলি ব্যতীত।

এটি পৃথকভাবে 23 পৃষ্ঠা আউটপুট করার অনুমতি দেওয়া হয়।

আপনার স্কোর নির্ধারণের জন্য এটি 23 টি পর্যন্ত প্রোগ্রাম (যেমন প্রতিটি পৃষ্ঠার জন্য একটি) লেখার অনুমতি দেয় এবং তাদের আকারের যোগফল দেয়।

আপনার প্রোগ্রাম (গুলি) এর পাশাপাশি এটি 23 টি পর্যন্ত বাইনারি ফাইল ব্যবহার করার অনুমতি রয়েছে। তাদের ওজন আপনার স্কোর গণনা করা হয়।

সবচেয়ে সংক্ষিপ্ততম কোড (বাইটে) জিতেছে।

প্রতি পিক্সেল 1 বিটে, চিত্রটিতে 127 * 127 * 23/8 = 46370 বাইট + 7 বিট ডেটা রয়েছে। (সতর্কতা: আপনি যদি পিক্সেল মান 46371 বাইটে সঞ্চয় করেন তবে অতিরিক্ত শূন্যের আউটপুট দেওয়ার অনুমতি নেই)

পাঠ্য আউটপুটটির জন্য ট্রেলিং করা নতুন লাইন / স্পেস অনুমোদিত।

ভিজ্যুয়াল আউটপুটটিতে মহাজাগতিক কলের কালো পিক্সেল ছাড়া কোনও কালো পিক্সেল থাকতে পারে না। এটি একটি কলামে অঙ্কিত হতে পারে (সঠিকভাবে অর্ডার করা হয়েছে), অথবা ২৩ টি ছবিতে বিভক্ত বা অ্যানিমেটেড (একটি জিআইএফ এর মতো )ও সঠিকভাবে অর্ডার করা যেতে পারে।

সংযুক্তি: পাঠ্য আউটপুট এবং পুনরুত্পাদন করতে চিত্র আউটপুট:

মহাজাগতিক কল


19
"এটি অনেকগুলি প্রোগ্রাম (যেমন প্রতিটি পৃষ্ঠার জন্য একটি) লেখার অনুমতি দেয় এবং আপনার স্কোর নির্ধারণের জন্য তাদের আকারের যোগফল দেয়” " এটি বিপজ্জনক: খালি জেলি প্রোগ্রামের প্রিন্টগুলি 0, খালি শামুকের প্রোগ্রামের মুদ্রণগুলি 1এবং খালি গল্ফস্ক্রিপ্ট প্রোগ্রামটি একটি নতুন লাইন প্রিন্ট করে । কেউ হয়ত 0-বাইট, 373888- প্রোগ্রাম উত্তর জমা দিতে পারেন :)
লিন

হাহা, ঠিক আছে, তাই আমি প্রোগ্রামের সংখ্যা 23-এ সীমাবদ্ধ করব
xem

ট্রেলিং নতুনলাইন / স্পেস অনুমতি দেওয়া হয়?
লুভজো

হ্যাঁ । । । । ।
xem

আমরা কি অন্য কোনও ফাইল ব্যবহার করতে পারি বা সোর্স ফাইলটিতে কেবল আমাদের কাজ করতে হবে? যেমন। আমি সংক্ষেপিত সংস্করণ সংরক্ষণ করতে এবং তারপরে এটি সংক্ষেপিত করতে আইও ব্যবহার করতে পারি বা কোডটিতে সমস্ত কিছুই আক্ষরিক হওয়া দরকার।
আশাকরি

উত্তর:


18

জিআইএফ, 27386 বাইট

এখানে মূল ট্রান্সমিশনের পৃষ্ঠাগুলি পৃথক জিআইএফ ফ্রেমে বিভক্ত করা হয়েছে, এটি সবার মধ্যে 1 পিএনজির মতো ছোট নয় বলে প্রমাণিত হয়েছে :(

মহাজাগতিক কল অ্যানিমেটেড জিআইএফ


7
হ্যালো, এবং পিপিসিজিতে আপনাকে স্বাগতম! যদিও এটি জিততে যাচ্ছে না , এটি এখনও একটি ভাল পোস্ট।
NoOneIsHere

আপনি কি সেখানে গিয়েছিলেন? আপনি যদি ট্রানজিশনে অ্যাডিটিভ ট্রান্সপার্জেন্সি ব্যবহার করেন তবে 300 বিট বা আরও বেশি পরিমাণে সঞ্চয় করতে সক্ষম হবেন।
ম্যাজিক অক্টোপাস উরন

7

এইচটিএমএল, 16012 বি

আমি ছবিটি পিএনজি 8-এ সংকুচিত করেছি, এটি একটি পাঠ্য সম্পাদকে খুললাম, সংযুক্ত করে

<svg onload="document.body.innerHTML='<img src=#>'">

শেষে এবং ভয়েল:

ডেমো: http://xem.github.io/miniCosmicCall/


এনবি: সংযোজন কেবল <img src=#>খুব বেশি কাজ করে তবে এটি প্রচুর আবর্জনা দৃশ্যমান হতে দেয়, তাই আমি পছন্দ করি না।


PS: মজাদার জন্য, আমি পুরো বার্তাটি একটি একক, সম্পাদনযোগ্য ট্যুইটেও রেখেছি (আপনি এটি একটি ব্রাউজার কনসোলে কপি-পেস্ট করতে পারেন এবং চিত্রটি প্রদর্শিত হবে):

https://twitter.com/MaximeEuziere/status/742440423994580992


1
সংক্ষিপ্ত উত্তর + 1
এরিক আউটগল্ফার

আমার শেষ কথাটি এখনও বলেন নি!
xem

আমি নিশ্চিত আপনি এখানে কী বলতে চেয়েছিলেন তা আমি বুঝতে পারি না।
এরিক আউটগল্ফার

দুঃখিত, আমি বোঝাতে চাইছি কিছুটা আরও ছোট করার চেষ্টা করছি
xem

6

পাইথন ২.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()
জিপ ফাইলের জন্য ডাউনলোড করার জন্য লিঙ্ক ...


আমি আছি :) (এবং এই স্কোরের জন্য অভিনন্দন!)
xem

@ এক্সেম ... পোস্ট করার অল্প সময়ের পরে, আমি এটির সাথে জগাখিচু করা অব্যাহত রেখেছি এবং এটি আরএন ভেঙে গেছে (পাইথন আমাকে কিছুটা জেলিব ত্রুটি বোঝায় চাপিয়ে দিয়েছিল) এটি আমার ওয়ার্ক কম্পিউটারেও রয়েছে। আমি যদি সোমবার এটিকে কার্যক্ষম অবস্থায় ফিরিয়ে আনতে পারি তবে সোমবার এটি রাখব। : পি
হারুন

আমি এটা আরো কয়েকটি সেভ করতে PNG কম্প্রেশন এবং যা অক্ষর আমি এনকোড (ক্ষুদ্রতর ব্যবহৃত বেশী) মধ্যে একটি ভারসাম্য নিখুত সম্ভব হতে পারে মনে বাইট ..
হারুন

1
@ xem আমি একটি dl লিঙ্ক যুক্ত করেছি ...
হারুন

2 ডি সংক্ষেপণ ধারণা পছন্দ করুন ... 3 ডি সংক্ষেপণের কি? (চিত্রগুলি স্ট্যাকিং)
ননলাইনারফ্রুট

3

Gzip bzip2 শেল এ, 20914 18965 বাইট

প্রশ্নটিতে প্রদত্ত টেক্সট আউটপুট দিয়ে আউটপুট ডেটা ফাইল করুন bzip2এবং এতে ফাইলটির নাম পরিবর্তন করুন s। এটি এর পরে অনুমতি দেয়:

bzcat s

কাজ করতে। সুতরাং এটি 18958 বাইট ডেটা এবং একটি 7 বাইট কমান্ড যুক্ত করে।


1
আমি মনে করি আপনি এর পরিবর্তে 'bzip2' ব্যবহার করে বেশ কয়েকটি কে সঞ্চয় করতে পারবেন!
ডোম হেস্টিংস

@ ডোমহাস্টিংস: অবশেষে আমি আপনার পরামর্শ অনুসরণ করেছি।
জুলি পেলেটিয়ার

আরও গবেষণার জন্য: বাবলগাম এবং জোপফ্লি
ডিজিটাল ট্রমা

2

পাইথ, 46381 বাইট

সুস্পষ্ট কারণে এটি এখানে পোস্ট করা যাবে না।

jc.BC"<too long>"127

নমুনা।

প্রোগ্রামের হেক্সডাম্পের পাস্তবিন।


আপনি ল্যাটিন -1 অক্ষরে 7 দ্বারা 7 বিটগুলি এনকোড করেছেন, তাই না? সহজ এবং সুন্দর! :) অবশ্যই, আমি আরও অনেক বেশি সংকোচনের জন্য খুঁজছি: p
xem

1
হ্যাঁ, আমি আরও ভাল কম্প্রেশন করছি। আমি এগুলি 8 বাই 8 দ্বারা এনকোড করেছি by
লিকি নুন

যাইহোক, আমি অবাক হয়েছি আপনি কীভাবে এই স্কোরটি পেয়েছেন: 127 * 127 * 23/8 = প্রায় 46371 বাইট। অন্যান্য 355 বাইট কোথায় গেল?
xem

ধন্যবাদ, এখন এটি ঠিক মেলে। উপরের কোডটিতে আপনি অতিরিক্ত 10 বাইট দেখতে পাচ্ছেন ( jc.BC""127")।
লিকি নুন

কীভাবে আপনি অতিরিক্ত বিট মোকাবেলা করবেন? (পুরো বার্তাটি 46370 বাইট + 7 বিট নেয় Your আপনার শেষ বাইটটি অতিরিক্ত শূন্য উত্পাদন করতে পারে যা বৈধ আউটপুট নয়)
xem

2

বাশ + ওয়েবপি বাইনারি, 11 + 15330 = 15341 বাইট

বিধিগুলি যেমন বলে থাকে:

আপনার মিশনটি এমন একটি প্রোগ্রাম লিখতে হয় যা পুরো 127 * 2921px বার্তা প্রদর্শন করে ... বা একটি চিত্র হিসাবে (স্ক্রিনে আঁকা বা ডিস্কে সংরক্ষিত )।

আপনার প্রোগ্রাম (গুলি) এর পাশাপাশি এটি 23 টি পর্যন্ত বাইনারি ফাইল ব্যবহার করার অনুমতি রয়েছে। তাদের ওজন আপনার স্কোর গণনা করা হয়।

এবং

সমস্ত ছলছলির অনুমতি রয়েছে, সাধারণ ফাঁকগুলি ব্যতীত।

… আমি নির্বোধের মতো সহজ কিছু পোস্ট করতে প্রতিরোধ করতে পারি না।

প্রোগ্রামটি ব্যাশে রয়েছে এবং এটি চিত্রটিকে ডিস্কে সংরক্ষণ করে আউটপুট করে।
এটিতে 1 টি বাইনারি ফাইল ব্যবহার করা হয়, যা চিত্র ফাইলও হয় (হ্যাঁ ওয়েবপি একটি চিত্র ফর্ম্যাট), সুতরাং প্রোগ্রামটি যতটা কম করতে পারে ... সেই ফাইলটির একটি অনুলিপি তৈরি করুন।

সুতরাং, কোড (11 বাইট):

cp b a.webp

সঙ্গী বাইনারি ধরে ধরে "ব" নাম দেওয়া হয়েছে, কোডটি সঠিক এক্সটেনশন ("a.webp") দিয়ে ডিস্কে চিত্র ফাইলটি লিখে।

বাইনারি আপলোড করার খুব কম কারণ আমি দেখতে পাচ্ছি, কারণ এটি তুচ্ছভাবে চালিয়ে তৈরি করা হয়েছে

cwebp -z 9 <downloaded input file> b

এটি 15330 বাইট সহ ফাইলটি তৈরি করে। যদি কেউ চান তবে আমি এটি কোথাও আপলোড করতে পারি।

নোটবিহীন: লসলেস কম্প্রেশন মোডে সক্রিয় -zবিকল্প cwebp9হ'ল সংকোচন শক্তি (সর্বাধিক)।


ওপি লেখক এটি পছন্দ করেছেন
xem

1

পাইথন 3, 64513 বাইট

শুধুমাত্র এএসসিআইআই ব্যবহার করুন!

http://pastebin.com/PMLb4Xti

পুরাতন সংস্করণ, 64529 বাইট: http://pastebin.com/nteYkUtM


import lzma,base64,os
এরিক আউটগলফার

@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ ধন্যবাদ!
59

1
@ মেগো আমাকে হাস্যকরভাবে দীর্ঘ বলে দেওয়া প্রয়োজন বলে মনে হয় না। মতামত ভোট সিদ্ধান্ত নিতে দিন।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.