এএসসিআইআই ট্রায়াঙ্গল রিপল


12

ঠিক আছে, আমার প্রথম গল্ফ প্রশ্ন। দয়া করে নম্র হোন :) আমি জানি অনেকগুলি আসকি ধাঁধা আছে: পি তবে আমরা এখানে যাই।

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

প্রতিটি ত্রিভুজ সমানভাবে ব্যবধানে বাইরে। মূলত, ক্ষুদ্রতর ত্রিভুজটির জন্য পর্যাপ্ত স্থান না পাওয়া পর্যন্ত আপনি ত্রিভুজগুলি যুক্ত করে চলেছেন।

আপনি যতক্ষণ চাইছেন সাদা স্থানগুলিকে অনুমতি দেওয়া হচ্ছে যতক্ষণ না রিপলগুলি সঠিক আকারের সাথে উদাহরণের মতো হয়।

উদাহরণ

q)g 1
__
\/
q)g 2
____
\  /
 \/
q)g 3
______
\    /
 \  /
  \/
q)g 4
________
\  __  /
 \ \/ /
  \  /
   \/
q)g 5
__________
\  ____  /
 \ \  / /
  \ \/ /
   \  /
    \/
q)g 6
____________
\  ______  /
 \ \    / /
  \ \  / /
   \ \/ /
    \  /
     \/
q)g 7
______________
\  ________  /
 \ \  __  / /
  \ \ \/ / /
   \ \  / /
    \ \/ /
     \  /
      \/
q)g 8
________________
\  __________  /
 \ \  ____  / /
  \ \ \  / / /
   \ \ \/ / /
    \ \  / /
     \ \/ /
      \  /
       \/

যথারীতি, সবচেয়ে সংক্ষিপ্ততম কোড জয়ী :)


2
ড্র কনসেন্ট্রিক এএসসিআইআই হেক্সাগনগুলির সঠিক সদৃশ না হলেও , আমি নিশ্চিত নই যে এটি অন্যটির চেয়ে বেশি যোগ করেছে।
জিওবিটস

4
@ জিওবিটস আইএমও এর যথেষ্ট আলাদা - ইনপুট স্পেকটি একেবারেই আলাদা, কত আকার আঁকতে হবে তা নির্ধারণের পদ্ধতিটি আলাদা এবং ত্রিভুজ! =)
ডিজিটাল ট্রমা

@ উয়াইকেন্ট আমি এখন প্রশ্নটি সঠিকভাবে বুঝতে পারলে সন্দেহ করছি। একটি রিপল কি? এটি কি ত্রিভুজগুলির এককেন্দ্রিক সেট, বা অন্য কিছু?
ডিজিটাল ট্রমা

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

আমি মনে করি এটি সুস্পষ্ট, যদিও এটি স্পষ্ট নয়। আপনি সর্বদা প্রদত্ত আকারের একটি ত্রিভুজ আঁকুন, আকারের নেস্টেড ত্রিভুজগুলির সাথে এন -3, এন -6, এন -9, ইত্যাদি
স্পার

উত্তর:


5

পাইথ, 31 বাইট

VhQ+J<t+++*Nd*N"\ "d*Q\_Q_XJ"\/

প্রদর্শন.

ব্যাখ্যা:

VhQ+J<t+++*Nd*N"\ "d*Q\_Q_XJ"\/
                                   Implicit: Q = eval(input()), d = ' '
VhQ                                for N in range(Q + 1):
                                   Concatenate:
          *Nd                      N spaces
         +   *N"\ "                N of the string "\ "
        +          d               another space
       +            *Q\_           Q of the string "_"
                                   If N = 2 and Q = 7, the string so far is:
                                   "  \ \  _______" and we want
                                   " \ \  _" as the left half.
      t                            Remove the first character.
     <                  Q          Take the first Q characters remaining.
                                   This is the left half of the triangle ripple.
    J                              Store it in J.
                          XJ"\/    Translate \ to / in J.
                         _         Reverse it.
   +                               Concatenate the left and right halves and print.

7

জিএনইউ সেড -এনআর, 210

শুরু:

s/1/__/g
p
s#_(.*)_#\\\1/#
s#\\__#\\  #
s#__/#  /#
ta
:a
p
s#(.*) _{6}(_*) # \1\\  \2  /#;ta
s#(.*)  (  )# \1\2#;
s#(.*) _(_*)_ # \1\\\2/#
y/_/ /
Tc
:b
p
:c
s#(.*)((\\)  ( *)(/)|()()()\\/)# \1\3\4\5#;tb

এই মেটা-প্রশ্ন অনুসারে ইনপুটটি STDIN এর মাধ্যমে একটি ধনাত্মক অ্যানারি পূর্ণসংখ্যা ।

আউটপুট:

$ for i in 1 11 111 1111 11111 111111 1111111; do sed -rnf triripple.sed <<< $i; done
__
\/

____
\  /
 \/

______
\    /
 \  /
  \/

________
\  __  /
 \ \/ /
  \  /
   \/

__________
\  ____  /
 \ \  / /
  \ \/ /
   \  /
    \/

____________
\  ______  /
 \ \    / /
  \ \  / /
   \ \/ /
    \  /
     \/

______________
\  ________  /
 \ \  __  / /
  \ \ \/ / /
   \ \  / /
    \ \/ /
     \  /
      \/

$ 

5

সি, 165 বাইট

n,x,y,b,c;main(c,v)char**v;{for(n=atoi(v[1]);y<=n;++y){for(x=-n;x<n;++x){b=2*n-abs(2*x+1);c=b-2*y+2;b-=6*y;putchar(b>0?95:b<-4&c>0&c%4==1?"/\\"[x<0]:32);}puts("");}}

গল্ফিং পদক্ষেপগুলির আগে যা পাঠযোগ্যতা নষ্ট করে:

#include <stdio.h>
#include <stdlib.h>

int main(int c, char** v) {
    int n = atoi(v[1]);
    for (int y = 0; y <= n; ++y) {
        for (int x = -n; x < n; ++x) {
            int b = 2 * n - abs(2 * x + 1);
            int c = b - 2 * y + 2;
            b -= 6 * y;
            putchar(b > 0 ? 95 : 
                    b < -4 && c > 0 && c % 4 == 1 ? "/\\"[x<0] : 32);
        }
        puts("");
    }
}

এটি চিত্রযুক্ত আয়তক্ষেত্রের সমস্ত অক্ষরের উপরে লুপ করে এবং ত্রিভুজের অভ্যন্তরটিকে বাইরের থেকে পৃথক করার পাশাপাশি ত্রিভুজের বিভিন্ন অংশকে পৃথককারী রেখার সমীকরণগুলি মূল্যায়ন করে।


গণিত নিয়ে দুর্দান্ত কাজ। আপনার এটির
৫১13

156:n,x,y,b,c;main(c,v)char**v;{for(n=atoi(v[1]);y<=n;++y)for(x=-n;x<=n;putchar(x++-n?b>6*y?95:b<6*y-4&c>0&c%4==1?"/\\"[x<1]:32:10))c=(b=2*n-abs(2*x+1))-2*y+2;}
edc65

4

রেটিনা , 182 বাইট

1
_
^
#$_
((`#([^#]*?)( ?)_(_*)_( ?)([^#]*?)$
$0# $1\$3/$5
+)`\\( ?)_(_*)_( ?)/(?=[^#]*$)
\ $1$2$3 /
#( *(\\ )*\\ *)  ( *(/ )*/)$
$0# $1$3
)`#( *(\\ )*)\\/(( /)*)$
$0# $1$3
# 
#
^#
<empty line>

অবিচ্ছিন্ন হিসাবে ইনপুট নেয়।

প্রতিটি লাইন তার নিজস্ব ফাইলে যেতে হবে এবং #ফাইলগুলিতে নতুন লাইনে পরিবর্তন করা উচিত। এটি অযৌক্তিক তবে আপনি চিহ্নিতকারীদের -sরেখে পতাকাটিকে একটি ফাইলের মতো কোড চালাতে পারবেন #। আপনি #যদি ইচ্ছা করেন তবে আপনি পঠনযোগ্যতার জন্য আউটপুটে নতুন লাইনে পরিবর্তন করতে পারেন। উদাহরণ:

> echo -n 1111|retina -s triangle|tr # '\n'
________
\  __  /
 \ \/ /
  \  /
   \/

কোডটি খুব ভালভাবে গল্ফ হয়নি (এখনও)।


2

সি - 206 বাইট

i,j,m,k,a,b;main(i,v)char**v;{m=atoi(v[1])*2;while(k<m*(m/2+1)){i=k/m;j=k%m;a=i*3,b=(i+j)%2;putchar("_\\/ "[j>=a&&j<m-a?0:j>i-2&&b&&j<i*3-1&&j<m/2?1:j<=m-i&&!b&&j>m-a&&j>=m/2?2:3]);if(j==m-1)puts("");k++;};}

 x,m,i,j,a,b;
int main(x,v)char**v;{
    m=atoi(v[1])*2;
    for(i=0;i<m/2+1;i++){
        for(j=0;j<m;j++){
            a=i*3,b=(i+j)%2;
            j>=a&&j<m-a?a=0:j>=i-1&&b&&j<i*3-1&&j<m/2?a=1:j<=m-i&&!b&&j>m-a&&j>=m/2?a=2:(a=3);putchar("_\\/ \n"[a]);
        }
        puts("");
    }
}

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

Pauls-iMac:ppcg pvons$ for i in $(seq 1 7); do ./a.out $i; done
__
\/
____
\  /
 \/ 
______
\    /
 \  / 
  \/  
________
\  __  /
 \ \/ / 
  \  /  
   \/   
__________
\  ____  /
 \ \  / / 
  \ \/ /  
   \  /   
    \/    
____________
\  ______  /
 \ \    / / 
  \ \  / /  
   \ \/ /   
    \  /    
     \/     
______________
\  ________  /
 \ \  __  / / 
  \ \ \/ / /  
   \ \  / /   
    \ \/ /    
     \  /     
      \/      

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

ধন্যবাদ @ রিটোকোরাদি, আমি আপনার প্রস্তাবগুলি প্রয়োগ করে এটি 279 থেকে 214 এ কমিয়ে রেখেছি :) আমি মনে করি আরও উন্নতি করতে আমার অ্যালগরিদমকে আরও উন্নত করতে হবে।
paulvs

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

1

জাভাস্ক্রিপ্ট ( ES6 ) 165 180 204

পরীক্ষার জন্য ফায়ারফক্সে স্নিপেট চালান। স্ট্রিং ফিরিয়ে দেওয়া যদি পর্যাপ্ত না হয় তবে আউটপুটটির জন্য সতর্কতা ব্যবহার করা আরও 2 টি বেশি।

// 165 - return the string
F=n=>
  (i=>{
    for(r='__'[R='repeat'](m=n);i<n;)
      r+=`\n`+' '[R](i)
       +('\\ '[R](t=-~(m>3?i:~-n/3))+' ').slice(0,n-i)
       +'__'[R](m>3?m-=3:0)
       +(' '+' /'[R](t)).slice(i++-n)
  })(0)||r


// 167 - output the string
A=n=>{
  for(i=0,r='__'[R='repeat'](m=n);i<n;)
    r+=`\n`+' '[R](i)
     +('\\ '[R](t=-~(m>3?i:~-n/3))+' ').slice(0,n-i)
     +'__'[R](m>3?m-=3:0)
     +(' '+' /'[R](t)).slice(i++-n);
  alert(r)
}

// TEST
out=x=>O.innerHTML += x+'\n' 

for(k=1;k<13;k++)out(k+'\n'+F(k))
<pre id=O></pre>

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