পটভূমি
পিকাসসিআইআই একটি ঝরঝরে সরঞ্জাম যা চিত্রগুলিকে ASCII আর্টে রূপান্তর করে।
এটি নিম্নলিখিত দশটি ASCII অক্ষর ব্যবহার করে উজ্জ্বলতার বিভিন্ন ডিগ্রি অর্জন করে:
@#+';:,.`
আমরা বলব যে এই চার্সেলগুলির (চরিত্রের উপাদানগুলি) 1 (এট-সাইন) থেকে 10 (স্পেস) পর্যন্ত উজ্জ্বলতা রয়েছে।
নীচে, আপনি একটি সামান্য কোড রূপান্তর করার ফলাফল দেখতে পারেন, ওয়েলশ পতাকা, একটি ওভারহ্যান্ড ফ্র্যাক্টাল, একটি বিশাল ট্রাউট এবং একটি সামান্য গল্ফ, সঠিক ফন্টের সাথে প্রদর্শিত:
আপনি এই ফ্রিডલમાં চিত্রগুলি দেখতে এবং Google ড্রাইভ থেকে এগুলি ডাউনলোড করতে পারেন ।
কার্য
পিকাসিএসআইআইয়ের শেষ ফলাফলগুলি দৃষ্টি আকর্ষণীয় হওয়ার সাথে সাথে, পাঁচটি ছবি মিলিয়ে 153,559 বাইট ওজনের। এই চিত্রগুলি কতটা সংকুচিত হতে পারে যদি আমরা তাদের মানের অংশের ত্যাগ করতে ইচ্ছুক?
আপনার কাজটি এমন একটি প্রোগ্রাম লিখুন যা উপরোক্ত চিত্রগুলির মতো কোনও ASCII আর্ট চিত্র গ্রহণ করে এবং ইনপুট হিসাবে ন্যূনতম মানের এবং চিত্রটির একটি ক্ষতিকারক সংকোচনাকে মুদ্রণ করে - একটি সম্পূর্ণ প্রোগ্রাম বা কোনও ফাংশন একটি একক স্ট্রিং ফিরিয়ে দেয় - যা সন্তুষ্ট করে মানের প্রয়োজন।
এর অর্থ হল যে আপনি পৃথক ডিকম্প্রেসার লিখতে পারবেন না; এটি প্রতিটি সংকুচিত চিত্রের অন্তর্নির্মিত হতে হবে।
মূল চিত্রটিতে 1 থেকে 10 এর মধ্যে উজ্জ্বলতা সহ চার্জেল থাকবে, একই দৈর্ঘ্যের লাইনে লাইনফিড দ্বারা আলাদা করা হবে। সংকুচিত চিত্রের একই মাত্রা থাকতে হবে এবং একই অক্ষরের সেট ব্যবহার করতে হবে।
এন চারক্সেল সমন্বিত একটি সঙ্কোচিত চিত্রের জন্য, চিত্রটির একটি সংকোচিত সংস্করণের মান হিসাবে সংজ্ঞায়িত করা হয়
যেখানে সি i উজ্জ্বলতা হয় আমি তম সংকুচিত চিত্রের আউটপুট charxel এবং তোমার দর্শন লগ করা আমি উজ্জ্বলতা আমি তম ডিকম্প্রেস করা ইমেজ charxel।
স্কোরিং
আপনার কোডটি উপরের পাঁচটি চিত্রের সাথে ইনপুট হিসাবে এবং প্রতিটি চিত্রের জন্য 0.50, 0.60, 0.70, 0.80 এবং 0.90 ন্যূনতম মানের সেটিংস হিসাবে পরিচালিত হবে।
আপনার স্কোর হ'ল সমস্ত সংকুচিত চিত্রের আকারের জ্যামিতিক গড়, অর্থাত্ সমস্ত পঁচিশটি সংক্ষিপ্ত চিত্রের দৈর্ঘ্যের পণ্যের পঁচিশতম মূল।
সর্বনিম্ন স্কোর জয়!
অতিরিক্ত বিধি
আপনার কোডটি কেবল স্কোরিংয়ের জন্য ব্যবহৃত নয়, স্বেচ্ছাসেবী চিত্রগুলির জন্য কাজ করতে হবে।
আশা করা যায় যে আপনি পরীক্ষার ক্ষেত্রে আপনার কোডটি সর্বোত্তম করে তোলেন, তবে এমন একটি প্রোগ্রাম যা স্বেচ্ছাসেবী চিত্রগুলি সংকোচনের চেষ্টাও করে না, আমার কাছ থেকে উত্সাহ পাবেন না।
আপনার সংক্ষিপ্তকারী বিল্ট-ইন বাইট স্ট্রিম সংকোচকারী (যেমন, জিজিপ) ব্যবহার করতে পারে তবে সংক্ষেপিত চিত্রগুলির জন্য আপনাকে সেগুলি নিজেই প্রয়োগ করতে হবে।
বাইট স্ট্রিম ডিকম্প্রেসারগুলিতে সাধারণত বুলেট-ইনগুলি ব্যবহার করা হয় (যেমন, বেস রূপান্তর, রান-লেংথ ডিকোডিং)।
সংক্ষিপ্তকারী এবং সংকোচিত চিত্রগুলি একই ভাষায় থাকতে হবে না।
তবে, সমস্ত সংকুচিত চিত্রগুলির জন্য আপনাকে অবশ্যই একটি ভাষা বেছে নিতে হবে।
প্রতিটি সংকুচিত চিত্রের জন্য, স্ট্যান্ডার্ড কোড গল্ফ বিধি প্রযোজ্য।
প্রতিপাদন
আমি সহজেই সমস্ত মানের প্রয়োজনীয়তা যাচাই করতে এবং জমা দেওয়ার স্কোর গণনা করতে একটি সিজেএম স্ক্রিপ্ট তৈরি করেছি।
আপনি এখানে বা এখান থেকে জাভা ইন্টারপ্রেটার ডাউনলোড করতে পারেন ।
e# URLs of the uncompressed images.
e# "%s" will get replaced by 1, 2, 3, 4, 5.
"file:///home/dennis/codegolf/53199/original/image%s.txt"
e# URLs of the compressed images (source code).
e# "%s-%s" will get replaced by "1-50", "1-60", ... "5-90".
"file:///home/dennis/codegolf/53199/code/image%s-%s.php"
e# URLs of the compressed images (output).
"file:///home/dennis/codegolf/53199/output/image%s-%s.txt"
e# Code
:O;:C;:U;5,:)
{
5,5f+Af*
{
C[IQ]e%g,X*:X;
ISQS
[U[I]e%O[IQ]e%]
{g_W=N&{W<}&}%
_Nf/::,:=
{
{N-"@#+';:,.` "f#}%z
_::m2f#:+\,81d*/mq1m8#
_"%04.4f"e%S
@100*iQ<"(too low)"*
}{
;"Dimension mismatch."
}?
N]o
}fQ
}fI
N"SCORE: %04.4f"X1d25/#e%N
উদাহরণ
বাশ → পিএইচপি, স্কোর 30344.0474
cat
সমস্ত ইনপুটগুলির জন্য 100% গুণ অর্জন করে।
$ java -jar cjam-0.6.5.jar vrfy.cjam 1 50 1.0000 1 60 1.0000 1 70 1.0000 1 80 1.0000 1 90 1.0000 2 50 1.0000 2 60 1.0000 2 70 1.0000 2 80 1.0000 2 90 1.0000 3 50 1.0000 3 60 1.0000 3 70 1.0000 3 80 1.0000 3 90 1.0000 4 50 1.0000 4 60 1.0000 4 70 1.0000 4 80 1.0000 4 90 1.0000 5 50 1.0000 5 60 1.0000 5 70 1.0000 5 80 1.0000 5 90 1.0000 SCORE: 30344.0474