1009 পিক্সেল সংযুক্ত করুন


24

আউটপুট এমন একটি আকার যা 1009 পিক্সেলকে ঘিরে থাকে।

  • আকৃতিটি অবশ্যই একটি একক, বদ্ধ, অন্তর্নির্মিত লুপের রূপ নিতে হবে।

ইনপুটটি ইতিবাচক অ-শূন্য পূর্ণসংখ্যার।

  • প্রতিটি ইনপুট অবশ্যই আউটপুট উত্পাদন করতে পারে যা অনন্য - যা প্রতিটি আউটপুট অবশ্যই কম ইনপুট ব্যবহার করে তৈরি করা থেকে আলাদা হওয়া উচিত be

বিজয় বৃহত্তম ইনপুট সীমা দ্বারা সিদ্ধান্ত নেওয়া হয়:

  • আপনার জমা দেওয়ার ইনপুট সীমাটি সর্বনিম্ন ইনপুট থেকে 1 কম হিসাবে বিবেচিত যা অ-অনন্য বা অন্যথায় অবৈধ আউটপুট দেয়।
  • উদাহরণস্বরূপ, যদি বৈধ এবং অনন্য আউটপুট 1, 2 বা 3 এর ইনপুট জন্য উত্পাদিত হয় তবে 4 নয়, আপনার ইনপুট সীমা 3।

উত্স কোডে একটি 1009 বাইট সীমা রয়েছে। অল্প অল্প বাইটের জয় দিয়ে একটি এন্ট্রি থাকলে।


বিধিনিষেধ এবং স্পষ্টতা:

  • একটি আকারের সর্বোচ্চ আকার 109 বাই 109 পিক্সেল। আকারটি আঁকার জন্য ব্যবহৃত লাইনটি অন্তর্ভুক্ত করে।
  • একটি লাইন ধ্রুব প্রস্থ হয়।
  • বদ্ধ স্থানটি অবশ্যই লাইন দ্বারা সম্পূর্ণভাবে আবদ্ধ থাকতে হবে - আপনি চিত্রের ফাইলের সীমানা ব্যবহার করতে পারবেন না।
  • সংযুক্ত 1009 পিক্সেল কেবল বদ্ধ স্থানকে বোঝায়। এটি লাইনটি অন্তর্ভুক্ত করে না।
  • আউটপুট একটি চিত্র।
  • আর কোনও গ্রাফিকাল বিধিনিষেধ নেই - যেমন রঙ, লাইন বেধ ইত্যাদি on
  • একটি আউটপুট এর স্বতন্ত্রতা কেবল আবদ্ধ স্থান বোঝায়। লাইন পরিবর্তন বা অন্যান্য গ্রাফিকাল পরিবর্তনগুলি অপ্রাসঙ্গিক যদি সংযুক্ত স্থানটি অনন্য না হয়।
  • আকৃতির একটি অনুবাদ অনন্য নয়। আবর্তন, প্রতিচ্ছবি এবং অন্য কোনও রূপান্তরগুলি অনন্য হিসাবে গণ্য।
  • আউটপুট অবশ্যই পুনরায় উত্পাদনযোগ্য হতে হবে - একই ইনপুট সর্বদা একই আউটপুট দেয়
  • পরপর বা অন্যথায় আউটপুটগুলির মধ্যে কোনও সম্পর্ক থাকার দরকার নেই।
  • জমা দেওয়ার 'ইনপুট সীমা' এর বাইরে কোনও সংজ্ঞায়িত আউটপুট নেই।
  • অন্য কোনও ইনপুট বা বাহ্যিক ডেটা আনার অনুমতি নেই।
  • একটি লাইন অবশ্যই অবিচ্ছিন্ন হতে হবে - অর্থাত পিক্সেল অবশ্যই স্পর্শ করবে (একটি কোণে গণনা স্পর্শ করছে)।
  • একটি অঙ্কন হ'ল 'অঙ্কন' এর ক্ষুদ্রতম একক যা আপনার আঁকার পদ্ধতি দ্বারা ব্যবহৃত হয় এবং অগত্যা কোনও স্ক্রিন পিক্সেলের সাথে সামঞ্জস্য করে না।

উদাহরণ:

  • এখানে একটি বৈধ আকৃতির একটি উদাহরণ:

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

  • নিম্নলিখিত আকারগুলি অবৈধ:

    invalid1 invalid2 invalid3

সম্পাদনা: লাইন স্পর্শ:

  • বদ্ধ স্থান অবশ্যই অবিচ্ছিন্ন হতে হবে যা পিক্সেল স্পর্শ হিসাবে সংজ্ঞায়িত। কোণে গণনা ছোঁয়া।
  • একটি লাইন তার বাইরের দিকের কোনও স্থান আবদ্ধ করতে পারে না। @ স্পার পোস্ট করা এই চিত্রটি এই পয়েন্টটি তুলে ধরে - প্রতিটি সারিতে কেবল প্রথম আকারটি বৈধ:

    স্পর্শ

  • একটি লাইনের বাইরের দিকগুলি স্পর্শ করতে পারে তবে এমনভাবে নয় যে স্থানটি আবদ্ধ করে।

  • স্পর্শকারী রেখাগুলি ওভারল্যাপ নাও হতে পারে - যেমন দুটি স্পর্শকারী 1 পিক্সেল পুরু লাইনগুলির 2 মিলিয়ন পুরু দৈর্ঘ্য হবে, কখনও 1px হবে না।

একই আকৃতির ঘূর্ণন সম্পর্কে কি? এগুলি কি আলাদা?
মার্টিন এন্ডার

আমি যদি আকৃতির দিকের বাইরে থেকে একটি কামড় নিই, তবে ফোরগ্রাউন্ড (কালো) লাইনটি এক পিক্সেল প্রশস্ত করা ভাল? বা এটি কি 3 পিক্সেল প্রশস্ত হতে হবে, সুতরাং আগত এবং বহির্গামী লাইনটি স্পর্শ করবে না? বা এটি 2 পিক্সেল প্রশস্ত থাকা ঠিক আছে, সুতরাং আগত এবং বহির্গামী লাইন টাচ, কিন্তু ওভারল্যাপ হয় না?
স্তর নদী

আরও কিছু প্রশ্ন: 1. 109x109 চিত্রের সীমানাটি কি আকারের একটি সীমানা হিসাবে কাজ করতে পারে? ২. লাইন বেধটি যদি আমার অবধি থাকে তবে আমি কি কেবল এটি 200 পিক্সেল বলতে পারি, যাতে একটি কালো চিত্রের আকারটি কেবল সাদা পিক্সেল হয়? ৩. আকৃতিটি কি সংযুক্ত থাকে যদি এর পিক্সেলগুলি কেবল একটি কোণে স্পর্শ করে? ৪. আমি চরিত্রের সীমাটির কোনও বড় অনুরাগী নই। কেবলমাত্র আউটপুট স্পেসিফিকেশন সেটআপ করতে প্রচুর ভাষাগুলি এর মধ্যে 3/4 ব্যবহার করতে পারে।
মার্টিন এন্ডার

2
প্রশ্ন, আপনি কিভাবে 1009 পাবেন?
ক্লদিউ

1
এর মধ্যে কোন আকারটি বৈধ এবং গর্তহীন? i.imgur.com/FSV0nHz.png
স্পার

উত্তর:


25

পাইথন + পাইকাইরো, 2 100 আকার

এর সুস্পষ্ট সঙ্গে শুরু করা যাক।

অ্যানিমেশন ঘ

from cairo import *
from sys import argv

n = int(argv[1]) - 1

s = ImageSurface(FORMAT_ARGB32, 109, 109); c = Context(s)
c.set_antialias(ANTIALIAS_NONE); c.set_line_width(1); c.translate(54, 54)
def pixel(x, y): c.rectangle(x, y, 1, 1); c.fill()

W, H, R = 100, 10, 9
X1, Y1 = -W / 2 - 1, -H / 2 - 1
X2, Y2 = X1 + W + 1, Y1 + H + 1

pixel(X2 - 1, Y1)
c.move_to(X1, Y1 + 1); c.line_to(X1, Y2 + 1)
c.move_to(X2 + 1, Y1); c.line_to(X2 + 1, Y1 + R + 1);
c.move_to(X2, Y1 + R + 1); c.line_to(X2, Y2 + 1)
c.stroke()

for i in xrange(W):
    offset = (n >> i) & 1
    for y in Y1, Y2: pixel(X1 + i, y + offset)

s.write_to_png("o.png")

কমান্ড লাইনে নম্বর নিয়ে লিখেন o.png


খুব সুন্দর. সহজ ধারণা, কার্যকরভাবে কার্যকর। বিজয়ী স্কোর হবে না, তবে আরও প্রবেশের জন্য একটি ভাল বার সেট করে।
স্পার

... * 2, হিসাবেRotations [...] count as unique.
edc65

@ edc65: আসলে * 4, যেহেতু এটি প্রতিসাম্য নয়।
justhalf

19

বিবিসি বেসিক, স্কোর 10 ^ 288 (বিয়োগ 1 যদি শূন্য গণনা করা না হয়)

Http://sourceforge.net/projects/napoleonbrandy/ এ ইন্টিপ্লেটার ডাউনলোড করুন (আমার সাধারণ বিবিসি বেসিক ইন্টারপ্রেটার নয়, যে যথেষ্ট পরিমাণে স্ট্রিং সমর্থন করে না))

প্রচুর তথ্য এনকোড করতে আপনার প্রচুর পরিধি প্রয়োজন। তার অর্থ একটি পাতলা আকার। আমি বাম দিকে 49 পিক্সেলের উল্লম্ব বার দিয়ে শুরু করব এবং এটিতে 96 পিক্সেলের দশটি টেন্টলেস্ট যুক্ত করব। প্রতিটি তাঁবু একইভাবে @ ইল এর সমাধান হিসাবে 9 টি বিট এনকোড করতে পারে, মোট 960 বিট।

যেহেতু বিবিসি বেসিক সংখ্যক বড় সংখ্যাটি পরিচালনা করতে পারে না, 288 দশমিক সংখ্যা পর্যন্ত একটি সংখ্যা একটি স্ট্রিং হিসাবে ইনপুট এবং 3 দশমিক অঙ্কের প্রতিটি সেট 10 বিট বাইনারি সংখ্যায় রূপান্তরিত হয়। প্রতিটি বিট এর পরে একটি পেন্টেল দ্বারা একটি তাঁবুগুলির মধ্যে একটিকে টলমল করার জন্য ব্যবহৃত হয় যদি এটি হয় 1(তবে এটি যদি হয় না তবে 0) প্রোগ্রামটি 3 টি সংখ্যার 288/3 = 96 সেটকে পরিচালনা করতে পারে

    1MODE1:VDU19,0,7;0;19,15,0;0;               :REM select an appropriate screen mode and change to black drawing on white background
   10INPUT a$
   20a$=STRING$(288-LEN(a$)," ")+a$             :REM pad input up to 288 characters with leading spaces
   50RECTANGLE0,0,8,200                         :REM draw a rectangle at the left, enclosing 49 pixels
   60FOR n=0 TO 95
   70  b=VAL(MID$(a$,n*3+1,3))                  :REM extract 3 characters from a$ and convert to number
   80  FOR m=0 TO 9                             :REM plot the ten tentacles
   90    PLOT71,n*4+8,m*20+8+(b/2^m AND 1)*4    :REM plot (absolute coordinates) a background colour pixel for tentacle m at horizontal distance n
  100    POINT BY 0,-4                          :REM offsetting vertically by 1 pixel according to the relevant bit of b
  110    POINT BY 4,4
  120    POINT BY -4,4                          :REM then plot foreground colour pixels (relative coordinates) above, below and to the right.
  130  NEXT
  140NEXT

আউটপুট

288-সংখ্যার সংখ্যার জন্য একটি সাধারণ আউটপুট। নোট করুন যে 999 বাইনারি 1111100111 হয়। আপনি দেখতে পাচ্ছেন যে 9 ডিজিটের সেটগুলি কীভাবে টেম্পলেটগুলি আনুলেট করার কারণ করে।

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

পরিভাষা

উ: মার্টিনের পয়েন্ট 3 এর উত্তর "এর পিক্সেলের স্পর্শটি যদি কেবল কোনও কোণে সংযুক্ত থাকে তবে কি সেই আকৃতিটি যুক্ত?" "হ্যাঁ" তাই আমি বুঝতে পেরেছি আমার উত্তর মেনে চলে। তবুও, আপনি যদি প্রতিটি সারিতে বিকল্প হিসাবে (উদাহরণস্বরূপ) 999 এবং 000 এর হন তবে এটি খুব ব্যস্ত দেখাচ্ছে।

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

সি। এই স্ক্রিন মোডে বিবিসি বেসিক 2x2 স্ক্রীন পিক্সেলের বর্গক্ষেত্রকে একক পিক্সেল হিসাবে বিবেচনা করে। আমি এটি এটি যেমন রেখেছি তাই আকৃতিটি খুব ক্ষুদ্র না হলে এটি দেখতে সহায়তা করে। এই বিবিসির প্রতিটি বেসিক পিক্সেলকে 4x4 লজিক্যাল ইউনিটের একটি বক্স হিসাবে বিবেচনা করা হয়। শুরু থেকেই, বিবিসি বেসিকের বিকাশকারীরা দূরদর্শিতা বুঝতে পেরেছিলেন যে একদিনের স্ক্রিন রেজোলিউশন বৃদ্ধি পাবে, তাই তারা শারীরিক রেজোলিউশনের চেয়ে যৌক্তিক রেজোলিউশনকে উচ্চতর করে তুলেছিল।


উত্তর: উত্তরটি "হ্যাঁ" থেকে যায়, যদিও আমি এখন এটি দেখতে বেশ অদ্ভুত। বি। আমি এখন আপনার বক্তব্যটি দেখতে পাচ্ছি এবং স্পষ্ট করার জন্য একটি সম্পাদনা করেছি, বিভ্রান্তির জন্য দুঃখিত।
jsh

সি: সমস্যা নেই। একটি পিক্সেল এখন অঙ্কন ব্যবহৃত ক্ষুদ্রতম একক হিসাবে সংজ্ঞায়িত করা হয়।
jsh

6

গণিত, 496 বাইট, স্কোর: লার্জ-ইশ (> 1157)

আমি যে নীচু সীমানা পেয়েছি তা হাস্যকরভাবে কম, তবে আমি এখনও চেক করার জন্য নিষ্ঠুর বাহিনীর চেয়ে ভাল আর কোনও উপায় খুঁজে পাইনি।

SeedRandom@Input[];
g = 0 &~Array~{109, 109};
g[[2, 2]] = 1;
h = {{2, 2}};
For[n = 1, n < 1009,
  c = RandomChoice@h;
  d = RandomChoice[m = {{1, 0}, {0, 1}}];
  If[FreeQ[e = c + d, 1 | 109] && 
    Count[g[[2 ;; e[[1]], 2 ;; e[[2]]]], 0, 2] == 1,
   ++n;
   h~AppendTo~e;
   g[[## & @@ e]] = 1
   ];
  ];
(
    c = #;
    If[e = c + #; g[[## & @@ e]] < 1,
       g[[## & @@ e]] = 2
       ] & /@ Join @@ {m, -m}) & /@ h;
ArrayPlot[g, ImageSize -> 109, PixelConstrained -> True, 
 Frame -> 0 > 1]

আমি এখনও এটি গল্ফ করিনি, কারণ প্রয়োজনের দরকার নেই। কেউ একবার প্রমাণ করে যে তারা আসলে আমার সাথে বাঁধছে।

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

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

আমি এখন স্কোর কিছু নিম্ন সীমানা চেষ্টা করার চেষ্টা করব।


আপনি কি সিডিএফ ফাইল সরবরাহ করতে সক্ষম হবেন যাতে আমি এটি ব্যবহার করে দেখতে পারি?
jsh


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

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

@ মার্টিনবাটনার আপনি সম্ভবত এটি ইতিমধ্যে পরীক্ষা করেছেন (বা গণিত এটি সমর্থন করে না), তবে একটি সরাসরি ফাইল-হ্যাশ দ্রুত হতে পারে। আপনি যদি এটি চেষ্টা না করেন তবে কেবল একটি পরামর্শ।
স্টকাস্টিক

1

পাইথন 2, স্কোর> 10 ^ 395

এটি অত্যন্ত ধীর, এবং আমি আসলে এন = 0 ব্যতীত অন্য কোনও ফলাফল পেতে সক্ষম হইনি, তবে আপনি যদি এটি নীচে SIZE(পিক্সেলের সংখ্যা) এবং BOUNDসীমানা বর্গক্ষেত্রের সর্বাধিক পাশের দৈর্ঘ্য পরীক্ষা করতে চান তবে আপনি সক্ষম হবেন প্রচুর ফলাফল পেতে। এটি কতটি উত্পাদন করবে তা চেষ্টা করা এবং গণনা করা খুব কঠিন ছিল; আমি নিখুঁতভাবে আত্মবিশ্বাসী যে আমি যে নীচের দিকের সীমাটি দিচ্ছি তা সঠিক, তবে আমি সন্দেহ করি যে প্রকৃত গণনাটি উল্লেখযোগ্য পরিমাণে বড় হবে এবং আমি পরে এটির উন্নতি করার চেষ্টা করতে পারি।

import sys
import pygame
sys.setrecursionlimit(1100)

def low(s):
    return min(sum(e[1] for e in s[:i+1]) for i in range(len(s)))
def high(s):
    return max(sum(e[1] for e in s[:i+1])+s[i][0] for i in range(len(s)))

BOUND = 109
SIZE = 1009

def gen(n,t=0):
    if n <= (BOUND-t)*BOUND:
        for i in range(1,min(n,BOUND)):
            for r in gen(n-i,t+1):
                a,b=r[0]
                for x in range(max(1-a,high(r)-low(r)-BOUND),i):
                    yield [(i,0),(a,x)]+r[1:]
        yield [(n,0)]

def create(n):
    g=gen(SIZE)
    for i in range(n+1):shape=g.next()
    s=pygame.Surface((BOUND+2,BOUND+2))
    l=low(shape);x=0
    for y,(t,o) in enumerate(shape):
        x+=o;pygame.draw.line(s,(255,255,255),(x-l+1,y+1),(x-l+t,y+1))
    out=[]
    for x in range(BOUND+2):
        for y in range(BOUND+2):
            if all((0,0,0)==s.get_at((x+dx,y+dy))for dx,dy in[(-1,0),(1,0),(0,-1),(0,1)]if 0<=x+dx<BOUND+2 and 0<=y+dy<BOUND+2):
                out.append((x,y))
    for x,y in out:
        s.set_at((x,y),(255,255,255))
    pygame.image.save(s,"image.png")

2
আপনি কি চিত্রটি দিতে পারেন n=0? এবং আপনি কীভাবে 10 ^ 395 অর্জন করবেন তাও ব্যাখ্যা করতে পারেন?
justhalf
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.