রঙিন গ্রাফের সংমিশ্রণ


9

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

গ্রাফ

গ্রাফগুলি এমন চিত্র যা rgb(255, 255, 255)প্রতিটি কলামে একটি অ-সাদা পিক্সেল সহ একটি সাদা ( ) পটভূমি ধারণ করে । উদাহরণ:

উদাহরণ গ্রাফ উদাহরণ গ্রাফ উদাহরণ গ্রাফ

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

কার্য

আপনার কাজটি হ'ল আপনার পছন্দের ভাষায়, এমন একটি প্রোগ্রাম বা ফাংশন যা একাধিক গ্রাফ চিত্র হিসাবে গ্রহণ করে, সমস্ত সম্ভাব্য 2^n - 1অঙ্কগুলি গণনা করে এবং ফলাফলকে আউটপুট করে।

গ্রাফের যোগফল একটি গ্রাফ যেখানে প্রতিটি কলামের মান প্রতিটি ইনপুট গ্রাফের সংশ্লিষ্ট কলামের মানগুলির সমান হয়।

গ্রাফগুলি একাধিক রঙে আসবে। ফলাফলের চিত্রটিতে গ্রাফের সমস্ত সম্ভাব্য পরিমাণগুলি অবশ্যই অন্যান্য গ্রাফ হিসাবে থাকতে হবে, মূল গ্রাফগুলি সহ তবে শূন্যের যোগফল বাদে।

প্রতিটি অঙ্কের রঙ অন্তর্ভুক্ত গ্রাফগুলির রঙগুলির গড় দ্বারা নির্ধারিত হয়, উদাহরণস্বরূপ, রঙের গ্রাফ rgb(255, 0, 255)এবং এর rgb(0, 255, 255)গ্রাফ তৈরি করে rgb(128, 128, 255)(এছাড়াও বৃত্তাকারও হতে পারে)।

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

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

আপনি ধরে নিতে পারেন যে ইনপুট চিত্রগুলি সমান প্রস্থের, চিত্রগুলির সমস্ত কলামে কমপক্ষে একটি অ-সাদা পিক্সেল রয়েছে এবং চিত্রগুলির উচ্চতা (আউটপুট সহ) 4096 পিক্সেলের নীচে রয়েছে।

উদাহরণ

ইনপুট এ:

উদাহরণ গ্রাফ a

ইনপুট বি:

উদাহরণ গ্রাফ খ

উদাহরণ আউটপুট:

উদাহরণ গ্রাফ যোগফল

(যদি কেউ আগ্রহী হন তবে আমি এলোমেলো সংস্থাগুলির স্টক চার্ট থেকে এইগুলির জন্য ডেটা অনুলিপি করেছি CS এটিই প্রথম উপায় যা আমি সিএসভি হিসাবে বাস্তববাদী ডেটা পেয়েছি found

বিধি

  • আপনি যে কোনও বিটম্যাপ ইমেজ ইনপুট ফাইল ফর্ম্যাট বেছে নিতে পারেন।
  • আপনি যে কোনও বিটম্যাপ চিত্র আউটপুট ফাইল ফর্ম্যাট বেছে নিতে পারেন, যা ইনপুটটির সাথে মেলে না।
  • আপনি ইমেজ প্রসেসিং লাইব্রেরি ব্যবহার করতে পারেন, তবে সরাসরি এই কাজটি সম্পন্ন করার জন্য কোনও কার্য নিষিদ্ধ করা হয়েছে।
  • স্ট্যান্ডার্ড লুফোলস প্রযোজ্য।
  • এই , তাই বাইটস মধ্যে সংক্ষিপ্ততম কোড।

গ্রাফ জেনারেটর স্ক্রিপ্ট

এখানে একটি পাইথন 2 স্ক্রিপ্ট যা গ্রাফ তৈরি করে। আরওজি রঙ হিসাবে প্রথম তিনটি রেখা এবং বাকী ডেটা হিসাবে ইওএফ দ্বারা সমাপ্ত, লাইনগুলিতে ইনপুট দেওয়া হয়।

import PIL.Image as image
import sys

if len(sys.argv) < 2:
    sys.stderr.write("Usage: graphgen.py <outfile> [infile]")
    exit(1)
outfile = sys.argv[1]
if len(sys.argv) > 2:
    try:
        stream = open(sys.argv[2], "r")
        data = stream.read()
        stream.close()
    except IOError as err:
        if err.errno == 2:
            sys.stderr.write("File \"{0}\" not found".format(sys.argv[2]))
        else:
            sys.stderr.write("IO error {0}: {1}".format(err.errno, err.strerror))
        exit(1)
else:
    data = sys.stdin.read()

try:
    items = map(int, data.strip().split("\n"))
    red, green, blue = items[:3]
    items = items[3:]
    highest = max(items)
except (ValueError, TypeError, IndexError):
    sys.stderr.write("Invalid value(s) in input")

img = image.new("RGB", (len(items), highest + 1), (255, 255, 255))

prev = items[0]
img.putpixel((0, highest - items[0]), (red, green, blue))
for x, item in enumerate(items[1:]):
    img.putpixel((x + 1, highest - item), (red, green, blue))
    if item < prev:
        for i in range(item + 1, prev):
            img.putpixel((x, highest - i), (red, green, blue))
    else:
        for i in range(prev + 1, item):
            img.putpixel((x + 1, highest - i), (red, green, blue))
    prev = item

img.save(outfile, "png")

@ মার্টিনবাটনার আমি বর্তমানে দুটি গ্রাফের জন্য একটি তৈরি করছি। আমি এটি হাতে হাতে করছি (এখনও কোনও রেফারেন্স প্ররোচনা নেই), তাই আমি জানি না যে আমার 3 এর জন্য ধৈর্য রয়েছে কিনা তাও জানিনা, আমি যে তিনটি দিয়েছি তারা আলাদা প্রস্থের বলে সংক্ষিপ্ত করা যায় না।
পূর্বকোদাডারি

সুতরাং যদি nইনপুট গ্রাফ থাকে 2^n - 1তবে আউটপুট চিত্রটিতে লাইন থাকবে ?
পিটার টেলর

@ পিটারটেলর হ্যাঁ
পূর্বকুডারী

আমি আউটপুট আসলে কোন উল্লম্ব রেখা থাকা প্রয়োজন হয় না? প্রতিটি কলামে কেবল শীর্ষ পিক্সেল?
মার্টিন ইন্ডার

@ মার্টিনব্যাটনার এটি সঠিক, যেহেতু প্রথম বিভাগে সংজ্ঞায়িত হিসাবে তথ্যটি এখনও গ্রাফ হিসাবে পার্স করা যায়।
পুর্কাকুডারী

উত্তর:


3

ম্যাটল্যাব, 405

এর মাধ্যমে কল করুন: f('http://i.stack.imgur.com/ffCzR.png','http://i.stack.imgur.com/zHldg.png')

function f(varargin)
for k=1:nargin
i=im2double(imread(varargin{k}))
V(k,:)=size(i,1)-cellfun(@(V)find(any(V~=1,3),1),num2cell(i,[1,3]))
C(k,:)=i(find(any(i(:,1,:)~=1,3),1),1,:)
end
s=2^nargin-1
G=dec2bin(1:s)-'0'
C=bsxfun(@rdivide,G*C,sum(G,2))
V=G*V
m=max(V(:))
r=ones(m+1,size(V,2))
g=r
b=r
for i=1:s
M=bsxfun(@eq,(m:-1:0).',V(i,:))
r(M)=C(i,1)
g(M)=C(i,2)
b(M)=C(i,3)
end
imwrite(cat(3,r,g,b),'S.png')

4

পাইথন, 422

কমান্ডলাইন থেকে কল করুন python plotsum im1.png im2.png im3.png

import sys
from numpy import*
from scipy import misc as m
R=m.imread
r=range
a=array
N=sys.args[1:]
L=len(N)
P=[map(argmin,R(n,1).T)for n in N]               #converts image to list of heights, counting from the top
C=a([R(N[i])[P[i][0],0,:]for i in r(L)])         #finds and stores the colour
P=a([len(R(N[i]))-a(P[i])for i in r(L)])         #flips the numbers, measures actual heights from bottom
w=len(P[0])
h=max(sum(P,0))+1                                    #compute dimensions
G=ones((h,w,3))*255                                  #and make a white grid
for i in r(1,2**L):
 z=where(a(list(bin(i)[2:].zfill(L)))=='1');y=sum(P[z],0)    #sum the graphs
 for x in r(w):G[y[x],x,:]=average(C[z],0)                   #average the colours
m.imsave('S.png',G[::-1])                            #flip image vertically and save

উদাহরণ আউটপুট
এখানে চিত্র বর্ণনা লিখুন
আরেকটি উদাহরণ
এখানে চিত্র বর্ণনা লিখুন

এটি একটি মুশকিল, উচ্চ-স্তরের অ্যারে অপারেশন এবং সূচি হিসাবে অ্যারে ব্যবহার করা এখানে অনেক সহায়তা করে। ম্যাথমেটিকা ​​এবং মতলব বাদে 1000 বাইটের অধীনে সমাধানগুলি দেখার আশা করি না

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