ছবির আউটপুট ভিজ্যুয়াল ডায়াগ্রাম


22

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

ইনপুট: 3 2 1 2 (প্রস্থ, উচ্চতা, ম্যাট প্রস্থ, ফ্রেমের প্রস্থ)

আউটপুট:

প্রথম 3 এবং 2 চিত্রের প্রস্থ এবং উচ্চতা।  1 এটির চারপাশে ম্যাট প্রস্থ।  2 পুরো জিনিসটির চারপাশে ফ্রেমের প্রস্থ।

পাঠ্য আকারে:

# # # # # # # # #
# # # # # # # # #
# # + + + + + # #
# # + X X X + # #
# # + X X X + # #
# # + + + + + # #
# # # # # # # # #
# # # # # # # # #

বিজয়ী কোডটি সর্বনিম্ন সম্ভাব্য বাইটে শর্ত পূরণ করে।


2
দুর্দান্ত চ্যালেঞ্জ! ভবিষ্যতের চ্যালেঞ্জগুলির জন্য আপনি স্যান্ডবক্সটি
মিল্কিওয়ে 90

2
ইনপুটটি অন্য কোনও ক্রমে থাকলে আপনার আপত্তি আছে?
vityavv

1
আমরা কি স্ট্রিংগুলির একটি তালিকা ফিরিয়ে দিতে পারি?
মিল্কিওয়ে 90

5
ইনপুটগুলির কোনও শূন্য হতে পারে?
লাইকোনি

1
আমরা কি প্রতিটি লাইনের শেষে একটি স্থান রাখতে পারি?
লুইস মেন্ডো

উত্তর:


5

পাইথন 2 , 98 বাইট

w,h,a,b=input()
a*='+'
b*='#'
for c in b+a+h*'X'+a+b:print' '.join(min(c,d)for d in b+a+w*'X'+a+b)

এটি অনলাইন চেষ্টা করুন!

স্পেসটি পৃথক করে গ্রিড মুদ্রণ করে, কঠোরভাবে অনুমানটি অনুসরণ করে। আমি আনন্দিত যা *=রূপান্তর করতে aএবং bসংখ্যা থেকে স্ট্রিংয়ে ব্যবহৃত হয় ।

পাইথন 3 ' '.joinএফ-স্ট্রিং এবং অ্যাসাইনমেন্ট এক্সপ্রেশন ব্যবহার করে এড়িয়ে কিছু বাইট সংরক্ষণ করতে পারে । জো কিংকে -২ বাইটের জন্য ধন্যবাদ।

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

def f(w,h,a,b):a*='+';b*='#';[print(*[min(c,d)for d in b+a+w*'X'+a+b])for c in b+a+h*'X'+a+b]

এটি অনলাইন চেষ্টা করুন!


আমি আউটগল্ফড হয়ে গেছি! নিস কাজটি, বেশ গল্ফড বলে মনে হচ্ছে
মিল্কিওয়ে 90

দুর্দান্ত গল্ফ! খুব চালাক.
জর্জ হ্যারিস

4

জাভাস্ক্রিপ্ট (ES6),  118 113  107 বাইট

(w,h,M,F)=>(g=(c,n)=>'01210'.replace(/./g,i=>c(i).repeat([F,M,n][i])))(y=>g(x=>'#+X'[x<y?x:y]+' ',w)+`
`,h)

এটি অনলাইন চেষ্টা করুন!

মন্তব্য

(w, h, M, F) => (       // given the 4 input variables
  g = (                 // g = helper function taking:
    c,                  //   c = callback function returning a string to repeat
    n                   //   n = number of times the painting part must be repeated
  ) =>                  //
    '01210'             // string describing the picture structure, with:
    .replace(           //   0 = frame, 1 = matte, 2 = painting
      /./g,             // for each character in the above string:
      i =>              //   i = identifier of the current area
        c(i)            //   invoke the callback function
        .repeat         //   and repeat the result ...
        ([F, M, n][i])  //   ... either F, M or n times
    )                   // end of replace()
)(                      // outer call to g:
  y =>                  //   callback function taking y:
    g(                  //     inner call to g:
      x =>              //       callback function taking x:
        '#+X'           //         figure out which character to use
        [x < y ? x : y] //         according to the current position
        + ' ',          //         append a space
      w                 //       repeat the painting part w times
    )                   //     end of inner call
    + '\n',             //     append a line feed
  h                     //   repeat the painting part h times
)                       // end of outer call

3

এমএটিএল , 24 বাইট

&l,ithYaQ]'#+X'w)TFX*cYv

ইনপুটটি হ'ল উচ্চতা, প্রস্থ, ম্যাট প্রস্থ, ফ্রেমের প্রস্থ।

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

&l      % Take height and width implicitly. Push matrix of that size with all
        % entries equal to 1
,       % Do twice
  i     %   Take input
  th    %   Duplicate, concatenate: gives a 1×2 vector with the number repeated
  Ya    %   Pad matrix with those many zeros vertically and horizontally
  Q     %   Add 1 to each entry 
]       % End
'#+X'   % Push this string
w)      % Index into the string with the padded matrix
TF      % Push row vector [1 0]
X*      % Kronecker product. This inserts columns of zeros
c       % Convert to char again. Char 0 is will be displayed as space
Yv      % Remove trailing spaces in each line. Implicitly display


2

কাঠকয়লা , 48 47 44 বাইট

≔×NXθ≔×NXηFE+#×Nι«≔⁺ι⁺θιθ≔⁺ι⁺ηιη»Eη⪫⭆θ⌊⟦ιλ⟧ 

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। দ্রষ্টব্য: ট্রেলিং স্পেস সম্পাদনা করুন: এখন @ xnor এর অ্যালগরিদম ব্যবহার করুন। ব্যাখ্যা:

≔×NXθ≔×NXη

প্রস্থ এবং উচ্চতা ইনপুট করুন এবং সেগুলির স্ট্রিংগুলিতে রূপান্তর করুন X

FE+#×Nι

অক্ষর উপর লুপ +এবং #তাদের দৈর্ঘ্য স্ট্রিং বাকি দুটি ইনপুট কর্তৃক প্রদত্ত মধ্যে রূপান্তর। তারপরে two দুটি স্ট্রিংয়ের উপর লুপ করুন।

«≔⁺ι⁺θιθ≔⁺ι⁺ηιη»

ম্যাটিং এবং ফ্রেমিংয়ের জন্য স্ট্রিং সহ পেইন্টিংটির উপসর্গ এবং প্রত্যয়।

Eη⪫⭆θ⌊⟦ιλ⟧ 

স্ট্রিংগুলির উপর লুপ করুন, ন্যূনতম অনুভূমিক এবং উল্লম্ব বর্ণগুলি নিয়ে যান এবং তারপরে সারিগুলিকে দ্বিগুণ-ফাঁক করে স্পষ্টভাবে প্রতিটি লাইকে তার নিজস্ব লাইনে মুদ্রণ করুন।


2

05AB1E (উত্তরাধিকার) / 05AB1E --no-lazy , 32 31 বাইট

и'Xׄ+#vyI©×UεX.ø}®FDнgy×.ø]€S»

ক্রমে ইনপুট নেয় height, width, matte, frame। যদি চ্যালেঞ্জটিতে উল্লিখিত ইনপুট অর্ডার কঠোর হয় (তবুও যাচাইয়ের অপারেটিংয়ের জন্য অপেক্ষা করছে), একটি শীর্ষস্থানীয় s(অদলবদল) +1 বাইটের জন্য যুক্ত করা যেতে পারে।

--no-lazy05AB1E এর নতুন সংস্করণে এলিক্সির সংকলক পতাকাটি আবশ্যক , যেহেতু নেস্টেড মানচিত্র / লুপগুলির জন্য অলস মূল্যায়নের কারণে এলিক্সিরের কিছু অদ্ভুত আচরণ রয়েছে ( এখানে এই পতাকাটি ছাড়াই ফলাফল )।

05AB1E এর উত্তরাধিকার সংস্করণে এটি অনলাইনে ব্যবহার করে দেখুন।
যুক্ত করা --no-lazyপতাকা সহ 05AB1E এর নতুন সংস্করণে এটি অনলাইনে ব্যবহার করে দেখুন ।

ব্যাখ্যা:

и              # Repeat the second (implicit) input the first (implicit) input amount of
               # times as list
 'X×          '# Repeat "X" that many times
„+#v           # Loop `y` over the characters ["+","#"]:
    y          #  Push character `y`
     I         #  Push the next input (matte in the first iteration; frame in the second)
      ©        #  And store it in the register (without popping)
       ×       #  Repeat character `y` that input amount of times
        U      #  Pop and store that string in variable `X`
    εX.ø}      #  Surround each string in the list with string `X`
    ®F         #  Inner loop the value from the register amount of times:
      Dнg      #   Get the new width by taking the length of the first string
         y×    #   Repeat character `y` that many times
             #   And surround the list with this leading and trailing string
   ]           # Close both the inner and outer loops
    S         # Convert each inner string to a list of characters
      »        # Join every list of characters by spaces, and then every string by newlines
               # (and output the result implicitly)




1

পাইথন 3.8 (প্রাক রিলিজ) , 116 115 113 বাইট

lambda a,b,c,d:"\n".join((g:=['#'*(a+2*c+2*d)]*d+[(h:='#'*d)+'+'*(a+c*2)+h]*c)+[h+'+'*c+'X'*a+'+'*c+h]*b+g[::-1])

এটি অনলাইন চেষ্টা করুন!

গল্ফিং এ প্রথম প্রচেষ্টা, শীঘ্রই উন্নত করা হবে। aপ্রস্থ, bউচ্চতা, cম্যাট প্রস্থ এবং dফ্রেমের প্রস্থ।

:=অপারেটর hহিসাবে -1 বাইট হিসাবে সংজ্ঞায়িত করতেe * d

-2 বাইটস জো জোকে আমাকে ই এবং এফ প্যারামিটারগুলি সরাতে পরামর্শ দেওয়ার জন্য ধন্যবাদ

ব্যাখ্যা:

lambda a,b,c,d:          Define a lambda which takes in arguments a, b, c, and d (The width of the painting, the height of the painting, the padding of the matte, and the padding of the frame width, respectively).
    "\n".join(                       Turn the list into a string, where each element is separated by newlines
        (g:=                         Define g as (while still evaling the lists)...
            ['#'*(a+2*c+2*d)]*d+       Form the top rows (the ones filled with hashtags)
            [(h:='#'*d)+'+'*(a+c*2)+h]*c Form the middle-top rows (uses := to golf this section)
        )+
        [h+'+'*c+'X'*a+'+'*c+h]*b+       Form the middle row
        g[::-1]                      Uses g to golf the code (forms the entire middle-bottom-to-bottom)
    )

eঅ্যাসাইনমেন্ট অপসারণ আপনাকে দুটি বাইট বাঁচায়, fঅ্যাসাইনমেন্টটি আপনাকে কোনও কিছুই সাশ্রয় করছে না
জো কিং

@JoKing ওহ বাহ, আমি অপসারণ করতে ভুলে গেছি eএবং fআবিষ্কার পরে বরাদ্দকরণ gশর্টকাট
MilkyWay90

0

জাভাস্ক্রিপ্ট, 158 বাইট

(w,h,m,f)=>(q="repeat",(z=("#"[q](w+2*(m+f)))+`
`)[q](f))+(x=((e="#"[q](f))+(r="+"[q](m))+(t="+"[q](w))+r+e+`
`)[q](m))+(e+r+"X"[q](w)+r+e+`
`)[q](h)+x+z)

সম্ভবত কিছুটা ছাঁটাই করা যেতে পারে

f=

(w,h,m,f)=>(q="repeat",(z=("# "[q](w+2*(m+f))+`
`)[q](f))+(x=((e="# "[q](f))+(r="+ "[q](m))+(t="+ "[q](w))+r+e+`
`)[q](m))+(e+r+"X "[q](w)+r+e+`
`)[q](h)+x+z)

console.log(f(3,2,1,2))


0

পার্ল 6 , 98 বাইট

{map(&min,[X] map (($_='#'x$^d~'+'x$^c)~'X'x*~.flip).comb,$^a,$^b).rotor($b+2*($c+$d)).join("\n")}

এটি অনলাইন চেষ্টা করুন!

এটি এক্সনোরের পাইথন উত্তরের একটি বন্দর ।

পার্ল 6 , 115 বাইট

->\a,\b,\c,\d{$_=['#'xx$!*2+a]xx($!=c+d)*2+b;.[d..^*-d;d..^a+$!+c]='+'xx*;.[$!..^*-$!;$!..^a+$!]='X'xx*;.join("
")}

এটি অনলাইন চেষ্টা করুন!

পার্ল 6 এর বহুমাত্রিক তালিকা অ্যাসাইনমেন্টটি ব্যবহার করে মোটামুটি গল্ফড বেনাম কোডব্লক। উদাহরণস্বরূপ, সূচক 1 এর সাথে তালিকা থেকে সূচক 2 সহ @a[1;2] = 'X';মৌলটিকে নির্ধারিত করবে এবং তালিকাগুলির সূচী সহ সমস্ত উপাদানকে সূচী সহ প্রতিস্থাপন করবে ।'X'@a[1,2,3;3,4,5]='X'xx 9;3,4,51,2,3'X'

ব্যাখ্যা:

প্রথমত, আমরা হিসেবে তালিকা ইনিশিয়ালাইজ a+2*(c+d)দ্বারা b+2*(c+d)এর আয়তক্ষেত্র #গুলি।

$_=['#'xx$!*2+a]xx($!=c+d)*2+a;
State:
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #

তারপর আমরা ভেতরের আয়তক্ষেত্র ধার্য +গুলি

.[d..^*-d;d..^a+$!+c]='+'xx*;
State:
# # # # # # # # #
# # # # # # # # #
# # + + + + + # #
# # + + + + + # #
# # + + + + + # #
# # + + + + + # #
# # # # # # # # #
# # # # # # # # #

অবশেষে, Xs এর অন্তঃস্থ আয়তক্ষেত্র ।

.[$!..^*-$!;$!..^a+$!]='X'xx*;
# # # # # # # # #
# # # # # # # # #
# # + + + + + # #
# # + X X X + # #
# # + X X X + # #
# # + + + + + # #
# # # # # # # # #
# # # # # # # # #

0

জেলি , 35 31 28 24 বাইট

Dịx@“#+X+#”
⁽-Fç«þ⁽-ȥç$G

এটি অনলাইন চেষ্টা করুন!

অর্ডার ফ্রেম, ম্যাট, প্রস্থ, উচ্চতায় ইনপুট নেয়; কমা পৃথক। ফ্রেম এবং ম্যাট দিয়ে ASCII- আর্ট চিত্র আউটপুট করে। যদি ইনপুট অর্ডার কঠোর হয় তবে আমাকে আরও বাইট যুক্ত করতে হবে (আমার মূল পোস্ট অনুসারে)।

@ এরিকথ আউটগল্ফারের উত্তরের উপর ভিত্তি করে কয়েক গল্ফ; আমি বুঝতে পারলাম চাই অক্ষর হওয়া ASCII অনুক্রমে কিন্তু ভাবেননি কীভাবে সেরা যে সুবিধা গ্রহণ করতে, এবং প্রায় ভুলে গিয়েছিলেন G। তার যদিও আরও ভাল উত্তর!


আমি জেলি তে কখনই প্রোগ্রাম করি না, তবে অবশ্যই 43134,43234 কমপ্রেস করা যায়? সম্পাদনা: আমার পড়া শিখতে হবে, আপনি উল্লেখ করেছেন যে তারা অবশ্যই প্রতিটি 4 বাইটে এনকড করতে পারে। কিন্তু এই সংখ্যাগুলি এনকোড করা যায় কিনা তা নিয়ে ইনপুট-অর্ডার কী করতে পারে? : এস
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন সর্বাধিক পূর্ণসংখ্যা যা দুটি বাইট বাক্য গঠন ব্যবহার করে এনকোড করা যায় তা 32250; যেহেতু উভয়ই ছাড়িয়ে গেছে যে আমি বাইটগুলি সংরক্ষণ করতে পারি না। আপাতত আমি ধরে নেব আমি চারপাশের জিনিসগুলিকে অদলবদল করতে পারি এবং যদি এটির অনুমতি না পাওয়া যায় তবে ফিরে যেতে পারি!
নিক কেনেডি

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

@ কেভিন ক্রুজসেন আমি মূলত চেষ্টা করেছি যে +0,100 ব্যবহার করে যা কোনও সংরক্ষণ করে না। আমি মনে করি যে নীলাদে ১০০ ডলার এই সত্যটি ব্যবহার করার জন্য আমি নীলাদ চেইনটি ব্যবহার করতে পারি, তবে যদি আমাকে ইনপুটগুলি পুনরায় অর্ডার করতে দেয় তবে 250 ইনজেক্টগুলি আরও ভাল
নিক কেনেডি


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