একটি জিগজ্যাগ প্যাটার্ন তৈরি করুন


25

আপনার কাজটি হ'ল একটি পূর্ণসংখ্যার ইনপুট নেওয়া এবং স্ল্যাশ এবং ব্যাকস্ল্যাশ ব্যবহার করে একটি জিগজ্যাগ প্যাটার্ন মুদ্রণ করা।

  • পূর্ণসংখ্যা ইনপুট প্রতিটি জিগ এবং জাগের দৈর্ঘ্য, পাশাপাশি জিগ এবং জাগের সংখ্যা নির্ধারণ করে
  • প্যাটার্নটি সর্বদা ডান থেকে বামে শুরু হয়

পরীক্ষার মামলা

4->
   /
  /
 /
/
\
 \
  \
   \
   /
  /
 /
/
\
 \
  \
   \
2->
 /
/
\
 \
0->
1->
/
8->
       /
      /
     /
    /
   /
  /
 /
/
\
 \
  \
   \
    \
     \
      \
       \
       /
      /
     /
    /
   /
  /
 /
/
\
 \
  \
   \
    \
     \
      \
       \
       /
      /
     /
    /
   /
  /
 /
/
\
 \
  \
   \
    \
     \
      \
       \
       /
      /
     /
    /
   /
  /
 /
/
\
 \
  \
   \
    \
     \
      \
       \

3
আমরা কি প্রতিটি লাইনের জন্য একটি অ্যারে / স্ট্রিংয়ের তালিকা আউটপুট করতে পারি? প্রশিক্ষণ বা নেতৃস্থানীয় নিউলাইন বা ফাঁকা স্থান অনুমোদিত?
শেগি

2
প্যাটার্নটি প্রভাবিত না করা অবধি নেতৃত্বাধীন সাদা স্থান ঠিক আছে?
Emigna

উত্তর:


10

সি (জিসিসি) , 108 102 101 98 80 76 72 বাইট

  • কেভিন ক্রুইজসেনকে ছয় বাইট সংরক্ষণ করে ; প্রথম বন্ধনী অপসারণ এবং golfing N-n-1করতেN+~n
  • Zএর বর্ধিতকরণকে লুপের শর্তে সরিয়ে একটি বাইট সংরক্ষণ করা হয়েছে
  • এর printf("%c\n",...)পরিবর্তে putchar(...)এবং ব্যবহার করে তিনটি বাইট সংরক্ষণ করা হয়েছে,puts("")
  • হাটসুপয়েন্টারকুনকে ধন্যবাদ আঠার (!) বাইট সংরক্ষণ করা ; লুপ ব্যবহার না করে এবং উভয় কল একত্রিত করার পরিবর্তে স্পেসগুলি printf("%*s",n,"");মুদ্রণ করতে ব্যবহার nকরেj;for(j=n;j--;)putchar(32);printf(...);
  • printf("%*c",-~n,...);পরিবর্তে ব্যবহার করে চারটি বাইট সংরক্ষণ করা হয়েছেprintf("%*s%c",n,"",...);
  • নেলহোনাফকে চারটি বাইট সংরক্ষণ করা ; দুটির বদলে সবকিছুকে একটি লুপের ভিতরে নিয়ে যাওয়া
j;f(k){for(j=0;j<k*k;j++)printf("%*c\n",j/k%2?j%k+1:k-j%k,j/k%2?92:47);}

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


Z,n,j;f(N){for(Z=0;Z<N;Z++)for(n=N;n--;putchar(Z%2?92:47),puts(""))for(j=Z%2?N+~n:n;j--;)putchar(32);} 102 বাইট । লুপের ভিতরে সবকিছু রেখে কোঁকড়ানো বন্ধনীগুলি সরানো; এবং পরিবর্তিত N-n-1হয়েছে N+~n
কেভিন ক্রুইজসেন

1
ধন্যবাদ কেভিন ক্রুজসেন উভয় সোয়াপিং দ্বারা অন্য বাইট সংরক্ষিত Z%2?...:...এবং প্রতিস্থাপন Z<N;Z++সঙ্গে Z++<N;
জোনাথন ফ্রেচ

1
আপনি আমার উত্তরে প্রিন্টফ যাদু ব্যবহার করে বেশ কয়েকটি বাইট সংরক্ষণ করতে পারেন । এইভাবে স্পেসগুলি মুদ্রণের জন্য ব্যবহৃত লুপ থেকে মুক্তি পাবেন। আরও তথ্যের জন্য,
প্রিন্টফের

@ হাটসুপয়েন্টারকুন ধন্যবাদ; এটি
সিতে

4 খাটো বাইট: i;f(N){for(i=0;i<N*N;i++)printf("%*c\n",i/N%2?i%N+1:N-i%N,i/N%2?92:47);}এটি অনলাইন চেষ্টা করুন!
nwellnhof

10

কাঠকয়লা , 16 10 9 বাইট

FN«↖Iθ→‖T

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


এটি কাজ করে ( InputNumberগোল্ফী মোডেও কি ভাঙা হয়েছিল?)
ASCII- কেবলমাত্র

@ এএসসিআইআই-না, এইভাবে প্রদত্ত সংযোগ সংস্করণ এবং আনুমানিক ভার্বোস সংস্করণের পৃথক লিঙ্কগুলি।
নীল

ওহ> _> আমি কোন লিঙ্কটি খুলছি তা দেখার জন্য
ASCII- কেবল

@ এএসসিআইআই-ওয়েল এখন কেবল একটি লিঙ্ক রয়েছে ;-)
নীল

4

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

:"GXy@o?P47}92]*c

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

ব্যাখ্যা

:         % Implicit input, n. Push range [1 2 ... n]
"         % For each k in that range
  G       %   Push n again
  Xy      %   Identity matrix of that size
  @       %   Push k
  o?      %   If it's odd
    P     %     Flip the matrix upside down
    47    %     Push 47 (ASCII for '/')
  }       %   Else
    92    %     Push 92 (ASCII for '\')
  ]       %   End
  *       %   Multiply each entry of the matrix by that number
  c       %   Convert to char. Char 0 is shown as space
          % Implicit end. Implicit display

4

সি # (.নেট কোর) , 117 103 101 বাইট

a=>{for(int z=a+1,e=0;e<a*a;)System.Console.WriteLine(e++/a%2<1?"/".PadLeft(--z):@"\".PadLeft(z++));}

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


আপনি এটির মতো 14 বাইট সংরক্ষণ করতে পারেন: a=>{var o="";for(int z=a+1,e=0;e<a*a;)o+=(e++/a%2<1?"/".PadLeft(--z):@"\".PadLeft(z++))+"\n";return o;} 103 বাইট আপনার এই সমস্ত প্রথম বন্ধনী প্রয়োজন নেই; আপনি একত্রিত করতে পারেন int; এবং শুধুমাত্র +"\n"একবার যোগ করুন ।
কেভিন ক্রুইজসেন

ওহ, ধন্যবাদ!
আমার সর্বনাম

হুম, আপনি স্ট্রিং ফিরে না দিয়ে সরাসরি প্রিন্ট করে আরও 2 টি বাইট সংরক্ষণ করতে পারেন: a=>{for(int z=a+1,e=0;e<a*a;)System.Console.WriteLine(e++/a%2<1?"/".PadLeft(--z):@"\".PadLeft(z++));} 101 বাইট
কেভিন ক্রুইজসেন

3

এসওজিএল ভি0.12 , 13 12 9 বাইট

╝F{±↔}P}ø

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

╝F{±↔}P}0 টেস্ট-কেসের প্রয়োজন না হলে 8 বাইট হতে পারে

ব্যাখ্যা:

       }   implicitly started loop repeated input times
╝            create a down-right diagonal of the input
 F           get the current looping index, 1-indexed
  {  }       that many times
   ±↔          reverse the diagonal horizontally
      P      print that
        ø  push an empty string - something to implicitly print if the loop wasn't executed


3

গণিত, 84 90 বাইট

(n=#;Grid@Array[If[Abs[n-(s=Mod[#-1,2n])-.5]==#2-.5,If[s<n,"‌​/","\\"],""]&,{n^2,n‌​}])&
  • জেনি_ম্যাথি -6 বাইট জন্য ধন্যবাদ।

\স্পষ্টতই কেন গা dark় তা আমার কোনও ধারণা নেই /

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


2
84 বাইট(n=#;Grid@Array[If[Abs[n-(s=Mod[#-1,2n])-.5]==#2-.5,If[s<n,"/","\\"],""]&,{n^2,n}])&
J42161217

3

Jq 1.5 , 94 89 বাইট

["/","\\"][range($n)%2]as$s|range($n)|[(range(if$s=="/"then$n-.-1 else. end)|" "),$s]|add

ব্যাখ্যা

  ["/","\\"][range($n)%2] as $s                         # for $s= / \ / \ $n times 
| range($n)                                             # for .=0 to $n-1
| [(range(if $s=="/" then $n-.-1 else . end)|" "), $s]  # form list of spaces ending with $s
| add                                                   # concatenate

নমুনা রান

$ jq -Mnr --argjson n 5 '["/","\\"][range($n)%2]as$s|range($n)|[(range(if$s=="/"then$n-.-1 else. end)|" "),$s]|add'
    /
   /
  /
 /
/
\
 \
  \
   \
    \
    /
   /
  /
 /
/
\
 \
  \
   \
    \
    /
   /
  /
 /
/

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


3

জাভা 8, 140 134 116 বাইট

n->{String r="";for(int a=0,b,c;a++<n;)for(b=n;b-->0;r+=a%2>0?"/\n":"\\\n")for(c=b-n+b|-a%2;++c<b;r+=" ");return r;}

-24 ধন্যবাদ বাইট @Nevay

ব্যাখ্যা:

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

n->{                // Method with integer parameter and String return-type
  String r="";      //  Result-String
  for(int a=0,b,c;  //  Index integers
      a++<n;)       //  Loop (1) from 0 to the input (exclusive)
    for(b=n;        //   Reset `b` to the input
        b-->0;      //   Inner loop (2) from the input to 0 (exclusive)
                    //     After every iteration: 
        r+=a%2>0?"/\n":"\\\n") 
                    //      Append either of the slashes + a new-line
      for(c=b-n+b|-a%2;++c<b;r+=" ");
                    //    Append the correct amount of spaces
                    //   End of inner loop (2) (implicit / single-line body)
                    //  End of loop (1) (implicit / single-line body)
  return r;         //  Return the result-String
}                   // End of method

1
অন্তঃপুরের লুপের শর্তটি c-->f*(b-n-~b)(-6 বাইট) হিসাবে লেখা যেতে পারে ।
নেভায়ে

1
116 বাইট:n->{String r="";for(int a=0,b,c;a++<n;)for(b=n;b-->0;r+=a%2>0?"/\n":"\\\n")for(c=b-n+b|-a%2;++c<b;r+=" ");return r;}
নেভায়ে

3

জাভাস্ক্রিপ্ট ES8, 83 79 78 76 75 74 71 বাইট

* শেগিকে ধন্যবাদ ইএস 8 দিয়ে 1 বাইট হ্রাস করেছে

A=(m,i=0)=>i<m*m?`/\\`[x=i/m&1].padStart(x?i%m+1:m-i%m)+`
`+A(m,++i):""

পরীক্ষা এখানে


যে কেউ আমার সমাধানকে অগ্রাহ্য করেছে, আপনি কেন তা ব্যাখ্যা করতে পারেন? আমি কিছু অনুপস্থিত করছি?
ড্যানিয়েলইন্ডি

2
আমি সেই ব্যক্তিই নই যাঁকে অগ্রাহ্য করা হয়েছিল, তবে আমি ধরে নিই যে এটি কার্যকর কারণগুলি বৈধ হওয়ার জন্য পুনরাবৃত্তিযোগ্য হওয়া দরকার। আপনার iডিফল্ট প্যারামিটার তৈরি করে খুব সহজেই ঠিক করা যায় । বাইট গণনাটিও বন্ধ মনে হচ্ছে।
এমিগিনা

1
একটি টিআইও লিঙ্ক যুক্ত করা সর্বদা পাশাপাশি প্রশংসা করা হয়, যাতে লোকেরা সহজেই আপনার সমাধানটি পরীক্ষা করতে পারে।
Emigna

1
@ এমিগনা এটি স্থির করেছেন (চার ওয়াইজ এবং লিংক
ওয়াইস

1
কিছু ES8 সহ 74 বাইট । এছাড়াও, জেএসের জন্য আপনি টিআইওর পরিবর্তে কেবল স্ট্যাক স্নিপেট ব্যবহার করতে পারেন।
শেগি


2

পাওয়ারশেল , 81 বাইট

param($a)if($a){1..$a|%{((1..$a|%{" "*--$_+'\'}),($a..1|%{" "*--$_+'/'}))[$_%2]}}

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

ওহ, এটি কুরুচিপূর্ণ। এত বারবার কোড, প্লাস 7 বাইটের 0বিশেষ ক্ষেত্রে অ্যাকাউন্ট প্রয়োজন account গল্ফিং পরামর্শ স্বাগত জানাই।


2

পাইথ, 17 বাইট

js<*_+RV"\/"_B*L;

অনলাইনে চেষ্টা করুন: বিক্ষোভ

ব্যাখ্যা:

js<*_+RV"\/"_B*L;QQQ   implicit Qs at the end
              *L;Q     list with ["", " ", "  ", ..., " "*(input-1)]
            _B         bifurcate with reverse: [["" to "   "], ["   " to ""]]
     +RV"\/"           append to each one either "\" or "/": 
                       [["\", to "   \"], ["   /" to "/"]]
    _                  reverse
   *              Q    repeat input times
  <                Q   but only take the first input many
 s                     flatten the list of lists
j                      print on each line

2

পাইথন 3: 90 বাইট 82 বাইট

lambda n:"\n".join(" "*(abs(i%(n*2)-n+i//n%2)-1)+"/\\"[i//n%2]for i in range(n*n))

জনাথন ফ্র্যাচকে মুদ্রণের প্রয়োজন ছিল না এবং প্রথম জিগটি ভুল উপায় ছিল তা উল্লেখ করার জন্য আপনাকে ধন্যবাদ



আপনার দরকার নেই print(...), একটি স্ট্রিং ফিরিয়ে ফাংশনটি বৈধ হবে। এছাড়াও, আমি মনে করি আপনার প্রারম্ভিক জিগটি ভুল উপায়ে (/ পরিবর্তে /) ভিত্তিক।
জোনাথন ফ্রেচ

@ জোনাথানফ্রেচ ধন্যবাদ! আমি এটি পরিবর্তন করেছি
বাসিনটাগ

1
(abs(...)-1)-> ~-abs(...)
জোনাথন ফ্রেচ

2

05 এ বি 1 ই , 17 16 বাইট

F<„/\Nèú.sNƒR}»,

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

ব্যাখ্যা

F                  # for N in [0 ... input-1] do
  „/\              # push the string "/\"
     Nè            # cyclically index into this string with N
 <     ú           # prepend input-1 spaces to this string
        .s         # get suffixes
          NƒR}     # reverse the list of suffixes input+1 times
              »,   # join on newline and print

ক্যানভাস ব্যবহার করে বর্তমান সেরা প্রচেষ্টা:

F„/\Nè©53NèΛ2®ð«4Λ

2

সি ++, 92 91 বাইট

-1 বাইট ধন্যবাদ কেভিন ক্রুইজসেনকে

void m(int n){for(int i=0,j;i<n;++i)for(j=0;j<n;++j)printf("%*c\n",i%2?j+1:n-j,i%2?92:47);}

যাদু শক্তি ধন্যবাদ printf


আপনি লাগাতে পারেন int i=0,jজন্য-লুপ for(int i=0,j;i<n;++i)একটি বাইট সংরক্ষণ করুন।
কেভিন ক্রুইজসেন


2

জাভা (ওপেনজেডিকে 8) , 131 106 98 96 94 91 বাইট

i->{for(int j=0;j<i*i;System.out.printf("%"+(j/i%2<1?i-j%i:j%i+1)+"c\n",47+45*(j++/i%2)));}

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


1
আপনি বেশ কয়েকটি বন্ধনী অপসারণ করতে পারেন: i->{for(int j=0;j<i*i;System.out.printf("%"+(j/i%2<1?i-j%i+1:j%i+2)+"s",j++/i%2<1?"/\n":"\\\n"));}(98 বাইট)
নেভায়ে

2

ডায়ালগ এপিএল , 39 36 35 34 বাইট

{↑((,⍵ ⍵⍴(⌽,⊢)⍳⍵)/¨' '),¨⍵/⍵⍴'/\'}

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

1 জ্যাকেট বাইট সংরক্ষণ করা হয়েছে


এটি ডাং, আমাকে একটি বাইট দ্বারা প্রহার। আপনি করতে পারেন ⎕IOহতে 0, এবং তারপর অপসারণ ¯1+
জাকারি

@ জাচারি আমি ঠিক সেটাই করতে যাচ্ছিলাম: পি
ডিজাইমা

ওহ, আরও একটি জিনিস: এর (⌽,⊢)⍳⍵পরিবর্তে(⌽⍳⍵),⍳⍵
জ্যাচার

@ জাকারি হ্যাঁ, আমি এখনও এই ট্যাঙ্কস, ট্যাকটিনিটি এবং যে জিনিসগুলি নিয়ে এসেছি তা বুঝতে পারি না: /
ডিজাইমা

চিন্তা করবেন না, আমি কীভাবে ট্রেন / কাঁটাচামচ / যাই হোক না কেন তারা ডাকা হয় তা পুরোপুরি বুঝতে পারি না।
জাকারি



1

এক্সেল ভিবিএ, 84 83 বাইট

বেনামে VBE তাত্ক্ষণিক উইন্ডো ফাংশন যা VBE তাত্ক্ষণিক উইন্ডোতে পরিসীমা [A1]এবং আউটপুটগুলি থেকে ইনপুট নেয়

For i=1To[A1]:For j=1To[A1]:?IIf(i mod 2,Space([A1]-j)&"/",Space(j-1)&"\"):Next j,i


0

হাস্কেল , 86 85 বাইট

f n=take(n*n)$cycle$[(' '<$[x..n-1])++"/"|x<-[1..n]]++[(' '<$[2..x])++"\\"|x<-[1..n]]

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

লাইকোনিকে ধন্যবাদ একটি বাইট সংরক্ষণ করা হয়েছে

একটি জিগ ++ একটি জাগ পুনরাবৃত্তি করুন এবং প্রথম n*nলাইনগুলি নিন।


cycle$ ...পরিবর্তে cycle( ... )একটি বাইট সংরক্ষণ করুন।
লাইকনি

@ লাইকনি ধন্যবাদ!
jferard



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