ট্রাইফোর্স আঁকুন


29

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

এই চ্যালেঞ্জের উদ্দেশ্যটি হল ত্রিভুজগুলির জন্য একটি প্রদত্ত প্রস্থ এবং অংশগুলির মধ্যে প্রদত্ত ব্যবধান সহ এ জাতীয় সরল অ্যানিমেশনের একটি একক 2D ফ্রেম আঁকানো।

ইনপুট

দুটি পূর্ণসংখ্যা থাকে: একটি প্রস্থ এবং একটি ফাঁকা মান ।w1s0

আউটপুট

নিম্নলিখিত স্পেসিফিকেশন অনুসারে ফ্রেমটি আঁকতে হবে:

         /\
        /  \____________ this part is horizontally centered
       /    \
      /______\
                    \___ s empty lines
                    /
   /\          /\
  /  \        /  \______ w+1 backslashes
 /    \      /    \
/______\    /______\
                \_______ 2w underscores
        |__|
          \_____________ 2s spaces

উপরের উদাহরণে, আমাদের কাছে এবং এস = 2 রয়েছেw=3s=2

আরও উদাহরণ

, এস = 0 :w=1s=0

   /\   
  /__\  
 /\  /\ 
/__\/__\

, এস = 0 :w=2s=0

     /\     
    /  \    
   /____\   
  /\    /\  
 /  \  /  \ 
/____\/____\

, এস = 3 :w=3s=3

          /\          
         /  \         
        /    \        
       /______\       



   /\            /\   
  /  \          /  \  
 /    \        /    \ 
/______\      /______\

, এস = 1 :w=4s=1

          /\          
         /  \         
        /    \        
       /      \       
      /________\      

    /\          /\    
   /  \        /  \   
  /    \      /    \  
 /      \    /      \ 
/________\  /________\

বিধি

  • প্রতিটি লাইনে ট্রেলিং স্পেসগুলি alচ্ছিক।
  • প্রতিটি লাইনে অতিরিক্ত নেতৃস্থানীয় স্থানের অনুমতি নেই।
  • আপনি একক অতিরিক্ত নেতৃস্থানীয় নিউলাইন এবং / অথবা একক অতিরিক্ত ট্রেলিং নতুন লাইনের আউটপুট দিতে পারেন।
  • এটি

উত্তর:



8

কাঠকয়লা , 25 বাইট

←×_N↗⊕θ‖M≔⁺⊕θNηCη±η‖BO⊗⊕θ

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

←×_N

ইনপুট wএবং অঙ্কন w _এস।

↗⊕θ

অঙ্কন w+1 /এস।

‖M

প্রথম ত্রিভুজটি সম্পূর্ণ করতে প্রতিফলিত করুন।

≔⁺⊕θNη

sবাম এবং মাঝের ত্রিভুজগুলির মধ্যে অফসেট ইনপুট করুন এবং গণনা করুন।

Cη±η

বাম ত্রিভুজটি মাঝখানে অনুলিপি করুন।

‖BO⊗⊕θ

ট্রিফলটি সম্পূর্ণ করতে মধ্য ত্রিভুজটির চারপাশে প্রতিফলিত করুন।


আহ, এই বিষয়ে আপনার গণিত পরীক্ষা করুন। এটি 25 টি অক্ষর হতে পারে তবে এটি 50 থেকে 65 বাইট (আপনি যথাক্রমে ইউটিএফ -16 বা ইউটিএফ -8 উপস্থাপনা ব্যবহার করেন কিনা তার উপর নির্ভর করে)।
স্টুয়ার্ট পি। বেন্টলে 21

আমার খারাপ; স্পষ্টতই, চারকোল এবং ক্যানভাসের নিজস্ব চরিত্রের ম্যাপিং রয়েছে , যা আমার কাছে স্পর্শকাতর মনে হয় (যদি আপনি স্বেচ্ছাচারী চিহ্ন ব্যবহার করতে চলেছেন তবে কেন একটি বিদ্যমান নির্বাচন ব্যবহার করবেন না), যাই হোক না কেন।
স্টুয়ার্ট পি। বেন্টলে

@ StuartP.Bentley এই সাইটের মূল বিষয়টি গল্ফ প্রোগ্রামের আকার to বহু ভাষা (অনেকগুলি রয়েছে, কেবল ক্যানভাস এবং চারকোলের তুলনায় অনেকগুলি) বাইট প্রতি সমস্ত 8 বিট ব্যবহার করার পক্ষে বেছে নিয়েছে, যেহেতু সর্বাধিক গল্ফতার কাছাকাছি পৌঁছানোর এটি খুব ভাল উপায়। চমত্কার ইউনিকোডটি কেবল কোডটি সহজভাবে পড়তে এবং লেখার জন্য তৈরি করা হয় (আপনি
বাইকোড


7

ক্যানভাস , 20 19 16 বাইট

+├:⁸╵\L_×;∔║ω╋║↕

এখানে চেষ্টা করুন!

ব্যাখ্যা:

+├                s + w + 2
  :               duplicated (for both X & Y)
   ⁸╵\            w+1 sized diagonal
      L_×         "_"*width of the diagonal
         ;∔       prepended before the diagonal
           ║      palindromize that
            ω     and push the argument of ║ (aka the unpalindromized version)
             ╋    overlap the upside down half-triangle over the upside down triangle at (s+w+2; s+w+2)
              ║   and palindromize the whole thing
               ↕  reverse everything vertically

দ্রষ্টব্য: এটি তৈরির ক্ষেত্রে আমি কোডটিতে একটি ভুল স্থির করেছিলাম, সেগুলি ছাড়াই এটি 18 বাইট হবে


নীলের উত্তরের মতো এটিও 16 টি অক্ষর হতে পারে তবে ইউনিকোডের পদে এটি 32 বা 44 বাইট হয় আপনি কোন ইউটিএফ ব্যবহার করেন তার উপর নির্ভর করে। (আমি বিবেচনা করেছি যে এটি কোনও লিগ্যাসি সিঙ্গল-বাইট চরিত্রের কোড কোড পৃষ্ঠা ৪ set represent এর মতো উপস্থাপনযোগ্য হতে পারে তবে সেখানে কোনও ω বা ⁸ উপলব্ধ নেই, তাই আমার কাছে মনে হয় আপনাকে ইউনিকোড রূপান্তর বিন্যাসে যেতে হবে।)
স্টুয়ার্ট পি। বেন্টলে

@ স্টুয়ার্টপি.বেন্টলে ক্যানভাস আমার পোস্টের শিরোনামে লিঙ্কিত হিসাবে একটি কাস্টম কোডপেজ ব্যবহার করে। চারকোলের গিথুব উইকিতে এটির কোডেসও রয়েছে। পিপিসিজির বিষয়ে এটি একমত হয়েছে যে কোনও কোডপেজ / রূপান্তরকারী যদি এটির ব্যাক আপ রাখে তবে ইউনিকোড ফর্ম্যাট উত্তরগুলির সাথে উত্তর দেওয়া ঠিক।
ডিজাইমা

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

@ স্টুয়ার্টপি.বেন্টলে চারকোলের উত্তরগুলির লিঙ্কটি পরীক্ষা করুন - এতে মানব পাঠযোগ্য কোড রয়েছে! (সুতরাং হ্যাঁ, ২ টি প্রতিস্থাপন: পি) এখানকার লোকেরা মেশিন কোড হিসাবে সমাবেশ স্কোরিংয়ে উত্তর দেয়, সুতরাং
ভিএমগুলিতেও

7

আর , 225 , 224 , 214 , 211 , 208 বাইট

function(w,s){M=matrix
C=cbind
h=w+1
k=C(apply(m<-diag(h)*60,1,rev)/4,m)
k[row(k)==h&!k]=63
z=rbind(C(a<-M(0,h,h+s),k,a),M(0,s,h*4+2*s),C(k,M(0,h,2*s),k))
z[]=intToUtf8(z+32,T)
apply(z,1,cat,sep='','
')
rm()}

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

  • -1 বাইট জিউসেপিকে ধন্যবাদ
  • পদ্ধতির পরিবর্তনের পরে -10 বাইট
  • -৩ বাইটস এএসসিআইআই কোডটি প্রকাশ করে
  • -3 বাইট জেসি ধন্যবাদ

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

ওহ অপেক্ষা করুন ... if(F)0নিশ্চিতভাবে গ্রহণযোগ্য এবং একটি বাইট সংরক্ষণ করে। বা rm()3 বাইটের জন্য আরও ভাল ।
জয়সি

আমার q()প্রথম মন্তব্যে আমার ব্যবহারের পরামর্শটি এই মেটা
জয়সি

@ জাসি: আরএম () ব্যবহার করে দুর্দান্ত কৌশল!
digEmAll সমস্ত


4

পাইথন 2 , 256 248 240 228 199 195 বাইট

দীর্ঘতর প্রোগ্রাম, তবে কিছুটা ভিন্ন পদ্ধতি:

f,b,o='/\ '
O=o*2
w,s=input()
l=f+'__'*w+b
a=l+O*s+l
m=n=[]
p=lambda g:(len(a)-len(g))/2*o+g
for i in range(w):m=m+[p(f+O*i+b)];t=f+O*i+b;n+=p(t+O*(w-i+s)+t),
print'\n'.join(m+[p(l)]+[o]*s+n+[a])

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


পূর্ববর্তী হোয়াইটস্পেস উপেক্ষা করার জন্য প্রচুর বাইটস সংরক্ষণ করে এবং @ovs থেকে কিছু কৌশল যুক্ত
করে এর আগে একটি ভেরিয়েবল সংজ্ঞায়িত করে


আমাকে আগামীকালই এটি ঠিক করতে হবে (এটি কাজ করে তবে আমি আরও ভাল করতে পারি)
micsthepick






2

রেটিনা 0.8.2 , 141 বাইট

\d+
$* 
(?=( *),( *))
¶$1/$`$`\$1$2$2$1/$`$`\
T` `\_`/ *\\(?=.*,)
s`¶(.*),( *)
$1¶$.2$*¶$1
\G(( *)/(  |__)*\\)\2(  )*\1 *¶
$2 $#3$* $#4$* $1¶

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

\d+
$* 

ইনপুটগুলিকে স্পেসে রূপান্তর করুন। (দ্বিতীয় লাইনটি একটি স্পেস দিয়ে শেষ হয়))

(?=( *),( *))
¶$1/$`$`\$1$2$2$1/$`$`\

উপযুক্ত ফাঁক দিয়ে নীচের দুটি ত্রিভুজগুলির পাশগুলি তৈরি করুন।

T` `\_`/ *\\(?=.*,)

ত্রিভুজগুলির বেস পূরণ করুন।

s`¶(.*),( *)
$1¶$.2$*¶$1

উপযুক্ত উল্লম্ব ফাঁক দিয়ে ত্রিভুজগুলি নকল করুন।

\G(( *)/(  |__)*\\)\2(  )*\1 *¶
$2 $#3$* $#4$* $1¶

উপরের ত্রিভুজগুলিকে একক কেন্দ্রিক ত্রিভুজগুলিতে রূপান্তর করুন।


2

সি (জিসিসি), 404 389 বাইট

#define p(x)putchar(x);
#define F for
W;S;i;a=32;b=47;c=92;f(w,s){W=w,S=s;F(;w;--w){F(i=W+w+s+1;i--;)p(a)p(b)F(i=w*2;i++-2*W;)p(a)p(c)p(10)}F(i=W+s+1;i--;)p(a)p(b)F(i=0;i++-2*W;)p(95)p(c)F(;s--+1;)p(10)F(w=W;w;--w){F(i=w;i--;)p(a)p(b)F(i=w*2;i++-2*W;)p(a)p(c)F(i=w*2+S*2;i--;)p(a)p(b)F(i=w*2;i++-2*W;)p(a)p(c)p(10)}p(b)F(i=0;i++-2*W;)p(95)p(c)F(i=S*2;i--;)p(a)p(b)F(i=0;i++-2*W;)p(95)p(c)}

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

-14 বাইট থেকে রডলভার্টাইস

লুপ ভেরিয়েবল হ্রাসকে স্থির করে -1 বাইট

খুঁজে পার 404 প্রায় এখনও 404

Ungolfed:

#define p(x)putchar(x); // save 7 bytes per putchar call (+24, -182)
#define F for // save 2 bytes per for loop (+14, -28)
int W, S, i; // W is w backup, S is s backup, i is an counter variable;
int a = ' '; // save 1 byte per space printed (+5, -8) (use a instead of 32)
int b = '/'; // save 1 byte per slash printed (+5, -6) (use b instead of 47)
int c = '\\'; // save 1 byte per backslash printed (+5, -6) (use c instead of 92)
// This isn't worth it for '\n' (-5, +3) (10), or '_' (-5, +3) (95)
int f(int w, int s) {
    W = w; // Backup w and s, as we will modify them later, 
    S = s; // but will need their original values
    for(; w != 0; --w) { // Top triangle (not the bottom line)
        for(i = W+w+s+1; i != 0; --i) // leading spaces
            putchar(' ');
        putchar('/'); // left side of triangle
        for(i = 2*w; i != 2*W; ++i) // inner spaces
            putchar(' ');
        putchar('\\'); // right side of triangle
        putchar('\n'); // newline
    }
    for(i = W+s+1; i != 0; --i)
        putchar(' '); // leading spaces for the bottom line
    putchar('/'); // left side
    for(i = 0; i != 2*W; ++i)
        putchar('_'); // the bottom line
    putchar('\\'); // right side
    for(; s-- + 1 != 0;)
        putchar('\n'); // newline after the bottom line and S empty lines
    for(w = W; w != 0; --w) { // Bottom triangles
        for(i = w; i != 0; --i)
            putchar(' '); // leading spaces
        putchar('/'); // left of left triangle
        for(i = w*2; i != 2*W; ++i)
            putchar(' '); // inside of left triangle
        putchar('\\'); // right of left triangle
        for(i = w*2+S*2; i != 0; --i)
            putchar(' '); // spaces between left and right triangles
        putchar('/');
        for(i = w*2; i != 2*W; ++i)
            putchar(' '); // inside of right triangle
        putchar('\\'); // right of right triangle
        putchar('\n'); // newline
    }
    putchar('//'); // left of left
    for(i = 0; i != 2*W; ++i)
        putchar('_'); // bottom of left triangle
    putchar('\\'); // right of left
    for(i = S*2; i != 0; --i)
        putchar(' '); // space between triangles
    putchar('/'); // left of right
    for(i = 0; i != 2*W; ++i)
        putchar('_'); // bottom of left triangle
    putchar('\\'); // right of right
}



আপনি কি করতে পারবেন না #define p putchar?
আরকে

1
@RK। আমি যদি তা করি তবে আমাকে ব্যবহার করতে হবেp(x);p(x) (+26, -6) = +20 বাইটের পরিবর্তে হবে । ম্যাক্রো প্রসারিত করা হলে সেমিকোলনটি অন্তর্ভুক্ত করা হয়।
pizzapants184


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