আস্তে আস্তে জিগজ্যাগ রূপান্তর করা হচ্ছে


23

ইনপুট হিসাবে একক ধনাত্মক বিজোড় পূর্ণসংখ্যা দেওয়া, এই রূপটিতে স্ট্রিংগুলির তালিকা হিসাবে একটি রূপান্তরকারী জিগজ্যাগটি ফিরিয়ে আনুন, অক্ষরের তালিকার তালিকা বা নিউলাইন-পৃথক স্ট্রিং:

#
 #
  #
   #
    #
   #
  #
 #
  #
   #
  #

আপনি #কোনও সামঞ্জস্যহীন অ-সাদা স্থানের অক্ষর দিয়ে প্রতিস্থাপন করতে পারেন । প্রতিটি লাইনে হোয়াইটস্পেস অনুসরণ করার অনুমতি দেওয়া হয় এবং একটি ট্রেলিং নতুন লাইনের অনুমতি দেওয়া হয়।

জিগ-জ্যাগটি কলামে শুরু হয় 1এবং প্রতিটি সারির জন্য ডান একটি কলাম চলে আসে, যতক্ষণ না এটি কলামে পৌঁছায় n(যেখানে nইনপুট থাকে)। তারপর, এটি বামে চলে আসে 2তারপর ডানদিকে, n-1তারপর, বাম 3দুই সীমার মধ্যম কলামে আঁকাবাঁকা শেষ না হওয়া অবধি মধ্যে সমকেন্দ্রি সঙ্গে, ( (n+1)/2)।

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

উপরের উদাহরণটি পরীক্ষার ক্ষেত্রে 5

নিম্নলিখিত স্বতন্ত্র পরীক্ষার মামলা রয়েছে:

3
#
 #
  #
 #

7
#
 #
  #
   #
    #
     #
      #
     #
    #
   #
  #
 #
  #
   #
    #
     #
    #
   #
  #
   #
    #
   #

1

#

নেতৃস্থানীয় (তবে ধারাবাহিক অর্থাৎ আকৃতি-ভঙ্গ নয়) সাদা স্থান অনুমোদিত?
এরিক দি আউটগল্ফার

এই টুইটটি আমার পছন্দ নয়
হাইপারনিউটারিনো

উত্তর:


15

সি (জিসিসি) , 89 বাইট

f(n,a,b){puts("0");for(a=n;--a>n/2;)for(b=n-2*a;b<=2*a-n;)printf(" %*d\n",a-abs(b++),0);}

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

(N = 7 এর জন্য) খালি জায়গাগুলির ক্রম বিশ্লেষণ করে কাজ করে:

          0
1 2 3 4 5 6 5 4 3 2 1
    2 3 4 5 4 3 2
        3 4 3

এবং এন = 3 এর জন্য:

  0
1 2 1

আমরা দেখতে পাচ্ছি যে মাঝারি সংখ্যাটি (কোডটিতে a) [n-1, n / 2) থেকে চলে। তারপরে, প্রথম সংখ্যা এবং মাঝের সংখ্যার মধ্যে পার্থক্য:

a  n  b  2a-n
-------------
6  7  5  5
5  7  3  3
4  7  1  1
2  3  1  1

সুতরাং, যদি আমরা b[- (2a-n), 2a-n] দিয়ে যাচ্ছি তবে a-abs(b)আমাদের পছন্দসই ক্রমটি দেবে। কোডটি মূলত এটি করে।


14

কাঠকয়লা , 10 8 বাইট

FN«↗ι‖»/

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। সম্পাদনা: 2 ডি বাইট সংরক্ষিত @ জনাবকে ধন্যবাদ জানাতে যে আমাকে #এস ব্যবহার করতে হবে না বলে ধন্যবাদ জানায় ।


অবশেষে, এমন কিছু যা জেলিকে মারধর করে
JungHwan Min


3

জেলি , 14 বাইট

ṖṖṚ$ÐĿẎ0;⁶ẋp1Y

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

পুরো প্রোগ্রাম।

ব্যবহার 1

-1 জনাথন অ্যালানকে ধন্যবাদ ।
-1 জনাথন অ্যালানকে ধন্যবাদ ।


’R-> একটি বাইট জন্য।
জোনাথন অ্যালান

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

”X-> 1অন্য জন্য।
জোনাথন অ্যালান

@ জোনাথন অ্যালান হিহ আরেকটি দৃষ্টিভঙ্গি দৃশ্যত ... আমিও পূর্ণসংখ্যা এড়ানোর চেষ্টা করেছি।
এরিক আউটগল্ফার

3

হাস্কেল , 72 বাইট

g[]=[]
g a=a++g(reverse$init a)
r="#":map(' ':)r
("#":).g.tail.(`take`r)

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

উপরের বাম হাতের কোণ থেকে শুরু rহওয়া একটি অনন্ত তালিকাটিকে আমরা সংজ্ঞায়িত করি #

তারপরে আমরা একটি ফাংশন সংজ্ঞায়িত করি gযা কাজের ফলস্বরূপ কাজ করে। gএকটি তালিকা নেবে এবং বারবার এটিকে বিপরীত করবে এবং তালিকাটি খালি না হওয়া পর্যন্ত এর প্রথম উপাদানটি সরিয়ে ফেলবে, তারপরে প্রতিটি ক্রিয়নের ফলাফলকে সম্মতি জানাতে হবে।

আমাদের মূল ফাংশনটি এখানে বিন্দু মুক্ত ফাংশন। এই ফাংশনটি nঅসীম তালিকা থেকে উপাদানগুলি নিয়ে শুরু হয় r, এরপরে এটি প্রথম উপাদানটির শীর্ষস্থানীয় হয় এবং প্রয়োগ হয় g। সর্বশেষে আমাদের #শুরুতে পিছনে যুক্ত করতে হবে, কারণ কারণগুলির প্রশ্নের জন্য চশমাগুলি কিছুটা অদ্ভুত, আমি নিশ্চিত নই যে কেন প্রথম তির্যকটি সবসময় তার চেয়ে বেশি দীর্ঘ হয় তবে এটি হয়, তাই আমাদেরকে এএ যোগ করুন #


@nimi আমি করছেন শেষ পর্যন্ত ("#":).g.init.(নিতে r)কিন্তু ধন্যবাদ!
গম উইজার্ড



2

05 এ বি 1 ই , 6 বাইট

LN71SΛ

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

     Λ     use the canvas function with

L          a range list [1 .. input] as lengths for each path 

 N         a "0" as character to be printed 
           (N is the index variable used by loops. If there was no loop yet, its
           default value is 0. By using N, I avoid an extra space between 0 and 71)

  71S      and the directions 7 and 1 (NW and NE), that alternate automatically until
           the range list is finished.

না, আমি এটি প্রথমে চেষ্টা করেছি, তবে এটি সরিয়ে দেওয়ার আগে এটি পরিসীমা তালিকার পরবর্তী উপাদানটির সাথে চালিয়ে যাওয়ার আগে উভয় দিকই আঁকবে S। সুতরাং আউটপুট দ্বিগুণ হয়ে যাবে। আমি এখনও + এবং about সম্পর্কে জানতাম না। আপনি তাদের সংখ্যার সাথে একত্রিত করার সময় তারা সত্যিই আকর্ষণীয় নিদর্শন তৈরি করে
ডোরিয়ান

আহ, তুমি সত্যই বলেছ। আমার খারাপ। আমি এটা ছাড়া কাজ দেখেছি S, কিন্তু আউটপুট করার জন্য যথেষ্ট মনোযোগ দেওয়া হয়নি ..>।> এবং +এবং ×জন্য মূলত builtins হয় [0,4,4,0,2,6,6,2]এবং [1,5,5,1,3,7,7,3]। এবং 8আপনি যেখান থেকে শুরু করেছেন সেখানে পুনরায় সেট হবে। এখানে আরও কিছু তথ্য।
কেভিন ক্রুইজসেন



1

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

প্রাপ্ত লক্ষ্য ( g) গণনা করে । এই লক্ষ্যটি পৌঁছে গেলে, পরবর্তী লক্ষ্যে ঘুরুন। প্রতিটি অসম সংখ্যা Math.round()যুক্ত 0.5করে ব্যবহার এড়াতে একটি কৌশলও ব্যবহার করে ।

f=n=>{c=0;for(i=0;i<n;i++){m=i/2;g=i%2==0?n-m:m+1.5;while(c!=g){c>g?c--:c++;console.log(' '.repeat(c-1)+'#'+' '.repeat(n-c))}}}

f=n=>{c=0;for(i=0;i<n;i++){m=i/2;g=i%2==0?n-m:m+1.5;while(c!=g){c>g?c--:c++;console.log(' '.repeat(c-1)+'#'+' '.repeat(n-c))}}}

f(5);


1

হাস্কেল, 74 বাইট

f[x]=[x]
f s=s++tail(f$reverse$tail s)
g n=f[(' '<$[2..x])++"#"|x<-[1..n]]

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

কিভাবে এটা কাজ করে:

    [(' '<$[2..x])++"#"|x<-[1..n]]     -- build the first diagonal, e.g. for n=3:
                                         -- ["#", " #", "  #"]
  f                                      -- call f, which is

f s = s ++                               -- the input list, followed by
           tail                          -- all but the first element of
                f                        -- a recursive call with
                  reverse                -- the reverse of
                          tail s         -- all but the first element of the input 
                                         -- list
f[x]=[x]                                 -- base case: stop if the input list a
                                         -- singleton list

fপরবর্তী তির্যক সংযোজনে প্রতিটি পুনরাবৃত্তি কল ।



1

হুশ , 19 বাইট

mo`:'#R' ∫`Ṙ¢e1_1tṫ

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

ব্যাখ্যা

এটি কিছুটা ক্লিঙ্কি অনুভব করে।

mo`:'#R' ∫`Ṙ¢e1_1tṫ  Input is n (e.g. 5)
                  ṫ  Range from input to 1: [5,4,3,2,1]
                 t   Drop first element: [4,3,2,1]
             e1_1    The list [1,-1]
            ¢        repeated infinitely: [1,-1,1,-1,..
          `Ṙ         Clone with respect to the list above: [1,1,1,1,-1,-1,-1,1,1,-1]
         ∫           Cumulative sum: [0,1,2,3,4,3,2,1,2,3,2]
mo                   For each element k (e.g. 3) do this:
      R'             Repeat space k times: "   "
  `:'#               Append '#': "   #"
                     Print implicitly separated by linefeeds.


1

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

.+
$* 
^
:>
 $
:
;{*T`:<>`_#
( ) >(:)|( )<
$1<$2$3
(:)( )<|>( )
$2$1$3>

এটি অনলাইন চেষ্টা করুন! ব্যাখ্যা: প্রথম তিনটি স্তর ইনপুটটিকে এমন রূপে রূপান্তর করে :> :যেখানে :s এর মধ্যে অক্ষরের সংখ্যা হয় ইনপুট নম্বর number শেষ দুটি স্তর তারপরে >(বা <, বাম দিকে অগ্রসর হওয়ার সময়) এর মধ্যে বাউন্স করুন :। চতুর্থ পর্যায়ে প্রতিটি সময় স্ট্রিংয়ের প্রয়োজনীয় অংশগুলি মুদ্রণ করে বাউন্সটি লুপ করে। ;লুপ পর ছাপা হচ্ছে থেকে STRING স্টপ।


1

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

Î<L¤F¦})˜Ôð×X«»

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

ব্যাখ্যা

Î<L               # push 0 and range [1 ... input-1]
   ¤              # get the last element of the list
    F             # that many times do
     Â            # bifurcate
      ¦           # remove the head
       })˜        # end loop and wrap in flattened list
          Ô       # remove consecutive duplicates
           ð×     # repeat space a number of times corresponding to each number in the list
             X«   # append 1 to each
               »  # join on newline

1

কে (কোনা), 27 বাইট

`0:{|x$"#"}'1,,/{1_|x}\-2-!

বারবার বিপরীত করে এবং খালি অবধি কোনও ভেক্টরের মাথা ফেলে রেখে অন্তর্নিহিত সংখ্যাসূচক ক্রম উত্পাদন করে।


3
পিপিসি.এসই তে স্বাগতম! ঠিক তেমনই আপনি জানেন, আপনি আপনার কোড টিআইও (অনলাইনে চেষ্টা করে দেখুন) নামক একটি অনলাইন ইন্টারপ্রেটারে রাখতে পারেন এবং এর সাথে লিঙ্ক করতে পারেন যাতে লোকেরা আপনার কোড চেষ্টা করতে পারে। tio.run/#k-kona এটি আপনাকে এখানে জমা দেওয়ার জন্য এমনকি একটি ফর্ম্যাট পিপিসি পোস্ট সরবরাহ করবে।
নোটস 90

0

পিএইচপি, 65 বাইট

<?while(--$n||$n=$d=--$argn)echo str_pad("X
",2+$x-=$d&1?:-1);?>X

পাইপ হিসাবে চালান -nFবা এটি অনলাইনে পরীক্ষা করুন

ব্যাখ্যা:

প্রথম পুনরাবৃত্তির: $nহয় NULL, তাই --$nকোনো প্রভাব এবং মূল্যায়ণ হয়েছে NULL
-> সেট $nএবং $dপ্রাক-decremented যুক্তি
1. বৃদ্ধি $xএমনকি $dবিজোড় জন্য, হ্রাস $d
2. মুদ্রণ X, একটি newline এবং $xস্পেস

আরও পুনরাবৃত্তি: হ্রাস $n; যখন এটি আঘাত করে 0, প্রাক-হ্রাস যুক্তিকে রিসেট করুন $n(এবং $d)

সমাপ্তি: আরও একটি মুদ্রণ X



0

পাইথন 2, 159 145 141 136 বাইট

print"".join([" "*p+"#\n"for p in(lambda l:[sum(l[:i])for i in range(len(l))])(sum([i*[1-i%2*2]for i in range(input())[::-1]],[])+[1])])

এই সমস্যাটির জন্য ইতিমধ্যে বেশ সুন্দর পাইথন সংস্করণ রয়েছে তবে আমি ভেবেছিলাম আমি এখনও আমার ভয়ঙ্কর ওয়ান-লাইনার পোস্ট করব। (যদিও সেমিকোলন ছাড়া!)

সম্পাদনা করুন: 14 বাইট ডাউন, ডাবল তালিকা বোঝার পরিবর্তে যোগফল ব্যবহার করে

সম্পাদনা: পাইথন 2 তে সবেমাত্র লক্ষ্য করা গেছে আপনি কাঁচা_পিন্ডের পরিবর্তে ইনপুট ব্যবহার করতে পারেন। আমি সর্বদা সবেমাত্র দ্বিতীয়টি ব্যবহার করেছি।


0

গণিত, 142 102 বাইট (স্বতন্ত্র)

এই দ্রবণটির ম্যাথিক গন্ধ রয়েছে:

UnitVector[#,1-Sum[(-1)^Floor[#+1/2-Sqrt[9/4+#*#-#-2x]],{x,k}]]~Table~{k,0,#(#-1)/2}/.{0->" ",1->"X"}&

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

আপনি ওল্ফ্রাম কোড স্যান্ডবক্সেUnitVector[#,1-Sum[(-1)^Floor[#+1/2-Sqrt[9/4+#*#-#-2x]],{x,k}]]~Table~{k,0,#(#-1)/2}/.{0->" ",1->"X"}&@6//MatrixForm শিফট + এন্টার বা নম্প্যাড এন্টার টিপুন বা গিয়ার -> "সেল সেল মূল্যায়ন করুন" এ ক্লিক করে টেস্ট করতে পারেন by


এটি এরিকের পাইথন 2 সমাধানের আমার মূল ভুল পোর্টের সমান দৈর্ঘ্যের হতে পারে (এই পোর্টটি একটি ইনপুটটির জন্য আউটপুটকে আরও উচ্চতর দেয়):

(Print[X];l=Range@#;Do[Do[Print[StringRepeat[" ",l[[j]]]<>"X"],{j,Length@l}];l=l[[-2;;1;;-1]],{i,#}])&

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