কোডের 1 কেবিতে স্টারারি নাইট, বস্তুনিষ্ঠভাবে পেইন্ট করুন


242

দ্রষ্টব্য : তার দুর্দান্ত উত্তরের প্রতি দৃষ্টি আকর্ষণ করার জন্য অ্যান্ডারস কাসের্গকে আপাতত গ্রহণযোগ্যতার জন্য ভূষিত করা হয়েছে, তবে চ্যালেঞ্জ কোনওভাবেই শেষ হয়নি! বিল্ট-ইন সংকোচনের ব্যবহার না করে যে কেউ শীর্ষ স্কোর নেয় তার জন্য অফারে এখনও 400 পয়েন্টের অনুদান রয়েছে।

নীচে 386x320ভ্যান গোগের স্টারি নাইটের একটি পিএনজি উপস্থাপনা দেওয়া আছে ।

এখানে চিত্র বর্ণনা লিখুন

আপনার লক্ষ্য হ'ল এই চিত্রটি যথাসম্ভব নিকটস্থ করা উচিত, কোডের 1024 বাইটের বেশি নয়। এই চ্যালেঞ্জের উদ্দেশ্যে, চিত্রগুলির ঘনিষ্ঠতাটি আরজিবি পিক্সেলের মানগুলির স্কোয়ার পার্থক্যগুলি দ্বারা পরিমাপ করা হয়েছে, যা নীচে ব্যাখ্যা করা হয়েছে।

এটি । স্কোর নীচে বৈধতা স্ক্রিপ্ট ব্যবহার করে গণনা করা হয়। সর্বনিম্ন স্কোর জয়।

আপনার কোড অবশ্যই নিম্নলিখিত বিধিনিষেধ মান্য করা উচিত:

  • এটি একটি সম্পূর্ণ প্রোগ্রাম হতে হবে
  • এটি অবশ্যই এমন কোনও ফর্ম্যাটতে একটি চিত্র আউটপুট করবে যা আমার মেশিনে চলমান, নীচের বৈধতা স্ক্রিপ্ট দ্বারা পঠিত হতে পারে। স্ক্রিপ্টে পাইথনের পিআইএল লাইব্রেরি ব্যবহার করা হয়েছে, যা পিএনজি, জেপিজি এবং বিএমপি সহ বিভিন্ন ধরণের ফাইল ফর্ম্যাটগুলি লোড করতে পারে ।
  • এটি অবশ্যই সম্পূর্ণ স্বয়ংসম্পূর্ণ, কোনও ইনপুট না নিয়ে এবং কোনও ফাইল লোড না করা (লাইব্রেরিগুলি আমদানি করা ব্যতীত, যা অনুমোদিত)
  • যদি আপনার ভাষা বা লাইব্রেরিতে এমন কোনও ফাংশন অন্তর্ভুক্ত থাকে যা স্টেরি নাইটকে আউটপুট করে, আপনি সেই ফাংশনটি ব্যবহারের অনুমতি পাবেন না।
  • এটি নিয়মিতভাবে চালানো উচিত, প্রতিবার একই আউটপুট উত্পাদন করে।
  • আউটপুট চিত্রের মাত্রা অবশ্যই হবে 386x320
  • সন্দেহ এড়ানোর জন্য: বৈধ উত্তরের অবশ্যই পিপিসিজির নিয়ম অনুযায়ী প্রোগ্রামিং ভাষা ব্যবহার করা উচিত । এটি অবশ্যই এমন একটি প্রোগ্রাম হতে হবে যা কেবল একটি চিত্র ফাইল নয়, একটি চিত্রকে আউটপুট করে।

সম্ভবত কিছু সাবমিশনগুলি কোড দ্বারা তাদের উত্পন্ন হবে is যদি এটি হয় তবে দয়া করে আপনার উত্তরের কোডটি আপনার জমা দেওয়ার জন্য ব্যবহৃত কোডটি অন্তর্ভুক্ত করুন এবং এটি কীভাবে কাজ করে তা ব্যাখ্যা করুন। উপরোক্ত বিধিনিষেধগুলি কেবল আপনার জমা দেওয়া 1 কেবি চিত্র-উত্পাদক প্রোগ্রামে প্রযোজ্য; তারা এটিকে উত্পন্ন করতে ব্যবহৃত কোনও কোডে প্রয়োগ করে না।

স্কোরিং

আপনার স্কোর গণনা করার জন্য, আপনার আউটপুট ইমেজ এবং মূল উপরে নিতে এবং ফ্লোটিং পয়েন্ট 0 থেকে 1. করার জন্য একটি পিক্সেল স্কোর হল ছোটো নম্বরে আরজিবি পিক্সেল মান রূপান্তর (orig_r-img_r)^2 +(orig_g-img_g)^2 + (orig_b-img_b)^2, দুই ইমেজ মধ্যে আরজিবি স্থান স্কোয়ারড দূরত্ব অর্থাত। একটি চিত্রের স্কোর হল এর পিক্সেলের স্কোরের যোগফল।

নীচে একটি পাইথন স্ক্রিপ্ট যা এই গণনা সম্পাদন করে - কোনও অসঙ্গতি বা অস্পষ্টতার ক্ষেত্রে, নির্দিষ্ট স্কোরটি আমার মেশিনে চলমান সেই স্ক্রিপ্ট দ্বারা গণনা করা হয়।

নোট করুন আউটপুট চিত্রের উপর ভিত্তি করে স্কোর গণনা করা হয়, সুতরাং আপনি যদি কোনও ক্ষতির ফর্ম্যাট ব্যবহার করেন যা স্কোরকে প্রভাবিত করবে।

স্কোর যত কম হবে তত ভাল। আসল স্টারি নাইট ইমেজের স্কোর 0 হবে ast জ্যোতির্বিজ্ঞানহীনভাবে টাই হওয়ার টাইতে সর্বাধিক ভোটের উত্তর বিজয়ীকে নির্ধারণ করবে।

বোনাস উদ্দেশ্য

উত্তরগুলি অন্তর্নির্মিত সংকোচনের সাহায্যে সমাধানগুলির দ্বারা প্রাধান্য পেয়েছিল, তাই আমি অন্যান্য কৌশলগুলি ব্যবহার করে এমন উত্তরগুলিতে একাধিক ধরণের সম্মাননা দিয়েছি। পরেরটি 400 পয়েন্টের অনুগ্রহ হবে, পুরষ্কার দেওয়া হবে এবং যখন কোনও উত্তর অন্তর্নির্মিত সংকোচনের ব্যবহার করে না যখন সামগ্রিকভাবে শীর্ষ স্থান নেয়।

পূর্বে প্রদত্ত বোনাস উদ্যানগুলি নিম্নরূপ ছিল:

  • সেই সময়কার অন্তর্নির্মিত সংকোচনের ব্যবহার না করে সর্বাধিক স্কোর করা উত্তর হওয়ার জন্য, নিউনিরির জবাবকে একটি 100 পয়েন্টের অনুদান প্রদান করা হয়েছিল । এটি প্রদানের সময় এটির 4852.87 পয়েন্ট ছিল। সম্মানিত উল্লেখ, ২০১২ র‌্যাম্পিয়ন যাবেন, যিনি ভেরোনাই প্রবন্ধের উপর ভিত্তি করে একটি পন্থা ব্যবহার করে ন্নোনিয়োকে পরাজিত করার জন্য বীর প্রয়াস তৈরি করেছিলেন , ৫০76 points পয়েন্ট অর্জন করেছিলেন এবং স্লেফারের কাছে, যার উত্তর শেষের দিকে এগিয়ে ছিল , ৫০৫২ পয়েন্ট নিয়ে একই পদ্ধতি ব্যবহার করে। nneonneo।

  • স্ট্রডডগের প্রবেশের জন্য একটি 200 পয়েন্টের অনুগ্রহকে ভূষিত করা হয়েছিল । এটি একটি অপটিমাইজেশন-ভিত্তিক কৌশল হিসাবে সম্মানিত হয়েছিল যা অ-অন্তর্নির্মিত-সংকোচনের উত্তরগুলির মধ্যে নেতৃত্ব দেয় এবং এক সপ্তাহ ধরে ধরে রাখে। এটি একটি চিত্তাকর্ষক চালাক পদ্ধতি ব্যবহার করে 4749.88 পয়েন্ট করেছে।

স্কোরিং / বৈধতা স্ক্রিপ্ট

নিম্নলিখিত পাইথন স্ক্রিপ্টটি উপরের চিত্রের মতো একই ফোল্ডারে রাখা উচিত (যার নাম দেওয়া উচিত ORIGINAL.png) এবং ফর্মের একটি আদেশ ব্যবহার করে চালানো উচিত python validate.py myImage.png

from PIL import Image
import sys

orig = Image.open("ORIGINAL.png")
img  = Image.open(sys.argv[1])

if img.size != orig.size:
    print("NOT VALID: image dimensions do not match the original")
    exit()

w, h = img.size

orig = orig.convert("RGB")
img = img.convert("RGB")

orig_pix = orig.load()
img_pix = img.load()

score = 0

for x in range(w):
    for y in range(h):
        orig_r, orig_g, orig_b = orig_pix[x,y]
        img_r, img_g, img_b = img_pix[x,y]
        score += (img_r-orig_r)**2
        score += (img_g-orig_g)**2
        score += (img_b-orig_b)**2

print(score/255.**2)

প্রযুক্তিগত নোট: চিত্রের মিলের উদ্দেশ্যমূলক পদক্ষেপগুলি একটি কৌতুকপূর্ণ জিনিস। এক্ষেত্রে আমি এমন একটি বেছে নিয়েছি যার বাস্তবায়ন কারও পক্ষে সহজ, পুরো জ্ঞানে যে আরও উন্নততর ব্যবস্থা রয়েছে exist

লিডারবোর্ড


5
উইন্ডোজে পাইথন প্রয়োজনীয়তা ইনস্টল করতে আমার সমস্যা হয়েছিল। একটি নিরাপদ বিকল্প হ'ল বালিশ ( pip unistall PILতারপরে pip install pillow) ব্যবহার করুন এবং প্রথম লাইনটি এতে পরিবর্তন করুন from PIL import Image
mınxomaτ

2
বিপরীত দিকে যাওয়া এবং লোগারিথিক না হওয়া ছাড়া অন্য ছবিগুলি হ্যাঁ :)
হাবস

6
আমি অবাক হই যে কোনও উত্তর এখনও গ্রেস্কেল আউটপুট নিয়ে কাজ করার চেষ্টা করেনি। প্রতিটি পিক্সেলে চ্যানেলগুলির গড় গড় ২৮০০ এর মতো স্কোর দেয় এবং কেবলমাত্র তৃতীয় অংশের সংকোচন করতে গেলে তার উপরে ত্রুটি কম দেখাবে।
মার্টিন এন্ডার

3
@ মার্টিনব্যাটনার আপনি চিত্রের গড় নীল রঙের দ্বারা গ্রেস্কেল চিত্রটি ওজন করে আরও ভাল করতে পারেন। আমি এই চিন্তা ছিল না।
নাথানিয়েল

3
@ নাথানিয়েলকে যথেষ্ট বলা হয়নি, তবে এই প্রশ্নটি এত দুর্দান্ত! ;-)
পিয়ের আরলাড

উত্তর:


109

পাইথ (কোনও অন্তর্নির্মিত সংকোচনের নয়), স্কোর 4695.07 4656.03 4444.82

পাইথের একমাত্র চিত্র-সম্পর্কিত কার্যকারিতা হ'ল একটি চিত্র ফাইল হিসাবে আরজিবি ট্রিপলের একটি ম্যাট্রিক্স লেখার জন্য অন্তর্নির্মিত। সুতরাং পাগল ধারণাটি হ'ল চিত্রের প্রতিনিধিত্বকারী ( x , y ) ↦ ( r , g , b ) ফাংশনে একটি ছোট গভীর নিউরাল নেটওয়ার্ক প্রশিক্ষণ দেওয়া এবং এটি প্রতিটি পিক্সেলের স্থানাঙ্কে চালানো।

পরিকল্পনা

  1. সি ++ এ একটি কাস্টম ব্যাকপ্রপ্যাগেশন লুপ লিখুন।
  2. অভিশাপ কত ধীর গতিতে।
  3. টেনসরফ্লো শিখুন।
  4. ব্ল্যাক ফ্রাইডে ডিল ব্যবহার করে অসুস্থ জিপিইউ সহ একটি নতুন ডেস্কটপ তৈরি করুন।
  5. স্নায়ুবিক নেটওয়ার্ক সংকুচিত করার উপায়গুলির জন্য সাহিত্যের স্কোয়ার করুন এবং এটি করুন।
  6. স্নায়ুবহুল নেটওয়ার্কগুলিকে অতিমাত্রায় এড়াতে পারে এমন উপায়গুলির জন্য সাহিত্যের স্কোয়ার করুন এবং এর বিপরীতে করুন।

বর্তমান নেটওয়ার্কটি 45 টি সিগময়েড নিউরন থেকে তৈরি, প্রতিটি নিউরন এক্স , ওয়াই ইনপুট এবং প্রতিটি পূর্ববর্তী নিউরনের সাথে যুক্ত এবং শেষ, তিনটি নিউরনকে আর , জি , বি হিসাবে ব্যাখ্যা করা হয়েছে । এটি ব্যাচ না করে অ্যাডাম অ্যালগরিদম ব্যবহার করে প্রশিক্ষিত । পরামিতি 1125 সংযোগ তৌল 93 সম্ভাব্য মান (ধ্রুব পদ, যা 93 আছে ব্যতীত একটি পরিসীমা নিরবচ্ছিন্ন হয় 2 সম্ভাব্য মান) এর বৈকল্পিক ব্যবহার সম্ভাব্যতার সূত্রাবলি quantization , প্রাথমিক প্রকরণ আমরা শুন্যতে নিরবচ্ছিন্ন পরামিতি জন্য গ্রেডিয়েন্ট সেট হচ্ছে।

ফলাফল

আউটপুট

কোড

1023 বাইট, এনকোডযুক্ত xxd(সাথে ডিকোড xxd -r)। এই চ্যালেঞ্জটি প্রকাশিত হওয়ার সময় আমি পাইথের 2016-01-22 সংস্করণ ব্যবহার করেছি যা বর্তমান ছিল was আপনি Pyth সরাসরি কোড রান করতে পারেন, কিন্তু এ Pyth PyPy3 ( pypy3 pyth starry.pyth) এটিকে নয়টি গুণ দ্রুত চালায়, প্রায় 3 মিনিটের মধ্যে। আউটপুট ইমেজ লিখিত হয় o.png

00000000: 4b6a 4322 05d4 7bb1 06f8 6149 da66 28e3  KjC"..{...aI.f(.
00000010: 8d17 92de a833 9b70 f937 9fc6 a74e 544d  .....3.p.7...NTM
00000020: 1388 e4e5 1d7e 9432 fe38 1313 3c34 0c54  .....~.2.8..<4.T
00000030: 89fe 553b 83a3 84bb 08c8 09fe 72be 3597  ..U;........r.5.
00000040: b799 34f8 8809 4868 feb8 acde 2e69 34e6  ..4...Hh.....i4.
00000050: 1c1a c49a 27f0 f06a 3b27 0564 178a 1718  ....'..j;'.d....
00000060: 1440 e658 e06a c46d aa81 ac3f c4b7 8262  .@.X.j.m...?...b
00000070: 398a 39e3 c9b7 6f71 e2ab 37e0 7566 9997  9.9...oq..7.uf..
00000080: 54eb eb95 0076 0adf 103c f34c 0b4e e528  T....v...<.L.N.(
00000090: a2df 6b4a 7a02 011a 10a9 2cf0 2edc 9f6f  ..kJz.....,....o
000000a0: 33f3 5c96 9e83 fadb a2fa 80fc 5179 3906  3.\.........Qy9.
000000b0: 9596 4960 8997 7225 edb1 9db5 435e fdd8  ..I`..r%....C^..
000000c0: 08a6 112f 32de c1a5 3db8 160f b729 649a  .../2...=....)d.
000000d0: 51fa 08e8 dcfa 11e0 b763 61e6 02b3 5dbb  Q........ca...].
000000e0: 6e64 be69 3939 b5b2 d196 5b85 7991 bda5  nd.i99....[.y...
000000f0: 087a f3c0 6b76 b1d0 bb29 f7a4 29a3 e21a  .z..kv...)..)...
00000100: 3b1b 97ae 1d1b 1e0f f3c7 9759 2458 c2db  ;..........Y$X..
00000110: 386f 5fbb a166 9f27 2910 a1b5 cfcc d8db  8o_..f.').......
00000120: afaf bdb4 573d efb1 399b e160 6acf e14b  ....W=..9..`j..K
00000130: 4c6b 957a 245a 6f87 63c7 737d 6218 6ab2  Lk.z$Zo.c.s}b.j.
00000140: e388 a0b3 2007 1ddf b55c 7266 4333 f3a2  .... ....\rfC3..
00000150: d58f d80b a3a6 c6c1 d474 58f3 274b 6d32  .........tX.'Km2
00000160: 9d72 b674 7cc4 fdf6 6b86 fb45 1219 cc5c  .r.t|...k..E...\
00000170: 7244 396d 1411 d734 a796 ff54 cf1f 119d  rD9m...4...T....
00000180: 91af 5eab 9aad 4300 1dae d42e 13f8 62a1  ..^...C.......b.
00000190: a894 ab0b 9cb1 5ee2 bb63 1fff 3721 2328  ......^..c..7!#(
000001a0: 7609 34f5 fcfe f486 46e9 dfa8 9885 4dac  v.4.....F.....M.
000001b0: f464 3666 e8b9 cd82 1159 8434 95e8 5901  .d6f.....Y.4..Y.
000001c0: f0f5 426c ef53 6c7e ad28 60f6 8dd8 edaa  ..Bl.Sl~.(`.....
000001d0: 8784 a966 81b6 dc3a e0ea d5bf 7f15 683e  ...f...:......h>
000001e0: 93f2 23ae 0845 c218 6bdc f47c 08e8 41c2  ..#..E..k..|..A.
000001f0: 950e f309 d1de 0b64 5868 924e 933e 7ab8  .......dXh.N.>z.
00000200: dab7 8efb b53a 5413 c64b 48e6 fc4d 26fe  .....:T..KH..M&.
00000210: 594a 7d6b 2dd0 914e 6947 afa7 614d b605  YJ}k-..NiG..aM..
00000220: 8737 554e 31bc b21c 3673 76bf fb98 94f8  .7UN1...6sv.....
00000230: 1a7d 0030 3035 2ce6 c302 f6c2 5434 5f74  .}.005,.....T4_t
00000240: c692 349a a33e b327 425c 22e8 8735 37e1  ..4..>.'B\"..57.
00000250: 942a 2170 ef10 ff42 b629 e572 cd0f ca4f  .*!p...B.).r...O
00000260: 5d52 247d 3e62 6d9a d71a 8b01 4826 d54b  ]R$}>bm.....H&.K
00000270: f26f fe8e d33d efb5 30a8 54fb d50a 8f44  .o...=..0.T....D
00000280: a3ac 170a b9a0 e436 50d5 0589 6fda 674a  .......6P...o.gJ
00000290: 26fb 5cf6 27ef 714e fe74 64fa d487 afea  &.\.'.qN.td.....
000002a0: 09f7 e1f1 21b6 38eb 54cd c736 2afa d031  ....!.8.T..6*..1
000002b0: 853c 8890 8cc0 7fab 5f15 91d5 de6e 460f  .<......_....nF.
000002c0: 4b95 6a4d 02e4 7824 1bbe ae36 5e6c 0acd  K.jM..x$...6^l..
000002d0: 0603 b86c f9fd a299 480f 4123 627e 951f  ...l....H.A#b~..
000002e0: a678 3510 912c 26a6 2efc f943 af96 53cd  .x5..,&....C..S.
000002f0: 3f6c 435c cbae 832f 316c e90e 01e7 8fd6  ?lC\.../1l......
00000300: 3e6d d7b4 fffb cd4a 69c7 5f23 2fe7 bf52  >m.....Ji._#/..R
00000310: 3632 3990 17ed 045a b543 8b79 8231 bc9b  629....Z.C.y.1..
00000320: 4452 0f10 b342 3e41 6e70 187c 9cb2 7eb5  DR...B>Anp.|..~.
00000330: cdff 5c22 9e34 618f b372 8acf 4172 a220  ..\".4a..r..Ar. 
00000340: 0136 3eff 2702 dc5d b946 076d e5fd 6045  .6>.'..].F.m..`E
00000350: 8465 661a 1c6e b6c8 595f 6091 daf2 103b  .ef..n..Y_`....;
00000360: 23ab 343a 2e47 95cf 4218 7bf5 8a46 0a69  #.4:.G..B.{..F.i
00000370: dabb 4b8d 7f9b b0c1 23b1 c917 839c 358c  ..K.....#.....5.
00000380: b33c de51 e41c e84d 12bf 8379 f4c5 65fa  .<.Q...M...y..e.
00000390: 0b65 7fe7 e1a0 fb0e 30f4 a7d2 b323 3400  .e......0....#4.
000003a0: 15e8 8a48 5d42 9a70 3979 7bba abf5 4b80  ...H]B.p9y{...K.
000003b0: b239 4ceb d301 89f8 9f4d 5ce6 8caa 2a74  .9L......M\...*t
000003c0: ca1b 9d3f f934 0622 3933 2e77 6d6d 2b4a  ...?.4."93.wmm+J
000003d0: 4b73 4d3e 332e 574a 615a 6332 3536 685e  KsM>3.WJaZc256h^
000003e0: 3463 732a 4c2d 3436 2e29 4a5a 3138 3739  4cs*L-46.)JZ1879
000003f0: 5b32 3739 6b33 6429 3338 3620 3332 30    [279k3d)386 320

কিভাবে এটা কাজ করে

KjC"…"93
  C"…"     convert the long binary string to an integer in base 256
 j    93   list its base 93 digits
K          assign to K

.wmm+JKsM>3.WJaZc256h^4cs*L-46.)JZ1879[279k3d)386 320
  m                                               320  map for d in [0, …, 319]:
   m                                          386        map for k in [0, …, 385]
     JK                                                    copy K to J
                                      [279k3d)             initialize value to [3*93, k, 3, d]
           .WJ                                             while J is nonempty, replace value with
                         *L      Z                           map over value, multiplying by
                              .)J                              pop back of J
                           -46                                 subtract from 46
                        s                                    sum
                       c          1879                       divide by 1879
                     ^4                                      exponentiate with base 4
                    h                                        add 1
                c256                                         256 divided by that
              aZ                                             append to value
         >3                                                last three elements of the final value
       sM                                                  floor to integers
.w                                                     write that matrix of RGB triples as image o.png

প্রশিক্ষণ

আমার চূড়ান্ত প্রশিক্ষণ চলাকালীন, আমি অনেক ধীর পরিমাণে মাপদণ্ডের শিডিয়ুল ব্যবহার করেছি এবং এটি এবং শেখার হারের সাথে কিছু ইন্টারেক্টিভ ফিডলিং করেছি, তবে আমি যে কোডটি ব্যবহার করেছি তা নিম্নরূপে ছিল।

from __future__ import division, print_function
import sys
import numpy as np
import tensorflow as tf

NEURONS, SCALE_BASE, SCALE_DIV, BASE, MID = 48, 8, 3364, 111, 55

def idx(n):
    return n * (n - 1) // 2 - 3

WEIGHTS = idx(NEURONS)
SCALE = SCALE_DIV / np.log(SCALE_BASE)
W_MIN, W_MAX = -MID, BASE - 1 - MID

sess = tf.Session()

with open('ORIGINAL.png', 'rb') as f:
    img = sess.run(tf.image.decode_image(f.read(), channels=3))
y_grid, x_grid = np.mgrid[0:img.shape[0], 0:img.shape[1]]
x = tf.constant(x_grid.reshape([-1]).astype(np.float32))
y = tf.constant(y_grid.reshape([-1]).astype(np.float32))
color_ = tf.constant(img.reshape([-1, 3]).astype(np.float32))

w_real = tf.Variable(
    np.random.uniform(-16, 16, [WEIGHTS]).astype(np.float32),
    constraint=lambda w: tf.clip_by_value(w, W_MIN, W_MAX))

quantization = tf.placeholder(tf.float32, shape=[])
w_int = tf.round(w_real)
qrate = 1 / (tf.abs(w_real - w_int) + 1e-6)
qscale = 0
for _ in range(16):
    v = tf.exp(-qscale * qrate)
    qscale -= ((1 - quantization) * WEIGHTS - tf.reduce_sum(v)) / \
        tf.tensordot(qrate, v, 1)
unquantized = tf.distributions.Bernoulli(
    probs=tf.exp(-qscale * qrate), dtype=tf.bool).sample()
num_unquantized = tf.reduce_sum(tf.cast(unquantized, tf.int64))
w = tf.where(unquantized, w_real, w_int)

a = tf.stack([tf.ones_like(x) * 256, x, y], 1)
for n in range(3, NEURONS):
    a = tf.concat([a, 256 * tf.sigmoid(
        tf.einsum('in,n->i;', a, w[idx(n):idx(n + 1)]) / SCALE)[:, None]], 1)
color = a[:, -3:]
err = tf.reduce_sum(tf.square((color - 0.5 - color_) / 255))

train_step = tf.train.AdamOptimizer(0.01).minimize(err, var_list=[w_real])

sess.run(tf.global_variables_initializer())

count = 0
quantization_val = 0
best_err = float("inf")

while True:
    num_unquantized_val, err_val, w_val, _ = sess.run(
        [num_unquantized, err, w, train_step],
        {quantization: quantization_val})
    if num_unquantized_val == 0 and err_val < best_err:
        print(end='\r\x1b[K', file=sys.stderr)
        sys.stderr.flush()
        print(
            'weights', list(w_val.astype(np.int64)),
            'count', count, 'err', err_val)
        best_err = err_val
    count += 1
    print(
        '\r\x1b[Kcount', count, 'err', err_val,
        'unquantized', num_unquantized_val, end='', file=sys.stderr)
    sys.stderr.flush()
    quantization_val = (1 - 1e-4) * quantization_val + 1e-4

কল্পনা

এই চিত্রটি x , y স্থানাঙ্কের ফাংশন হিসাবে সমস্ত 45 নিউরনের সক্রিয়তা দেখায় । সম্প্রসারিত করতে ক্লিক করুন.

নিউরন সক্রিয়করণ


আপনি কি নেটওয়ার্কে একটি কনভ্যুশনাল স্তর বা দুটি যুক্ত করার চেষ্টা বিবেচনা করেছেন? আমি মনে করি এটি কোলাহলপূর্ণ নান্দনিকতার চেয়ে আরও ভাল হবে। বিকল্পভাবে, আপনি এই রেখাযুক্ত নিদর্শনগুলি পেতে [x ^ 2, y ^ 2] বা [x% 5, y% 5] এর মতো অতিরিক্ত ম্যানুয়াল-কারুকৃত বৈশিষ্ট্যগুলি চেষ্টা করতে পারেন।
স্টিভেন এইচ।

4
@StevenH। হতে পারে? আমি কনভ্যুশনাল নেটওয়ার্কগুলির জন্য খুব স্বজ্ঞাততা বিকাশ করতে পারি নি, তবে আমার ধারণাটি হ'ল যদিও এই লাইনগুলির সাথে কিছু সম্ভবত ফলাফলকে দৃশ্যত উন্নত করতে পারে, এই চ্যালেঞ্জটিতে ব্যবহৃত পিক্সেল-পার্থক্য ত্রুটি মেট্রিককে উন্নত করতে আপনাকে আরও অনেকগুলি এনকোড করতে হবে গোলমাল নিদর্শনগুলি লম্বা করার জন্য তথ্যটি মূল সাথে মোটামুটিভাবে স্পষ্টভাবে জানায়।
অ্যান্ডারস কাসেরগ

9
হায় খোদা এটা আশ্চর্য! আমি আশা করছিলাম যে কেউ গভীর স্নায়বিক নেটওয়ার্ক পদ্ধতির ব্যবহার করবেন এবং আপনি এটি করতে অতিরিক্ত মাইল গেছেন। এটিও, কোনও সন্দেহ ছাড়াই, সমস্ত উত্তরগুলির দুর্দান্ত চেহারা। আপনার উত্তরের প্রতি দৃষ্টি আকর্ষণ করার জন্য আমি আপনাকে কমপক্ষে সাময়িকভাবে সবুজ চেক চিহ্ন দিচ্ছি।
নাথানিয়েল

2
@ নাথানিয়েল আপাতত আমি একই অচেতনাবিহীন নেটওয়ার্ককে (যা বর্তমানে প্রায় ৪৩৫০ স্কোর) প্রশিক্ষণ দিচ্ছি, তবে পরিমাণ নির্ধারণের কৌশলটি টুইটারে কাজ করছি। এই আপডেটে বেশিরভাগ সংখ্যক উন্নতি হয়েছে প্রতিটি নিউরনের স্থির মেয়াদে একের পরিবর্তে দুটি অঙ্ক বরাদ্দ করা থেকে।
অ্যান্ডারস কাসরগ

1
প্রশিক্ষণের জন্য কতক্ষণ সময় লাগল (পরিমাণকে অবজ্ঞা করা)?
orlp

116

গণিত, স্কোর 14125.71333

"a.png"~Export~ConstantImage[{28,34,41}/95,{386,320}]

এই চিত্রটি সংরক্ষণ করে:

to a.png


28
@ থমাস ওয়ালার আমি প্রতিটি চ্যানেলের মধ্য দিয়েছি।
LegionMammal978

33
@AlexA। অন্য কোনও উত্তর ছিল না, তাই আমি শুরু করার জন্য একটি সাধারণ রেফারেন্স সমাধান তৈরি করার সিদ্ধান্ত নিয়েছি। একটি অ-গুরুতর
জমাটি

63
আমি আশা করি লোকেরা জানেন যে এই চ্যালেঞ্জের চেয়ে কম স্কোরই ভাল।
ক্যালভিনের

47
@AlexA। আমি একমত নই সরলিক সমাধান হলে এটি বৈধ। আমি সন্দেহ করি যে এটি যদি উচ্চতর উত্সাহিত না হয় বা এটি একটি দম্পতির উত্তরগুলির মধ্যে কেবল একটি ছিল তবে এটি সরিয়ে দেওয়ার জন্য কোনও কল হবে।
ক্যালভিনের

35
ব্যক্তিগতভাবে আমি মনে করি যে এটি একটি সূক্ষ্ম উত্তর, প্রশ্নটির চেতনার মধ্যেই।
নাথানিয়েল

110

জাভা, 7399.80678201

এটি আমার একটি সংখ্যার গুণগত গণনা ক্লাসে কয়েক সেমিস্টার পিছনে এমন একটি প্রকল্পের কথা মনে করিয়ে দিয়েছিল যা বহুভুজীয় অন্তরঙ্গকরণ ব্যবহার করে মাউন্ট এভারেস্টের একটি সিলুয়েট আঁকতে হয়েছিল। এটি ম্যাটল্যাবে করা হয়েছিল, তবে আমি ম্যাটল্যাবকে খুব পছন্দ করি না, তাই আমি জাভাতে কাজ করার সিদ্ধান্ত নিয়েছি। এর পিছনে মূল ধারণাটি হ'ল আমি বহুবর্ষীয় অন্তরোলনের জন্য "স্মার্ট" পয়েন্টগুলি (এখানে "এলোমেলো" হিসাবে পড়ুন) বেছে নিয়েছি। আমি যে কয়েকটা বাইট রেখে গিয়েছিলাম তা দিয়ে আমি তারকাদের আঁকার জন্য একটি পথ তৈরি করেছি, যা পর্বতের অঙ্কনের আগে ঘটে। কোডটি ঘনীভূত করা এবং স্কোরকে আরও উন্নত করতে নীচের জন্য আরও একটি বহুভুজ যুক্ত করা সম্ভব হতে পারে।

সম্পাদনা: আমি কয়েকটি বহুভৌতিকে যুক্ত এবং পরিবর্তন করেছি এবং তারকাদের সমস্ত জুড়েছি। আমার আগের স্কোর ছিল 9807.7168935, সুতরাং আপনি দেখতে পাচ্ছেন এটি একটি খুব বড় উন্নতি। দুর্ভাগ্যক্রমে কোডটি তার পঠনযোগ্যতায় হিট করেছিল কারণ তারার সমস্ত পেতে আমাকে শেষ কয়েকটি বাইট ছড়িয়ে দিতে হয়েছিল এবং তাদের গোষ্ঠী দেওয়া হয়েছিল।

import java.awt.image.*;
public class Y{public static void main(String[]a)throws Exception{
int w=386;int[]s={5819,18,5530,9,8644,7,11041,16,21698,14,22354,40/**/,4326,4,29222,14,40262,9,56360,8,59484,12,65748,24};
double[][]p={{-1},{88},{85,0.284,-0.0064,2.028e-5},{128,0.18},{180,0.674,-0.00473,6.65e-6},{240,-0.181},{272,-0.1167},{273,0.075},{3270,-95.57,0.7},{854,-9.83,0.0381}};
int[]c={-12561790,-11439717,-10981487,-11836288,-9600372,-13088667,-13287091,-13354436,-14275540,-14736605};
int o=p.length;BufferedImage b=new BufferedImage(w,320,1);
int i=0;for(;i<o;i++)
{if(i==o-2)for(int j=0;j<s.length;j+=2)for(int l=0;l<w*320;l++)if((l%w-s[j]%w)*(l%w-s[j]%w)+(l/w-s[j]/w)*(l/w-s[j]/w)<s[j+1]*s[j+1])

b.setRGB(l%w, l/w,j<s.length/2+1?j==10?-5788556:-8944525:-7036782);

for(int l=0;l<w*320;l++){int m=0;for(int y=0;y<p[i].length;y++)m+=Math.pow(l%w,y)*p[i][y];if(l/w>m)b.setRGB(l%w,l/w,c[i]);}
}
javax.imageio.ImageIO.write(b,"png",new java.io.File("o.png"));
}
}

9807.7168935 পয়েন্ট: 7399.80678201 পয়েন্ট:
জমা ইমেজ

নতুন জমা দেওয়ার চিত্র


5
এ তো ঝরঝরে! পিপিসিজিতে আপনাকে স্বাগতম!
মেগো

4
আপনি খাঁজকাটা এই রূপান্তরিত করেন, তাহলে আপনি boilerplate, কিছু স্ট্রিপ এবং আরো কয়েকটি অপারেশন পাই নি।
chrylis -on strike-

3
এটি দেখতে অনেকটা দেখতে টেন্টেলের ভাল পুরাতন দিবসের অন্তর থেকে রয়েছে
moooeeeep

13
প্রকৃতপক্ষে অবজেক্ট আঁকার জন্য +1, এভাবে চ্যালেঞ্জের মধ্যে 'উদ্দেশ্যমূলক' শব্দটি পূরণ করুন
প্রোটোটাইপ

3
অঙ্কন সামগ্রীর সমাধানগুলি থেকে এটি আসলে সর্বোত্তম actually
ট্রলারিয়ান

91

পাইথন 3.4 +, 4697.26

আমি আমার ইমেজম্যাগিক উত্তরের মতো একই পদ্ধতিটি ব্যবহার করেছি তবে নিম্নলিখিত প্যারামিটারগুলির সাথে:

convert ORIGINAL.png -filter Lanczos2 -resize x32 - | pngquant --speed 1 -f 20 > i

এই পরামিতিগুলি ব্যবহার করে আমি নিম্নলিখিত 1003 বাইট পাইথন প্রোগ্রামটি উত্পন্ন করেছি (@ কেনেটিমের আউটপুট পদ্ধতির তুলনায় আমি কোনও উন্নতি পাইনি):

import base64,io,PIL.Image
PIL.Image.open(io.BytesIO(base64.b85decode('iBL{Q4GJ0x0000DNk~Le0000d0000W2m=5B0H%16zW@LLJWxzjMIIp@MPHIFJ#$E2f;B{2CoMBscAryil4g95I81|Zh@Ln<KPWOvf|rw@ter+yW3aV*evEZoY;v=uM0+bp*#H0nK}keGRCobZkq5FQAq+ze25eH(F!#UfO3bFOD)N&<AyN0%G0qy;d5u*~Ym6yks#+BaTB}6=d_2Z;Vzlk&;0~~Hy_i{>+fAa)ZE?UH1H4;-#jy7d<b%%Vecw3+`%q(!07-C(^lrsAlm_hcKIHhG&w-n|TvQA6gffYd`#$#lIaq_aH#b${0Rr~{_dXIXm(EsD=KF%BDY~EjjR!sA$`(cljOEjUsu$E%b-uF%pXA;tc+?QOHOg1TfuI?XhSeXYZ9>3XUzpreH6$%YFH{Ofn-d0cv*IqjHQQU+M=7PX5(65sP+;Sbo9=+q2n+8p!-Vw8kW>i%<+}8cQmp`7FKsM?maF*)_e&%vv>nKK;O9GnTVux79!MU;XJ(P4OxFsdP$0<JBn1vPFS#C^=MtEd4K#KWfKgNUS4R-<e)-d?qU?a%g3wBDo2O@CR|#C_9XJLv7TEYbh}4|ri%<P>OPRyX9b--+5K2xN0yhh}oR+t?_naKqIwRUjV<bqt&A9{``7{7G;88q{R8t-~qEriF@LeuTcV}g0x*{|NCUjH^IW_2VS#ngo0;)A8{!h?a6_~1|sx=8kcHC;BrkG+))LLgje9A;921P%7)U^m<Ugv<kAte9fZUa4$W^i)!NGB(M$&qu%TOOqPB^PW9T<Y?FV(GmvdNZJ&G2hY#uH^@ah#eF6sjt;LYY<+_4}trV444*z;!N%*2#R9%)CbWUy<g$^9|zqjA?NsQ`UPFmBW7cjo=pG%002ovPDHLkV1f'))).convert().resize((386,320),1).save('o.png')

যার ফলে এই চিত্রটি উত্পন্ন হয়:

তারাতারি রাত, সংকুচিত


3
অবশ্যই ভাল বেস, 64 বা 85 এর পরিবর্তে সমস্ত 256 বাইট ব্যবহার করে ডেটা সঞ্চয় করা ভাল।
ফেয়ারসুম

@ ফেয়ারসাম আমি পাইথন ফাইলগুলির মধ্যে বাইনারি ডেটা বেস এনকোডিংয়ের চেয়ে ভাল উপায়ে কীভাবে সংরক্ষণ করব তা আমি জানি না।
orlp

স্কোর নিশ্চিত এবং বৈধ হয়েছে - এটি এখনকার বিজয়ী।
নাথানিয়েল

13
@ নাথানিয়েল আপনি কেবল আজই এটি জিজ্ঞাসা করেছেন তাই আমি প্রস্তাব দিচ্ছি যে আপনি এখনও এই উত্তরটি (বা কোনও উত্তর) স্বীকৃত উত্তরটিকে চিহ্নিত করবেন না। লোকেরা যখন কোনও উত্তর গৃহীত হয়েছে দেখে তারা গ্রহণ করতে পারে যে প্রতিযোগিতাটি শেষ হয়েছে এবং অংশ নেবে না। আমি মনে করি কোনও উত্তর গ্রহণের আগে কমপক্ষে এক বা দুই সপ্তাহ অপেক্ষা করা ভাল।
ক্যালভিনের

1
হ্যাঁ, আমি অপসারণ করতে পারেন 1থেকে latin1এবং থেকে একটি হোয়াইটস্পেস সংরক্ষণ import *অন্তত। তবে গল্ফিং যে অগ্রাধিকার ছিল না (যেহেতু এটি 1024 বাইটের চেয়ে কম)।
nneonneo

88

পাইথন 3, স্কোর 5701.31

import base64,io,PIL.Image
PIL.Image.open(io.BytesIO(base64.b85decode('iBL{Q4GJ0x0000DNk~Le0000I0000D2m$~A04pr1P5=M`lSxEDRCrzu%wJF2MgRctyYrpz&VS-04oPU$02O1RYA2$KKm9YcYEUcDJyh+N==-F7oxW_3ecQvNY1*VQwC-UKjIkjQ8wn&8)Ukt&?VNpg?HBmL%~#(%>G5yhoON#6r~Pv6ekHzgk~o3d4gyuJL`u_K5Ca>QWmKD%@0G*T5|2ap)6YJolVN{skh#D2-J*z9sSwJGT&-<XKaADxALs3bTgxl>{_=mG9vyzZf!umCPV=nDpY_PnlC(U%vg$wXwH`cZEO(oS$M*5D=xu#wxzx3!2Zo>s9W*kYzx=A=N>*_{sW%pHRqD>^@zKSEq$TGjvKY#BrP)@HRR163l}43&{y(F((e1rtc2!^X2mO6y&o}IoM9kipbs;pk<JuNalW`QGD9ugFJ{UH3_MAMEM)%9DOccA@Z&M+Kv__Mexy}qD>itE08H7@&wK|if_I*zRFxSRUz9?^ZFg`m^?krP_gDeQ=7dy{4cvhr8><E*y5|gu_xM_1{!!*9Udz<+_jw1Qn_8z|8D0lw?VUSJ>bv`&qy7v&oe)U74a}D9r0<?Kbh$WO6X2sFFvtPgeQELMW#a8ZE``e1>Z20f*zxY<|S}V_D!tCjlc()f7Q<cT<xpz%u5MkbZ`g)qD@ZpQEom%VU&+p<WAef3W^P20qpiYIF)WfEkB@uUOn2ZrL7{m3tn}q|oboY^-PGxZcw3I>uj1fd$ZJs(Vr6?~D<kd795dbx^Ypn(<BaJBRu5S{v9QF?lgFv8^lE5$vMH@2~1P&$UXmDz~jMc9@hDb6+sUt-RA3a?K08cLC;5>#H%1mH_FaU0|12sV9)OKBnxI$()5d@YBM2xYIb)G!>9@_oL00000NkvXXu0mjf'))).resize((386,320),1).save('a.png')

18 × 13 পিএনজি চিত্র থেকে কেবল পুনরুদ্ধার করুন।

এখানে চিত্র বর্ণনা লিখুন


70

জাভা, 8748.95

অন্য পদ্ধতি:

আমি একটি বর্গ তৈরি করেছি যা প্রদত্ত পয়েন্টগুলির একটি সেট থেকে একটি ভোরোনাই ডায়াগ্রামের সংকলন করে। এই পয়েন্টগুলির সেটটি প্যারামিটার সেট হিসাবে ব্যবহৃত হয় যা অ্যাপাচি BOBYQAOptimizer এর ইনপুট হিসাবে কাজ করে । অপ্টিমাইজারের মূল্যায়ন কার্যটি পয়েন্টগুলি নেয় এবং সেগুলি থেকে একটি ভারোনাই ডায়াগ্রাম তৈরি করে। ভোরোনাই অঞ্চলগুলি মূল চিত্রের সংশ্লিষ্ট অঞ্চলের গড় রঙের সাথে রঙিন হয়।

অপ্টিমাইজেশন প্রক্রিয়াটি এখানে দেখানো হয়েছে:

StarryNightAnimation

চূড়ান্ত চিত্রটি হ'ল এটি:

তারকাময় রাত

যা অর্জন 8748.95 এর স্কোর

(এটি আমার নিজস্ব ফাংশন দিয়ে পরিমাপ করা হয়েছিল, তবে মূল্যায়ন স্ক্রিপ্টের মতো হওয়া উচিত)

এই প্রক্রিয়াটির ফলাফলটি কেবলমাত্র 8 টি পয়েন্ট এবং সম্পর্কিত রঙের সেট। (একটি উচ্চতর সংখ্যক পয়েন্টের ফলে আরও খারাপ ফলাফল হয়েছে, তবে আমি এটি সত্যিই ব্যাপকভাবে চেষ্টা করে দেখিনি)।

ফলাফলযুক্ত কোডটি এখানে দেখানো হয়েছে (দুঃখিত, এটি 1 কেবি সীমাতে চেপে ধরতে আমাকে কিছুটা গল্ফ করতে হয়েছিল):

import java.awt.Point;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.Arrays;
import java.util.List;
import javax.imageio.ImageIO;

class V { public static void main(String[] args) throws Exception {
BufferedImage i = new BufferedImage(386,320,2); f(i, Arrays.asList(
    275,159,247,237,46,115,108,313,244,267,59,116,94,111,219,166
),Arrays.asList(
    -10127225,-13022618,-11310968,-14341589,-13551293,-14209747,-11311484,-10915442
)); ImageIO.write(
i, "png", new File("x.png"));}static void f(BufferedImage i, List<Integer> p, 
List<Integer> c){int x,y,r=0; Point q = new Point(), a=new Point(); for (y=0; 
y<i.getHeight(); y++) { for (x=0;x<i.getWidth(); x++) { q.x=x; q.y=y; double 
d = 1e10;; for (int j=0; j<p.size(); j+=2) { a.x=p.get(j); a.y=p.get(j+1);
double s = q.distance(a); if (s < d) { d = s; r = j/2; } } i.setRGB(q.x, q.y, 
c.get(r));}}}}

(আমি জানি, এমন কয়েকটি সহজ উপায় রয়েছে যা আরও ভাল ফলাফল অর্জন করতে পারে তবে ... এটি একরকম মজা ছিল ...)

সম্পাদনা করুন:

মন্তব্যের জবাবে, বৃহত্তর সংখ্যক পয়েন্টযুক্ত এই জাতীয় ভেরোনাই চিত্রের শৈল্পিক শৈলীর বিষয়ে: এটি সত্যই আকর্ষণীয় দেখায় এবং কিছু ইমেজিং সরঞ্জামগুলি বাস্তবে এটি একটি "মোজাইক ফিল্টার" হিসাবে প্রস্তাব করে - উদাহরণস্বরূপ, জিম্পে মোজাইক ফিল্টার ( যদিও এটি প্রান্তগুলিকে জোর দেওয়ার জন্য বিকল্প সরবরাহ করে))।

256 পয়েন্ট সহ স্টারি নাইট চিত্রটির একটি উদাহরণ এখানে। (এগুলি এলোমেলোভাবে নির্বাচিত হয়, তবে বৃহত সংখ্যক পয়েন্টের সাথে একটি অপ্টিমাইজেশনের মাধ্যমে যে উন্নতি অর্জন করা যেতে পারে তা বিলুপ্ত হবে)।

এটি প্রতিযোগিতার অংশ নয় (যেমন এটি 1 কেবি-তে ফিট করে না) কেবল কৌতুহলের জন্য:

StarryNightMosaic


5
+1 ভোরোনোই একটি ভাল ধারণা, আরও বেশি পয়েন্ট সহ আমি মনে করি ছবিটি বিষয়গতভাবে বলতে ভাল লাগবে (কমপক্ষে শিল্পের স্টাইলটি আকর্ষণীয় হওয়া উচিত)। আপনার কিছু মনে না হলে আমি সম্ভবত এটি কিছুটা চেষ্টা করে দেখব।
নিওপ্প্প

@ ননকপ্পে আমি একটি সংক্ষিপ্ত অনুচ্ছেদ এবং একটি বৃহত সংখ্যক পয়েন্ট সহ একটি চিত্র চিত্র যুক্ত করেছি।
মার্কো 13

আপনি আরও কয়েকটি বাইট ব্যবহার করে নিখুঁতভাবে ব্যবহার করতে পারেন import java.util.*;সমস্ত আমদানি ক্লাসগুলি অ্যাসিরিস্টে পরিবর্তন করুন।
ক্লো

@ ক্ল্লো আমি কিছুটা চেষ্টা করেছিলাম: পয়েন্টের সংখ্যা 10 বা 12 এ বাড়ানো শেষ পর্যন্ত কম স্কোরের কারণ হয়ে দাঁড়িয়েছে। সেখানে উচ্চতর স্কোর অর্জনের জন্য অপ্টিমাইজারটিকে টুইঙ্ক করা , বা কোডটি আরও বেশি গল্ফ করা এবং তারপরে সম্ভবত 14 পয়েন্ট ব্যবহার করা (এবং সম্ভবত বর্তমান অপ্টিমাইজার কনফিগারেশন দিয়ে উচ্চতর স্কোর অর্জন করা) অবশ্যই সম্ভব, তবে স্বাধীনতার অনেক বেশি ডিগ্রি রয়েছে এটি নিখুঁতভাবে অন্বেষণ করতে। আমি কেবল ভেবেছিলাম যে এই ভোরোনাই জিনিসটি একটি ঝরঝরে ধারণা হতে পারে এবং যুক্তিসঙ্গত প্রচেষ্টায় একটি "ভাল" ফলাফল অর্জনের চেষ্টা করেছিল।
মার্কো 13

অপ্টিমাইজেশন কীভাবে কাজ করে তা আমি পুরোপুরি জানি না (এটি আমার কাছে নির্জনবাদী দেখায়), তবে এটি দ্রুত পর্যাপ্ত হলে এলোমেলোভাবে শুরু করা ভেক্টরগুলির সাথে কয়েকটি মামলা চালাতে সহায়তা করতে পারে। কমপক্ষে আমি যখন 8 টি পয়েন্ট নিয়ে আমার জি.এ. চালিয়েছিলাম তখন এটি ধারাবাহিকভাবে সমাধানগুলি খুঁজে পেয়েছিল যা পোস্ট করা হয়েছিল তার কয়েকশ পয়েন্ট কম ছিল এবং পয়েন্টের সংখ্যা বাড়ানো দেখে মনে হয়েছিল কঠোরতর সমাধান হতে পারে।
নব্যপ্পে

64

অটোআইটি , 9183.25 7882.53

হালনাগাদ

সুতরাং দেখা যাচ্ছে যে চিত্রটির কোনও সংস্করণ সংরক্ষণের চেয়ে (মাতাল) টডলারের মতো চিত্র পুনরায় আঁকা আরও কার্যকর। ( যাইহোক আমার পুরানো সমাধানের চেয়ে কার্যকর ))

উপাদানটি আঁকতে পারে এমন প্রতিটি লাইন স্কোর হ্রাস করার জন্য গুরুত্বপূর্ণ। আমি সন্দেহ করি যে এই প্রোগ্রামটি খুব ছোটখাট পরিবর্তন সহ below০০০ এর নীচে স্কোর অর্জন করতে সক্ষম, কারণ প্রতিটি একক পরিবর্তনের স্কোরের উপর বিশাল (to 20 থেকে 100 পয়েন্ট) প্রভাব রয়েছে। প্রোগ্রামটি আমার processingগ্রাফিক্স লাইব্রেরি ব্যবহার করে যা জিডিআই ব্যবহার করে অঙ্কনের জন্য সংক্ষিপ্ত ফাংশনের নাম সরবরাহ করে।

যেহেতু এই সমাধানটি এলোমেলোভাবে জড়িত, তাই আমরা স্থির মান 0ব্যবহার করে PRNG বীজ করি SRandom(0)। কেন 0? কারণ এটি অন্য যে কোনও n<=100চেষ্টা করার চেয়ে 50 পয়েন্ট পর্যন্ত ভাল ।

ক্যানভাসটি ফাঁকা হিসাবে শুরু হয় #587092

মেঝে উত্পন্ন হচ্ছে

চিত্রটির নীচের অংশটি (যা এটি ঘুরে দেখা যায় ঠিক 233px [আবার, পয়েন্টগুলির কারণে]] থেকে শুরু হয় ঠিক int(1e4*2.9)উপবৃত্ত দিয়ে পূর্ণ । এখানে ফ্যাক্টর পরিবর্তন করা (বা ফ্যাক্টরের দশমিক স্থান) পয়েন্টের শুল্কের সাহায্যে স্কোরটি ডি-ও করতে পারে। আমি কয়েকটি চেষ্টা করার পরে ২.৯-র জন্য স্থির হয়েছি। স্বভাবতই এতে কিছু সময় লাগবে (কয়েক সেকেন্ড)।

একটি পাঁচ-রঙের প্যালেট সরবরাহ করা হয়:

Dim $3=[0x202526,0x48555A,0x394143,0x364458,0x272E3A]
For $n=1 To 1e4*2.9
$c=$3[$6(0,4,1)]
pen($2,$c,$c)
$4($2,$6(0,386),$6(233,320),4,3)
Next

মেঝেতে ব্লবস

চারটি উপবৃত্তগুলি মেঝে অঞ্চলের অভ্যন্তরে বিপরীতমুখী উচ্চারণ সেট করতে ব্যবহৃত হয় (এটির $4জন্য একটি ফাংশন পয়েন্টার ellipse()):

pen($2,0x1E221F,0x1E221F)
$4($2,44,44,37,290)
$4($2,40,200,99,130)
$4($2,245,270,30,20)
$4($2,355,165,30,20)

আকাশে অ্যাকসেন্ট তৈরি হচ্ছে

আকাশের অভ্যন্তরে উল্লেখযোগ্য রঙের ক্ষেত্রগুলি উপস্থাপিত করার জন্য কয়েকটি লাইন ঘন কলম ব্যবহার করে টানা হয় যা উপবৃত্তাকারগুলির জন্য খুব বেশি প্রসারিত:

$4($2,333,193,50,31)
pensize($2,10)
pen($2,0x24292E,0x24292E)
move($2,0,250)
linestep($2,386,175)
pen($2,0x9FAC9C,0x9FAC9C)
$4($2,333,120,66,33)
move($2,215,190)
linestep($2,340,140)

ওজন পিক্সেল

উপরের পরে, সমস্ত ধুয়ে ফেলা হয় এবং যতক্ষণ না আমরা বাইটগুলি শেষ না করি ততক্ষণ পুনরাবৃত্তি করে। তারপরে বৈধকরণের পদ্ধতিটি ঠকানোর জন্য একটি অস্পষ্ট প্রয়োগ করা হবে। নিষ্ঠুর বল দ্বারা, এটি নির্ধারিত হয়েছে যে ঠিক 20 এর ব্যাসার্ধটি সেরা ফলাফল সরবরাহ করে। এটি প্রায় 1.5k (!) দ্বারা গোল করে স্কোরকে উন্নত করে।

চূড়ান্ত চিত্র

বাচ্চাদের অঙ্কন

কোড, 985 বাইট

#include<ScreenCapture.au3>
#include<GDIPlus.au3>
#include<processing.au3>
SRandom(0)
$4=ellipse
$6=Random
$1=GUICreate(0,386,320)
color(0x587092)
$2=size(0,0)
Dim $3=[0x202526,0x48555A,0x394143,0x364458,0x272E3A]
For $n=1 To 1e4*2.9
$c=$3[$6(0,4,1)]
pen($2,$c,$c)
$4($2,$6(0,386),$6(233,320),4,3)
Next
pen($2,0x1E221F,0x1E221F)
$4($2,44,44,37,290)
$4($2,40,200,99,130)
$4($2,245,270,30,20)
$4($2,355,165,30,20)
pen($2,0x506E9B,0x506E9B)
$4($2,333,193,50,31)
pensize($2,10)
pen($2,0x24292E,0x24292E)
move($2,0,250)
linestep($2,386,175)
pen($2,0x9FAC9C,0x9FAC9C)
$4($2,333,120,66,33)
move($2,215,190)
linestep($2,340,140)
$4($2,105,145,40,40)
$4($2,315,15,70,70)
$4($2,215,15,30,30)
pen($2,-1,0xB6A73F)
$4($2,330,30,40,40)
$4($2,20,5,20,20)
$4($2,115,155,30,30)
GUISetState()
Sleep(99)
_GDIPlus_Startup()
$5=_GDIPlus_BitmapCreateFromHBITMAP(_ScreenCapture_CaptureWnd("",$1,1,26,386,345,0))
_gdiplus_ImageSaveToFile($5,_GDIPlus_BitmapApplyEffect($5,_GDIPlus_EffectCreateBlur(20))&".png")

পুরানো উত্তর

এটিতে 80 টি রঙের মান সংরক্ষণ করা হয় যা 10x8 পিক্সার ছবি তোলে। এই কাঁচা ছবিটির স্কোর 10291। যেহেতু 10x8 40px এর পিক্সিলিটার ফ্যাক্টর, তাই স্কোর কমিয়ে 40px ব্যাসার্ধ ব্যবহার করে একটি গাউসিয়ান ব্লার প্রয়োগ করা হয়। স্ক্রিপ্টটি 9183.25 এ অর্জন করে।

এটি সঞ্চিত ডেটা:

মূল তথ্য

উত্পাদিত ফাইলটি True.png:

ছবি

প্রোগ্রামটি 998 বাইট দীর্ঘ:

#include<ScreenCapture.au3>
#include<GDIPlus.au3>
$1=GUICreate(0,386,320)
$4=0
For $3=0 To 7
For $2=0 To 9
GUICtrlSetBkColor(GUICtrlCreateLabel("",$2*40,$3*40,40,40),Dec(StringSplit("1B2A56,3D5183,39487B,3E4D7E,313C72,2B375B,333C6F,6E7A8F,878D8A,868985,4E6590,344992,344590,3E5793,485C9C,6A7BA0,525C65,637B8F,96A48D,92A0A0,758087,465D84,3D5C94,4A6387,496498,6A83A4,778F97,607A8F,6A8498,727E6E,72878D,65747E,586D83,71889D,476792,57708B,68899E,7A959A,708892,808789,728282,4C5747,415458,5C778B,5A6E80,4C6C94,63848E,656D6F,6A7687,75858F,434E63,29343D,263036,4C574D,6B747A,506895,2D4871,1D2F46,3D4C46,434E7A,2B2D2A,151B1D,282723,121727,23312F,26343C,213537,1E282E,414861,444F45,887E6B,434133,262216,352D26,3E3522,34322E,444040,352F36,444551,3F4047",",",3)[$4]))
$4+=1
Next
Next
GUISetState()
Sleep(2e3)
_GDIPlus_Startup()
$5=_GDIPlus_BitmapCreateFromHBITMAP(_ScreenCapture_CaptureWnd("",$1,1,26,386,345,0))
_gdiplus_ImageSaveToFile($5,_GDIPlus_BitmapApplyEffect($5,_GDIPlus_EffectCreateBlur(40))&".png")

8
আশা করি আপনি উত্তরের মাতাল টডলার অংশ পরীক্ষা করেন নি ।
mgarciaisaia

5
+1 টি। আসল বেসড-এনকোড করার জন্য একটি সরঞ্জাম ব্যবহার করার চ্যালেঞ্জটি আমি দেখতে পাচ্ছি না; আমার কাছে এটি একটি অলস সমাধান বলে মনে হচ্ছে। এই , আমি পয়েন্ট দিতে!
ক্রিস কেরিফাইস

1
এছাড়াও, আমি এই চ্যালেঞ্জের সাথে সম্পর্কিত না করে একটি অটোট্রেসার তৈরি করেছি। এই চিত্রটির জন্য আউটপুটটি বেশ ভাল, এবং আফাইক এটি মানের সাথে আপোস ছাড়াই সবচেয়ে ছোটতম এসভিজি। কোন কম করা করতে পারেন এই করা SVG কোনো উপরন্তু, আমাকে পিং দয়া করে।
mınxomaτ

1
এটি কেবল তিনটি বাইট সঞ্চয়, তবে এর 1e4*2.9সমান নয় 29e3?
2012campion

1
ভাল, আপনার সংরক্ষণ করা প্রতিটি বাইট আপনাকে আরও একটি আদিম যোগ করার কাছাকাছি পৌঁছে দেয়। অপ্টিমাইজেশনের জন্য এটি ব্যবহার করা ভাল পয়েন্ট।
2012campion

45

উইন্ডোজ বিএটি ফাইল, স্কোর 4458.854

echo QlBH+yAAgwKCQAADkkdARAHBcYMSAAABJgGvBVKInJKSe4D9mGo5+oRwrhSlmmqeYK22qun5kDzV+UZhRPdtXWSME8ABlNItkdoM5b0O7jO01KMnUbhSa4GAKq6U/AWBh8J4Od/O0RKwm2Bj1lAWi3yfWb9AB14B9/aml7juRU0fQTVS9LUQxE1eXTfp6f2SdBh9Ibyk3CNjdpEGdZLsuSPaQUP0vWnqtxyBsYQW1orBqzSh4zWFscTx5OMxA4FAw1/Y+/xx+TEUkogp4oykebVfCTFJYFRW6KZ+tvUOb5nFgrIuYbNrZcnWehWOK3rL7i2qCYJ2TnSlwKt4WL04zXve3ggGxAWlD/N6YCchdgS8zaZfVxouhwjbwc1Pb/KAajfGQlv7xHhj42ClMPGeqEZrriJTlLX8GUXpt8RP0LlbVR+PtgPRFerFRzJwTB5ThASKsaKt4LLSQqCXjgJvL2epSQaxq2IJkLelVTqate10dIngfVJqUL2r7omvwQ6N9DWi3ZiF6cRc4PMdPp4Ovo7nM/dlOn1CQ1sOp3mrP12EhGdiGvRsEqdt/jHC1roK5yJVv/L2bAOxK1EJ8qJqaApF7W1VY5htmci8C10UE5iTiBYcPzh8oxPUqXp9+wXgRsDY2sdIo6hOvp8IC9jQXkbDK2lJZjJvcwklTSFah/yqf6biaIOLTtHpEonH1jYXOS4dPzt6oNExlmJztgVFjbqlnB7k3i/mm2UL4+IPjgMMOmH+fwluY+cDA2zG+QtVDGwhSaEEvS9B7L2VkayIuEXKpk9pu/58xwlw4/xQOJE1QGVvSi6uL7DEH4qsumBOGAs50DRu2pCSGfa4c+wn3M0DuFM1p/iRFnq+aNk2PsPc00k8EI5i4QOt/+ac+zKmgEztiz7yI+FzIVKGnn32wLkHVu1ei3VhkWhMy8xlUTAq+fBreWQY > s.b64
certutil -decode s.b64 s.bpg
bpgdec.exe -o stnight.png s.bpg

প্রোগ্রামের আকার 1024 বাইট।
বেস 64-এনকোডড বিপিজি চিত্র থেকে পিএনজিতে রূপান্তর।
ব্যবহার certutil.exe (আদর্শ উইন্ডোজ ইউটিলিটি) এবং bpgdec.exe লাইব্রেরি হিসাবে ইমেজ ডিকোডার।

সঙ্কোচন:

  1. আসল চিত্রটি অস্পষ্ট করা হয়েছিল (গাউসিয়ান ব্লার ফিল্টার, ব্যাসার্ধ 2 পিক্সেল)।
  2. ফলাফলটি bpgenc.exe (কোয়ান্টিজার = 50) দিয়ে বিপিজি হিসাবে এনকোড করা হয়েছিল।
  3. বাইনারি চিত্র বেস 64 এ রূপান্তরিত।

তারকাময় রাত


2
দেখে মনে হচ্ছে আমাদের নতুন বিজয়ী আছে! (এই এক অনির্বাণে অনুপস্থিতি পূরণ করে))
নাথানিয়েল

9
এই মুহুর্তে এটি দেখে মনে হচ্ছে যে বিজয়ীরা গল্ফের নিয়মকে তুচ্ছ বলে বিবেচিত প্রোগ্রামটির সাথে মূল (যে কোনও পদ্ধতিতে) এর ভাল ইমেজ সংক্ষেপণগুলি নিয়ে গঠিত। এটি বলার অপেক্ষা রাখে না যে এখানে ইতিমধ্যে সর্বোত্তম উপলভ্য চিত্রের ফর্ম্যাটগুলির উপস্থিতি অপেক্ষা এই নির্দিষ্ট চিত্রের কোলমোগোরভ জটিলতা সম্পর্কে এখানে আর কারও ভালো ধারণা নেই। যদিও এটি আকর্ষণীয় যে অ্যাডামের তুলনায় এই উত্তরটি মূল (আমার কাছে) "কম" দেখাচ্ছে।
স্টিভ জেসোপ

5
@ স্টিভ জেসোপ হ্যাঁ, এটা সত্যিই লজ্জার বিষয় নয়, আমি চ্যালেঞ্জটি যে রকম হবে তা কল্পনা করেছিলাম really বেশিরভাগ ক্ষেত্রেই কারণ আমি অফ-দ্য-বালুচর সংক্ষেপণ পদ্ধতিগুলি ব্যবহার না করার বিষয়ে একটি নিয়ম লিখেছিলাম তবে এটি চ্যালেঞ্জের মধ্যে পেস্ট করতে ভুলে গিয়েছি। আমি আলগোরিদিম আকর্ষণীয় উত্তর স্বীকার করে এমন চ্যালেঞ্জগুলি নিয়ে আসার বিষয়ে সত্যই আগ্রহী এবং আমি এর থেকে আমার পাঠ শিখেছি।
নাথানিয়েল

3
@ নাথানিয়েল: হ্যাঁ, আমি মনে করি সমস্যাটি হ'ল বিপিজি (বা কোনও চিত্র গ্রন্থাগার) এ ইমেজ ডি / সংক্ষেপণের জন্য কার্যকর অপারেশন বাস্তবায়নকারী কে এবং কে এর কোডগুলি ধারণ করে, এগুলি সবই এই প্রশ্নের বিধি অনুসারে বিনামূল্যে পাওয়া যায়। স্ক্র্যাচ থেকে শুরু করে, 1 কে কোডে এই দক্ষতাকে মারধর করা বড় প্রশ্ন। তবে এটি শিখতে এখনও আকর্ষণীয়, এটি যেমন দেখা যাচ্ছে যে, কেবলমাত্র একটি নির্দিষ্ট চিত্র হ্যান্ডেল করার প্রয়োজনের সুবিধাটি এর চেয়ে বেশি নয়।
স্টিভ জেসোপ

1
@ স্টিভ জেসোপ এটি আকর্ষণীয় যে বিল্ট-ইন সংকোচনের ব্যবহার না করে এমন এন্ট্রিগুলির মধ্যে সেরাগুলি কেবলমাত্র একটি কম রেজোলিউশন রাস্টার চিত্র সংরক্ষণ করে এবং এটি অস্পষ্ট করে দেয় - আকর্ষণীয় অপ্টিমাইজেশন-ভিত্তিক সমাধানগুলি সত্যিই প্রতিদ্বন্দ্বিতা করতে পারে না। যাইহোক, এই সমস্তগুলি আসলে সর্বোপরি উত্স চিত্রের সম্পত্তি হতে পারে। স্টারি নাইটে মোটামুটি অভিন্ন রঙের অনেকগুলি বৃহত অঞ্চল রয়েছে এবং এটি ইতিমধ্যে চেহারাতে কিছুটা ঝাপসা হয়ে গেছে, এটি এ জাতীয় কৌশলগুলির জন্য আদর্শ করে তোলে। আমি যদি প্রচুর উচ্চ-বৈসাদৃশ্য বিশদ সহ একটি চিত্র চয়ন করি তবে বিভিন্ন সমাধান আরও কার্যকর হতে পারে।
নাথানিয়েল

42

সি ++ 11, 7441.68126105 6997.65434833 5198.16107651

আরও আপডেট

আমি পার্লের উপবৃত্তাগুলি পছন্দ করেছি আমাকে সেগুলিতে C ++ 11 এ চেষ্টা করতে হয়েছিল। আমি কাঁচা স্ট্রিংটি সেখানে বাইটগুলি সরাতে ব্যবহার করেছি, তবে কিছুক্ষণের জন্য আমি আমার প্রত্যাশিত স্কোর এবং উত্পন্ন কোডের সাথে সামান্য তাত্পর্য পাচ্ছিলাম। দেখা যাচ্ছে যে আপনি আসলে কোনও কাঁচা 0x0 ডি (ক্যারিজ রিটার্ন) রাখতে পারবেন না, যেহেতু g ++ এটিকে 0x0a (নতুন লাইন) তে রূপান্তর করবে। এই উত্পন্ন উত্সটি কতটা বৈধ তা আমি সত্যই নিশ্চিত নই, তবে এটি আমার কয়েকটি মেশিন সংকলন করে কাজ করে।

আমি আরও একটি অ্যালগরিদম চেষ্টা করেছিলাম, জিএ দেখতে দেখতে আটকে যাওয়ার পরে অ্যাডাপটিভ ডাইমেনশনাল অনুসন্ধান করেছিলাম, কেবল স্থানীয় নূন্যতমটি পোলিশ করার চেষ্টা করতে এবং ভাগ্যবান হয়ে অন্য কোনও কূপের মধ্যে পড়ে যেতে পারে।

এটির সাথে, সি ++ 11 একটি আশ্চর্যজনকভাবে প্রতিযোগিতামূলক স্কোর দেয় (আমি প্রাথমিকভাবে অনুমান করেছিলাম তার চেয়ে অনেক ভাল) ... আমি অবাক হয়েছি যে এটি কেবলমাত্র অন্তর্ভুক্ত হিসাবে স্ট্রিম দিয়ে এটি করতে পারে।

পাঠ্য (হ্যাঁ, নতুনলাইনগুলি আসল উত্সে রয়েছে ... আমি মনে করি আমি সেগুলি সরিয়ে ফেলতে পারি):

#include <fstream>
#define U unsigned
int main(){
auto *d=reinterpret_cast<const U char*>(R"(<<gibberish>>)");
U a=320,b=386,n=*d++;
char m[a*b*3]{0};
for(U i=0;i<n;i++,d+=7){long x=2*d[0],y=2*d[1],w=2*d[2],h=2*d[3];
for(U r=0;r<a;r++){for(U c=0;c<b;c++){long u=c-x,v=r-y;
if((w*w*v*v+h*h*u*u)<=w*w*h*h){auto *p=m+3*(r*b+c);*p++=d[4];*p++=d[5];*p=d[6];}}}}
std::ofstream f{"e.ppm",std::ios::binary};f<<"P6\n386 320\n255\n";for(U i=0;i<a*b*3;i++){f<<m[i];}
return 0;}

Hexdump:

00000000: 2369 6e63 6c75 6465 203c 6673 7472 6561  #include <fstrea
00000010: 6d3e 0a23 6465 6669 6e65 2055 2075 6e73  m>.#define U uns
00000020: 6967 6e65 640a 696e 7420 6d61 696e 2829  igned.int main()
00000030: 7b0a 6175 746f 202a 643d 7265 696e 7465  {.auto *d=reinte
00000040: 7270 7265 745f 6361 7374 3c63 6f6e 7374  rpret_cast<const
00000050: 2055 2063 6861 722a 3e28 5222 2851 1274   U char*>(R"(Q.t
00000060: 5134 8c86 6c7f 2ea0 3638 4c8b c001 c126  Q4..l...68L....&
00000070: 6e84 9500 480b 2964 778f 0196 5c09 353d  n...H.)dw...\.5=
00000080: 346f 476e 6433 4581 0f02 0509 9798 4d12  4oGnd3E.......M.
00000090: 0110 0362 7482 6300 4d1f 2631 645b 213d  ...bt.c.M.&1d[!=
000000a0: 187e 835c 6f84 333d 2c3e 4f9d 71bb 1e22  .~.\o.3=,>O.q.."
000000b0: 2d3d 1f4f 0248 2424 235f 577e 1f71 8990  -=.O.H$$#_W~.q..
000000c0: b314 3a89 404a 5920 1202 0c23 242a 8e01  ..:.@JY ...#$*..
000000d0: 6d30 3645 7145 86b0 082c 3543 4d42 1f52  m06EqE...,5CMB.R
000000e0: 6879 7c7a 336d 1a37 4c82 b876 b606 3146  hy|z3m.7L..v..1F
000000f0: 70a1 015e 0b38 4b7f 0e46 a916 4360 8550  p..^.8K..F..C`.P
00000100: 1623 0930 407c bf13 6e73 4556 6252 9837  .#.0@|..nsEVbR.7
00000110: 4326 2c31 7d81 3303 2e3c 526c 4123 4b37  C&,1}.3..<RlA#K7
00000120: 4758 bd6f 8b0a 2d3c 6000 0006 1b2c 3a6b  GX.o..-<`....,:k
00000130: a83a 134f 4254 6649 590e 174a 6986 3833  .:.OBTfIY..Ji.83
00000140: 0a29 3245 8695 1d27 583e 507f 963c 2b33  .)2E...'X>P..<+3
00000150: 2f3d 6fb6 191f 6752 5f63 b09e 5b0c 3239  /=o...gR_c..[.29
00000160: 4021 4b20 1941 5c87 ab18 1c1e 4a5f 8c35  @!K .A\.....J_.5
00000170: 9d19 311d 211e af4b 3327 4f64 986c 2712  ..1.!..K3'Od.l'.
00000180: 573b 4b73 b733 a718 5f76 9ca9 2919 2163  W;Ks.3.._v..).!c
00000190: 7e9e 8147 8914 8996 726b 1c17 1670 807b  ~..G....rk...p.{
000001a0: 5038 930e 6279 94b0 351d 3086 9b8e ba40  P8..by..5.0....@
000001b0: c10e 3449 6721 4002 232f 394e 22a0 0e74  ..4Ig!@.#/9N"..t
000001c0: 2b2f 2c09 3d0e 1666 7e97 0570 2e05 526d  +/,.=..f~..p..Rm
000001d0: 8a68 1e2f 0a40 5586 bf5d 150c 2022 2e5e  .h./.@U..].. ".^
000001e0: 260e 4b3a 4a7d a368 3807 4c63 972b 5707  &.K:J}.h8.Lc.+W.
000001f0: 2e41 5a79 865e 3c06 2326 3927 9d0e 411d  .AZy.^<.#&9'..A.
00000200: 211d c030 9b16 657f 9666 2434 0a5f 7592  !..0..e..f$4._u.
00000210: 873b 0a1d 8895 89a9 432e 0aa2 aa95 af1d  .;......C.......
00000220: 1212 aab1 7c80 5833 162c 3758 834d 3117  ....|.X3.,7X.M1.
00000230: 718b 9579 2a06 163e 5381 8439 3b0c 5172  q..y*..>S..9;.Qr
00000240: 9d54 3a16 1538 4e73 8c4f 1f0e 8fa2 9ab0  .T:..8Ns.O......
00000250: 200b 07b8 a946 5e40 1e19 5971 9457 5028   ....F^@..Yq.WP(
00000260: 125b 779b bb49 1a07 a1ad a022 7b0a 421f  .[w..I....."{.B.
00000270: 231f 585e 200f 5f77 8a41 5b0e 136a 8089  #.X^ ._w.A[..j..
00000280: 9ca0 9d01 5648 3a40 550c 0c9f a89e 7841  ....VH:@U.....xA
00000290: 2a19 566f 9429 2229 3b0a 5520 613d 3332  *.Vo.)");.U a=32
000002a0: 302c 623d 3338 362c 6e3d 2a64 2b2b 3b0a  0,b=386,n=*d++;.
000002b0: 6368 6172 206d 5b61 2a62 2a33 5d7b 307d  char m[a*b*3]{0}
000002c0: 3b0a 666f 7228 5520 693d 303b 693c 6e3b  ;.for(U i=0;i<n;
000002d0: 692b 2b2c 642b 3d37 297b 6c6f 6e67 2078  i++,d+=7){long x
000002e0: 3d32 2a64 5b30 5d2c 793d 322a 645b 315d  =2*d[0],y=2*d[1]
000002f0: 2c77 3d32 2a64 5b32 5d2c 683d 322a 645b  ,w=2*d[2],h=2*d[
00000300: 335d 3b0a 666f 7228 5520 723d 303b 723c  3];.for(U r=0;r<
00000310: 613b 722b 2b29 7b66 6f72 2855 2063 3d30  a;r++){for(U c=0
00000320: 3b63 3c62 3b63 2b2b 297b 6c6f 6e67 2075  ;c<b;c++){long u
00000330: 3d63 2d78 2c76 3d72 2d79 3b0a 6966 2828  =c-x,v=r-y;.if((
00000340: 772a 772a 762a 762b 682a 682a 752a 7529  w*w*v*v+h*h*u*u)
00000350: 3c3d 772a 772a 682a 6829 7b61 7574 6f20  <=w*w*h*h){auto 
00000360: 2a70 3d6d 2b33 2a28 722a 622b 6329 3b2a  *p=m+3*(r*b+c);*
00000370: 702b 2b3d 645b 345d 3b2a 702b 2b3d 645b  p++=d[4];*p++=d[
00000380: 355d 3b2a 703d 645b 365d 3b7d 7d7d 7d0a  5];*p=d[6];}}}}.
00000390: 7374 643a 3a6f 6673 7472 6561 6d20 667b  std::ofstream f{
000003a0: 2265 2e70 706d 222c 7374 643a 3a69 6f73  "e.ppm",std::ios
000003b0: 3a3a 6269 6e61 7279 7d3b 663c 3c22 5036  ::binary};f<<"P6
000003c0: 5c6e 3338 3620 3332 305c 6e32 3535 5c6e  \n386 320\n255\n
000003d0: 223b 666f 7228 5520 693d 303b 693c 612a  ";for(U i=0;i<a*
000003e0: 622a 333b 692b 2b29 7b66 3c3c 6d5b 695d  b*3;i++){f<<m[i]
000003f0: 3b7d 0a72 6574 7572 6e20 303b 7d         ;}.return 0;}

সি ++ 11 উপবৃত্ত


এই উত্তরটি পূর্ববর্তী উত্তরগুলির সাথে একাধিক পদ্ধতির সমন্বয় করেছে, যা আমি নীচে ব্যাখ্যা করব, দুর্ভাগ্যক্রমে আমি 944 949 চরগুলিতে ফিট করার জন্য কিছুটা গল্ফ শেষ করেছিলাম (মতে wc -c), সুতরাং এটি আর সি ++ এর মতো দেখাচ্ছে না (ক্ষমা চাইলে এটি চ্যালেঞ্জের নিয়মের বিরুদ্ধে, আমি খুব শীঘ্রই কিছু উন্নতির চেষ্টা করতে যাচ্ছি)। আমি প্রথমে এটি নিয়ে পরিকল্পনা করিনি তাই এটি এখনও সম্পূর্ণরূপে অনিবার্য নয় এবং এখনও প্রচুর পরিমাণে কম-ঝুলন্ত ফল রয়েছে।

আপডেট ফলাফল

জেনেটিক অ্যালগরিদমকে দীর্ঘকাল ধরে চালানোর ফলে কিছুটা ভাল ফলাফল এসেছে; তবে, এই রূপান্তরটি উল্লেখযোগ্যভাবে হ্রাস পেয়েছে আমি বলব যে এই বিশেষ পদ্ধতিটি সম্ভবত শীর্ষস্থানটি শুরু করবে (অথবা আমি কিছুটা গভীর স্থানীয় ন্যূনতমের মধ্যে পড়েছি)। আমি আরও কয়েকটি আয়তক্ষেত্রগুলিতে চেপে চূড়ান্ত প্রোগ্রামটি গল্ফ করেছি (সর্বাধিক জিনোমের আকার বাড়ানো ব্যতীত জেনারেটর একই থাকবে)।

ব্যক্তিদের মধ্যে ক্রসওভার বাস্তবায়ন করা যদি সমস্যাটি একটি গভীর স্থানীয় ন্যূনতম হয় তবে এটি যদি কিছু সময়ের জন্য একই পরিসরে থাকে তবে আমি এটি ভাবতে শুরু করি যে এটি আয়তক্ষেত্রের সংখ্যার মতোই হয় about

#include <fstream>
#include <vector>
#define q operator
#define s struct
#define k return

using o=std::ofstream;using i=int;s C{unsigned char r,g,b;};void q<<(o &z,C &c){z<<c.r<<c.g<<c.b;}s R{i x,y,w,h;C c;};s P{P(i a,i b):w(a),h(b),p(w*h){}C &q()(i x,i y){k p[y*w+x];}i w,h;std::vector<C> p;};void q<<(o &z,P &p){z<<"P6\n"<<p.w<<" "<<p.h<<"\n255\n";for(i n=0;n<p.w*p.h;n++){z<<p.p[n];}}i main(){R a{0,0,386,320,{73,87,116}};P p(386,320);for(auto r:
{a
,{0,174,385,145,{48,56,65}}
,{0,33,322,201,{97,123,144}}
,{289,26,96,136,{152,167,153}}
,{114,62,225,128,{128,150,151}}
,{46,74,116,245,{33,38,36}}
,{150,17,224,63,{170,172,109}}
,{85,41,125,158,{70,94,122}}
,{125,197,260,37,{59,77,118}}
,{109,78,105,138,{111,132,145}}
,{76,94,309,33,{88,115,148}}
,{176,17,139,160,{86,111,148}}
,{213,228,172,35,{62,79,97}}
,{0,11,270,89,{75,94,130}}
}
){for(i x=0;x<r.w;x++){for(i y=0;y<r.h;y++){p(r.x+x,r.y+y)=r.c;}}}o f{"a.ppm",std::ios::binary};f<<p;k 0;}

এখানে চিত্র বর্ণনা লিখুন

ভোরোনাই সংস্করণ, 7331.92407536, 989 অক্ষর

আমি আমার জিএ কোড দিয়ে মার্কো 13 এর ভোরোনাই আইডিয়া ব্যবহার করেছি । এটি আসলে আমি যেমন আশা করি তেমন কাজ করে না। আমি আয়তক্ষেত্রের চেয়ে আরও কয়েকটি পয়েন্টগুলিতে কেবল চেঁচাতে পারি। আমি মনে করি ওভারল্যাপিংয়ের কারণে আয়তক্ষেত্রগুলির সম্ভাব্য বিচ্ছিন্নতা প্রকৃতি স্কোরটিকে কিছুটা সহায়তা করে। নির্বিশেষে, আমার প্রথম প্রবেশের মতো একই স্কোর থাকা সত্ত্বেও, আমি এটির মতো দেখতে আরও ভাল দেখায় like

#include <fstream>
#include <vector>
#define q operator
#define s struct
#define k return
using i=int;using o=std::ofstream;s C{unsigned char r,g,b;};void q<<(o &z,C &c){z<<c.r<<c.g<<c.b;}s P{i x,y;C c;P q-(P r){k {x-r.x,y-r.y,{0,0,0}};}i q*(P r){k x*r.x+y*r.y;}i q^(P r){P d=(*this-r);k d*d;}};s X{X(i a,i b):w(a),h(b),p(w*h){}C &q()(i x,i y){k p[y*w+x];}i w,h;std::vector<C> p;};void q<<(o &z,X &p){z<<"P6\n"<<p.w<<' '<<p.h<<"\n255\n";for(i n=0;n<p.w*p.h;n++){z<<p.p[n];}}i main(){P a{101,108,{72,89,122}};X p(386,320);for(i y=0;y<p.h;y++){for(i x=0;x<p.w;x++){P c(a),d{x,y,{0,0,0}};for(auto g:{a,{0,314,{48,56,58}},{182,135,{89,112,144}},{108,262,{34,39,41}},{357,221,{64,78,102}},{251,289,{50,60,75}},{129,161,{108,128,142}},{375,1,{83,104,137}},{44,161,{95,120,144}},{316,254,{53,65,85}},{47,161,{37,43,41}},{373,37,{159,167,121}},{313,138,{87,115,152}},{264,0,{71,88,130}},{314,141,{128,148,153}}}){i m=c^d;i n=g^d;if(n<m){c=g;}}p(x,y)=c.c;}}o f("v.ppm",std::ios::binary);f<<p;k 0;}

ভোরোনাই জিএ

পুরানো ফলাফল, 7441.68126105, 944 অক্ষর

#include <iostream>
#include <fstream>
#include <vector>
#define q operator
#define s struct
#define k return

using o = std::ostream; using i = int; s C{i r;i g;i b;}; o &q<<(o &z,C &c){z<<(char)c.r<<(char)c.g<<(char)c.b;k z;} s R{i x;i y;i w;i h;C c;};s P{P(i a,i b):w(a),h(b){p.reserve(w*h);}C &q()(i x,i y){k p[y*w+x];}i w;i h;std::vector<C> p;}; o &q<<(o &z,P &p){z<<"P6\n"<<p.w<<" "<<p.h<<"\n255\n";for(i n=0;n<p.w*p.h;n++){z<<p.p[n];}k z;} i main() { R a{0,0,386,320,C{89,109,129}}; P p(386,320); for (auto r:
{
a
,{48,31,334,288,C{46,55,66}}
,{1,237,169,81,C{35,40,40}}
,{348,48,37,115,C{126,147,155}}
,{165,20,217,68,C{169,173,113}}
,{106,2,209,217,C{98,120,143}}
,{206,199,178,62,C{61,79,108}}
,{11,31,113,48,C{65,83,129}}
,{239,84,109,106,C{108,132,152}}
,{0,78,326,42,C{86,110,142}}
,{47,0,248,55,C{64,79,121}}
}
) { for(i dx=0;dx<r.w;dx++){for(i dy=0;dy<r.h;dy++){p(r.x+dx,r.y+dy)=r.c;}} } std::ofstream f("a.ppm"); f << p; k 0; }

অনেকগুলি অন্যান্য এন্ট্রিগুলির মতো, প্রোগ্রামটি কেবল ওভারল্যাপিং আয়তক্ষেত্রগুলি আঁকবে। এটি বাইনারি পিপিএম ব্যবহার করে যেহেতু ফর্ম্যাটটি সহজ (আউটপুটটি হ'ল a.ppm, তবে আমি পিএনজি সংস্করণটি আপলোড করেছি যেহেতু এসই পিপিএম পছন্দ করে না), এবং সম্পূর্ণ নিরোধক deter

আমার আউটপুট এর পিএনজি সংস্করণ

ব্যাখ্যা

পিপিএম তৈরির ফলে বয়লারপ্লেট কোডটি বেশ ভাল হয়েছিল, যার অর্থ কিছুটা গল্ফ করার পরেও আমার খুব বেশি আয়তক্ষেত্র থাকতে পারে না। স্কোরকে আরও উন্নত করতে এখানে আরও কয়েকজনকে সম্ভবত নিমজ্জিত করা যেতে পারে।

আসল যাদুটি আয়তক্ষেত্রগুলির তালিকা। অনুরূপ উলফগ্যাং এর উত্তর আমি জেনেটিক আলগোরিদিম ব্যবহার করা এই খুঁজে। প্রকৃতপক্ষে বাস্তবায়নটি অনেকাংশে অসম্পূর্ণ, যেহেতু ব্যক্তিদের মধ্যে পুনরায় সমন্বয় এখনও ঘটে না, তবে রূপান্তর এখনও ঘটে এবং ফিটনেসের দ্বারা টুর্নামেন্ট-স্টাইলের র‌্যাঙ্কিং পরবর্তী রাউন্ডে সেরা জীবকে রাখে। এলিটিজমটিও ব্যবহৃত হয়, যেমন শেষ রাউন্ডের সেরা ব্যক্তির অনুলিপিটি পরবর্তী রাউন্ডে রাখা হয়, সুতরাং সবচেয়ে ফিট জীব সর্বদা আগের রাউন্ডের মতো কমপক্ষে ফিট থাকে।

গতকাল আমি এটি শুরু করার পর থেকে আমি ওল্ফগ্যাংয়ের কোডটি খুব বেশি ঘনিষ্ঠভাবে দেখিনি, তবে মনে হয় যে তিনি রঙটিও আলাদা করতে দেয়, যা স্কোরের পার্থক্য ব্যাখ্যা করতে পারে।

অনুসন্ধানের স্থানটি আরও ছোট রাখতে আমি কেবল আয়তক্ষেত্রের অবস্থানের দিকে চেয়েছিলাম; রঙটি সেই আয়তক্ষেত্র থেকে দৃশ্যমান পিক্সেলগুলির প্রতি চ্যানেল গড় দিয়ে গণনা করা হয় যেহেতু আমাদের উত্স চিত্র রয়েছে (আমি মনে করি না যে আমরা নির্দিষ্ট বর্গক্ষেত্রের জন্য এর চেয়ে আরও ভাল কিছু করতে পারি, কারণ এটি স্কোয়ার-দূরত্বকে হ্রাস করে)।

আমি যদি এটির কাজ চালিয়ে যাই তবে পরবর্তী কয়েক সম্পাদনাগুলিতে আমি গিথুব সংগ্রহস্থল স্থাপন করব তবে আপাতত (একক-ফাইল) কোড পেস্টবিনে রয়েছে । এটি সি ++ 11 মোডে সংকলন করুন (সাইড-নোট, এমনকি এটি এক-অফের জন্য কতটা অগোছালো তা নিয়ে আমি বেশ বিব্রত বোধ করছি)।

ORIGINAL.ppmএটি কাজ করার জন্য আপনার কাছে তারকাযুক্ত নাইটের একটি পি 3 পিপিএম চিত্রের প্রয়োজন হবে । আপনি এই গিটহাব গিস্ট থেকে ফাইলটি ডাউনলোড করতে পারেন ।


পিপিসিজিতে আপনাকে স্বাগতম! আমি এগিয়ে গিয়ে গিটহাব গিস্টে মূল চিত্রটির একটি পি 3 পিপিএম সংস্করণ আপলোড করেছি, তাই আমি আপনার পোস্টে লিঙ্কটি সম্পাদনা করব।
মেগো

3
জেনেটিক অ্যালগরিদম ব্যবহারের জন্য +1। আমি আশা করছি যে জিএ শেষ পর্যন্ত এই চ্যালেঞ্জটি জিতবে।
নাথানিয়েল

আপনি "# অন্তর্ভুক্ত <fstream>" হারিয়ে এবং শেষে "std :: cerr << p" ব্যবহার করে আরও কয়েকটি বাইট পেতে পারেন।
এপিমনাম

@ নামবিহীন ধন্যবাদ, হ্যাঁ এমন আরও কিছু জিনিস রয়েছে যা সত্যিই এটি আরও আঁটসাঁট করতে পারে, (উদাহরণস্বরূপ i r,g,bপৃথক পরিবর্তে রঙের কাঠামো ঘোষণা করা যেতে পারে এবং প্রচুর স্থান ফেলে দেওয়া যেতে পারে)। আমি নিশ্চিত ছিলাম না প্রোগ্রামটি ফাইলটি সরাসরি জেনারেট করবে কিনা বা স্টাডাউট / স্টার্ডার-এ পাইপিং ঠিক আছে কিনা।
নিওপ্প্প

একটা জায়গা কেন #include <fstream>? এছাড়াও, নতুনলাইনগুলি ফেলে দিন এবং সমস্ত এক লাইনে রেখে দিন যেহেতু সি ++ এর জন্য যে
বিড়াল

41

চিত্রম্যাগিক, 4551.71

নিম্নলিখিত বিকল্পগুলি ব্যবহার করে ইমেজম্যাগিক 'প্রোগ্রামিং' ভাষা ব্যবহার করুন (আপনার এড়িয়ে যেতে হতে পারে !):

convert i -resize 386x320! o.png

নিম্নলিখিত 968 বাইট উত্স ফাইল (হেক্সডাম্প হিসাবে দেওয়া) ধরে নেওয়া হচ্ছে:

00000000: 89 50 4E 47 0D 0A 1A 0A - 00 00 00 0D 49 48 44 52 | PNG        IHDR|
00000010: 00 00 00 30 00 00 00 28 - 08 03 00 00 00 8F 59 89 |   0   (      Y |
00000020: 43 00 00 00 3C 50 4C 54 - 45 1E 22 1F 5D 73 88 3B |C   <PLTE " ]s ;|
00000030: 51 8A 38 48 60 51 6F 9C - 30 41 7C 38 40 41 49 63 |Q 8H`Qo 0A|8@AIc|
00000040: 8E 27 2E 3A 63 7C 9B 42 - 56 79 29 36 5C 74 8C A1 | '.:c| BVy)6\t  |
00000050: 74 89 8B 8D A0 97 4E 5C - 62 A4 AF 9E B0 B4 79 84 |t     N\b     y |
00000060: 8F 70 B3 A3 3C C0 50 80 - E6 00 00 03 47 49 44 41 | p  < P     GIDA|
00000070: 54 78 01 65 91 07 16 C3 - 28 0C 44 25 9A A8 C6 71 |Tx e    ( D%   q|
00000080: EE 7F D7 FD C2 5B B3 F3 - 1C EA 7C 15 22 A3 EB D2 |     [    | "   |
00000090: 5E 47 D4 38 46 B0 A5 21 - E7 AE AA 9D 79 8C D1 63 |^G 8F  !    y  c|
000000a0: 8E 21 F4 6E 66 81 2F 77 - 19 F6 7C 9F 36 46 7E 94 | ! nf /w  | 6F~ |
000000b0: 61 3D D0 28 58 CE 39 F8 - 22 9C B1 63 D7 B6 D4 0C |a= (X 9 "  c    |
000000c0: 60 3D 4F CB 98 63 1E 99 - 33 7D 1E DC 28 70 A1 21 |`=O  c  3}  (p !|
000000d0: E4 90 C1 75 5E D7 E7 BA - 96 4A 0E AD B5 90 47 CD |   u^    J    G |
000000e0: 88 70 39 E8 66 66 63 00 - CB CE CA 6C 5D 1F 04 22 | p9 ffc    l]  "|
000000f0: 83 5B 0E EB 01 88 F6 8A - 08 2F D0 07 9B D4 A6 FB | [       /      |
00000100: BF DF CF 0D 10 5E A0 EC - DD F3 2B 8A 3B 4B 53 35 |     ^    + ;KS5|
00000110: C0 9C 5F E0 0B 03 40 82 - 03 EC E7 BB 33 EA 96 30 |  _   @     3  0|
00000120: D2 B9 33 DE 01 B2 34 4F - 7C 74 49 78 55 F7 F7 FB |  3   4O|tIxU   |
00000130: 30 9B 29 2F 35 E7 4C AD - A5 30 3A 70 4B 29 5D FF |0 )/5 L  0:pK)] |
00000140: 00 BC FB C9 D0 55 3D 54 - C2 AF A8 29 61 5B 1F FA |     U=T   )a[  |
00000150: 5C 0B 62 DE 10 C8 81 44 - 5F 00 99 E0 44 55 5D 8B |\ b    D_   DU] |
00000160: 55 27 AE 13 59 79 CC 99 - AC AD FB 00 F4 D0 74 69 |U'  Yy        ti|
00000170: 0F 21 96 86 56 6B B3 47 - 32 21 6C D6 CC D6 9A 64 | !  Vk G2!l    d|
00000180: A0 D0 CF E9 79 49 9A 6B - E2 53 51 CC 30 71 D0 86 |    yI k SQ 0q  |
00000190: 61 61 6F 88 25 40 48 EB - BA EE EB 9A 4D D4 9A 6B |aao %@H     M  k|
000001a0: CB 66 D4 67 C5 B3 4F 7C - 73 B6 D0 ED 34 C6 07 37 | f g  O|s   4  7|
000001b0: FD 58 3C 0E A5 14 D9 73 - 1A 80 01 BC 57 3C 55 07 | X<    s    W<U |
000001c0: 20 87 85 03 1C 4E A6 4B - 15 80 37 31 3D FE A4 CD |     N K  71=   |
000001d0: 12 00 0E 83 41 E9 55 37 - 7D 01 2D 55 A2 F1 B6 39 |    A U7} -U   9|
000001e0: 78 25 FA BE 18 94 CE B5 - DA 89 7E D4 AE 5B 3C 77 |x%        ~  [<w|
000001f0: 33 11 29 3D C6 11 0E 00 - 11 08 6E AA 2C F5 64 82 |3 )=      n , d |
00000200: 98 B4 7D DF 72 35 F2 6C - 41 31 52 30 51 D0 3C A5 |  } r5 lA1R0Q < |
00000210: E0 A7 1A 42 E0 C6 8E FB - 05 4C 3F 4F 71 A0 73 3C |   B     L?Oq s<|
00000220: 79 39 E4 98 92 83 EC 6F - 2F 13 EF 91 50 2D FF 89 |y9     o/   P-  |
00000230: 03 C5 D2 89 32 79 75 A2 - 78 A7 86 19 86 F9 3E F5 |    2yu x     > |
00000240: 30 0A 55 EB F3 54 CF E0 - 3D DD 9F FB B6 DC 9B BF |0 U  T  =       |
00000250: 7F 27 03 52 0D CD BD 73 - AE 5D 8A 84 4E A8 2E 28 | ' R   s ]  N .(|
00000260: 9A 5E B7 FF FD 6A 28 99 - 03 CA 13 AB AE FB C2 DF | ^   j(         |
00000270: 1A 75 54 21 77 B6 28 A8 - F4 3E 4F 5A 7A 34 3E 6B | uT!w (  >OZz4>k|
00000280: 58 2F E4 5A 6B EE 5A 85 - 6F AD 65 2F 50 63 57 F7 |X/ Zk Z o e/PcW |
00000290: 2F 7C 48 DD 06 30 8F D8 - D7 51 91 34 CE 1A 00 8A |/|H  0   Q 4    |
000002a0: B1 37 6E 9E 67 BD C3 0B - CE A9 AA BD D4 3A A2 4B | 7n g        : K|
000002b0: B4 11 69 0B 22 DF 6E C4 - C4 89 D5 5D 7D 8C 41 DE |  i " n    ]} A |
000002c0: 1E BD 98 68 C9 EB 14 55 - 1E FA 2F 40 88 D9 68 55 |   h   U  /@  hU|
000002d0: 4D 93 B9 3D 43 54 9F 79 - CC 23 93 40 6F 4D E5 25 |M  =CT y # @oM %|
000002e0: 44 76 37 9C 91 21 C6 9C - 63 1C D5 CD C1 F8 52 6B |Dv7  !  c     Rk|
000002f0: 9E A1 1B E1 1A 56 E4 23 - 36 A2 7A D0 DE F3 89 DD |     V #6 z     |
00000300: 51 EC D1 BC C8 BD A5 12 - 20 47 F9 47 E3 6D 0F 20 |Q        G G m  |
00000310: E2 27 4B 89 85 FD 8E BA - 11 40 C5 21 FF 52 45 A5 | 'K      @ ! RE |
00000320: 6F 9E 6C 13 D9 75 8C 3E - E9 01 D0 2F 80 89 A2 08 |o l  u >   /    |
00000330: 0A 30 4A 2D C0 F8 B5 E3 - 2F DC 93 42 FE 8D D4 81 | 0J-    /  B    |
00000340: CB 0B E1 02 23 33 16 F2 - BD 59 A4 94 01 20 3F 39 |    #3   Y    ?9|
00000350: 64 97 B2 2B D1 11 0E 47 - F6 AE 85 E6 C4 C7 5F 80 |d  +   G      _ |
00000360: 8F 42 36 76 21 60 F5 64 - 7E 72 24 67 2F BF 44 45 | B6v!` d~r$g/ DE|
00000370: EE 78 B7 91 74 A7 95 4D - 06 2E E0 7F 45 A0 78 10 | x  t  M .  E x |
00000380: D6 83 9A CA 8E 75 17 9C - 00 05 FD 1F 70 95 57 70 |     u      p Wp|
00000390: B4 79 BA 97 53 1B AA BF - 39 DC 56 98 10 AF 73 DA | y  S   9 V   s |
000003a0: 06 72 B7 50 9D 0B E2 5F - 10 6E 54 DF 5F 8C 4C 48 | r P   _ nT _ LH|
000003b0: 3C E9 FE 03 71 28 35 5B - 5B 36 D8 64 00 00 00 00 |<   q(5[[6 d    |
000003c0: 49 45 4E 44 AE 42 60 82 -                         |IEND B` |
000003c8;

এই চিত্রটি উত্পাদন করছে:

তারার রাত - সংকুচিত


আপনি সম্ভবত ভাবছেন যে কীভাবে আমি ইনপুট ফাইলটি তৈরি করেছি এবং উত্তরটি খুব সহজ। ল্যাঙ্কজস ফিল্টার সহ 48x40-এ পুনরায় আকার দিন, একটি 20 রঙের ইনডেক্সড প্যালেট ব্যবহার করুন এবং ফলাফলটি পিএনজি অনুকূল করুন optim

convert ORIGINAL.png -filter Lanczos2 -resize x40 - | pngquant --speed 1 -f 20 > i
optipng -o7 -strip all i && advdef -z -4 -i 1024 i

ব্যবহার convert, pngquant, optipngএবং advdef


মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়; এই কথোপকথন চ্যাটে সরানো হয়েছে ।
Doorknob

1
এফওয়াইআই, আমার উত্তর=(tail +2 $0) থেকে কৌশলটি ব্যবহার করে , আপনি একটি একক জেডএসএইচ স্ক্রিপ্ট তৈরি করতে পারেন যাতে চিত্রম্যাগিক স্ক্রিপ্ট এবং পিএনজি ইনপুট ফাইল উভয়ই রয়েছে।
nneonneo

40

পাইথন 2, 4749.88

1018 বাইট

সবাই বাদে সম্ভবত আমি এখনই এই সমস্যাটি ভুলে গেছি ...

এই সমস্যাটি আমাকে অনেক বেশি আগ্রহী করেছে, বিশেষত এটি দ্রুত স্পষ্ট হয়ে উঠেছে যে চিত্র সংক্ষেপণ অ্যালগরিদমগুলি ব্যবহার করার পদ্ধতিগুলি অবশ্যই নেতৃত্বে ছিল, তবে কোনওভাবেই একটি নান্দনিক দিক থেকে অসন্তুষ্ট হওয়া। অঙ্কন আদিম সেটগুলির অনুকূলকরণের ভিত্তিতে পন্থাগুলি কোনও কোনও কোডের নান্দনিক দৃষ্টিকোণ থেকে আরও ভাল লেগেছে, তবে মনে হয় এটি 5000 স্কোরের ঠিক উপরে blocked

নিওনিওর পদ্ধতিটি যা শেল্ফ চিত্রের সংক্ষেপণটি বন্ধ ব্যবহার করে না এটি 5000 চিহ্নকে মারধর করে তবে একটি ক্ষুদ্র চিত্রকে এনকোড করে এবং এটি উপুড় করে does

এখানে এমন একটি প্রোগ্রাম রয়েছে যা কেবল অঙ্কন আদিম ব্যবহার করে, একটি অপ্টিমাইজেশন পদ্ধতি দ্বারা স্বয়ংক্রিয়ভাবে উত্পন্ন হয় এবং 4749.88 এর স্কোর পেতে পরিচালনা করে।

import cv2 as v,numpy as n,struct
z=n.ones((320,386,3),'u1')
z[:]=145,106,81
z[226:]=80,67,56
s='v\n#{~X©s"¾|ën²ºÉ¬ª·.v"4Á=ð.yv>ä;¦>t?ÞC°GòS¾ó[pQ¹,g]xgQÒWµló´:eX K² }w¯hVZ[ÂbD¹t¦\n§1±"}¼e®`h¸B½qò¥èJÕN©²f­J¦ü   ³|©t|   \rÕ5SO©¾zP±¤Od\rÆ¥L©|¸B{I¯Öb~¯½ÒdzQ½}}D«s\x8ewxK    ^pMz2L5`mce|ÙvlRcnJqw3|ÿGZ:s4\r]r.  ÝX,(\n*÷¹òW@Àà´IºäQ,pfuQhØvTzDÂ\\NnbSbº |!1o0»5,fSñ8¿-VÇ4}¡$y   ­S(Y³ek.MÌ  wdvB\n r³UƨJÒ^<©èf#}<©lux6º}\0SÑP{\0TBÏx°A~w00ÃU)\x8e\n½Iá\0TòKUVmWOTæ¢ynLrXYKº\npkJWÀw«g"Sh4kIg"|[pÞ££ì$OH\\³>°nu9|6Õ¼¡.A2qrÀ\\ZýzE{mwG]+YHÃèrälT·¥DNN\0T'
m,h=512,62
for a,b,c,d,r in[struct.unpack('HHBBB',s[7*i:7*i+7])for i in range(92)]:
 x,y=a/m-h,b/m-h
 for k in range(h):v.circle(z,(a%m-h+x*k/h,b%m-h+y*k/h),r,n.clip((.9*c+.9*d-120,c-.3*d+41,.9*c-.6*d+80),0,255),-1)
v.imwrite('a.png',v.blur(z,(9,9)))

যা দেখতে এরকম দেখাচ্ছে:

অঙ্কন ফলাফল

এবং কোডের হেক্সডাম্প:

0000000: efbb bf69 6d70 6f72 7420 6376 3220 6173  ...import cv2 as
0000010: 2076 2c6e 756d 7079 2061 7320 6e2c 7374   v,numpy as n,st
0000020: 7275 6374 0a7a 3d6e 2e6f 6e65 7328 2833  ruct.z=n.ones((3
0000030: 3230 2c33 3836 2c33 292c 2775 3127 290a  20,386,3),'u1').
0000040: 7a5b 3a5d 3d31 3435 2c31 3036 2c38 310a  z[:]=145,106,81.
0000050: 7a5b 3232 363a 5d3d 3830 2c36 372c 3536  z[226:]=80,67,56
0000060: 0a73 3d27 8076 5c6e 0523 8414 9d7b 7e58  .s='.v\n.#...{~X
0000070: a973 22be 7ceb 6eb2 8416 ba05 c9ac aa8b  .s".|.n.........
0000080: 13b7 2e76 0522 8434 c13d f08a 2e95 0e79  ...v.".4.=.....y
0000090: 763e e43b a60b 3e74 3fde 43b0 0b9e 9247  v>.;..>t?.C....G
00000a0: f253 be0e 0cf3 5b70 51b9 1a2c 675d 7889  .S....[pQ..,g]x.
00000b0: 850f 6719 51d2 57b5 116c 05f3 909a 940c  ..g.Q.W..l......
00000c0: b405 3a65 58a0 114b b220 7d77 af0b 6856  ..:eX..K. }w..hV
00000d0: 835a 5bc2 1562 44b9 749b a65c 6e90 0701  .Z[..bD.t..\n...
00000e0: a731 9807 9107 b122 7dbc 1265 05ae 6068  .1....."}..e..`h
00000f0: b80c 42bd 71f2 9ca5 01e8 4ad5 4e8d a90e  ..B.q.....J.N...
0000100: 1291 b266 93ad 0c4a a6fc 9e9a 8d09 b37c  ...f...J.......|
0000110: a974 937c 095c 72d5 3553 4fa9 1d9d 94be  .t.|.\r.5SO.....
0000120: 7a50 b10e a44f 8064 851e 5c72 8fc6 a54c  zP...O.d..\r...L
0000130: 8ba9 0f81 7cb8 421c 7b07 49af d662 7eaf  ....|.B.{.I..b~.
0000140: 1abd d264 7a51 bd0b 7d87 7d44 ab73 0b8c  ...dzQ..}.}D.s..
0000150: 5c78 3865 7778 874b 095e 704d 7a91 3207  \x8ewx.K.^pMz.2.
0000160: 4c35 606d 0b63 0865 7cd9 769e 6c0b 5263  L5`m.c.e|.v.l.Rc
0000170: 8b6e 9a82 0b4a 7113 7733 9c0b 9f7c ff86  .n...Jq.w3...|..
0000180: 479b 0b5a 143a 7334 9d5c 7282 965d 722e  G..Z.:s4.\r..]r.
0000190: 9509 dd58 2c9d 288c 5c6e 2a1f f796 938c  ...X,.(.\n*.....
00001a0: 07b9 f20f 5792 8907 40c0 e0b4 49ba 02e4  ....W...@...I...
00001b0: 9c51 9d2c 8a0e 7066 7551 1168 03d8 7654  .Q.,..pfuQ.h..vT
00001c0: 7a88 4406 c25c 5c4e 6e95 0101 6253 1c8f  z.D..\\Nn...bS..
00001d0: 62ba 097c 2131 6f30 8803 bb35 2c8b 6685  b..|!1o0...5,.f.
00001e0: 0753 f138 bf2d 9306 56c7 347d 909c 0295  .S.8.-..V.4}....
00001f0: a124 8b79 a009 ad53 2885 1c59 01b3 656b  .$.y...S(..Y..ek
0000200: 892e 860b 4dcc 9988 8da0 099e 7764 769f  ....M.......wdv.
0000210: 425c 6ea0 8572 86b3 550b c6a8 904a 908a  B\n..r..U....J..
0000220: 05d2 5e92 9a3c a905 e866 237d 3ca9 0b6c  ..^..<...f#}<..l
0000230: 7578 3681 ba07 7d80 9304 5c30 5302 97d1  ux6...}...\0S...
0000240: 507b 5c30 5401 4280 cf78 b083 0696 417e  P{\0T.B..x....A~
0000250: 7730 920b 30c3 5589 295c 7838 655c 6ebd  w0..0.U.)\x8e\n.
0000260: 49e1 865c 3054 01f2 984b 5501 5602 086d  I..\0T...KU.V..m
0000270: 574f 0154 03e6 a279 828c 9d07 926e 4c72  WO.T...y.....nLr
0000280: 8a58 038c 8459 884b ba5c 6e70 846b 4a57  .X...Y.K.\np.kJW
0000290: c008 9077 9180 ab67 0b22 5368 9734 8911  ...w...g."Sh.4..
00002a0: 1a6b 4967 2284 067c 815b 8570 9306 de9c  .kIg"..|.[.p....
00002b0: a38a 8ba3 08ec 244f 485c 5cb3 083e b06e  ......$OH\\..>.n
00002c0: 7539 7c0c 36d5 bc86 94a1 042e 4132 859c  u9|.6.......A2..
00002d0: 9a01 7172 c05c 5c04 5a01 fd7a 457b 6d91  ..qr.\\.Z..zE{m.
00002e0: 0611 7747 8d5d 9708 2b59 9548 c38c 01e8  ..wG.]..+Y.H....
00002f0: 72e4 6c54 b706 a544 4e4e 5c30 5401 270a  r.lT...DNN\0T.'.
0000300: 6d2c 683d 3531 322c 3632 0a66 6f72 2061  m,h=512,62.for a
0000310: 2c62 2c63 2c64 2c72 2069 6e5b 7374 7275  ,b,c,d,r in[stru
0000320: 6374 2e75 6e70 6163 6b28 2748 4842 4242  ct.unpack('HHBBB
0000330: 272c 735b 372a 693a 372a 692b 375d 2966  ',s[7*i:7*i+7])f
0000340: 6f72 2069 2069 6e20 7261 6e67 6528 3932  or i in range(92
0000350: 295d 3a0a 2078 2c79 3d61 2f6d 2d68 2c62  )]:. x,y=a/m-h,b
0000360: 2f6d 2d68 0a20 666f 7220 6b20 696e 2072  /m-h. for k in r
0000370: 616e 6765 2868 293a 762e 6369 7263 6c65  ange(h):v.circle
0000380: 287a 2c28 6125 6d2d 682b 782a 6b2f 682c  (z,(a%m-h+x*k/h,
0000390: 6225 6d2d 682b 792a 6b2f 6829 2c72 2c6e  b%m-h+y*k/h),r,n
00003a0: 2e63 6c69 7028 282e 392a 632b 2e39 2a64  .clip((.9*c+.9*d
00003b0: 2d31 3230 2c63 2d2e 332a 642b 3431 2c2e  -120,c-.3*d+41,.
00003c0: 392a 632d 2e36 2a64 2b38 3029 2c30 2c32  9*c-.6*d+80),0,2
00003d0: 3535 292c 2d31 290a 762e 696d 7772 6974  55),-1).v.imwrit
00003e0: 6528 2761 2e70 6e67 272c 762e 626c 7572  e('a.png',v.blur
00003f0: 287a 2c28 392c 3929 2929                 (z,(9,9)))

এটি এখানে আগে ব্যবহৃত বেশ কয়েকটি কৌশল ব্যবহার করে:

  • চূড়ান্ত স্কোরটিকে কিছুটা ধাক্কা দিতে একটি অস্পষ্ট ব্যবহার করে
  • পাইথন কোডে কাঁচা বাইটগুলি ক্র্যামিং করা (যা এই থ্রেডের আগে পরামর্শ মতো এতটা সহজ নয়, বিশদ জন্য এখানে কোডটি খনন করুন, কেবল ব্যাকস্ল্যাশস এবং নালসের চেয়ে আরও বেশি অক্ষর এড়ানো দরকার)।
  • রঙের স্থানটিকে দুটি মাত্রায় সংকুচিত করা। আকর্ষণীয়ভাবে, এই বিশেষ স্টারি নাইট চিত্রটি আরজিবি স্পেসে প্রায় একটি বিমান plane

প্রথম আদিম হিসাবে, আমি একটি দিগন্তের রেখা রাখি, চিত্রটি দুটি ভিন্ন বর্ণের ব্লকের মধ্যে বিভক্ত করি। এরপরে, প্রাথমিক আদিম হিসাবে আমি দুটি পয়েন্টের মধ্যে টানা টানা একটি বৃত্ত ব্যবহার করেছি। এটি আমার কাছে ব্রাশস্ট্রোকের মতো অস্পষ্টভাবে দেখেছিল তবে এটি 7 বাইটে প্রকাশ করা সম্ভব হয়েছিল। অনুসন্ধান প্রক্রিয়াটির জন্য, আমি একটি গাইডেড প্যাটার্ন অনুসন্ধান ব্যবহার করেছি। এটি পর্যায়ক্রমে একটি আদিম যোগ করে এবং এর পরামিতিগুলি অনুকূল করে এগিয়ে যায়। অস্পষ্ট স্বাক্ষরযুক্ত ত্রুটি সর্বাধিক যেখানে পয়েন্টে আদিমটি যুক্ত করা হয়। প্যারামিটারগুলি একের পর এক ছোট ডোমেনের উপরে পরিসীমা লাইন অপ্টিমাইজেশান দ্বারা অনুকূলিত হয়। চল্লিশ থেকে পঞ্চাশটি আদিম যোগ করা হয় এবং স্বতন্ত্রভাবে অনুকূলিত হয়। তারপরে, আদিমদের তালিকাটি স্কোরকে সবচেয়ে কম সহায়তা করতে পারে এমন আদিমগুলিকে ফেলে দিয়ে আকারে ছাঁটাই করা হয়।

এটি এখনও নিওনিওর স্কোরকে পরাজিত করতে পারে না। এই স্কোরটি হারাতে, দ্বিতীয় স্তরের অপ্টিমাইজেশন প্রয়োজন হয়েছিল, যা বিভিন্ন ফিল্টারিং স্তরের প্রতিটিটিতে আদিম সংযোজন এবং উত্পন্ন প্রোগ্রামটিকে আকারের নিচে ছাঁটাই করার জন্য আদিমকে ফেলে দেয়। আমার কাছে যা সত্যই আকর্ষণীয় তা হ'ল এটি অন্যান্য চিত্রগুলিতে প্রয়োগ করার ধারণা। আমি এটি অন্য কয়েকটি চিত্রের জন্য প্রয়োগ করেছি এবং আমার ব্লগে এখানে আঁকানো আদিমগুলির আরও বিশদ এবং অ্যানিমেশন সরবরাহ করেছি

এটি উত্পন্ন করতে ব্যবহৃত দুটি প্রোগ্রাম স্ট্যাক এক্সচেঞ্জের পোস্টগুলিতে অনুমোদিত জায়গাগুলিতে যথাযথভাবে খাপ খায় না, তবে এগুলি গিথুবে রয়েছে: https://github.com/str4w/starrynight/tree/StackExchange

স্টারাইনাথ প্রথমে রান করা হয়, তারপরে স্টেজ 2 এপটিমাইজেশন। ফলাফল প্রোগ্রামটিও একই ডিরেক্টরিতে রয়েছে in


4
দুর্দান্ত উত্তর, আমি এটি দেখে খুব খুশি! আমি পোস্ট করা বোনাসের নিয়ম অনুসারে, 200 পয়েন্টের অনুগ্রহ আপনাকে প্রায় এক সপ্তাহের মধ্যেই ডেকে আনবে, ধরে নেওয়া নিয়ে এর আগে কোনও বিল্ট-ইন-কম্প্রেশন উত্তরটি আপনার স্কোরকে হারাবে না।
নাথানিয়েল

3
সিজি.এসই তে স্বাগতম! প্রথম প্রথম পোস্ট!
আর্কটরাস

এটি দুর্দান্ত। আমি কিছুটা আশ্চর্য হয়েছি যে ব্লার এত ভাল কাজ করে; আমি আমার আউটপুটগুলিতে কয়েকটি ভিন্ন অস্পষ্টতা পরামিতি চেষ্টা করেছি এবং আমার পার্ল সমাধানটি 5 কে এর নিচে যেতে পারে, তবে দুর্ভাগ্যক্রমে আমার এটি প্রয়োগ করার সহজ উপায় নেই।
নিওপ্প্প

1
অপ্টিমাইজেশনের সময় অস্পষ্টতা চলছে (এর ব্যাসার্ধটি একটি অপ্টিমাইজযোগ্য পরামিতি), সুতরাং নির্বাচিত প্রতিটি আদিমটি অস্পষ্টতার সাথে পাওয়া যায়। এটি অস্পষ্টটিকে তার চেয়ে বেশি গুরুত্বপূর্ণ দেখাতে পারে। যদি এটি অস্পষ্টভাবে বন্ধ করে দিতে বাধ্য করা হয় তবে এটি সম্ভবত সেই মানটির কিছুটা পুনরুদ্ধার করবে। তবে স্কোরগুলি অবশ্যই অস্পষ্টতার সাথে অজস্র চেয়ে বেশি ভাল - আমি এটি কিছুক্ষণ না করে চেষ্টা করেছি।
স্ট্রডডগ

37

মতলব, স্কোর 5388.3

কোনও সংকোচনের মধ্যে নির্মিত ছাড়া। রঙের গভীরতা হ্রাস করা হয়েছে যাতে প্রতিটি পিক্সেল একটি মুদ্রণযোগ্য অক্ষর দ্বারা প্রতিনিধিত্ব করতে পারে। এবং রেজোলিউশন হ্রাস করা হয়। এটি তখন স্ট্রিং হিসাবে হার্ডকোড করা হয়। কোড নিজেই পুরো প্রক্রিয়াটি বিপরীত করে। পুনরায় আকার দেওয়ার ক্রিয়াটি একটি ল্যাঙ্কজোস 3 ইন্টারপোলেশন কার্নেল ব্যবহার করছে।

imwrite(imresize(reshape('@<8BJJME<NI=388?WI9:IMKNDFRA48;?::65BG<E<478441;>4IC>;5011012313:6IFLF:=>8532313@<4AOI6M\M>22322M><JCECVhZM72312C@AL>HMJNQH44504B8FGBIDF=LE6:738>4@IDFAEAMH9:<69<B>HHNEB>OA;<<99AV?@DFFCCN98<58<?@;G@?IFMQ67;44>=8;XJ?IIKQ89875@>?ABC@ECNM9>:88;AL[TBBCN^F5><7=6F`hgXAI_T==C@;:9Iehh\?RdB5FFD9;7DX]^OD]]66CCA:9:EB?HQSUNFURE7<:A[O@AOUUWNP[J7;=A>?;<JL?G>6;<542=C7JHC?9122113435?<KMTOAFG>642325FB;JWP?U`SB33333SCCRKMN\h_U;4422HDHRFPTSUWQ:7633G>KNKQMOGTM:?858C8EPLOINKUP@@>:<AGDPOVMKHVGAB?;9E[FGKMOMMV?>C89<DFBMIGPPUX:<B84>B<A]SHPQSY<@>:6ADFIKMJOLUV>E?;>=HTb[LMOVdM:EB:@8Odde_NTc\ACIF@=;QfebaLYhG7OLI<>:I^aaXN`a78JGF>;<PRUVX\\YUVYQ?@<:OX[TY``VZZ]X?A:<LQOOUQA?>:=?5219LG@KK?:01///2323JSLV`ZNPQC741223PTVZ\RO]\YE12211SUUXRU]^Z_XA3210QOUUS[^^]VUI<930RSTVY[WZVXSFF;57SQSZZ]WXZVVMF>;<SUT\[`YWWWQPHC<:NOTWZZYZVWNLK>9:SSQSXUX]]XFJK<6>ROTX\YZ][[INB>:CSY^^^Y\[YXMNBACAUZ[ZZ]^\^PKPH?D?YSAFXaa^^HVSKEAAWMK<V^\bJ@`SJC@9TYWQ\Y[^:@[KFE@;'-40,R,C,3)/86,[320,386],'lanczos3'),'t.png')

এখানে চিত্র বর্ণনা লিখুন


30

zsh + bpgdec, 4159.061760861207

হ্যাঁ, আরেকটি বিপিজি সমাধান। আমি মনে করি এটি মূলত প্রমাণ করে যে বিপিজি বর্তমানে উপলব্ধ সেরা চিত্রের সংক্ষেপণ ইউটিলিটি। ইয়ালির আসল বিপিজি সমাধানের তুলনায় এটি উন্নতি বিবেচনা করুন ।

ফাইলটি 1024 বাইট দীর্ঘ, সীমাতে ডানদিকে। এটি লাইন নিয়ে গঠিত

exec bpgdec =(tail -n+2 $0)

এর পরে কাঁচা বিপিজি আউটপুট আসে

bpgenc -c ycbcr -f 444 -q 48 -m 12 -e jctvc ORIGINAL.png -o 1.bpg

হেক্সে, এটি স্ক্রিপ্ট:

0000000: 6578 6563 2062 7067 6465 6320 3d28 7461  exec bpgdec =(ta
0000010: 696c 202d 6e2b 3220 2430 290a 4250 47fb  il -n+2 $0).BPG.
0000020: 7000 8302 8240 0003 9242 5003 9242 5044  p....@...BP..BPD
0000030: 09c1 9095 8112 0000 0001 4401 c190 9581  ..........D.....
0000040: 1603 7000 0001 2609 ae0b 30e7 6016 6a97  ..p...&...0.`.j.
0000050: 9ad3 4192 8fd0 7000 0003 0000 0300 0003  ..A...p.........
0000060: 0000 0300 0003 0000 04cc 0000 0126 01af  .............&..
0000070: 0598 fd99 91f9 e8bf 2220 79ef 4ad2 83ea  ........" y.J...
0000080: 517b d6ec e17c d59d 4b3d ea16 82a3 bfa3  Q{...|..K=......
0000090: b8f6 5c75 1c55 c959 d1e2 cf13 e10c 183f  ..\u.U.Y.......?
00000a0: 2495 60c0 5b65 971f 8e7c 453d b2e4 fa80  $.`.[e...|E=....
00000b0: 89dc f5e4 0010 8347 4d3a bb07 5baa 95f3  .......GM:..[...
00000c0: ac52 eca1 4e2a 3452 1493 b896 e9fb 4d5f  .R..N*4R......M_
00000d0: 4605 0bbf 14f6 ec00 4291 05d6 263b f524  F.......B...&;.$
00000e0: a321 613c ad89 06d7 4983 29d9 f1d2 7acc  .!a<....I.)...z.
00000f0: 5550 65d3 f33b d195 eedd a509 9750 f9ae  UPe..;.......P..
0000100: bcbc f3b5 3380 c8db 0c1b e932 1a52 2d10  ....3......2.R-.
0000110: f77a f967 5e62 a766 7ee4 a076 a85b dacf  .z.g^b.f~..v.[..
0000120: 4177 3136 0a73 62b5 76d2 efc4 5de0 f9a6  Aw16.sb.v...]...
0000130: ea4a d15a 7e7b 0e31 7f06 851d a2cf 0680  .J.Z~{.1........
0000140: 114f 57bb 7477 4217 34b6 afae 71c0 020e  .OW.twB.4...q...
0000150: b4ea 0725 348e 7dd6 00f7 adbb f7d5 c2fc  ...%4.}.........
0000160: 3e36 8138 2420 1751 cf5a cb8a 6fb1 0e26  >6.8$ .Q.Z..o..&
0000170: d5f8 5df6 cdc3 07b5 76dd 2593 170f e9b7  ..].....v.%.....
0000180: 07db ad63 3746 9639 f707 8581 2a16 b9a1  ...c7F.9....*...
0000190: 3563 c292 a112 d7c1 2d25 9461 99c4 990e  5c......-%.a....
00001a0: f917 2346 dc6f 51a5 fdc0 3a44 2f4f b0c9  ..#F.oQ...:D/O..
00001b0: 15e9 7d88 d386 47aa b705 e97c f2ee c419  ..}...G....|....
00001c0: e078 9aa3 b574 645a 631a 678a b7c7 6e69  .x...tdZc.g...ni
00001d0: 4bd4 e8df b657 d56e 9351 8750 63c2 141c  K....W.n.Q.Pc...
00001e0: e3bb 8305 33ad 3362 08e8 d4b0 c5a8 af67  ....3.3b.......g
00001f0: 9695 63a0 ae96 a6fd 00a1 0105 eca5 db9e  ..c.............
0000200: 27ce d2fb c8ea 7457 2f38 5fd0 080a 2ac7  '.....tW/8_...*.
0000210: 4919 6b6a 424d ef1e 02c4 3607 de31 7c0f  I.kjBM....6..1|.
0000220: 7cb0 c90a 609b bbc1 7ae5 8d17 7fd3 406e  |...`...z.....@n
0000230: 8df7 81f8 fb51 7366 beb2 fb62 51e3 58ce  .....Qsf...bQ.X.
0000240: 55d5 8a28 a63b 7b31 0ede bdc2 9d13 04a2  U..(.;{1........
0000250: c039 de93 638d 6c68 c3d3 e762 36ed 4ae2  .9..c.lh...b6.J.
0000260: a3be 781b 150a 7b82 9f0b 0a14 17b7 ade1  ..x...{.........
0000270: 687a c84f 5a2f 88d1 a141 76fe bf7b c220  hz.OZ/...Av..{. 
0000280: 6189 8424 d7e3 3595 882f 1ec9 a363 3501  a..$..5../...c5.
0000290: 3056 f6f9 dced 2b37 733b 8659 f5e9 93f9  0V....+7s;.Y....
00002a0: fa5b 419a cb78 e0ef d7b4 1e83 7fce 4383  .[A..x........C.
00002b0: 7eee 10af 2baa 1445 eb06 d75c 4220 53f9  ~...+..E...\B S.
00002c0: 34fd 76c0 2117 f916 f3b7 f599 0977 2562  4.v.!........w%b
00002d0: 085d a2d4 74c1 2e6c 0a21 5ccf 6a9f c045  .]..t..l.!\.j..E
00002e0: 91e0 de66 29af de27 af2b f673 8cb5 b2ea  ...f)..'.+.s....
00002f0: b070 31fd b81f 8db1 8e25 3243 31a0 ca08  .p1......%2C1...
0000300: e801 e4b6 df72 4029 16b2 a712 7ee4 c2e6  .....r@)....~...
0000310: acaa f84c d17d 3d46 65d5 8226 bd65 da45  ...L.}=Fe..&.e.E
0000320: 3cac 95d8 ed0e 1153 7587 09ec d745 4f50  <......Su....EOP
0000330: ba4c 314b 4ac3 b6b7 4964 1ee8 e321 c029  .L1KJ...Id...!.)
0000340: 7ae2 4630 fe05 ddd1 f68e 5646 857d e8fb  z.F0......VF.}..
0000350: 601e 453f e53e fe0d 0c5e 5da6 4a03 f6d9  `.E?.>...^].J...
0000360: c59b 0b7f b2de f354 21bb c0c5 8bb9 dfa1  .......T!.......
0000370: f3e5 76a7 bbce 175e cc27 125f dd9b adc2  ..v....^.'._....
0000380: cd79 d2c0 43f1 6df4 203a d3c4 9b25 7fea  .y..C.m. :...%..
0000390: 1905 7620 01bf a477 8c0e 9145 1d30 86d5  ..v ...w...E.0..
00003a0: 598d 7f40 ad72 603e c90f 5a62 db09 1161  Y..@.r`>..Zb...a
00003b0: a36d bbfc 020a 9835 7fc7 a468 4c36 5120  .m.....5...hL6Q 
00003c0: 01fc 705e 64d4 4e62 3c52 48a5 42fb 6361  ..p^d.Nb<RH.B.ca
00003d0: 2496 21ff 321b 2b7b 3016 7a56 1ea6 18f9  $.!.2.+{0.zV....
00003e0: e52f 318a 80cb 237c f3c8 a46c b747 794e  ./1...#|...l.GyN
00003f0: e8c1 77c2 7eb3 ef5b 60fb ad03 a4e6 ee40  ..w.~..[`......@

ফলস্বরূপ ফাইলটি out.png( bpgdecডিফল্ট অবস্থান), যা দেখতে এরকম দেখাচ্ছে:

বিপিজিডেক থেকে স্টারি নাইট আনুমানিকতা

আমি এটি বরং আশ্চর্যজনক মনে করি যে bpg, মাত্র 996 বাইটে, গাছের তীক্ষ্ণ প্রান্তটি, বামে এবং ডানদিকে পাহাড়গুলি সঠিকভাবে পুনর্গঠন করেছে। এমনকি গির্জার স্টিপলটির জন্য এটি একটি পাসেবল অনুমানও রয়েছে! ছোট আকারের ফাইলাইজের জন্য বিশদের স্তরটি অত্যন্ত চিত্তাকর্ষক (আমার কাছে)। অবশ্যই, এটি bpgdecনিজেই একটি ছোট প্রোগ্রাম নয়, তবে এটি আমার কাছে স্পষ্ট যে বিপিজি চিত্র সংকোচনের জন্য জেপিইগির চেয়ে আরও বেশি মাত্রার অর্ডার।

কারণ এটি ব্যবহার করে bpgdec, এই উত্তর অবশ্যই অনুগ্রহের জন্য যোগ্য নয়।


সম্পাদিত: এটি GNU এর সাথে সামঞ্জস্যপূর্ণ করার জন্য -nযুক্তি যুক্ত করেছে ।tailtail


যে ঝরঝরে. সুন্দর!
bjornl

আমার জন্য কাজ করে না, ত্রুটিগুলি আউট করে tail: cannot open ‘+2’ for reading। উবুন্টুতে এটির প্রয়োজন রয়েছে -n +2, যা এটি 1025 বাইট = /
orlp

কি দারুন! আমার কোনও ধারণা ছিল না বিপিজি এত দুর্দান্ত ছিল।

@ অরলপ: আমি বিশ্বাস করি যে আপনি -n+2এটি ব্যবহার করতে সক্ষম হবেন যা এটি 1024 বাইটে রেখেছিল - চেষ্টা করে দেখুন এবং এটি যদি কাজ করে তবে আমাকে জানান। আমি সামঞ্জস্যের জন্য আমার উত্তর পরিবর্তন করব।
nneonneo

1
@ ল্যাম্বিক, বিপিজির দুর্দান্ততার ভিত্তি হ'ল এইচইভিসি (এইচ .265)। বাস্তবে স্থির চিত্রগুলির জন্য পুরানো এইচ .২6464 (সর্বাধিক এনকোডিং সেটিংস ব্যবহার করে) ব্যবহার করাও ভাল ফলাফল দেয় এবং ইতিমধ্যে উপলব্ধ হার্ডওয়্যার ডিকোডিং ব্যবহার করে সক্ষম করে। ভিডিওতে ভাল সংকোচনের আরও প্রয়োজন রয়েছে, সুতরাং এটি জেপিইজি এবং এমপি 3 এর মতো স্থগিত ও নিষ্পত্তি হয়নি।
vi।

27

সি, 6641

999 বাইট, শুধুমাত্র stdio.hএবং ব্যবহার করে math.h

আমি একটি পূর্ণ-বৃত্তের ফাংশন তৈরি করেছি যা d()ব্যাসার্ধের মান r..0 এর চেয়ে বেশি কেন্দ্রীভূত আরজিবি রঙিন চেনাশোনাগুলি আঁকবে। 21 টি চেনাশোনা এখানে ব্যবহৃত হয়। আমি আরও শ্বেত স্পেস ছড়িয়ে ফেললে আমি আরও কয়েকটিতে কাতরতে পারতাম, তবে এটি আপেক্ষিক পঠনযোগ্যতা পছন্দ করে।

Difference মোডে জিম্প স্তরগুলি ব্যবহার করে আমি মোটামুটি বৃত্তাকার স্থান নির্ধারণ করেছি । উজ্জ্বল দাগগুলি দেখুন, একটি বৃত্ত যুক্ত করুন, পুনরাবৃত্তি করুন। Histogram ব্যবহারের জন্য প্রাথমিক রঙগুলি নির্ধারণ করতে নির্বাচনের জন্য ব্যবহৃত সরঞ্জাম।

আমি উপরেরটি ব্যবহার করে 77 77০০ এর কাছাকাছি স্কোর পেয়েছি তবে অনুভূত হয়েছি যে রঙ এবং ব্যাসার্ধের মানগুলি টুইট করে আমি আরও ভাল করতে পারি, তাই আমি প্রতিটি মানকে -10 .. + 10, সংশোধন করে নৃশংস বল প্রয়োগ করার জন্য কিছু স্ক্যাফল্ডিং কোড লিখেছিলাম wrote রেন্ডারিং, যাচাইকারী চালানো (যা আমি গতির জন্য সিতে আবার লিখেছিলাম), এবং মানটি সঞ্চয় করে যা সর্বনিম্ন স্কোর তৈরি করেছিল। শেষে এটি মান অ্যারেটিকে ডাম্প করে দেয়, যা আমি কোডে এটি আবার পেস্ট করে পুনরায় কম্পাইল করি। আমি কয়েক পাস দৌড়েছিলাম, এবং এটি স্কোরটি প্রায় 1000 দ্বারা নামিয়ে আনল Then

চেনাশোনা ব্যবহার করে 69930 চিত্র এখানে চিত্র বর্ণনা লিখুন

কোড,

#include <stdio.h>
#include <math.h>
#define W 386
#define H 320
#define SZ (W*H)
unsigned char I[SZ*3];
void d(int R,int G,int B,int x,int y,int r)
{while (r) {
float p;
for (p=0;p<6.3;p+=(1/(6.3*r))) {
int xo=r*cos(p);
int idx=x+xo+floor(y+r*sin(p))*W;
if ((x+xo<W)&&idx>0&&idx<SZ){I[idx*3]=R;I[idx*3+1]=G;I[idx*3+2]=B;}
}r-=1;
}}
int v[] = {
91,116,143,183,150,356,
52,70,125,48,36,51,
60,77,124,165,-236,303,
159,168,159,129,171,24,
115,132,131,29,14,19,
129,133,90,80,56,14,
157,171,136,352,54,41,
184,161,46,353,57,22,
183,184,119,360,52,15,
90,113,146,183,108,59,
141,158,154,373,224,96,
41,46,62,379,219,56,
51,62,77,352,1400,1204,
62,76,96,354,269,73,
51,62,79,236,271,70,
33,37,35,95,274,65,
36,43,44,68,191,29,
42,50,51,66,142,23,
40,46,44,66,110,11,
40,46,44,68,91,5,
111,128,123,231,30,18,
};
int main(){
int i;for(i=0;i<(21*6);i+=6){d(v[i],v[i+1],v[i+2],v[i+3],v[i+4],v[i+5]);}
FILE *f=fopen("o.ppm","wb");fprintf(f,"P6\n386 320\n255\n");fwrite(I,sizeof(I),1,f);fclose(f);
return(0);}

7
আসল প্রোগ্রামিং করার জন্য কুডোস!
অলিগোফ্রেন

আমি এই উত্তরটি সত্যিই পছন্দ করি তবে এই বিশেষ বৃত্ত অঙ্কন ফাংশনটি ব্যবহার করার কোনও কারণ আছে কি? সুস্পষ্ট সংস্করণ (চেক কিনা ((x-xo)*(x-xo) + (y-yo)*(y-yo)) <= (r*r)) দেখে মনে হচ্ছে এটি আরও কম হবে এবং নির্ভরতাটি বের করে দেবে math.h। এই আকারের চিত্রটি নিয়ে আমার মনে হয় না যে কোনও কিছুতেও উপচে পড়ার সম্ভাবনা রয়েছে।
নিওপ্প্প

2
@ ননোক্প্প আমি ভেবেছিলাম কোনও বৃত্ত আঁকার কোনও সহজ উপায় থাকতে পারে তবে আমি কোনও কিছুই গুগল না করেই এটি কোড করতে চেয়েছিলাম এবং ট্রিগ ফাংশনগুলি ব্যবহার করা আমার পক্ষে সেরা। আপনার প্রস্তাবিত অ্যালগরিদম দুর্দান্ত এবং সম্ভবত দ্রুত, তবে এটি আমার কাছে স্পষ্ট ছিল না।
জামেগুইনান

1
এটি আকর্ষণীয়, কারণ আমি নিজের মতো করে আপনার মতো অ্যালগরিদম নিয়ে আসতে পারতাম না। এটি কিছুটা আমাকে স্ক্যান লাইন বৃত্ত ভরাট অ্যালগরিদম সম্পর্কে মনে করিয়ে দেয় (নামটি এই মুহূর্তে আমার থেকে অব্যাহতিপ্রাপ্ত, তবে এটি অনেকগুলি পয়েন্ট পরীক্ষা করা এড়ানোর জন্য দরকারী) তবে যেহেতু এটি রেডিয়েটি হ্রাস করার পক্ষে কাজ করেছিল আমি এই বিষয়ে কিছু বিশেষ সম্পত্তি থাকলে আমি আগ্রহী ছিলাম।
neocpp

1
আপনার প্রস্তাবিতটির উপর ভিত্তি করে একটি পূর্ণ-বৃত্তের ক্রিয়াকলাপটি ব্যবহার করার চেষ্টা করেছি ( এটিও দেখুন )। এটি 170x দ্রুত গতিতে চালিত হয় এবং অতিরিক্ত কোড স্পেসের সাথে আমি অন্য একটি বৃত্ত যুক্ত করতে এবং স্কোরটিকে 6500 এর নীচে উন্নত করতে সক্ষম হয়েছি Fun মজাদার স্টাফ। github.com/jamieguinan/starrynight
জ্যামেগুইনান

26

পাইথন 3, স্কোর 5390.25, 998 বাইট

আমি স্টারি নাইটের আকারে আয়তক্ষেত্রগুলিকে ফিট করার জন্য একটি অনুকরণযুক্ত অ্যানিলিং প্রোগ্রাম ব্যবহার করেছি। তারপরে এটি সোজা আয়তক্ষেত্রাকার প্রান্তগুলি মসৃণ করতে গাউসিয়ান ব্লার ব্যবহার করে।

কিছু বাইট সংরক্ষণ করতে, আমি আয়তক্ষেত্রের ডেটা বেস 94 এ সংকুচিত করেছি।

from PIL import Image as I,ImageDraw as D,ImageFilter as F
def V(n,f,t):
    z=0;s='';d='''0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()_-+={[}]|:;"',<.>/?`~ '''
    for i in n:z=z*f+d.index(i)
    while z:z,m=divmod(z,t);s=d[m]+s
    return s
i=I.new('RGB',(386,320))
K=V("""12XsPc/p^m(:,enp:SN8brwj%!iChDHKj"*445Z.;/8Xj408fV9a7:v$N#cj_WNW7p#t9:](i?S!}yg*D4u$RfpU=}=@Ft^v7$N5O?8eeN%.bT:Q>+AOd3E*R/1PXq.IO,ur3h<`dS)V;e/lj6q'p4s|m>fkk<!jx`EGU~38(0h!(I6P.<[G;m_c^x{kE^hYQUV9kIiS'T:GDRQz -ISW6@cLKz4!e&8LT]kH3'Hj=Zl]rEOyrXlmfG51.K1(5l{:GPb1PL5%.gMmLy;pU3h+zDxpSn@)nJ*#'EOt=Pt.t9z,;D.[r|Prpeu=0%WN+A~KSb(E:gd%o2QfB_K-!xLAN+jXicd**bk'WDq,ue&z]Rb>;DBCFif{zJEDfx3FKqB*?2Qti:(pYSa-uZU,M!^N =bRbZ`}j}P-u-n>lGH|pv>#r"}Eg&c6J&fi.IC@2:L""",94,10)[1:]
e=D.Draw(i)
for X in range(0,len(K),21):
    y=K[X:X+21];x=[]
    for z in range(0,21,3):x+=[int(y[z:z+3])]
    e.rectangle((x[0],x[1],x[2],x[3]),(x[4],x[5],x[6]))
i=i.filter(F.GaussianBlur(radius=5))
i.save('2.png')

এখানে চিত্র বর্ণনা লিখুন


7
চিত্রটি সংকুচিত করা থেকে কেবল বাইট অ্যারে বনাম অবজেক্ট অঙ্কনের জন্য +1
প্রোটোটাইপ

দেখে মনে হচ্ছে আপনি আরও বেশ কয়েকটি আয়তক্ষেত্রের জন্য জায়গা পেয়েছেন। অস্পষ্টতা আসলে স্কোরিংয়ে সহায়তা করে? আমি তাই ভাবিনি, তবে শীতল যদি এটা না!
কৌতূহলীনি

@ কুরিয়াসনদনী অন্যান্য বেশ কয়েকটি উত্তর, সাধারণত সংক্ষেপণগুলি, একটি অঞ্চলে একটি শক্তিশালী সংকেত ছড়িয়ে দিতে অস্পষ্ট ব্যবহার করে। এটি সর্বদা সেরা উপায় নয়, তবে গোগকে ধন্যবাদ জানাই। অস্পষ্টতা আসলে স্কোর হ্রাস করে 200 ডলার।
ম্যাজেন্টা

এটি একটি উজ্জ্বল খারাপ উত্তর :)

26

পাইথন 2, 5238.59 পয়েন্ট

সম্ভবত আমার নিজের উত্তর পোস্ট করার সময় এসেছে। চিত্রটি এখানে

এখানে চিত্র বর্ণনা লিখুন

কোডটি এরকম দেখাচ্ছে

import Image,ImageDraw as D
m=Image.new("RGB",(386,320),"#4b5b6e")
d=D.Draw(m,"RGBA")
s="[string containing unprintable characters]"
for i in range(95):
        x,y,w,h,r,g,b,a=[ord(c)-9for c in s[i::95]]
        x,y=3*x,3*y
        d.ellipse([x-w,y-h,x+w,y+h],fill=(2*r,2*g,2*b,2*a))
m.save("a.png")

বা হেক্স ডাম্প হিসাবে:

0000000: 696d 706f 7274 2049 6d61 6765 2c49 6d61  import Image,Ima
0000010: 6765 4472 6177 2061 7320 440a 6d3d 496d  geDraw as D.m=Im
0000020: 6167 652e 6e65 7728 2252 4742 222c 2833  age.new("RGB",(3
0000030: 3836 2c33 3230 292c 2223 3462 3562 3665  86,320),"#4b5b6e
0000040: 2229 0a64 3d44 2e44 7261 7728 6d2c 2252  ").d=D.Draw(m,"R
0000050: 4742 4122 290a 733d 2228 356e 5220 1c5e  GBA").s="(5nR .^
0000060: 2c7e 451a 7f42 0f4b 261d 5f56 265f 333a  ,~E..B.K&._V&_3:
0000070: 391e 1652 4812 7b79 1b7b 547b 7a58 4f47  9..RH.{y.{T{zXOG
0000080: 1e28 767f 4b1e 344d 244c 7e7e 677e 1a3d  .(v.K.4M$L~~g~.=
0000090: 6355 6968 103a 581e 367d 7e2b 552f 7524  cUih.:X.6}~+U/u$
00000a0: 0e0e 706d 6765 551f 7f2f 616b 6533 4a16  ..pmgeU../ake3J.
00000b0: 7272 7e13 421f 157f 674f 231e 6311 2b1b  rr~.B...gO#.c.+.
00000c0: 5d2e 7353 1425 5b5b 2f11 130f 1146 1166  ].sS.%[[/....F.f
00000d0: 3370 1c43 1339 260e 7f15 1c37 773d 4243  3p.C.9&....7w=BC
00000e0: 6921 1642 721f 5a1b 5a38 5727 1b1c 692d  i!.Br.Z.Z8W'..i-
00000f0: 6028 324f 7f19 4430 7254 6942 1726 5520  `(2O..D0rTiB.&U 
0000100: 1b1a 5441 6037 4651 5948 0e1c 4a4a 202f  ..TA`7FQYH..JJ /
0000110: 2c5a 2d68 4b76 5e35 2320 5b6e 1762 2e78  ,Z-hKv^5# [n.b.x
0000120: 727d 385b 7747 2c17 4f1e 5529 354d 763d  r}8[wG,.O.U)5Mv=
0000130: 504e 4f60 485b 1063 6028 4c58 7473 1d31  PNO`H[.c`(LXts.1
0000140: 543d 364e 494c 1721 6358 3a1f 577f 3f5b  T=6NIL.!cX:.W.?[
0000150: 6452 5a60 3a1a 444e 604f 207a 3d29 357f  dRZ`:.DN`O z=)5.
0000160: 6e75 3946 5b1b 233f 444b 3121 4f20 455b  nu9F[.#?DK1!O E[
0000170: 7f28 6c1d 6655 581d 6415 493d 1e7a 3574  .(l.fUX.d.I=.z5t
0000180: 5b1e 2f34 7e66 7f34 1817 4b2a 2446 624f  [./4~f.4..K*$FbO
0000190: 4162 431e 4d2e 657f 2826 2c3d 2e53 6224  AbC.M.e.(&,=.Sb$
00001a0: 1f1d 363d 2b16 3f1e 107d 3421 354f 1873  ..6=+.?..}4!5O.s
00001b0: 5421 7f15 6b62 3c18 523e 1971 5333 273c  T!..kb<.R>.qS3'<
00001c0: 311d 7347 681c 1713 294c 3d11 6b21 235d  1.sGh...)L=.k!#]
00001d0: 7e49 6212 3d1a 2923 450e 0f50 1936 5114  ~Ib.=.)#E..P.6Q.
00001e0: 3753 5217 1211 0e7a 7f33 7e15 190e 1a0f  7SR....z.3~.....
00001f0: 3a0e 5a6c 1721 1863 623b 5853 1715 7268  :.Zl.!.cb;XS..rh
0000200: 117b 4c24 793f 6929 3c7b 1020 1f2b 4253  .{L$y?i)<{. .+BS
0000210: 4e10 0e0e 1720 3020 0e0e 5613 270f 4c2e  N.... 0 ..V.'.L.
0000220: 630f 3229 420e 561a 0e64 547b 2825 0f44  c.2)B.V..dT{(%.D
0000230: 1f19 7e71 1f3f 3054 0e21 4a38 4556 2044  ..~q.?0T.!J8EV D
0000240: 5761 181e 110e 7e7f 2178 211a 0f11 0f41  Wa....~.!x!....A
0000250: 0e66 6d23 272a 5563 3b50 6e13 167b 6f2b  .fm#'*Uc;Pn..{o+
0000260: 6550 3477 5571 2e50 650e 292b 2055 5d62  eP4wUq.Pe.)+ U]b
0000270: 1425 0f33 1e40 1b11 0e5d 1134 105b 3566  .%.3.@...].4.[5f
0000280: 1242 0e4b 0e5f 2818 685f 753c 3d0e 571c  .B.K._(.h_u<=.W.
0000290: 1e73 7b13 5045 5730 4673 6252 5510 7952  .s{.PEW0FsbRU.yR
00002a0: 6e30 4d0e 3949 4c0f 5b44 1620 1753 7e2a  n0M.9IL.[D. .S~*
00002b0: 7a54 512a 4f0e 6031 5d70 0f16 525e 4c4e  zTQ*O.`1]p..R^LN
00002c0: 534a 1443 5e13 6311 361a 4f10 5a60 6e0f  SJ.C^.c.6.O.Z`n.
00002d0: 3e19 4b2c 5e1d 2d43 5b1d 5441 5f4e 5221  >.K,^.-C[.TA_NR!
00002e0: 520f 6719 5657 5851 3d51 5463 0e60 1912  R.g.VWXQ=QTc.`..
00002f0: 5162 727f 4d70 4c4f 7f1f 5233 4d4c 7d6d  Qbr.MpLO..R3ML}m
0000300: 574f 7f3c 4f4d 4e68 6f7d 3950 513a 695e  WO.<OMNho}9PQ:i^
0000310: 547f 7e2e 7f4c 517a 3a54 6f40 5f6f 3457  T.~..LQz:To@_o4W
0000320: 656d 307f 5e7e 564a 5a7a 3060 7b5b 5d45  em0.^~VJZz0`{[]E
0000330: 7374 4076 786d 7e6d 7f6d 2f62 5373 7e75  st@vxm~m.m/bSs~u
0000340: 607f 767e 7d35 7e4f 767e 7a7f 7b4c 7f7f  `.v~}5~Ov~z.{L..
0000350: 1d22 0a66 6f72 2069 2069 6e20 7261 6e67  .".for i in rang
0000360: 6528 3935 293a 0a09 782c 792c 772c 682c  e(95):..x,y,w,h,
0000370: 722c 672c 622c 613d 5b6f 7264 2863 292d  r,g,b,a=[ord(c)-
0000380: 3966 6f72 2063 2069 6e20 735b 693a 3a39  9for c in s[i::9
0000390: 355d 5d0a 0978 2c79 3d33 2a78 2c33 2a79  5]]..x,y=3*x,3*y
00003a0: 0a09 642e 656c 6c69 7073 6528 5b78 2d77  ..d.ellipse([x-w
00003b0: 2c79 2d68 2c78 2b77 2c79 2b68 5d2c 6669  ,y-h,x+w,y+h],fi
00003c0: 6c6c 3d28 322a 722c 322a 672c 322a 622c  ll=(2*r,2*g,2*b,
00003d0: 322a 6129 290a 6d2e 7361 7665 2822 612e  2*a)).m.save("a.
00003e0: 706e 6722 29                             png")

এটি কেবল 95 টি ট্রান্সফুল্যান্ট উপবৃত্তাকার অঙ্কনের জন্য পরামিতিগুলিতে দীর্ঘ স্ট্রিংটি খুলে ফেলে।

অন্যান্য অনেক উত্তরের মতো, কোডটি জেনেটিক অ্যালগরিদম ব্যবহার করে তৈরি করা হয়। এটি একটি বিশেষ ধরণের জেনেটিক অ্যালগরিদম ব্যবহার করেছে যা আমি আবিষ্কার করেছি, যাকে আমি "জিন পুল অ্যালগরিদম" বলি, যদিও এটি সম্পূর্ণরূপে সম্ভব যে অন্য কেউ এটি আবিষ্কার করেছেন এবং একে আলাদা নাম দিয়েছেন। ব্যক্তি জনসংখ্যার পরিবর্তে আমাদের 95 জিন পুল রয়েছে, প্রতিটি জিনের জন্য একটি করে রয়েছে। প্রতিটি জিন পুলটিতে জিনের বিভিন্ন 10000 সংস্করণ রয়েছে। একটি জিনে একটি উপবৃত্তির জন্য পরামিতি থাকে (অবস্থান, আকার, রঙ, আলফা এবং z ক্রমে এর স্থান)। প্রতিটি পুনরাবৃত্তির উপরে আমরা 95 টি পুলের প্রত্যেকটি থেকে একটি জিন বেছে নিয়ে দুটি ছবি তৈরি করি এবং সর্বনিম্ন-স্কোরিং চিত্রের জিনগুলি কিছুটা মিউটেশন সহ সবচেয়ে খারাপ-স্কোরিং চিত্র থেকে জিনকে প্রতিস্থাপন করে।

আমি এটিকে প্রায় 378000 ম পুনরাবৃত্তি না হওয়া পর্যন্ত চালিয়েছি, যা কয়েক দিন সময় নিয়েছে। এই মুহুর্তে স্কোরটি এখনও নিচে চলেছিল, তবে সত্যিই ধীরে ধীরে, সুতরাং আমি সন্দেহ করি এটি অ্যালগরিদমের কোনও পরিবর্তন না করেই এর চেয়ে আরও ভাল get

এখানে জেনেটিক অ্যালগরিদম কোডটি রয়েছে:

import Image,ImageDraw as D
import random
import shutil

# note that the below constants have to match "magic numbers" in the rendering code
# that gets output.
gene_length = 8
n_genes = 95

pool_size = 10000

=import numpy as np

orig = Image.open("ORIGINAL.png")
orig = orig.convert("RGB")
orig_pix = orig.load()

def new_pool():
    g = np.random.random((pool_size, gene_length+1))
    for i in range(pool_size):
        x = (ord(encode_char(g[i,0]))-9)*3
        x = np.clip(x,0,387)
        y = (ord(encode_char(g[i,1]))-9)*3
        y = np.clip(y,0,319)
        R, G, B = orig_pix[x,y]
        g[i,4] = R/255.
        g[i,5] = G/255.
        g[i,6] = B/255.
    return g

def mutate_genome(g):
    def mutations():
        return np.random.standard_cauchy(g.shape[0])/50000.

    if np.random.random()<0.1:
        return g

    g[:,4] += mutations() # r
    g[:,5] += mutations() # g
    g[:,6] += mutations() # b
    g[:,7] += mutations() # a
    g[:,8] += mutations() # z order

    # this business is about having mutations that change the left, right, top and
    # bottom of the rectangle, rather than its centre position and size.
    L = g[:,0]*3-g[:,2] + mutations()
    R = g[:,0]*3+g[:,2] + mutations()
    T = g[:,1]*3-g[:,3] + mutations()
    B = g[:,1]*3+g[:,3] + mutations()
    g[:,0] = (L+R)/6 # x
    g[:,1] = (T+B)/6 # y
    g[:,2] = (R-L)/2 # w
    g[:,3] = (B-T)/2 # h

    if np.random.random()<0.15:
        i = np.random.randint(0,n_genes)
#       if np.random.random()<0.5:
        g[i,:] = np.random.random(gene_length+1)
        x = (ord(encode_char(g[i,0]))-9)*3
        x = np.clip(x,0,387)
        y = (ord(encode_char(g[i,1]))-9)*3
        y = np.clip(y,0,319)
        R, G, B = orig_pix[x,y]
        g[i,4] = R/255.
        g[i,5] = G/255.
        g[i,6] = B/255.
    # the Cauchy distribution is heavy-tailed, so this mostly causes very small changes
    # (less than one character), but it can cause very large ones
    g = np.clip(g,0,1)
    return g

def encode_char(a):
    n = int(round(a*113))+14
    if n==ord('"'): n=ord('"')-1
    if n==ord('\\'): n=ord('\\')-1
    return chr(n)

def encode_genome(g):
    # this reorders the genome such that gene i can be accessed with g[i::n_genes]
    # (for golfing purposes in the output code) and makes it a string
    output = [0]*(n_genes*gene_length)
    for i in range(n_genes):
        for j in range(gene_length):
            output[j*n_genes+i] = encode_char(g[i,j])
    output = ''.join(output)
    return output


def fitness(genome, save_filename=None): # actually inverse fitness (lower is better)
    order = np.argsort(genome[:,8])
    genome = genome[order,:]
    s = encode_genome(genome)
    # this is the same image drawing code that appears in the final program
    m=Image.new("RGB",(386,320),"#4b5b6e")
    d=D.Draw(m,"RGBA")
    for i in range(n_genes):
        x,y,w,h,r,g,b,a=[ord(c)-9for c in s[i::n_genes]]
        x,y=3*x,3*y
        d.ellipse([x-w,y-h,x+w,y+h],fill=(2*r,2*g,2*b,a))
    # this is the same code that appears in the scoring/validation script:
    img = m
    if img.size != orig.size:
        print "NOT VALID: image dimensions do not match the original"
        exit()
    w, h = img.size
    img_pix = img.load()
    score = 0.0
    for x in range(w):
        for y in range(h):
            orig_r, orig_g, orig_b = orig_pix[x,y]
            img_r, img_g, img_b = img_pix[x,y]
            score += pow((img_r-orig_r)/255.,2)
            score += pow((img_g-orig_g)/255.,2)
            score += pow((img_b-orig_b)/255.,2)
    if save_filename:
        img.save(save_filename)
    return score

# hex escape function from http://stackoverflow.com/a/13935582/1119340
import string
printable = string.ascii_letters + string.digits + string.punctuation + ' '
def hex_escape(s):
    return ''.join(c if c in printable else r'\x{0:02x}'.format(ord(c)) for c in s)

def make_full_program(genome):
    source = '''import Image,ImageDraw as D
m=Image.new("RGB",(386,320),"#4b5b6e")
d=D.Draw(m,"RGBA")
s="'''
    source += encode_genome(genome)
    source += '''"
for i in range(95):
    x,y,w,h,r,g,b,a=[ord(c)-9for c in s[i::95]]
    x,y=3*x,3*y
    d.ellipse([x-w,y-h,x+w,y+h],fill=(2*r,2*g,2*b,2*a))
m.save("a.png")'''
    return source



# the genetic algorithm code begins here

pool = [new_pool() for i in range(n_genes)]

best_fitness = 10000000
iteration = 0
fittest_genome = None
while (True):
    print iteration
    for iter in range(1000):

        samples = np.random.choice(pool_size, n_genes), np.random.choice(pool_size, n_genes)

        genomes = [0,0]
        for k in [0,1]:
            genome = np.zeros((n_genes, gene_length+1))
            for i in range(n_genes):
                if np.random.random()<0.00002:
                    # very occasionally, draw from the "wrong" pool, so that genes can
                    # be copied across pools
                    genome[i,:] = pool[np.random.randint(0,n_genes)][samples[k][i],:]
                else:
                    genome[i,:] = pool[i][samples[k][i],:]
            genomes[k] = mutate_genome(genome)

        fitnesses = fitness(genomes[0]), fitness(genomes[1])

        if fitnesses[0]<fitnesses[1]:
            winner = 0
            loser  = 1
        else:
            winner = 1
            loser  = 0

        new_fitness = fitnesses[winner]
        new_genome = genomes[winner]

        for i in range(n_genes):
            pool[i][samples[loser],:] = new_genome[i,:]

        if new_fitness<best_fitness:
            print iteration, new_fitness
            best_fitness = new_fitness
            # this is just so you can watch the algorithm at work
            fitness(genomes[winner], "best_so_far.png")
            best_genome = genomes[winner].copy()
            with open("best_so_far.py",'w') as file:
                file.write(make_full_program(genomes[winner]))

        if iteration%100==0:
            # this is just so you can watch the algorithm at work
            new_fitness = fitness(genomes[winner],"latest.png")
        if iteration%1000==0:
            shutil.copy("best_so_far.png", "frames/" + str(iteration) + ".png")

        iteration += 1

অবশেষে, এখানে একটি অ্যানিমেশন রয়েছে , কাজের সময় অ্যালগরিদম দেখাচ্ছে। এটি প্রতি 1000 পুনরাবৃত্তির পরে এখন পর্যন্ত উত্পন্ন সেরা চিত্রটি দেখায়। (এই পোস্টটিতে এম্বেড করার জন্য জিআইএফ ফাইলটি অনেক বড়)

এটি সম্ভবত (1) দ্বারা স্টোনটিতে আরও ডেটা ক্র্যাম করার জন্য নিউনির এনকোডিং ট্রিক ব্যবহার করে উন্নত করা যেতে পারে; (২) রেন্ডারিং কোডের শেষে গাউসিয়ান ব্লার যুক্ত করা (তবে এটি এটি আরও ধীর করে দেবে) এবং (3) আরও আগে অ্যালগোরিদম উন্নতি করতে হবে। এই মুহুর্তে এটি খুব দ্রুত একটি শালীন স্কোর এ পৌঁছায় তবে তারপরে সত্যিই ধীরে ধীরে পরিবর্তন হয় - যদি আমি কোনওভাবে প্রাথমিক রূপান্তরটি ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে নামিয়ে নিয়ে যায় তবে সম্ভবত আমি এই বিষয়গুলি এক পর্যায়ে বাস্তবায়ন করব।


2
অনেক আগ্রহব্যাঞ্জক. আমি ভাবছি যদি অন্য বাক্স ভিত্তিক উত্তরগুলিও স্বচ্ছভাবে পেইন্টিংয়ের মাধ্যমে উন্নত করা যায়।
কৌতূহলীনি

হু, আমি সবেমাত্র লক্ষ্য করেছি যে আমার কোডটিতে একটি ভয়াবহ বাগ রয়েছে - জিনের সেরা সেটটি প্রতি প্রজন্মের পরিবর্তে নিজের প্রতি 95 জনের কপি করে। (আমি ভেবেছিলাম এটি বেআইনী ছিল যে এটি 10000 জনসংখ্যার সাথে এত তাড়াতাড়ি রূপান্তরিত হয়েছে তবে আমি বাগটি দেখতে পাচ্ছি না)) আমি বাগটি স্থির করে কিছুটা উন্নত সংস্করণ চালাচ্ছি - আসুন দেখুন এটি আরও ভাল স্কোরে পৌঁছে কিনা।
নাথানিয়েল

25

স্টারারি , 11428.1894502 10904.3079277 10874.1307958

এটি করার জন্য স্টাররি সেরা ভাষা নাও হতে পারে তবে এটি অবশ্যই সবচেয়ে উপযুক্ত।

আপনি এটি অনলাইনে চেষ্টা করে দেখতে পারেন তবে মনে হচ্ছে আউটপুট কেটে গেছে যাতে আপনি সম্পূর্ণ চিত্রটি পাবেন না।

এই প্রোগ্রামটি একটি সঙ্কুচিত পিপিএম ফাইলগুলিকে স্ট্যান্ডার্ড করে আউটপুট করে।

          + +* +* +* +* .        +.          + +* + .        + + +.          +*. +*. + . + +* +* +* +* +*. + .      + + +* +* +* +* +* +* +* +*  + *. + .
 +         + +* +* +* +*        +  *      +* +* +* +*  * +   + `  +         + +        +*.. + . + + +** + +**. + .      + + + + +.*.*. + .  +      + * + ''
  + +   +  `  +       + + + +**. +* +*. + .          + +        +*.. + .         + +* +* +* +* +*. + .  +      + * +  ''
  + +   +   `  + + + +** + +**. + .      + + + +..*. + .      + + +. +* +*.. + .  +      + * +   ''
  + +   +    `  +       + + +* +*. + +**. + . + +  *         + +**. + .      + + +. + +**. +*. + .  +      + * +    ''
  + +   +     `  + + +  *        + +  * *. + .      + + +... + .         + +* +* +* +* +*      + *. + .  +      + * +     ''
  + +   +      `  +            + +.. + .          + +         +*.. + . + + +  **      + *. + .  +      + * +      ''
  + +   + +*       `  +         + + +..  + + .  + + + +.*.  + + .  + + +.*. + .  +      + * +       ''

এখানে প্রোগ্রাম আউটপুট:

এখানে চিত্র বর্ণনা লিখুন

ব্যাখ্যা

প্রোগ্রামটি আউটপুটটি সমস্ত 123,520 পিক্সেল তৈরি করার জন্য আমি চিত্রটি 8 টি অনুভূমিক ব্যান্ডগুলিতে বিভক্ত করেছি এবং 7 টি লুপ তৈরি করেছি প্রতিটি 6 টি প্রতিটি ব্যান্ড মুদ্রণ করি যখন শেষটি একই রঙের দুটি ব্যান্ড প্রিন্ট করে। কোডটিতে একটি শিরোনাম থাকে, যা পিপিএম ফাইলটিকে কীভাবে নিজের এবং af টি পূর্বোক্ত লুপগুলি বিন্যাস করতে পারে তা বলে।


25
অভিনন্দন, আপনি এমন একটি সমাধান খুঁজে পেয়েছেন যেখানে উত্স কোডটি এখানে কিছু চিত্রের আনুষঙ্গিকতার তুলনায় মূল চিত্রের মতো দেখায় (দুর্ভাগ্যবশত, আপনার নিজের)।
পাল্টা

18

পাইথন 2, 4684.46

1021 বাইট।

এটি অন্যান্য কয়েকটি উত্তরের জন্য খুব অনুরূপ ডিকোড পদ্ধতি ব্যবহার করে তবে এটি পাইথন 2 এ রয়েছে সুতরাং এটি বেসজ 85 এর পরিবর্তে 6464 এনকোডড ডেটা।

এনকোডড ডেটা একটি 64x48 ওয়েবপি ফর্ম্যাট চিত্র।

import base64,io,PIL.Image
PIL.Image.open(io.BytesIO(base64.b64decode('UklGRqQCAABXRUJQVlA4IJgCAACwDgCdASpAADAAPq1Em0mmI6KhNVYMAMAViWIAuzPZOwHN7eu7dJRv7H7zarBrCdDdER6XhybkFwT3wIGHlB1lUUaJZ57w+Ci3Z2w0PE+D9tZzFgHZn9+j+G1LIP++1WTWsLyD/6BI8VTX65vjcr4wuRD+hALdiK+qZ2uGKsAA/sJyKN4OBmJNGqjinqa8bVjXkcGP9zkVighf75VJT80vMeQrM+pbt3sCEa5W8IkgtQD+65nTwFfzVVylNlvc5LM5iC7pQ675eXJzzfdVZHahQf/RVXIT70DP9mLjG6XCpDGKVGd2k2w4Y//xNFvuDF6W1/Y1BhCeY60/1EPcFJcYPqH8AqaD7gLd0v8U6DjG6OGyFXME33IbTThiRYfs0fLUrOgw6EW52O0VW+TIo5ADqnoup7svrnSY/JykVO2VaVtr2nMc1FHGFxiNEux7NkoYeIwjpxA1hTbOwiEO02fXZGNAS0EfJ1f2jPtjyVbZvia+v3hVR4zWVkDp8+reHS4xMy4KHLPl1TNXtdxxJ+P5rW1mZcg9PqJrN1zafhRdVkFKSiU1+SigOtXZ0Ge5r8lte/uaGImm6FYQH/0g4rMPUh4As/5APXi/+rBu3ULEPu57ELp2ed8zLPPIMdqDHNSNZDPvzVQU2tkJ3RIW4fb7cw4fuqXHSGrRJ3jg70zSutBnPRZIERKti27+8g7QCLdAHlSbnz9Rrrf+N6k9AuUm/T1T0+Hc48A3D/hWbfADPWTK32pUz+9OaI7zF4yIx2rRPd3mRWYPgqKF1pD6pJu5FEj9jowD+9Hy8Jn2yd6WwqWgJY2m+crrZqY4GkqNdJX1DWYgRFJbMCsJxtrGkDEx3SIZyIyNRMIEKvpOrkDJkWAqZ+jXAAAA'))).resize((386,320),1).save('a.png')

এখানে চিত্র বর্ণনা লিখুন

আমি এখানে সর্বোত্তম চিত্রের আকার এবং মানের সেটিংস খুঁজতে কোডটি ব্যবহার করেছি। আমি অনুসন্ধানের স্থানটিকে সীমাবদ্ধ করে রেখেছি তাই চালাতে কয়েক মিনিটের বেশি সময় লাগে না।

import base64,io,PIL.Image

def score(orig, img):
    w, h = img.size
    img = img.convert("RGB")

    orig_pix = orig.load()
    img_pix = img.load()

    score = 0

    for x in range(w):
        for y in range(h):
            orig_r, orig_g, orig_b = orig_pix[x,y]
            img_r, img_g, img_b = img_pix[x,y]
            score += (img_r-orig_r)**2
            score += (img_g-orig_g)**2
            score += (img_b-orig_b)**2

    return (score/255.**2)


original = PIL.Image.open('ORIGINAL.png')
original = original.convert("RGB")

lowest_score = 1000000

file_format = '.webp'

for width in range(16, 96, 8):
  for height in range(16, 80, 8):
    small = original.resize((width, height), 2)
    for q in range(70, 50, -1):
        tempFileName = 'a' + file_format;
        small.save(tempFileName, quality=q)
        file = open(tempFileName, 'rb')
        data = file.read()
        data64 = base64.b64encode(data)
        bytes = len(data64) + 109   # Decoding code is 109 bytes
        if (bytes <= 1024):  # Size limit
            decoded = PIL.Image.open(io.BytesIO(data))
            cur_score = score(original, decoded.resize((386,320), 1))
            if (cur_score < lowest_score):
              lowest_score = cur_score
              best_q = q
              best_w = width
              best_h = height
              print 'Best %d x %d q %d (%d) : %.2f' % (best_w, best_h, best_q, bytes, lowest_score)

best_image = original.resize((best_w, best_h), 2)
finalFileName = 'best' + file_format;
best_image.save(finalFileName, quality=best_q)

file = open(finalFileName, 'rb')
data = file.read()
data64 = base64.b64encode(data)

script = open('generated.py', 'wb')
script.write('import base64,io,PIL.Image\n')
script.write('PIL.Image.open(io.BytesIO(base64.b64decode(\'' + data64 + '\'))).resize((386,320),1).save(\'a.png\')')

18

পাইথন 2, 5098.24 5080.04 4869.15 4852.87 4755.88589004

কোনও বিল্ট-ইন ডিকম্প্রেশন ব্যবহার করা হয়নি! কেবল পিআইএল'র আকার পরিবর্তনকারী ইউটিলিটি এবং ম্যানুয়ালি ডিকোড করা 16-রঙের চিত্র। সুতরাং এটি অনুগ্রহের যোগ্য হতে হবে be

প্রোগ্রামটিতে এম্বেড করা নন-এএসসিআইআই অক্ষর রয়েছে। এটি 1024 বাইট দীর্ঘ এবং দেখতে দেখতে এটি:

from PIL.Image import*
frombuffer('RGB',(40,41),''.join(')9„ ˜§˜ qˆš Vn• 8OŠ Ql‘ §§g ¶¤4 w‡v M]j 8FR AG8 )4V ! 7Jr ).0'.split()[int(c,16)]for c in'»«»ÝýÝßÝßûûÿ¿úª»ÿÿÿºÿûÿÝÝÝÝÝݺÿýÿú™¬ÏÌÿÿû»ýÝÝÝÝÝÝÿÿû»¿üüÌê­ÿÿ¿ÝÝÝÝÝÝÝÿªûÿýʬ©ú»ú¯«ÝÝÝÝÝýÿÿúÿýÝ߯™ú©®üªÝÝÝÝÝÝÿûÚ¬ýÿÿ«ÿÿÌϺÏÝÝÝÝÝßÿû¹¬¯ÿʯÿšüÌÿÌßßÝÝÝßÌúª¯Î¬ÏüΙš™üÌßÝÝÝÝÿί̮îªÿÊîåššÿÿýÝÝÝÝüÿ©®™žª©™ž™™™þLÏÝÝÝÝÿüž®ìî©©™™•U?ÝÝýßìÌÌäîÌäéîž•™©C3=ÝßýþYÌåîîîÌDDDS3TS2Ýßý’5UU9îîÏþÎDS352Ýßù!5RUžÌÏÎÏÌã352ÝÚ©2†("U9™%žÏþUD!#­ÝÚã("&"""9¬Ïÿ’äíÝþ‘SS5!""ÿÿDDíÝþ‘3U4UR#2#­ÜDSÝó!^SEäS35Q+ÝE6oÝõ1N5DER32C)%VoÝù233#UR#"5!HÝÎU2#"3S3U32515SÝ®îE224äE%TR53!2"?ÿNÎE"%E3U2""523""9ÿ^Äå"4U3%S9US335Q"25ÿ#ã%S352"UNUU335U%S#ÿ"8eS233"^DUT5353S#2¯#3.ã233#DDC5S2"#2"2©###ÎU5S5US34S3^Å222.DE3E4X52fa4ÎNÄDS5"ES5R>!U!gwaTDNÉ•56““5"î6#SgwqDD@¦xDE224îS5SwfaDD\0ùiîUYYîîDäDSwÄD@þžîDîîîîãUÌî2gfÄDàüà@@Î8ˆìä3!fvå"PÌàäNI”Dî6hDîTQfÃf ÎîÄ(6„îàX…NND’#Ãf,ÉlĈ9î”îDîDDDTC#UÉ"œÉœä“NI•NìÎîäNUTTî'.encode('hex'))).resize((386,320),3).save('o.png')

এবং হেক্সে:

0000000: efbb bf66 726f 6d20 5049 4c2e 496d 6167  ...from PIL.Imag
0000010: 6520 696d 706f 7274 2a0a 6672 6f6d 6275  e import*.frombu
0000020: 6666 6572 2827 5247 4227 2c28 3430 2c34  ffer('RGB',(40,4
0000030: 3129 2c27 272e 6a6f 696e 2827 2939 8420  1),''.join(')9. 
0000040: 98a7 9820 7188 9a20 566e 9520 384f 8a20  ... q.. Vn. 8O. 
0000050: 516c 9120 a7a7 6720 b6a4 3420 7787 7620  Ql. ..g ..4 w.v 
0000060: 4d5d 6a20 3846 5220 4147 3820 2934 5620  M]j 8FR AG8 )4V 
0000070: 1d21 1e20 374a 7220 292e 3027 2e73 706c  .!. 7Jr ).0'.spl
0000080: 6974 2829 5b69 6e74 2863 2c31 3629 5d66  it()[int(c,16)]f
0000090: 6f72 2063 2069 6e27 bbab bbdd fddd dfdd  or c in'........
00000a0: dffb fbff bffa aabb ffff ffba fffb ffdd  ................
00000b0: dddd dddd ddba fffd fffa 99ac cfcc ffff  ................
00000c0: fbbb fddd dddd dddd ddff fffb bbbf fcfc  ................
00000d0: ccea adff ffbf dddd dddd dddd ddff aafb  ................
00000e0: fffd caac a9fa bbfa afab dddd dddd ddfd  ................
00000f0: ffff faff fddd dfaf 99fa a9ae fcaa dddd  ................
0000100: dddd dddd fffb daac fdff ffab ffff cccf  ................
0000110: bacf dddd dddd dddf fffb b9ac afff caaf  ................
0000120: ff9a fccc ffcc dfdf dddd dddf ccfa aaaf  ................
0000130: ceac cffc ce99 9a99 fccc dfdd dddd ddff  ................
0000140: ceaf ccae eeaa ffca eee5 9a9a ffff fddd  ................
0000150: dddd ddfc ffa9 ae99 9eaa a999 9e99 9999  ................
0000160: fe4c cfdd dddd ddff fc9e aeec eeee aaba  .L..............
0000170: a9a9 9999 9555 3fdd ddfd dfec cccc e4ee  .....U?.........
0000180: cce4 e9ee 9e95 99a9 4333 3ddd dffd fe59  ........C3=....Y
0000190: cce5 eeee eecc 4444 4453 3354 5332 9ddd  ......DDDS3TS2..
00001a0: dffd 9235 5555 39ee eecf fece 4453 3335  ...5UU9.....DS35
00001b0: 3211 9ddd dff9 2113 3552 559e cccf cecf  2.....!.5RU.....
00001c0: cce3 3335 3212 9ddd daa9 3286 1228 2255  ..352.....2..("U
00001d0: 3999 259e cffe 5544 2123 addd dae3 1128  9.%...UD!#.....(
00001e0: 2226 2211 1212 2222 39ac cfff 92e4 eddd  "&"...""9.......
00001f0: fe91 1112 5353 3521 2211 1111 221a ffff  ....SS5!"..."...
0000200: 4444 eddd fe91 1111 3355 3455 5223 3211  DD......3U4UR#2.
0000210: 1123 addc 4453 9ddd f321 1611 5e53 45e4  .#..DS...!..^SE.
0000220: 5333 3551 1112 2bdd 4536 6fdd f531 1111  S35Q..+.E6o..1..
0000230: 4e35 4445 5233 3243 1111 1129 2556 6fdd  N5DER32C...)%Vo.
0000240: f932 1112 3333 2355 5223 2235 2111 1111  .2..33#UR#"5!...
0000250: 1348 8fdd ce55 3223 2233 5333 5533 3235  .H...U2#"3S3U325
0000260: 3111 1111 3553 9ddd aeee 4532 3234 e445  1...5S....E224.E
0000270: 2554 5235 3321 1111 3222 3fff 4ece 4522  %TR53!..2"?.N.E"
0000280: 2545 3355 3222 2235 3233 2211 1222 39ff  %E3U2""523".."9.
0000290: 5ec4 e522 3455 3325 5339 5553 3333 3551  ^.."4U3%S9US335Q
00002a0: 2232 35ff 23e3 2553 3335 3222 554e 5555  "25.#.%S352"UNUU
00002b0: 3333 3555 2553 23ff 2238 6553 3233 3322  335U%S#."8eS233"
00002c0: 5e44 5554 3533 3533 5323 32af 2333 2ee3  ^DUT5353S#2.#3..
00002d0: 3233 3323 4444 4335 5332 2223 3222 32a9  233#DDC5S2"#2"2.
00002e0: 2323 23ce 5535 5335 5553 3334 5311 1113  ###.U5S5US34S...
00002f0: 335e 04c5 3232 322e 4445 3345 3458 1235  3^..222.DE3E4X.5
0000300: 3266 6112 34ce 4ec4 4453 3522 4553 3552  2fa.4.N.DS5"ES5R
0000310: 3e21 1255 2167 7761 5444 4ec9 9505 3536  >!.U!gwaTDN...56
0000320: 9393 3522 ee36 2353 1167 7771 4444 40a6  ..5".6#S.gwqDD@.
0000330: 7844 4532 1212 3234 ee53 3553 1177 6661  xDE2..24.S5S.wfa
0000340: 4444 5c30 f969 04ee 5559 59ee ee44 e444  DD\0.i..UYY..D.D
0000350: 5311 7716 11c4 4440 fe9e ee44 eeee eeee  S.w...D@...D....
0000360: e355 ccee 3211 6766 11c4 44e0 fce0 0440  .U..2.gf..D....@
0000370: 0e0e 40ce 3888 ece4 3321 6676 11e5 2250  ..@.8...3!fv.."P
0000380: cce0 e44e 4994 44ee 3668 44ee 5451 1666  ...NI.D.6hD.TQ.f
0000390: 11c3 6620 ceee c428 3684 eee0 5885 4e4e  ..f ...(6...X.NN
00003a0: 4492 1111 23c3 662c c96c c488 39ee 94ee  D...#.f,.l..9...
00003b0: 44ee 4444 4454 4323 55c9 229c c99c e493  D.DDDTC#U.".....
00003c0: 4e49 954e ecce eee4 4e55 5454 ee27 2e65  NI.N....NUTT.'.e
00003d0: 6e63 6f64 6528 2768 6578 2729 2929 2e72  ncode('hex'))).r
00003e0: 6573 697a 6528 2833 3836 2c33 3230 292c  esize((386,320),
00003f0: 3329 2e73 6176 6528 276f 2e70 6e67 2729  3).save('o.png')

এবং এই ছবিটি উত্পন্ন:

প্রোগ্রাম আউটপুট

এই প্রোগ্রামটি এই অপব্যবহার করে যে আপনি মূলত কাঁচা বাইটগুলি পাইথনের উত্স কোডের মধ্যে ন্যূআলএস এবং ব্যাকস্ল্যাশগুলি এড়িয়ে চলতে পারবেন।

প্রোগ্রামটিতে নিজেই একটি 16-এন্ট্রি প্যালেট ( |পৃথক স্ট্রিং) এবং একটি 40x41 16-রঙের চিত্র (পিক্সেল 4 বিট সহ এনকোডড এবং গালি দিয়ে ডিকোড করা .encode('hex')) থাকে। চিত্রটি যথাযোগ্য আকারে একটি বিকিকিউব ফিল্টার সহ আকারে পরিবর্তন করা হয়েছে এবং এটিই।

আসল চিত্রটি চিত্রম্যাগিকের সাহায্যে উত্পন্ন হয়েছিল:

convert -filter Cosine -resize 40x41\! ../../ORIGINAL.png +dither -alpha off -colors 18 -compress none im.bmp

এবং ফলস্বরূপ বিএমপি থেকে প্যালেট এবং চিত্রের ডেটা বের করা হয়েছিল। (নোট করুন যে আমরা ইমেজম্যাগিক থেকে 18 টি রঙের জন্য অনুরোধ করেছি, যেহেতু আইএম স্বয়ংক্রিয়ভাবে কিছু অব্যবহৃত এন্ট্রি প্রবেশ করিয়েছে)।

বাইনারি ডেটাতে পালানো অক্ষরের সংখ্যা হ্রাস করার জন্য প্যালেটটি সামান্য পুনরায় সাজানো হয়েছিল এবং পুরো জিনিসটি 1024 বাইটে ফিট করার জন্য চূড়ান্ত বাইনারি ডেটা হাতে কিছুটা সম্পাদনা করা হয়েছিল।


সম্পাদিত: কোডটি কিছুটা গল্ফ করেছে এবং ইমেজম্যাগিক থেকে 17 টি রঙের অনুরোধ করে নির্ভুলতার উন্নতি করেছে।

সম্পাদিত: দিশেহারা করা অক্ষম করার ফলে স্কোরের বিশাল উন্নতি হয়েছিল। এটি এখন 5000 এর নিচে ভাল স্কোর করে এবং অফ-দ্য শেল্ফ সংক্ষেপণ অ্যালগরিদমের সাথে প্রতিযোগিতামূলক হয়ে উঠছে!

সম্পাদিত: যোগ করা -filter Cosineআরও একটি মাপের উন্নতি দেয়। আক্রমণাত্মক গল্ফিং, ইউটিএফ -8 বিওএম ট্রিকের জন্য @ প্রিয়মোকে ধন্যবাদ দিয়ে, আমাকে ছবিটিতে আরও একটি সারি ব্যবহার করার সুযোগ দিয়েছিল, আরও স্কোরকে আরও উন্নত করে।


2
বাইনারি ডেটা সঞ্চয় করার জন্য পাইথন এনকোডিংয়ের সুন্দর ব্যবহারের জন্য +1।
ব্রায়ান মিন্টন

2
@ 2012rcampion: দ্য !আসলে অ মুদ্রণযোগ্য অক্ষর দ্বারা উভয় পক্ষের flanked হয়। পুরো রঙটি হল #1d211eযা কিছুটা নীলচে গা dark় ধূসর।
nneonneo

2
অভিনন্দন, এই অনুগ্রহ জিতেছে!
নাথানিয়েল

3
যদি এটি কোনওরকম সহায়তা করে তবে #coding:latinলাইনটি কোনও ইউটিএফ -8 বাইট অর্ডার চিহ্ন দ্বারা প্রতিস্থাপিত হতে পারে: (0xEF, 0xBB, 0xBF)।
প্রাইমো

2
@ প্রিমো: দুর্দান্ত, আপনার পরামর্শ এবং কিছুটা আক্রমণাত্মক গল্ফিংয়ের জন্য ধন্যবাদ আমি একটি অতিরিক্ত সারিতে সরিয়ে দিতে সক্ষম হয়ে স্কোরকে প্রায় 40 পিএসটি উন্নত করেছিলাম। উন্নত ইমেজম্যাগিক কমান্ডের সাথে মিলিত, এটি প্রায় 100 পয়েন্টের একটি উন্নতি।
nneonneo

16

zsh + FLIF + চিত্রম্যাগিক, 4358.14

BPG একটি লজি কোডেক যেমন স্পটলাইট চুরি, আমি আমার অবচয়হীন, upscale পদ্ধতির ব্যবহার করতে পরিশ্রুত করে থাকেন FLIF পিএনজি পরিবর্তে, @ nneonneo এর zsh কৌতুক ব্যবহার করে। ইমেজম্যাগিক কেবল এখানে একজন আপস্কেলার হিসাবে ব্যবহৃত হয়।

হেক্সডাম্প (এবার xxd, আমি বুঝতে পারিনি যে hexdumpআমার শেষ উত্তরের মানটি ছিল না):

00000000: 666c 6966 203d 2874 6169 6c20 2d6e 202b  flif =(tail -n +
00000010: 3320 2430 2920 6f2e 706e 670a 6578 6563  3 $0) o.png.exec
00000020: 2063 6f6e 7665 7274 206f 2e70 6e67 202d   convert o.png -
00000030: 7265 7369 7a65 2033 3836 7833 3230 2120  resize 386x320! 
00000040: 6f2e 706e 670a 464c 4946 3331 0044 0038  o.png.FLIF31.D.8
00000050: e113 7e24 321e fb1e 4df6 d7e0 cfa8 f513  ..~$2...M.......
00000060: e1fa 32fb cf01 c186 dc85 efb3 2ea7 9415  ..2.............
00000070: d1de e100 680a e7c9 455c 42c6 2283 9d32  ....h...E\B."..2
00000080: b06c b863 71ce 7c2b 9cd6 be17 3610 0ebd  .l.cq.|+....6...
00000090: 01ed c8c5 7b9b d687 3821 e3a5 6e47 846c  ....{...8!..nG.l
000000a0: 12b6 9346 d2a6 2760 eef0 f558 caea 260d  ...F..'`...X..&.
000000b0: c8d5 b0e0 f09c 53a1 df70 7277 9b79 02a9  ......S..prw.y..
000000c0: 2813 2292 4f65 8fbc 97cc ea65 51ea d933  (.".Oe.....eQ..3
000000d0: 3989 4efe 2d86 23cd 1142 8f02 ff29 edd1  9.N.-.#..B...)..
000000e0: 3f5d ae15 a973 0cc9 3750 f55c ec0b 2870  ?]...s..7P.\..(p
000000f0: c292 7085 8a38 1a5c d525 aa82 3a70 cb89  ..p..8.\.%..:p..
00000100: 0513 0a8a 7bba cfb7 461c ff14 c160 06b6  ....{...F....`..
00000110: 67ae 3570 a2d1 d056 83e2 36b7 3ca4 d3c4  g.5p...V..6.<...
00000120: 46a0 b5ca 4722 848a 2328 2f25 95b3 2cde  F...G"..#(/%..,.
00000130: 8c0a 9acb dee4 5ef3 9693 e1ef cf7d 0578  ......^......}.x
00000140: abb3 c853 f6f0 29e4 2d25 cf80 ec3a e91e  ...S..).-%...:..
00000150: 3863 5401 26e3 af1c 3691 15b2 a0b8 fc16  8cT.&...6.......
00000160: c773 ffdc bbac 078d c4ea 8b9a 2763 29a8  .s..........'c).
00000170: 1faa 598d eeff 3492 45eb c79d c014 b75c  ..Y...4.E......\
00000180: 61dd 1cf4 64d6 ebe8 9c9a 2825 ed65 aa94  a...d.....(%.e..
00000190: 2b86 d197 233d b45c 5f8a cc52 1752 7357  +...#=.\_..R.RsW
000001a0: e508 fa96 cb9d cab5 e4fa 02d9 0290 4aec  ..............J.
000001b0: 0173 3520 b9b0 a9ac 4d59 23c7 7dac e26d  .s5 ....MY#.}..m
000001c0: 4140 9bb6 f32a 795f 3ff1 2808 1718 0ba0  A@...*y_?.(.....
000001d0: ceae b37b de22 cee7 8c34 0fb3 b8ef 081d  ...{."...4......
000001e0: 9baa 29c8 341c 6f71 a0d4 4bc7 0699 fdb0  ..).4.oq..K.....
000001f0: 08a7 372b 65c1 a57f 6600 edd7 dc4a a698  ..7+e...f....J..
00000200: 102d 06ea 7c07 b5de b187 8d03 27a0 7fe9  .-..|.......'...
00000210: 1820 4409 d0d1 a939 4fb7 8697 18ed 5de0  . D....9O.....].
00000220: 4015 57ba d209 1620 648f 6aff bbbc b010  @.W.... d.j.....
00000230: a957 3c54 9a2e e9bb d552 9436 e73a 216f  .W<T.....R.6.:!o
00000240: 7e14 945c 9af0 49ef 29db c559 1184 b29c  ~..\..I.)..Y....
00000250: b0bc 8838 2c6d c695 e68e 0857 5998 8580  ...8,m.....WY...
00000260: 720d 0b19 dd46 929b e327 e6ee e182 b52e  r....F...'......
00000270: 09d6 b06d c8e5 fd3c 862b e729 eccd 52d6  ...m...<.+.)..R.
00000280: 0300 cacc 5cbb e08f 9314 75df 8576 410c  ....\.....u..vA.
00000290: 6c7d 49bc fab2 a130 da4a ca40 ae1d 2677  l}I....0.J.@..&w
000002a0: 3f5e c6a4 3bf1 5d1e 4819 0015 e2ca b349  ?^..;.].H......I
000002b0: 9b90 783c 8e33 4571 4b5d c436 45b6 d20b  ..x<.3EqK].6E...
000002c0: cdf2 7fcc 6a24 f2d9 82b3 8740 26a1 f6ec  ....j$.....@&...
000002d0: e134 00e1 5ef0 a519 b6a9 055a b0d6 6e10  .4..^......Z..n.
000002e0: 7330 cb51 7042 a472 c3f1 3f70 e161 fde7  s0.QpB.r..?p.a..
000002f0: 4cd0 4dd6 a887 a977 9cab 11a3 5860 b88c  L.M....w....X`..
00000300: 6c26 75f3 fa55 802a a38c 81e0 7519 8233  l&u..U.*....u..3
00000310: 0e86 f5db 4c70 7c22 9c4c 5ba1 602a 530d  ....Lp|".L[.`*S.
00000320: 5b74 9c67 718e 471f e69a 2258 d207 cd93  [t.gq.G..."X....
00000330: 0c92 0c1f 1aa1 2201 7906 d3dd 4e58 ab9d  ......".y...NX..
00000340: e13e 3b9f 870c a69d 5cb2 80d9 6b83 6cd0  .>;.....\...k.l.
00000350: e3df 8a96 7217 0e07 e654 0633 5e52 fb5d  ....r....T.3^R.]
00000360: 76a4 6e05 33c8 bc5b 7bf1 9819 5c05 3705  v.n.3..[{...\.7.
00000370: 3ea6 cf51 3bcf 031a d103 9117 4622 da77  >..Q;.......F".w
00000380: 6018 ddbf fd6f 5a17 989b 1938 2a37 a326  `....oZ....8*7.&
00000390: 0fa1 1507 9d1f 8fee 6116 2dc6 653b ed48  ........a.-.e;.H
000003a0: 3543 4ff8 77b3 d1c7 41b3 0fc2 a6d6 7bee  5CO.w...A.....{.
000003b0: a2dc f047 fae4 da02 c055 25b6 2cd1 0e51  ...G.....U%.,..Q
000003c0: b382 fede ab22 1927 ac66 b8a4 8cf1 094d  .....".'.f.....M
000003d0: e0cb 9288 a105 cb3e dbb0 4e04 e110 68fb  .......>..N...h.
000003e0: 78d0 c36f 390a db12 ba16 b055 a367 bacf  x..o9......U.g..
000003f0: 20                                        

তারকাচিহ্নিত, FLIF দিয়ে সংকুচিত

আমি স্ক্রিপ্টটি ব্যবহার করে তৈরি করেছি ... অন্য স্ক্রিপ্ট:

convert ORIGINAL.png -filter Lanczos2 -resize x56 - | pngquant --speed 1 -f 10 > i.png
flif -N i.png o.flif
echo 'flif =(tail -n +3 $0) o.png' > genstarry.sh
echo 'exec convert o.png -resize 386x320! o.png' >> genstarry.sh
cat o.flif >> genstarry.sh
zsh genstarry.sh

3
আমি ক্ষতিকারক এবং ক্ষতিহীন কোডেকগুলির মধ্যে এমন পার্থক্য তৈরি করতে আপত্তি জানাব: যদি পিএনজি নিজেই ক্ষতিহীন হয় তবে আপনার পুরো এনকোডিং অবশ্যই ক্ষতিগ্রস্ত। এটি সত্যই ভাল কাজ করে, যদিও; প্রকৃতপক্ষে আমি বলব যে এটি স্থানীয়করণ করা শিল্পকর্মগুলির সাথে টপ-স্কোরিং বিপিজির চেয়ে আরও ভাল দেখাচ্ছে ।
ঘড়ির

15

গণিত, 5076.54

ঠিক 1024 বাইটে ওজন করে অবশেষে আমি নিনেওর স্কোরকে পরাজিত করতে সক্ষম হয়েছি ... যতক্ষণ না সে এক ঘন্টা আগে এটিকে উন্নত করে = = (

কোনও "অফ-দ্য শেল্ফ" সংক্ষেপণ অ্যালগরিদম ব্যবহার করে না।

f=IntegerDigits[FromDigits[ToCharacterCode@#-32,95],#2]~Partition~#3&;Image[Array[Nearest[f["GYWh6t@/0EwgZTWL9+IfA51 Qn0&q3k2eb[cFp{iDJp\\8:_I9v~0-035)!z^br^=,Jy.0X.wnXr\"&A'l3N$\"rHVD]ANb<[c-HyQ3k]\\/F.L)^F[FsTe]>9=Y MBP@-Y7,U1n2PgeTYL|d^@s%)|vDUsI63?3+5zt`4;0}7 L )pg$G\"S=.e`n@d0Qpb-<L@zy'cH<KJhG4D0+DluH1hvFZ%6<>w,2uQJQhD\\@-bq=OChgV}r[^o\\h/1w!5_{SVjv0a1\"?j.z%tRxXX$cC2[@K){*eQ/|$W%[{kFXnmL'EnM`-zs$OyS]mnL$]Qu,AIN%~n}zG{SD[q<v%IP3Tp]\"1Gu0?|L=XB =6n+]mAU20rDZ|F&V#(h? xxJeK^}e}% n6MaNqA*\"vitzT8e=:>&YxNb'&Wiw\\yjJ#l^",409,2]-11->(#+{51,-41}&/@f["<Z? ZN7Mc{N{gJm}@.U'336)10$MTyi $D3Y@,r$g\"vk)~rU-]=G?dQJ0j*V~VTLz!yVCU~]=>VrrN<{ROjqTvLl!s)/8B{\\xpJ.8\"R~)A.1xA9{ ab8oq8bSoyJ:P_7OXdr@(&H>vp~sjV+M^1'Js;g&@2t/1Z)Xj=dwnLnm1Fd?`dpQ3AN>)n@!+cL'^j}N(c%~~F06||Vci{L_O*K>5i[>20mf8>WYKKuk\\T7d}L?xHDuS^GNr:o/(yq KvH=KEQX[e&faTh0&Ra+B0<9PLB)WPAe8\\#B$oo.AtrM\\*\"=1JZ0s/CBz{e9;8aH|w-#N_l>a.^@/M`[* };@#l)C(lXG=CVL:]?D@W=(3k{o.`jBG#g-33LX&lE+WHI",231,2]).{{0.479,0.574,0.664},{0.591,0.349,-0.727}},{##}][[1]]&,{320,386}],"Byte"]

এখানে চিত্র বর্ণনা লিখুন

  • ভোরোনাই কোষের রঙ এবং কেন্দ্রগুলি পুরো ASCII ব্যাপ্তিটি ব্যবহার করে বেস -99 এনকোডযুক্ত।
  • রঙগুলি স্থান বাঁচাতে আরজিবি কিউবের দ্বি-মাত্রিক উপ-স্পেসে প্রকাশ করা হয়।

(পরে আরও ভাল বর্ণনা)


খুব খারাপ আপনি অনুগ্রহ জিতেন নি, আমি সত্যিই আশা করছিলাম যে এটির মতো একটি পদ্ধতি এটি গ্রহণ করবে - আমি আপনাকে প্রশ্নে একটি "সম্মানজনক উল্লেখ" দিয়েছি। এটি কীভাবে উত্পাদিত হয়েছিল তার ব্যাখ্যাটির অপেক্ষায় রইলাম।
নাথানিয়েল

@ নাথানিয়েল আমি হয়তো অনুগ্রহটি কয়েক ঘন্টার মধ্যে মিস করেছি; আমার অপ্টিমাইজারটি এখনও চলছে, এবং আমি সবেমাত্র 5000 এ পৌঁছেছি
2012campion

ঠিক আছে, আপনার ভাগ্য হতে পারে - একটি ইতিবাচকতা ভিত্তিক পদ্ধতির অ-সংকোচন ভিত্তিক উত্তরের মধ্যে যদি প্রথম স্থান নেয় তবে আমি ইতিমধ্যে একটি দ্বিতীয় অনুগ্রহ ঘোষণা করেছি announced (আপডেট হওয়া প্রশ্নের পাঠ্যটি দেখুন))
নাথানিয়েল

হেই, আমি স্লেফারকে পরাজিত করতে বাইরে ছিলাম (এবং সে যেভাবেই জিততে পারে, কারণ তার স্কোরটি আপনার চেয়ে কম)। বেশ অবাক হয়ে গিয়েছিলাম যে আমি যে পরিবর্তন করেছি (ডাইটিংকে অক্ষম করে দিচ্ছি) এত বড় প্রভাব ফেলেছে।
nneonneo

ভোরোনাইয়ের জন্য এবং আরজিবি কিউবের একটি সাবপ্লেন ব্যবহার করার জন্য +1। আপনি কি ভেরোনাই চিত্রটি অপ্টিমাইজ করার জন্য কোডগলফ.স্ট্যাকেক্সেঞ্জার / কিউ /50299/8478 থেকে উত্তরগুলির কোনও ব্যবহার করার চেষ্টা করেছিলেন ? (অবশ্যই, এগুলি দৃষ্টিভঙ্গির মিলের দিকে লক্ষ্য রেখেছিল, উদ্দেশ্যগত ত্রুটিটি হ্রাস করা হয়নি, তাই ওয়াইএমএমভি, তবে আমি মনে করি যে এর মধ্যে কয়েকটি বেশ ভাল ফলাফল পেতে পারে)) এছাড়াও, আপনি কি আরজিবি কিউবের মাধ্যমে কেবল একটি লাইন ব্যবহার করার চেষ্টা করেছেন যাতে আপনি ব্যবহার করতে পারেন দ্বিগুণ ভোরোনাই কোষ?
মার্টিন এন্ডার

15

এইচটিএমএল / জাভাস্ক্রিপ্ট, 10855.83 8000.55 (ব্রাউজারের উপর ভিত্তি করে ± 5))

ব্রাউজার বা জিপিইউ পার্থক্যের কারণে স্কোর কিছুটা আলাদা হতে পারে।

আপনাকে ডান ক্লিক করতে হবে> চিত্র সংরক্ষণ করুন চিত্র হিসাবে ক্যানভাস ডেটা সংরক্ষণ করার জন্য, তবে এটি কেবলমাত্র ইন্টারঅ্যাকশন প্রয়োজন।

আমি নির্দিষ্ট অঞ্চল নির্বাচন করতে এবং তাদের গড় সন্ধান করতে জিআইএমপি ব্যবহার করেছি। বিশেষত, রঙ চয়নকারী সরঞ্জাম এবং "স্তর পার্থক্য" বৈশিষ্ট্যটি খুব সহায়ক ছিল।


চেষ্টা # 1 (10855.83)

http://i.imgur.com/bdvz7Qz.png

<canvas width="386" height="320" id="c">
<script>
var canvas = document.getElementById("c");
var context = canvas.getContext("2d");
context.fillStyle="#2c3e84";
context.fillRect(0,0,386,320);

context.fillStyle="#517a9c";
context.fillRect(0,80,386,150);

context.fillStyle="#1d201d";
context.beginPath();
context.moveTo(33, 319);
context.lineTo(63, 26);
context.lineTo(97, 200);
context.lineTo(179, 319);
context.closePath();
context.fill();

context.fillStyle="#acae6e";
context.beginPath();
context.arc(355,52,35,0,6.3);
context.fill();

context.beginPath();
context.moveTo(0,0);
context.lineTo(300,150);
</script>

চেষ্টা # 2 (8000.55)

এখানে চিত্র বর্ণনা লিখুন

<canvas width="386" height="320" id="c">
<script>
var canvas = document.getElementById("c");
var context = canvas.getContext("2d");

function f(x,y,w,h,c)
{
    context.fillStyle="#"+c;
    context.fillRect(x,y,w,h);
}

//Top area
f(0,0,386,250,"607391");
f(0,0,215,48,"415084");
f(298,160,41,28,"9cab9b");

//Bottom area
f(0,250,386,70,"414f5d");

//Middle
f(200,200,188,56,"313f68");
f(133,223,67,27,"2c3955");
f(223,177,74,23,"869999");
f(322,131,64,29,"a9b4a4");
f(354,164,32,32,"26293a");

//Sun outer
f(318,17,67,70,"adaf7b");

//Star
f(107,148,45,44,"a1a9a1");


//Foreground mountain
f(45,210,88,168,"222420");
f(45,130,42,104,"222421");
f(58,20,18,112,"222421");
</script>

20
আপনি যদি "প্রসঙ্গ" এর পরিবর্তে কোনও একক অক্ষর ব্যবহার করেন এবং অপ্রয়োজনীয় শ্বেতস্পেস সরিয়ে ফেলে থাকেন তবে আপনার চিত্রটিতে অতিরিক্ত বিশদ যুক্ত করার জন্য জায়গা থাকতে পারে।
ট্রাইকোপলাক্স

13

স্কালা, 6003.56

993 টি অক্ষর। একটি আমদানি হল স্কেলা চিত্র গ্রন্থাগার । দ্বিতীয় আমদানি বেস 91 এনকোডার

object T extends App {
import com.github.libxjava.io._, com.sksamuel.scrimage._
val a = "vuk:eJs4+BAAN/<MCG4DAA#TAAAA8FMAAA<cPjTTAAJ7oG]t>um^8Wm}ozBAn|m(qVi2Yt+j8GnHAD%FaO,BjL2c%w%z,M+OyQy9eR0wkSXUa1|1pm1$?XSrkFs(;9/]Vk3<%.^UVyt~_Pnh?n7;[v06@I`oB{.2OCGT/*v/pS|`XN5.rp1`5)M$wy49cuk0G=%lVCEbxW{^Wd*{JR]hZM>S0$&Eo1,wk6]/WkAK:{$}d__nf_YZ&qRlB;<S5T8OVF3C^}$*PYcqn$SvGU[8Q69kFgT#/l@+7)l><x&|XNO&eajx.0k^mY)MvyQ4sQoqvY7MpyaPJ@u_O&9[@$dr1c>(!QUN+:&F#ZZSX*LxcCIR)&,,0=T:1&IuG[r|yQ>[)oFJTvpvRaM5Z6#oGj^%6Xqqn[Uo2AoeoEuvt2A7_N7TL)9_+[oq^J_3gwqhg$^#+{n[cW(0H}cP\"ek=a34Cpt:u]Sab;~&;FlT_iy6fMw`F>z(MQ^}vvoAy?@XxV26Se8:FT)T]]N2KH`b4%l_Zuu@y=0fTH1WeQ58~~[(QAKYhf]^Bel^[Tb44/G96&^2O@_6L072:)lRpMDZYMB]i9GM]t?t0%Wq99/0Ti=gjDi6]P7b3:dU$N0e&1Z?PaY`Hb`h7l)%N`fsuzV;/x`Uce.8:?K[@0|ckpCe/emO7!8^~eZsN[$)iOZ0zYW4VE]K5?RbO|GYzx<a2C!:*]<PuzpsIie8#+x[5U6xZ\"e}k7y[5JVQ5z:]ZR2Gds&g^+U=LJ:hR*KFgJ[YF<<Av}L8WcAAA6yQMFGPe=hnB"
Image(new Base91().decode(a.getBytes)).scaleTo(386, 320, ScaleMethod.Lanczos3).output("a.png")
}

এটি বেস 91 ডেটা:

এখানে চিত্র বর্ণনা লিখুন


হ্যাঁ সবেমাত্র দুঃখিত হয়েছে :)
সন্ন্যাসী জ্যাক

993 অক্ষরের মতো দেখতে
ডাউনগোট

সুতরাং এটাই. আপডেট করা হয়েছে।
monkjack

কৌতূহল থেকে দূরে, এটির ভিতরে কি কোনও তাত্পর্য থাকা উচিত?
কারসিজেনিকেট

না, আমি ভেবেছিলাম অনুলিপি করা এবং আটকানো সহজ ছিল
monkjack

13

জাভা, স্কোর 12251.19

import java.awt.*;
import java.awt.image.*;
public class Y{
    static Graphics2D g;
    static void rect(int...p){g.fillRect(p[0],p[1],p[2],p[3]);}
    static void col(int...p){g.setColor(new Color(p[0],p[1],p[2]));}
    public static void main(String[]a)throws Exception{
        BufferedImage b=new BufferedImage(386,320,1);
        g=(Graphics2D)b.getGraphics();
        col(77,98,119);
        rect(0,0,386,320);
        col(82,98,128);
        rect(11,0,386,57);
        col(186,159,80);
        rect(333,43,24,24);
        col(73,90,104);
        rect(0,282,386,50);
        col(76,97,95);
        rect(0,292,60,30);
        col(55,65,72);
        rect(34,130,91,190);
        rect(32,143,97,190);
        rect(46,193,99,190);
        rect(40,32,50,110);
        rect(45,20,43,110);
        javax.imageio.ImageIO.write(b,"png",new java.io.File("out.png"));
    }
}

এই গাণিতিক উত্তরটির উপর ভিত্তি করে তবে আরও আয়তক্ষেত্র রয়েছে। আমি সম্ভবত এটি পরে সংশোধন করে চালিয়ে যাব।

ফলাফল:

এখানে চিত্র বর্ণনা লিখুন

পূর্ববর্তী কয়েকটি সংস্করণ:

এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন


11
এসই লিঙ্কটি সন্নিবেশ করায় যাতে পূর্ণ আকারে চিত্রগুলি পৃথকভাবে দেখার জন্য ক্লিক করা যায়।
ক্যালভিনের

@ ক্যালভিনের শখগুলি তবে এই চিত্রগুলি যথেষ্ট ছোট যে কোনওভাবেই পোস্টে পুরো আকারটি ফিট করে।
সুপারজেডি ২৪

7
অগত্যা সমস্ত পর্দা / উইন্ডো আকারের জন্য।
ক্যালভিনের

1
সুতরাং এইভাবে এই গেমের গ্রাফিকগুলি ডিজাইন করা হয়েছিল
লুইস মেন্ডো

13

পাইথন 2 (অন্তর্নির্মিত সংকোচনের নয়), স্কোর 4497.730

এটি আমার আগের উত্তর হিসাবে একই ম্যানুয়ালি-ডিকোড করা 16-রঙের চিত্রের পদ্ধতির ব্যবহার করে তবে এবার স্কোরটি উল্লেখযোগ্যভাবে উন্নত করতে আমি আসলে গ্রেডিয়েন্ট-ডেসেন্ট অপটিমাইজেশন কৌশল প্রয়োগ করেছি । পূর্ববর্তী জমাটি 4755.886 পয়েন্ট স্কোর করেছে, যেখানে নতুন জমাটি 250 পয়েন্টেরও বেশি ভাল স্কোর করেছে, প্রক্রিয়াটিতে প্রচলিত অন্তর্নির্মিত পদ্ধতির অনেকগুলি পরাজিত করে।

আগের মত, চূড়ান্ত প্রোগ্রামটি হুবহু 1024 বাইট দীর্ঘ। প্রকৃতপক্ষে, অপ্টিমাইজেশন অ্যালগরিদমের কাঁচা আউটপুটে চারটি বাইট রয়েছে যা ( \0) পালিয়ে গিয়েছিল এবং যা বাইট গণনাটি 1024 বাইটে হ্রাস করতে আমাকে "ফ্যাদ" করতে হয়েছিল। ফেড না করে, 1028-বাইট প্রোগ্রামটি 4490.685 - 7 পয়েন্ট আরও ভাল স্কোর করবে।

প্রাথমিক ধারণাটি প্যালেট এবং ডেটা উভয়কে যৌথভাবে অনুকূলিত করা optim একক পুনরাবৃত্তিতে আমি প্যালেটের সমস্ত টুইট অনুসন্ধান করতে পারি (মূলত, প্রতিটি পরিবর্তিত প্যালেট যা কোনও রঙের উপাদানগুলির মধ্যে 1 দ্বারা পৃথক হয়) এবং পরিবর্তিত প্যালেটটি চয়ন করে যা স্কোরকে উন্নত করে। তারপরে, আমি ডেটাটির সমস্ত টুইট অনুসন্ধান করি (প্রতিটি সংশোধিত সূচক অ্যারে যাতে এক পিক্সেলকে অন্য কোনও প্যালেট এন্ট্রিতে পরিবর্তন করা হয়) এবং এমন একটি পরিবর্তন নির্বাচন করি যা স্কোর হ্রাস করে (এখানে আমি সর্বোত্তম সম্পর্কে চিন্তা করি না, কারণ আমি করি না নির্বিঘ্নে প্রতি পুনরাবৃত্তিতে 25000 টিরও বেশি টুইটের সম্পূর্ণ স্থান অনুসন্ধান করতে চান)।

শেষ অবধি, চূড়ান্ত প্রোগ্রাম আউটপুট উত্পন্ন করার সময়, আমি আরেকটি অপ্টিমাইজেশন পাসটি চালিত করি যা চূড়ান্ত আউটপুটে প্রয়োজনীয় ব্যাকস্ল্যাশগুলির সংখ্যা হ্রাস করতে প্যালেটটিকে পুনরায় সাজায় (উদাহরণস্বরূপ নীচে দেখানো প্রোগ্রামটির জন্য প্যালেটটি হেক্স টেবিল "0e3428916b7df5ca" ব্যবহার করে পুনরায় সাজানো হয়েছিল)।

এই পদ্ধতির ফলে পূর্ববর্তী ভ্রান্ত চিত্রম্যাগিক পদ্ধতির তুলনায় উভয়ই উল্লেখযোগ্য সংখ্যাসূচক এবং ধারণাগত উন্নতি হয়েছে। পূর্ববর্তী জমা আউটপুট:

পুরানো জমা দেওয়ার আউটপুট

এবং নতুন জমা দেওয়ার আউটপুট:

নতুন জমা দেওয়ার আউটপুট

নতুন অপ্টিমাইজেশন-ভিত্তিক পদ্ধতির উল্লেখযোগ্যভাবে আরও বিশদ এবং সঠিক রঙের প্রজনন রয়েছে।

এখানে চূড়ান্ত প্রোগ্রামের হেক্সডাম্প রয়েছে:

0000000: efbb bf66 726f 6d20 5049 4c2e 496d 6167  ...from PIL.Imag
0000010: 6520 696d 706f 7274 2a0a 6672 6f6d 6275  e import*.frombu
0000020: 6666 6572 2827 5247 4227 2c28 3430 2c34  ffer('RGB',(40,4
0000030: 3129 2c27 272e 6a6f 696e 2827 b39b 2620  1),''.join('..& 
0000040: b4b9 7e20 2634 8120 5567 7520 3547 7320  ..~ &4. Ugu 5Gs 
0000050: 242e 5620 1c1f 1b20 7890 a420 4348 3d20  $.V ... x.. CH= 
0000060: 9fae a420 3a52 8e20 262b 3220 7d90 7f20  ... :R. &+2 }.. 
0000070: 3a49 5720 4a67 9720 5d79 9c27 2e73 706c  :IW Jg. ]y.'.spl
0000080: 6974 2829 5b69 6e74 2863 2c31 3629 5d66  it()[int(c,16)]f
0000090: 6f72 2063 2069 6e27 8388 88b6 86b6 6b66  or c in'......kf
00000a0: 6bb8 b8b8 8888 dd8b bbbb bb8d b688 bb66  k..............f
00000b0: 6666 6666 b68d bdb6 bb88 33bd 5b55 bb68  ffff......3.[U.h
00000c0: b888 b66b 6666 6666 66bb 6688 88d8 bbb5  ...kfffff.f.....
00000d0: 553d 868b bb8b 6666 666b 6666 66b6 3d68  U=....fffkfff.=h
00000e0: bb66 5dd4 8363 b8bd dbd8 6666 66b6 66b6  .f]..c....fff.f.
00000f0: bbbb bbb6 d666 6bd6 f3bd d3d4 b5dd 666b  .....fk.......fk
0000100: 6666 6666 b668 63d5 66b8 5bd8 66bb 5b5b  ffff.hc.f.[.f.[[
0000110: 884b b66b 666b 666b 686d 8d85 dbb6 dd4b  .K.kfkfkhm.....K
0000120: 5b33 6db5 b5bd 6b6b 6b66 66bb d5b3 dddb  [3m...kkkff.....
0000130: bad4 58b5 d435 3b33 b555 6b66 6666 66bb  ..X..5;3.Ukffff.
0000140: 5346 db84 d45d bbbd 54d7 4d3b 5bbb b6b6  SF...]..T.M;[...
0000150: 6666 66b5 6bd3 d4f3 eddd 4333 c5d3 3c83  fff.k.....C3..<.
0000160: b2a5 5666 6666 66b6 b534 84d5 4444 b8b8  ..Vffff..4..DD..
0000170: b383 8333 3ffe 7666 66b6 6b42 2555 2eaa  ...3?.vff.kB%U..
0000180: 5b4a 4343 ad33 3388 43fe f666 b6d6 64e3  [JCC.33.C..f..d.
0000190: 564f d534 4455 aaea aaef ffee e737 3666  VO.4DU.......76f
00001a0: 6bb6 c73e ef3a f352 445b b25a eaee ffee  k..>.:.RD[.Z....
00001b0: ff79 3666 6b63 7c73 f3ec ee34 b55b 53b6  .y6fkc|s...4.[S.
00001c0: 5baf eee3 3717 3666 6dda 3fc1 ccc3 cc3a  [...7.6fm.?....:
00001d0: f333 7e34 bbb2 feea 7c7e d666 6ddf 99f3  .3~4....|~.fm...
00001e0: c7c1 c717 c777 7f77 f35b b6bb 374a 4666  .....w.w.[..7JFf
00001f0: be49 9999 aeee fac9 cc99 997c c79b 5bbb  .I.........|..[.
0000200: a3ae 4666 bad9 9197 e7ae fae4 acf3 ef99  ..Ff............
0000210: 9cf7 d6b5 4afe 3666 bf79 9099 a5ef af4a  ....J.6f.y.....J
0000220: ee77 ce49 999f 7b66 aeec 1b66 be39 1999  .w.I..{f...f.9..
0000230: a474 a2ef a7ef fcaf 1979 997c 7ee1 1b66  .t.......y.|~..f
0000240: baf7 999f efff 7cee e77e 7ffa 7999 9999  ......|..~..y...
0000250: 1eac c666 d4fe f7ff 7fff feff eeff e7ef  ...f............
0000260: a919 1999 f3ae a6b6 d4a5 aef7 ecf4 44a3  ..............D.
0000270: 7aa4 a7fe fe79 9199 e777 76b6 e4b4 ae77  z....y...wv....w
0000280: 7f4e ffef 3977 9fee f7ee 7719 9777 f36b  .N..9w....w..w.k
0000290: e45e 4e7f fafe ff7a eec3 3eef feff eaa1  .^N....z..>.....
00002a0: f7f7 3f66 9f5f ceef fe7a e777 aeaa ee3e  ..?f._...z.w...>
00002b0: efee fefe caae c766 77fc 1aff f7ff 7f77  .......fw......w
00002c0: edea eeea faff faff ef9f e7d6 7fff c547  ...............G
00002d0: 37ef fef7 4eaa affe e7ff 77ff fcf7 c7dd  7...N.....w.....
00002e0: 7e9f ff64 e3ef a7fa faef fffa ee19 197f  ~..d............
00002f0: fcf5 2abf f7fc f774 aaa3 e74e 7a3c 77ee  ..*....t...Nz<w.
0000300: ff11 119c ca54 a2ba 2aef f3cc af3f 7ee7  .....T..*....?~.
0000310: f2c1 17ae f110 5c30 17ea aa2a b3c3 2eef  ......\0...*....
0000320: fc33 3fee f745 7ccf ef91 1001 09aa 2aaa  .3?..E|.......*.
0000330: bc0c 2a4e e717 97f7 fa5a affe ef91 1011  ..*N.....Z......
0000340: 1c2a aa2a 6c03 2a44 fea3 3444 24e4 4aa2  .*.*l.*D..4D$.J.
0000350: ee91 0111 195a aa4a 6434 222a 52d4 4422  .....Z.Jd4"*R.D"
0000360: 4f3e 5542 e7c1 1011 9c5a 2a2a 6522 4aa2  O>UB.....Z**e"J.
0000370: a222 a254 7ccc 454e ef9c 1101 174a 77a2  .".T|.EN.....Jw.
0000380: b224 2aa4 2c32 aa42 700c aa45 ea39 c111  .$*.,2.Bp..E.9..
0000390: 9c57 c072 545a 5ecc e0ca 4522 ecce a4a4  .W.rTZ^...E"....
00003a0: a34f 991c cf5f 0175 5315 5acc f4a4 ae44  .O..._.uS.Z....D
00003b0: aa34 ea34 aafa 2ffc ee54 7f4b 5345 2a3c  .4.4../..T.KSE*<
00003c0: a4a3 33aa 4554 445e a4e3 f4ea 4427 2e65  ..3.ETD^....D'.e
00003d0: 6e63 6f64 6528 2768 6578 2729 2929 2e72  ncode('hex'))).r
00003e0: 6573 697a 6528 2833 3836 2c33 3230 292c  esize((386,320),
00003f0: 3129 2e73 6176 6528 276f 2e70 6e67 2729  1).save('o.png')

উন্নতির জন্য এখনও জায়গা আছে। উদাহরণস্বরূপ, একটি সাধারণ হিস্টোগ্রাম দেখায় যে কিছু রঙ সবে ব্যবহৃত হয়:

 6: 203
15: 167
14: 154
11: 152
10: 145
 7: 120
 4: 110
 3: 107
 5: 85
 9: 77
12: 77
13: 66
 1: 56
 8: 54
 2: 49
 0: 18

এটি পরামর্শ দেয় যে একটি ভারসাম্যহীন প্যালেট দক্ষতা উন্নতি করতে পারে, সম্ভবত 5 তম স্থানের বিপিজি সমাধান ধরতে যথেষ্ট। যাইহোক, আমি যথেষ্ট সন্দেহবাদী যে এই অপ্টিমাইজেশন পদ্ধতির (বা সত্যই, এইচ .265 এর অসাধারণ যন্ত্রপাতি জড়িত না এমন কোনও কিছুই) প্রথম স্থান বিপিজি বাস্তবায়ন করতে পারে।


11

পার্ল, 5955.96878124 5149.56218378

"অপ্রচলিত গীব্রিশ" পদ্ধতির দিকে তাকিয়ে, আমি স্থির করেছিলাম পার্লের মধ্যেও আমি এটি চেষ্টা করতে পারি। আবার, আমি পার্লকে সত্যই জানি না তাই আমি নিশ্চিত যে এটির উন্নতি হতে পারে (আসলে, সবচেয়ে স্পষ্টত উন্নতি, আলফা চ্যানেল বাদ দিয়ে উপবৃত্ত প্রতি 7 বাইটে হ্রাস, ইতিমধ্যে পরবর্তী সংস্করণের জন্য প্রয়োগ করা হয়েছে, তবে আমি ' আমি এখনও সেই কোডের অন্যান্য অংশে কাজ করছি; আমি ভাবছি পুরো পপ / পুশ ব্যবসায়টি আরও গল্ফ করা যেতে পারে)।

আমি মনে করি না এটি উইন্ডোজ মেশিনে আসলে কাজ করবে (আমি পরীক্ষা করতে পারছি না), যেহেতু বাইনারি মোডে ডেটা বিভাগটি খোলার কোনও সহজ উপায় আমি বের করতে পারিনি - তবে এটি আমার লিনাক্স মেশিনে কাজ করেছে।

আমি তৈরি করতে আমার একই জিএ কোডটি মূলত ব্যবহার করতে সক্ষম হয়েছি:

use GD;
$X=GD::Image->new(386,320,1);
@r=do{$/=\8;<DATA>;};
foreach $r(@r){@x=unpack"CCCCI",$r;$c=pop@x;map{$_*=2}@x;push@x,$c;$X->filledEllipse(@x)}
open $h,">","p.png" or die "$!";
binmode $h;
print $h $X->png;
close($h);
__END__
<<unprintable gibberish>>

যেখানে xxd আউটপুট:

0000000: 7573 6520 4744 3b0a 2458 3d47 443a 3a49  use GD;.$X=GD::I
0000010: 6d61 6765 2d3e 6e65 7728 3338 362c 3332  mage->new(386,32
0000020: 302c 3129 3b0a 4072 3d64 6f7b 242f 3d5c  0,1);.@r=do{$/=\
0000030: 383b 3c44 4154 413e 3b7d 3b0a 666f 7265  8;<DATA>;};.fore
0000040: 6163 6820 2472 2840 7229 7b40 783d 756e  ach $r(@r){@x=un
0000050: 7061 636b 2243 4343 4349 222c 2472 3b24  pack"CCCCI",$r;$
0000060: 633d 706f 7040 783b 6d61 707b 245f 2a3d  c=pop@x;map{$_*=
0000070: 327d 4078 3b70 7573 6840 782c 2463 3b24  2}@x;push@x,$c;$
0000080: 582d 3e66 696c 6c65 6445 6c6c 6970 7365  X->filledEllipse
0000090: 2840 7829 7d0a 6f70 656e 2024 682c 223e  (@x)}.open $h,">
00000a0: 222c 2270 2e70 6e67 2220 6f72 2064 6965  ","p.png" or die
00000b0: 2022 2421 223b 0a62 696e 6d6f 6465 2024   "$!";.binmode $
00000c0: 683b 0a70 7269 6e74 2024 6820 2458 2d3e  h;.print $h $X->
00000d0: 706e 673b 0a63 6c6f 7365 2824 6829 3b0a  png;.close($h);.
00000e0: 5f5f 454e 445f 5f0a b252 8e38 3a27 2400  __END__..R.8:'$.
00000f0: 6a48 8c5d 888b 7a00 328e 7684 6c3b 2b00  jH.]..z.2.v.l;+.
0000100: 6063 8e3d 5635 2a00 a996 bf59 8650 3b00  `c.=V5*....Y.P;.
0000110: b26c 1f0f 9b6b 5500 ae19 297e 855d 4a00  .l...kU...)~.]J.
0000120: ae92 af3e 665d 4b00 be8c 480c 3a2c 2500  ...>f]K...H.:,%.
0000130: b465 5d06 432a 2400 b29a 202d 4332 2b00  .e].C*$... -C2+.
0000140: c178 1517 5e58 4c00 5d3e 907a 704b 3900  .x..^XL.]>.zpK9.
0000150: 7754 b903 2921 2000 9148 621e 99a7 a500  wT..)! ..Hb.....
0000160: aa41 6421 9ba3 9600 124d b44f 8e6f 5400  .Ad!.....M.O.oT.
0000170: 7f88 1f53 512e 2400 5c33 6c97 5b33 2800  ...SQ.$.\3l.[3(.
0000180: 2a4e 8a3e 918b 7400 a231 3c51 9489 7000  *N.>..t..1<Q..p.
0000190: 7a0c 9f11 8f8e 7700 817f 4c20 644d 3b00  z.....w...L dM;.
00001a0: 9742 5229 9eab 9d00 0884 a218 4435 2b00  .BR)........D5+.
00001b0: 749f 834a 4937 2e00 6b2a 8d5d a07b 5b00  t..JI7..k*.].{[.
00001c0: 8626 3b6b 9165 4900 aa20 3b2f 88ab 9c00  .&;k.eI.. ;/....
00001d0: 8c36 6920 9f76 5500 573e 8359 9979 6000  .6i .vU.W>.Y.y`.
00001e0: 2f1d c08d 8d76 6100 2a9a b216 313d 3400  /....va.*...1=4.
00001f0: 034d 1d18 8b63 4400 b69f 181a 3839 3200  .M...cD.....892.
0000200: 1412 302d 854b 3600 080a 931a 6b3a 2c00  ..0-.K6.....k:,.
0000210: 6400 902b 8b65 5000 003f 321b a088 6e00  d..+.eP..?2...n.
0000220: 1c4d 1f0b 779e 8f00 8127 1f0d 8897 8900  .M..w....'......
0000230: 5d96 6c16 6057 5100 7537 4c1b 9064 4900  ].l.`WQ.u7L..dI.
0000240: 2da0 6403 6482 8600 3a45 6e07 866b 5000  -.d.d...:En..kP.
0000250: 453f 5c5b 3a37 3100 3659 610f 865a 3f00  E?\[:71.6Ya..Z?.
0000260: bb24 361b 8dac 9b00 b01d 161d 58ae b700  .$6.........X...
0000270: 3c65 5031 785f 4800 330c 5b6f 834b 3700  <eP1x_H.3.[o.K7.
0000280: 4e23 539b 8961 4a00 5926 2c19 9c8c 7c00  N#S..aJ.Y&,...|.
0000290: 3031 980d 9479 6200 2708 431c 8184 7300  01...yb.'.C...s.
00002a0: a89d 1e02 2f26 2300 205f 0d74 2727 1e00  ..../&#. _.t''..
00002b0: bf33 210f 997b 5c00 1d60 0670 9476 5f00  .3!..{\..`.p.v_.
00002c0: 1f71 107c 292c 2700 5113 940e 7f47 3500  .q.|),'.Q....G5.
00002d0: 7140 4906 9881 6b00 3614 0e3e 8648 3400  q@I...k.6..>.H4.
00002e0: 940a 0f68 9979 5d00 3471 1229 2223 2200  ...h.y].4q.)"#".
00002f0: 3060 031c 614b 3600 5908 830b 7c73 6200  0`..aK6.Y...|sb.
0000300: 2706 1239 5488 8700 468a 683d 2226 2400  '..9T...F.h="&$.
0000310: 4774 1715 6949 3400 5d9c 4a37 3c3f 4000  Gt..iI4.].J7<?@.
0000320: 5f51 3438 8c6b 5000 4c4e 3d48 8771 5800  _Q48.kP.LN=H.qX.
0000330: 2488 1385 1e22 1e00 5979 3417 5134 2700  $...."..Yy4.Q4'.
0000340: 5030 5622 937d 6700 6c23 1c1c 9672 5c00  P0V".}g.l#...r\.
0000350: 2543 0126 2224 1f00 8c8d 7a01 9171 6600  %C.&"$....z..qf.
0000360: 4932 1012 6341 2d00 3341 1515 7a54 3a00  I2..cA-.3A..zT:.
0000370: 3893 2849 1f22 1f00 798f 7f11 4b3f 3500  8.(I."..y...K?5.
0000380: 6890 4e1d 3530 2b00 6d7b 2b21 6347 3700  h.N.50+.m{+!cG7.
0000390: 4e54 3222 9ca5 9a00 2705 2224 7243 3500  NT2"....'."$rC5.
00003a0: 7705 4c31 7d49 3900 915c 2d0b 9697 8100  w.L1}I9..\-.....
00003b0: 4e3d 221e 9874 5a00 748e 1118 3831 2d00  N="..tZ.t...81-.
00003c0: bf68 340d 9666 5000 9529 0848 9a68 4c00  .h4..fP..).H.hL.
00003d0: 2003 0466 3c2d 2900 5a49 1c4c 916e 5400   ..f<-).ZI.L.nT.
00003e0: 6c60 6008 8e8b 7500 4696 2219 1c20 1d00  l``...u.F.".. ..
00003f0: 7906 1165 8052 3f00 740e 1412 7c7d 6c00  y..e.R?.t...|}l.

যা চিত্র উত্পন্ন করে:

এখানে চিত্র বর্ণনা লিখুন

এটি আকর্ষণীয় যে এটি আরও ভাল স্কোর করা সত্ত্বেও চিত্রটি আমার কাছে কিছুটা খারাপ দেখাচ্ছে - অতিরিক্ত সমস্ত উপবৃত্তের সাথে অনেক বেশি চলছে, কোনওরকমে সরল চিত্রটি দৃশ্যতভাবে মোকাবেলা করা আরও সহজ।

পুরানো ফলাফল

use GD;
$X=GD::Image->new(386,320);
sub c{$X->colorAllocate(@_);};
sub e{$X->filledEllipse(@_);};
e(0,7,9,4,c(98,122,142));
e(352,168,130,61,c(38,41,57));
e(313,296,319,213,c(44,56,92));
e(281,71,240,257,c(99,127,149));
e(55,266,372,67,c(41,55,96));
e(39,15,281,130,c(55,73,128));
e(235,149,226,90,c(136,156,152));
e(81,55,29,29,c(129,133,89));
e(183,139,285,65,c(58,79,108));
e(368,261,177,130,c(75,97,145));
e(283,270,386,88,c(70,86,99));
e(271,11,322,58,c(86,104,129));
e(254,78,185,200,c(90,116,151));
e(29,16,34,35,c(119,135,130));
e(195,311,297,189,c(51,69,98));
e(234,19,150,89,c(58,75,126));
e(286,313,286,108,c(49,56,68));
e(232,30,40,31,c(114,130,122));
e(375,145,106,32,c(159,172,160));
e(59,16,21,141,c(43,53,90));
e(66,135,21,108,c(39,45,43));
e(353,53,84,80,c(167,172,117));
e(196,122,150,137,c(86,110,145));
e(101,320,284,185,c(48,55,59));
e(79,193,73,114,c(36,42,42));
e(106,310,126,191,c(31,35,33));
e(119,169,70,56,c(128,144,150));
open $h,">","p.png" or die "$!";
binmode $h;
print $h $X->png;
close($h);

এখানে চিত্র বর্ণনা লিখুন

জামেগুইনানের উত্তর দেখার পরে আমি উপবৃত্তগুলিকে অঙ্কন আদিম হিসাবে ব্যবহার করেছি যেহেতু পার্লে আমার আঁকার জন্য জিডি লাইব্রেরিতে অ্যাক্সেস রয়েছে। আমি মোটেই পার্ল বিশেষজ্ঞ নই, সুতরাং যে কোনও পরামর্শ কার্যকর হবে। আমি একটি জেনেটিক অ্যালগরিদম ব্যবহার করেছি যা আমার সি ++ উত্তর থেকে পরিবর্তিত হয়েছিল ।

মনে হচ্ছে এটি ঠিক আছে, তবে সত্যই আমি স্কোর থেকে কিছুটা হতাশ। আপনি সম্ভবত দেখতে পারবেন যে কয়েকটি উপবৃত্ত অনুকূল অবস্থানে নেই। তবে, এখন পর্যন্ত এটি আয়তক্ষেত্র-ভিত্তিক সমাধানের তুলনায় আমার চোখকে আরও সুন্দর দেখায়।


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

1
@ নাথানিয়েল আমি কিছু রান লক্ষ্য করেছি যে এটি এটির মতো করে। আমি প্রোগ্রামের আকারের উপর ভিত্তি করে খুব সামান্য পেনাল্টি (স্কোর বৃদ্ধি) ব্যবহার করি যা কিছুটা উপবৃত্তির সাহায্যে সমাধানের পক্ষে। এটি আসলে কাজ করছে কিনা তা আমি সত্যিই জানি না, তবে যেহেতু আমি এটি প্রয়োগ করেছি আমি "বহুবৃত্তাকার তারা" তেমনটি দেখিনি।
neocpp

9

বাশ + নেটপবিএম, 4558.5 4394.1

আপডেট: আমি ফিআইএসসোর পরিবর্তে এসপিআইএইচটি ব্যবহার করে স্কোরটি উন্নত করেছি।

এসআইপিএইচটি হায়ারার্কিকাল ট্রিগুলিতে পার্টিশন নির্ধারণের সংক্ষিপ্ত রূপ। এটি একটি অত্যন্ত দক্ষ তরঙ্গলেট-ভিত্তিক চিত্রের সংক্ষেপণ বিন্যাস।

আমি সিকি করে মূল পিএনজি সংকুচিত, তারপর ব্যবহার PNM রূপান্তরিত pngtopnmথেকে Netpbm বনাম। 10,68, তারপর হেডার মুছে ফেলেছি এবং সঙ্গে SPIHT করতে কাঁচা ডেটা রূপান্তরিত codecolr in.raw out.spi 80 96 0.95এবং 913-বাইট ইমেজ ফাইল পেয়েছিলাম। তারপরে আমি এটিকে আবার RAW এ decdcolr -s out.spi out.raw 0.95রূপান্তর করে ব্যবহার করে পিএনএম ফর্ম্যাটে রূপান্তরিত করে ব্যবহার করে rawtoppm -bgr 96 80উল্টিয়েছি, ব্যবহার pamflip -tbকরে মূল আকারে আপসেল করে pamscale -xsize 386 -ysize 320 -filter sincপিএনএম ফাইলে সংরক্ষণ করেছি, যা পিআইএল দ্বারা পঠিত। এখানে আমার স্ক্রিপ্ট (1KB):

0000000: 6465 6364 636f 6c72 202d 7320 3c28 7461  decdcolr -s <(ta
0000010: 696c 202d 6e2b 3220 2430 2920 3e28 7261  il -n+2 $0) >(ra
0000020: 7774 6f70 706d 202d 6267 7220 3936 2038  wtoppm -bgr 96 8
0000030: 307c 7061 6d66 6c69 7020 2d74 627c 7061  0|pamflip -tb|pa
0000040: 6d73 6361 6c65 202d 7879 6669 6c6c 2033  mscale -xyfill 3
0000050: 3836 2033 3230 202d 6669 6c74 6572 2073  86 320 -filter s
0000060: 696e 633e 6f75 7429 2030 2e39 350a 6f00  inc>out) 0.95.o.
0000070: a060 206d 7997 f801 b8af b544 5f71 c411  .` my......D_q..
0000080: bba5 e80c a148 0424 72b8 67b5 bd41 3fce  .....H.$r.g..A?.
0000090: 4f43 8d78 9086 b69a ee32 c8ff ffd7 18f9  OC.x.....2......
00000a0: ffff ffff ffff ffff ff7b f326 e0d5 d0f1  .........{.&....
00000b0: 06b5 529f 9335 59cd 76c8 7a3c 0159 fc29  ..R..5Y.v.z<.Y.)
00000c0: 3cee ffff 7f48 caf9 6e59 3f8e 8a35 52e0  <....H..nY?..5R.
00000d0: 6b6c ad59 6d00 47cc 3934 488f aff6 5119  kl.Ym.G.94H...Q.
00000e0: 072b 0d9d deb8 ea10 11df d078 5db7 abc6  .+.........x]...
00000f0: 78df d367 1d58 71f9 ff2b 5163 7652 182e  x..g.Xq..+QcvR..
0000100: b774 e25d 3341 1d52 c607 a936 528c 1a55  .t.]3A.R...6R..U
0000110: e04e 8d15 0759 0035 74fb 60dd a644 05fb  .N...Y.5t.`..D..
0000120: 9ea8 8383 5838 cf25 6315 9a73 a600 8d6d  ....X8.%c..s...m
0000130: 958c 43ae 57da 1bd0 f38e aca0 68ba 7b9d  ..C.W.......h.{.
0000140: 29b1 1bf4 0f1c aecb 86a9 6b85 e4d7 4a22  ).........k...J"
0000150: 6b08 22c4 edc2 de62 6ced 8c9d c923 5ff9  k."....bl....#_.
0000160: ead2 1be7 4201 92a2 402a 4ab2 0d50 8984  ....B...@*J..P..
0000170: 8a59 f25d 768e 05c6 11d8 990f bddc 2552  .Y.]v.........%R
0000180: 2ae8 ddd0 5cca 2c73 61eb 12af ac19 ae20  *...\.,sa......
0000190: cc0f 2fcb 7a11 d4d5 7e16 66d6 f581 d81d  ../.z...~.f.....
00001a0: 98a5 c5bf b63c 7f74 6a1d 1d63 3fdc c9f4  .....<.tj..c?...
00001b0: 506a 5b22 c7ec d67c 46d1 0965 9a09 bbb3  Pj["...|F..e....
00001c0: 89ed a733 d1fd d114 0013 21cf add0 16ee  ...3......!.....
00001d0: 88fa 1880 59df b39c e1aa d710 e441 3424  ....Y........A4$
00001e0: 3852 a46b 3e36 2566 f0b0 bee0 9d8f 9285  8R.k>6%f........
00001f0: 391b 1d8e 870a c1c9 645a 721e 4a0b d4c8  9.......dZr.J...
0000200: 2182 4393 2b1c 7fc8 d1cb 4f31 0290 cd11  !.C.+.....O1....
0000210: 2446 5eb1 9d26 4df0 dbe4 a71b 4caa 102a  $F^..&M.....L..*
0000220: 81e5 6f34 d1a3 0614 6f79 8fc4 cd06 d365  ..o4....oy.....e
0000230: fc38 29f4 a72e 31cd 532a 670d 06f2 4bb8  .8)...1.S*g...K.
0000240: f1ae f2ef e2f6 7543 3f8d 9f74 30ce dcba  ......uC?..t0...
0000250: 662f 3ea2 e9bf a895 f29b b17c e472 b4dd  f/>........|.r..
0000260: 3bbd 0ed6 50f9 eadf 85cb 7648 882f 0f22  ;...P.....vH./."
0000270: 829e 723a 2c87 5740 f890 4724 1fe8 58e7  ..r:,.W@..G$..X.
0000280: 5375 f9db a740 c166 e098 c4c2 3d9b dad3  Su...@.f....=...
0000290: e92b bf71 1e87 0437 1396 0fbf 8eed 2ef8  .+.q...7........
00002a0: 7d5f 6767 1bf9 826a 2692 c9e5 78aa 724a  }_gg...j&...x.rJ
00002b0: ceb6 7486 2a60 8698 35b3 20cf bd43 ea65  ..t.*`..5. ..C.e
00002c0: 39a7 b415 233c b945 eed0 0db8 18df ee0c  9...#<.E........
00002d0: df0d 3719 5c74 fa56 7ec9 588d 22c4 6dbc  ..7.\t.V~.X.".m.
00002e0: 6823 4536 2614 f9e0 40cd beb8 1aff 5f17  h#E6&...@....._.
00002f0: c6b2 5710 18e2 1c93 34b3 d219 9c83 d11f  ..W.....4.......
0000300: 6125 fedb 975b 51a7 c9fc 23f7 7733 fa0e  a%...[Q...#.w3..
0000310: 970d 9c2d 8fc3 8edd 4bf9 db23 eff1 434e  ...-....K..#..CN
0000320: d54f 1f2a d51a ddf1 a5a6 9687 8afa 8973  .O.*...........s
0000330: 43c1 8292 c2e1 ef0c 71dd f7de 0986 9f93  C.......q.......
0000340: 3dd5 f200 b3dd f709 7ab3 dad3 7d5d a522  =.......z...}]."
0000350: 0730 62a9 e817 4f56 b5b3 a216 edb9 8b90  .0b...OV........
0000360: 52c0 c10c 9f8a f7f5 6500 1ee1 347b a756  R.......e...4{.V
0000370: 0566 21f6 0290 4282 55eb 0788 b508 a5e7  .f!...B.U.......
0000380: 6971 85e9 f512 da0f ee34 3725 fb62 4f8d  iq.......47%.bO.
0000390: 4bc2 8f19 78ee 4db6 e9db f84d 8e09 66f7  K...x.M....M..f.
00003a0: 9a0c 5826 4075 e173 4f77 4652 6ef7 94ea  ..X&@u.sOwFRn...
00003b0: f2ac 935b 836a 887b 3aa8 8516 1a10 8098  ...[.j.{:.......
00003c0: b4f2 5e19 fd63 5ba5 c9b5 940d c2b0 0d9c  ..^..c[.........
00003d0: ae03 9e07 44ae edeb 9339 ca27 f7a9 f395  ....D....9.'....
00003e0: 1dca 317b 93ce eb79 02cf 006b 6ab0 16dd  ..1{...y...kj...
00003f0: 1854 17d6 1e95 5a39 2881 204d 1cdd 040a  .T....Z9(. M....

এখানে আউটপুট পিএনজি:

এসপিআইএইচটি থেকে চিত্র পুনরুদ্ধার করা হয়েছে

নীচে আমার ইলিয়ের উত্তর:


ভরাডুবি ফ্র্যাক্টাল ইমেজ এবং সিকোয়েন্স কোডেক জন্য একটি আদ্যক্ষরা, এটা লজি এর একটি অত্যন্ত দক্ষ বাস্তবায়ন ফ্র্যাক্টাল কম্প্রেশন

আমি সিকি করে মূল পিএনজি সংকুচিত, তারপর ব্যবহার PNM রূপান্তরিত pngtopnmথেকে Netpbm বনাম। 10,68, তারপর সঙ্গে ভরাডুবি রূপান্তরিত pnmtofiasco -q=14 -z=3এবং 969-বাইট ইমেজ ফাইল পেয়েছিলাম। তারপরে আমি এটি ব্যবহার করে এটি পিএনএম-তে ফিরে রূপান্তরিত করেছি fiascotopnm, ব্যবহার করে মূল আকারে আপসেল করে pamscale -xyfill 386 320পিএনএম ফাইলে সংরক্ষণ করেছি, যা পিআইএল দ্বারা পঠিত। এখানে আমার স্ক্রিপ্ট (1KB):

0000000: 6669 6173 636f 746f 706e 6d3c 2874 6169  fiascotopnm<(tai
0000010: 6c20 2d6e 2b32 2024 3029 7c70 616d 7363  l -n+2 $0)|pamsc
0000020: 616c 6520 2d78 7966 696c 6c20 3338 3620  ale -xyfill 386
0000030: 3332 303e 6f2e 706e 6d0a 4649 4153 434f  320>o.pnm.FIASCO
0000040: 0a6f 2e66 636f 0001 0040 0040 000f ffff  .o.fco...@.@....
0000050: e70b 0140 2803 0280 2463 5a00 ab40 0000  ...@(...$cZ..@..
0000060: 005e 44f8 62cb a400 4461 e539 a199 2d9c  .^D.b...Da.9..-.
0000070: b01f 01fe 9327 7fea 572c e1c3 5652 e81a  .....'..W,..VR..
0000080: a86f 85d2 7617 762f 6746 6e4d 30af 7673  .o..v.v/gFnM0.vs
0000090: 2266 86fd eea4 0ef0 3996 8c37 e86e 663e  "f......9..7.nf>
00000a0: dc9d 85cc 2e76 80e1 53ac a466 fa66 a19a  .....v..S..f.f..
00000b0: 8268 7a8a 9d84 596c f5b3 a99e c4c8 292f  .hz...Yl......)/
00000c0: 11ec f5d5 8c38 b3a4 4c34 e848 5e4e f00f  .....8..L4.H^N..
00000d0: bc72 e118 412e 3fa1 9a96 0452 95c4 5378  .r..A.?....R..Sx
00000e0: fba4 e181 438b 5a67 90ee cfd6 47ea 59fc  ....C.Zg....G.Y.
00000f0: bfdc 3615 fc5c 4976 c1d0 50d0 aadc 1462  ..6..\Iv..P....b
0000100: fc50 89ab abde bede fc38 4329 838f d649  .P.......8C)...I
0000110: 8998 57ae e122 c13b b4a5 7110 0e2f de80  ..W..".;..q../..
0000120: 338b bf2f 9e61 2bfd 6401 13f8 2621 06e9  3../.a+.d...&!..
0000130: 3acd 8085 f0e0 2002 9d4f e445 f6e7 18f3  :..... ..O.E....
0000140: 19a4 4649 3a00 d223 1547 45a7 d097 06fb  ..FI:..#.GE.....
0000150: 9a25 119e 978b 88b8 d8fe 87d8 43c5 4d89  .%..........C.M.
0000160: 61ea 8314 99a1 1046 5c13 1026 375e cff2  a......F\..&7^..
0000170: 9c12 fca6 ebab 23fe 707f 2d18 82af 7302  ......#.p.-...s.
0000180: df00 57c7 5a43 3818 4787 5f7a 0d0c 53b5  ..W.ZC8.G._z..S.
0000190: cc11 c562 840b 11f3 9ad3 c938 9e58 9af1  ...b.......8.X..
00001a0: 40a2 6aab ac36 8a0c d5e6 fc8b b1a7 8dfc  @.j..6..........
00001b0: 4bb9 5404 6468 c037 a862 f313 6e6b d330  K.T.dh.7.b..nk.0
00001c0: a88c 8ef0 cd60 4c67 3232 9a08 3d46 2a45  .....`Lg22..=F*E
00001d0: 7eb0 5d80 c2ba f302 a50d 234c 2e81 bb3f  ~.].......#L...?
00001e0: 4123 a172 d9a7 87ff 5289 fca4 f9f6 788b  A#.r....R.....x.
00001f0: 587e 1021 5ead ae02 4eb5 891a 0a89 2a2a  X~.!^...N.....**
0000200: 8b0f a66c a494 a63b 4e2d 3a83 a991 bc9d  ...l...;N-:.....
0000210: 8d3c e129 e074 7028 9647 d8e6 e216 f109  .<.).tp(.G......
0000220: 8664 ba00 7cb3 76ed ac31 68fe b179 9b22  .d..|.v..1h..y."
0000230: 40f0 4fde 6e43 2f1f fe7d bf05 7ac5 b05d  @.O.nC/..}..z..]
0000240: 8be6 9ab1 c63b 6977 b019 0b5d 75dc 923c  .....;iw...]u..<
0000250: e36c 55c7 e8d1 9395 75e5 cf8a 8af0 2757  .lU.....u.....'W
0000260: 9b6a 837c 108c 2660 8360 8c4e 17da 8f06  .j.|..&`.`.N....
0000270: e6f7 a31c 2df4 f8e6 c1e9 cc03 7a1e 9c95  ....-.......z...
0000280: d1a3 e0bc 1514 c46c cfc1 8f2a 1b3e 2ff1  .......l...*.>/.
0000290: beea b692 45be d8e0 a0ab c3a6 5722 9602  ....E.......W"..
00002a0: bce0 0859 4939 0506 9a03 9373 0af7 5331  ...YI9.....s..S1
00002b0: e050 fa65 e927 ab84 dd3e 4f78 ef60 c881  .P.e.'...>Ox.`..
00002c0: 8220 a924 d201 d212 8720 9b24 3099 6613  . .$..... .$0.f.
00002d0: bc23 57b9 dc91 f9d4 2416 1470 7d47 8c01  .#W.....$..p}G..
00002e0: c8dd 4a9b 1140 bdaa 7679 2943 696d 7b74  ..J..@..vy)Cim{t
00002f0: acc4 ab69 36b3 ce4b 67c8 8d1c 95ad 4eef  ...i6..Kg.....N.
0000300: 738b fd00 0f83 77c0 513d a114 615c c007  s.....w.Q=..a\..
0000310: bd08 2bc0 6717 f35c 0125 4379 03ce e36b  ..+.g..\.%Cy...k
0000320: 5be5 d087 b50e b47f 96bf 3593 73d8 c8a2  [.........5.s...
0000330: 5d6f 5fb5 7c7d ed7b 3814 e844 6f11 5ff2  ]o_.|}.{8..Do._.
0000340: c2d3 55c3 961e 4ccd e45b 39a7 cd2f f9d0  ..U...L..[9../..
0000350: c218 a9eb a0c5 b38d f1aa b279 6854 e47e  ...........yhT.~
0000360: a988 3876 5302 a832 0093 e10e c225 4278  ..8vS..2.....%Bx
0000370: c760 f39d bd1f b941 fc98 03bf 5082 d39c  .`.....A....P...
0000380: f97b 06a8 cc7f 75bf 2496 8660 c553 29e9  .{....u.$..`.S).
0000390: 0a11 463c cd8d 6ba4 93b2 ed22 2ce8 8b58  ..F<..k....",..X
00003a0: 84b9 c243 3e18 7948 8a73 0547 23aa 9991  ...C>.yH.s.G#...
00003b0: 8629 a135 669c 294e f0ce ed95 975d 085d  .).5f.)N.....].]
00003c0: 68ba 566c f6f9 f555 2d68 b3da 91a8 9234  h.Vl...U-h.....4
00003d0: e284 d7e5 25a0 6618 3a5f f649 a3c8 f089  ....%.f.:_.I....
00003e0: 2514 6c21 9119 e4e4 5bba c1f1 49f1 16d0  %.l!....[...I...
00003f0: 979a 88b1 3513 23ae 84e6 9080 82a9 7f0a  ....5.#.........

আসলে, আমি এটি প্রথম উইন্ডোজে করেছিলাম cmdতবে স্ক্রিপ্টটি 1KB তে ফিট করে নি। তারপরে আমি এটি আবার লিখলাম bash। এখানে আউটপুট পিএনজি:

চিত্রটি ফিআইএসসিও থেকে পুনরুদ্ধার করা হয়েছে


আমি মনে করি আপনার দুটি উত্তর একটি পোস্টে এম্বেড করার পরিবর্তে আপনার আর একটি উত্তর যুক্ত করা উচিত ছিল
anatolyg

@ এনাটোলিগ এ দুটি উত্তর নয়, এটি দুটি সংস্করণ সহ একটি পদ্ধতি, অন্যটি কোডেক ব্যবহার করে পরবর্তীটি উন্নত করা হচ্ছে।
নিিউটেক

9

রুবি, 7834.38

এই মজা ছিল!

আমি রুবি স্ক্রিপ্ট লিখতে একটি রুবি জেনারেটর প্রোগ্রাম ব্যবহার করেছি:

  • একটি সাদা 386x320 আয়তক্ষেত্র আঁকুন।
  • একটি তালিকায় আয়তক্ষেত্রটি রাখুন। আয়তক্ষেত্রগুলির তালিকা তৈরি করতে একটি রুবি ফাইল তৈরি করুন (এই প্রাথমিক ক্ষেত্রে কেবলমাত্র একটি)
  • উত্পন্ন রুবি ফাইলটি 1024 বাইটের চেয়ে কম:

    • সর্বোচ্চ স্কোরিং আয়তক্ষেত্রের জন্য তালিকাটি অনুসন্ধান করুন Search
    • অনুভূমিক এবং উল্লম্বভাবে সেই আয়তক্ষেত্রটি অর্ধেক করার চেষ্টা করুন
    • যেকোনো জুটি কম স্কোর করে তালিকায় সেই আয়তক্ষেত্রটি প্রতিস্থাপন করুন
    • আয়তক্ষেত্রগুলির তালিকা তৈরি করতে একটি রুবি ফাইল তৈরি করুন

মনে রাখবেন যে আমার স্কোরিং অ্যালগরিদম এলোমেলোভাবে একগুচ্ছ রঙের নমুনা দেয় এবং একটিটিকে বাছাই করে যা ফলাফল ORIGINAL.png থেকে ক্ষুদ্রতম পার্থক্যের ফলাফল করে। এটি সম্ভাব্যতা হিসাবে, আমি স্ক্রিপ্টটি বেশ কয়েকবার পুনরায় চালু করেছি এবং সর্বনিম্ন স্কোরিংয়ের ফলাফলটি বেছে নিয়েছি।

এখানে আমার সেরা স্ক্রিপ্ট এখানে:

require 'chunky_png'
def r(w,x,y,z,k)
c=k*256+255
$p.rect(w,x,y,z,c,c)
end
$p=ChunkyPNG::Image.new(386,320,255)
r(97,160,192,199,7374989)
r(0,80,48,159,7045519)
r(193,160,289,199,6716560)
r(0,220,192,239,2963277)
r(338,80,385,159,8623770)
r(0,0,48,79,4938368)
r(49,0,96,79,4212844)
r(193,240,385,259,3756895)
r(193,260,385,279,3094854)
r(290,0,313,159,5271706)
r(314,0,337,159,8555664)
r(290,160,337,199,7570058)
r(338,160,385,199,3883603)
r(193,0,289,39,4674429)
r(193,40,289,79,5398918)
r(0,240,96,319,2566701)
r(97,240,192,319,2041898)
r(193,200,289,239,3424622)
r(290,200,385,239,4348033)
r(97,80,144,159,6124943)
r(145,80,192,159,5926550)
r(97,0,192,39,4609663)
r(97,40,192,79,5334923)
r(193,280,385,299,3619650)
r(193,300,385,319,3815999)
r(49,80,96,119,5334650)
r(49,120,96,159,2767683)
r(0,200,96,219,3951445)
r(97,200,192,219,5860985)
r(0,160,48,199,5468034)
r(49,160,96,199,2503733)
r(193,80,289,119,5599124)
r(193,120,289,159,6189974)
r(338,0,385,39,7900038)
r(338,40,385,79,11317092)
$p.save('o.png')

এটি নিম্নলিখিত চিত্রটি তৈরি করেছে, যা 34 78৩৪ পয়েন্ট করেছে:

জেরেমির প্রবেশ: 7834 পয়েন্ট

এটির সাথে আমার অ্যালগোরিদম কীভাবে উপস্থিত হয়েছিল তা দেখতে এখানে একটি অ্যানিমেটেড জিআইএফ এটি দেখায় যে এটি কীভাবে আয়তক্ষেত্রগুলি বিভক্ত করে:

জেরেমির প্রবেশ: এটি কীভাবে নির্মিত হয়েছিল

আমার কোডটি https://github.com/jrotter/starry_ रात_কনটেস্টে গিটহাবের সাথে সমস্ত আপ


1
সমস্যাটিতে ভিন্ন পদ্ধতির জন্য +1। যদি আমি সঠিকভাবে বুঝতে পারি তবে আপনি প্রতিটি আয়তক্ষেত্রটি যেটি জুড়ে থাকেন তার গড় রঙ দিয়ে কেবল কিছুটা সঞ্চয় করে কিছুটা নির্ভুলতা অর্জন করতে পারেন, যেহেতু এটি আসল থেকে স্কোয়ার দূরত্বকে হ্রাস করে।
নাথানিয়েল

ন্যায্য বিন্দু. আমি এখানে অবশ্যই পুনরাবৃত্তির অ্যালগরিদমের দিকে আরও মনোনিবেশ করেছি এবং প্রতিটি পদক্ষেপে স্কোরিং সম্পর্কে খুব কঠিন চিন্তা করি না। আমি এর চেষ্টা করার বিষয়টি বিবেচনা করেছি, তবে (বিব্রতকরভাবে) নিশ্চিত ছিল না যে এটি স্কোয়ার দূরত্বকে কীভাবে প্রভাবিত করবে এবং কখনই এটি পরীক্ষা করে দেখেনি।
জেরেমি

7

জাভা, 9215.38294502

বেস 64-এনকোডেড স্ট্রিং (368 টি অক্ষর সমন্বিত) থেকে 8x6 পিক্সেল (!) আকারের চিত্রটি জিআইএফ হিসাবে পড়া এবং এটি দ্বিপদীভাবে স্কেল করা।

import java.awt.*;
import java.awt.image.*;
import static java.awt.RenderingHints.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;
class S
{
    public static void main(String[] a) throws Exception
    {
        BufferedImage r=new BufferedImage(386, 320, 2);
        Graphics2D g=r.createGraphics();
        g.setRenderingHint(KEY_INTERPOLATION,VALUE_INTERPOLATION_BILINEAR);
        g.drawImage(ImageIO.read(new ByteArrayInputStream(Base64.getDecoder().decode("R0lGODlhCAAGAPUAABMXFxIfHxQZGBcZHRgcGRwfKhssIB0iMC4kGicwOy06PzA6OS8zSjY7SztHQThZVzJCcFdgUFJhdFZrfSo7ny1AgC9Mjz1XjT1ZqkRNgUFVj0BeiEJUmEFhjkJtnlJwnGd8mXF+gmF9plyGqW6Gk26KmHSJmnuSn32Zl6C1e7u/dYGNkYCVnZOahI6gmYaiuhMXFxMXFxMXFxMXFxMXFxMXFxMXFxMXFxMXFxMXFxMXFxMXFxMXFxMXFxMXFxMXFywAAAAACAAGAEUIOQBfZMBQwYQGFCkoEACQQIKDBxFIGOAA4sIHES0ghJjQwQKLESpWLDjhwUWJDQ0UBBCAYEABBgcCAgA7"))), 0, 0, 386, 320, null);
        g.dispose();
        ImageIO.write(r, "PNG", new File("RESULT.PNG"));
    }        
}

সম্পাদনা করুন: মন্তব্যগুলিতে অনুরোধ অনুসারে ফলাফলটি এই চিত্রটিতে প্রদর্শিত হয়েছে:

তারকাময় রাত


2
আপনি কি ছবি পোস্ট করতে পারেন?
নাথানিয়েল

7

পাইথন 3, 5797.125628604383

সংক্ষেপণ প্রোগ্রামটি প্রথমে চিত্রের বিটগুলি কেটে দেয় এবং তারপরে বেস 2 কে বেস 36 এ রূপান্তর করে।

ডিকোড প্রোগ্রামটি এটি বিপরীতে করে এবং চিত্রটিকে আবার আকার দেয়।

from PIL.Image import new
K=bin(int('29zoubbejrojv5nc2c09w8008mmc93di8nsq75g5ep83xtelg14ua2jvhm6ez5gry7isq1g82qvqezkbvl0ibovc6kltldjgklqeg7g5oyfefamfrvei712jnrd8a2ften12xme2bfh654a6r8kfe5xtckpxxt60pujhs02r0zt9a733ofmyhsprmxw9max72f9az1cpsa48szbbi3cl0ah4tusuuin49vtzambzv8omzfa0lt9wkot1p17trvvvvwmrf31g14vvs59ea3uo3k2ycgibgxwnd7qbv6enrynzwhng30thklvk4mvrhf66ba0gqnyf0do6xn9xfjker8fnpr79zac6tsowm6oohszjc16k3a8iisv7yj7i67aq6r7f629zldmv9l816azzu96jikqaw02icsv9b79yy73gbvw0scid9266hph04m6nb3lae5a59d6djauw38i1wtd7qqn17uxugi4r52y0cfpjsb444uj30gih7jmek26uhdn41w2b2g0y34xl1kgxegkjtj6iq1u3k3zk34qtw76hysxj6jl7qrj908pa5vcao6m4i4m2h8sg4ir10mh1y315bakfag611ilwy7y569jh18ydabo5zgdyr7m5vcc9dqxj63nu2s67urqui8gnqu9u40hahyehqu9ugtqf8ab0m1v4fu5pr88k6ch7ep0echekocg78za1f74ladjgm',36))[3:]
a=[]
for x in range(0,len(K),18):
    Y=K[x:x+18]
    y=[Y[0:6],Y[6:12],Y[12:18]]
    for x in range(0,3):
        y[x]=int(y[x],2)*8
    a.append(tuple(y))
i=new('RGB',(16,13))
i.putdata(a)
i.resize((386,320),1).save('2.png')

এখানে চিত্র বর্ণনা লিখুন


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