একটি ঘূর্ণি তৈরি করুন!


10

আপনার মিশন আজ একটি একক প্যারামিটার প্রদত্ত একটি ঘূর্ণি তৈরি করা।

এই পরামিতি অক্ষরের প্রতিটি বাহুর দৈর্ঘ্য নির্ধারণ করে।

প্রতিটি বাহুর প্রতিটি "স্তর" এ শেষের চেয়ে আরও একটি চরিত্র থাকে।

আর্মের দৈর্ঘ্য প্রদত্ত ঘূর্ণিটি কীভাবে দেখবে তা এখানে:

0:

#

1:

 # 
###
 # 

2:

 #
  # #
 ### 
# #  
   #

3:

##  #
  # #
 ### 
# #  
#  ##

4:

#     #
 ##  #
   # #
  ###  
 # #   
 #  ## 
#     #

10:

             #
             #
             #     
             #   
            #      
####        #      
    ###     #      
       ##  #      
         # #       
        ###       
       # #         
       #  ##       
      #     ###    
      #        ####
      #            
     #             
     #             
     #             
     #             

স্ট্যান্ডার্ড লুফোলগুলি প্রযোজ্য, হোয়াইটস্পেস traচ্ছিকভাবে অনুসরণ করা, এএসসিআইআই-এর যে কোনও একক অ-হোয়াইটস্পেস অক্ষর "#" প্রতিস্থাপন করতে পারে।

এটি তাই বাইটের মধ্যে সংক্ষিপ্ত উত্তর w


অনুমান (যেমন আছে) উদাহরণগুলির সাথে বিরোধিতা করে বলে মনে হচ্ছে। গত দুটিতে অসমত্বটি কোথা থেকে এসেছে?
পিটার টেলর

এখানে একটি সংশোধিত সংস্করণ।
rahnema1

@ জোনাথন অ্যালান আমার সম্পাদনার বিবরণ দেখুন: কুরুচিপূর্ণ কালো বর্ণহীন অক্ষর মুছে ফেলা হয়েছে, তবে তারা এখনও অসামান্য । এবং না, আমি দায়িত্ব নিচ্ছি না ... আমার কাছে বিরক্তিকর চ্যালেঞ্জ বলে মনে হচ্ছে (কোনও অপরাধ নেই)
মিঃ এক্সকোডার

দয়া করে এটি আবার খুলুন। এটা এখন পরিষ্কার।
programmer5000

1
@ জোনাথন অ্যালান হ্যাঁ, আপনি যেমনটি বলেছেন তেমন তাদের একটি সমস্যা ছিল। সংশোধন করা হয়েছে।
পাপায়মান1000

উত্তর:


5

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

3<G+Eqt&OlG8M+t&(1G:8*X^Q2/kG+G:Gq+&vG2=+Z{(XJ3:"J@X!+]g35*c

এটি অনলাইন চেষ্টা করুন! বা পরীক্ষার কেস যাচাই করুন: 0 , 1 , 2 , 3 , 4 , 10

এটি আমার প্রত্যাশার চেয়ে মজাদার ছিল। ব্যাখ্যা করা আরও শক্ত হতে চলেছে, যদিও ...


3

জেলি , 48 বাইট

Rȯ1ĖŒṙ‘Ė’ḣµ;NµN0¦€U;
Ç+;ẋ2W$+⁸<3¤µFṀR,þ$e€€ị⁾# Y

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

(এটা আরো চূড়ান্ত প্রতিস্থাপন বর্গ করুন Yসঙ্গে Gপ্রতিটি কলামের মধ্যে একটি স্থান যোগ)।

কিভাবে?

#কেন্দ্রের সাথে সম্পর্কিত একটি বাহুর স্থানাঙ্কের একটি তালিকা তৈরি করে। উপরের-বাম কোণে চারটি বাহিনীর স্থানাঙ্কগুলিতে এটিকে রূপান্তর করে এবং কেন্দ্রের সমন্বয় যুক্ত করে। সব স্থান স্থানাঙ্ক একটা টেবিল তৈরী করে এবং অস্ত্র সেট করে #এবং স্থান এবং নতুন লাইন দিয়ে সারি আপ যোগদান করে।

Rȯ1ĖŒṙ‘Ė’ḣµ;NµN0¦€U; - Link 1, arm coordinates relative to centre: arm-length a
R                    - range: [1,2,...,a]
 ȯ1                  - or 1 (stops Œṙ erroring with arm-length 0; builds no redundant coordinates in the end)
   Ė                 - enumerate: [[1,1],[2,2],...[a,a]]  (or [[1,1]] if a=0)
    Œṙ               - run-length decode: [1,2,2,...,a,a,...,a] (or [1] if a=0)
      ‘              - increment: [2,3,3,...,a+1,a+1,...,a+1] (or [2] if a=0)
       Ė             - enumerate: [[1,2],[2,3],...,[T(a)-a,a+1],[T(a)-a+1,a+1],...,[T(a),a+1]] where T(a)=(a+1)*a/2 (or [[1,2]] if a=0)
        ’            - decrement: [[0,1],[1,2],...,[T(a)-a-1,a],[T(a)-a,a],...a[T(a)-1),a]] (or [[0,1]] if a=0)
         ḣ           - head to a (first a of those) - these are an arm's relative coordinates from the central `#` at [0,0])
          µ          - monadic chain separation (call that list r)
           ;         - r concatenated with
            N        - negate r (gets the opposite arm)
             µ       - monadic chain separation (call that list s)
                 €   - for €ach coordinate pair in s:
               0¦    -     apply to index 0 (the right of the two values):
              N      -         negate
                  U  - upend (reverse each pair of that, gives the other two arms)
                   ; - concatenate that list with s (gives all four arms)

Ç+;ẋ2W$+⁸<3¤µFṀR,þ$e€€ị⁾# Y - Main link: arm-length a
Ç                           - call the last link(1) as a monad (get centre-relative coordinates)
 +                          - add a (make the coordinates relative to the top-left)
      $                     - last two links as a monad:
   ẋ2                       -     repeat a twice: [a,a]
     W                      -     wrap in a list: [[a,a]] (the centre coordinate)
  ;                         - concatenate (add the centre coordinate)
           ¤                - nilad followed by link(s) as a nilad:
        ⁸                   -     link's left argument, a
         <3                 -     less than three?
       +                    - add (a in 0,1,2 are special cases requiring a grid one-by-one more than all the rest)
            µ               - monadic separation (call that c)
             F              - flatten c into one list
              Ṁ             - get the maximum (the side-length of the space)
                  $         - last two links as a monad:
               R            -     range: [1,2,...,side-length]
                ,þ          -     pair table: [[[1,1],[1,2],...,[1,side-length]],[[2,1],[2,2],...,[2,side-length]],...,[[side-length,1],[side-length,2],[side-length, side-length]]]
                   e€€      - exists in c? for €ach for €ach (1 if a # coordinate, 0 otherwise)
                       ⁾#   - literal ['#',' ']
                      ị     - index into
                          Y - join with new line characters
                            - implicit print

0

গণিত 139 139 বাইট

ধারণাটি হ'ল একটি ফাংশন দিয়ে একটি একক বাহু তৈরি করা - {⌊.5+.5(-7+8#)^.5⌋,#-1}যা বাহুটির প্রতিটি উপাদানের সূচককে মধ্যম উপাদানটিকে সূচক (0,0) ধরে রেখে অনুমান করে। এখনও কেউ তা গ্রহণ করেনি, তবে আমি সন্দেহ করি যে এই ধারণাটির ফলে আরও ভাল গল্ফের ভাষায় বিজয়ী উত্তর আসবে। তারপরে আমি 90 ডিগ্রির গুণিতক দিয়ে বাহুটি ঘোরান, পুনরায় সূচি এবং ম্যাট্রিক্সটি তৈরি করি।

SparseArrayম্যাট্রিক্স নির্মাণের জন্য সুস্পষ্ট পছন্দ ভালো লাগে, কিন্তু সঙ্গে সর্বস্বান্ত হতে পারে BoxMatrixএবং ReplacePart

Grid[SparseArray[Max@#+#+1&[Join@@Table[RotationMatrix[i Pi/2].#&/@{{0,0}}~Join~Array[{⌊.5+.5(-7+8#)^.5⌋,#-1}&,#],{i,4}]]->X,2#+1,""]]&

অবহেলিত (বাহুর দৈর্ঘ্যের জন্য হার্ড কোডড = 3, এর %অর্থ পূর্ববর্তী আউটপুট):

{{0,0}}~Join~Table[{Floor[1/2 (1+Sqrt[-7+8x])],x-1},{x,1,3}]
Table[RotationMatrix[i Pi/2].#&/@%,{i,4}]
Flatten[%,1]
Max[%]+%+1
Normal@SparseArray[%->X,Automatic,""]
Grid[%/. 0->""]

ব্যবহার% @ 4

X                       X   
    X   X           X       
            X       X       
        X   X   X           
    X       X               
    X           X   X       
X                       X

যেহেতু আমি শিখেছি আউটপুটটি অবশ্যই অতিরিক্ত ব্যবধান বা বিন্যাস ছাড়াই খাঁটি ASCII হওয়া উচিত, কোডটি আরও দীর্ঘতর (172 বাইট) পেতে হবে:

StringRiffle[ReplacePart[Array[" "&,{1,1}*2#+1],Max@#+#+1&[Join@@Table[RotationMatrix[i Pi/2].#&/@{{0,0}}~Join~Array[{⌊.5+.5(-7+8 #)^.5⌋,#-1}&,#],{i,4}]]->"#"],"\n",""]

#     #  
 ##  #   
   # #   
  ###    
 # #     
 #  ##   
#     #  

কলামগুলির মধ্যে অতিরিক্ত ব্যবধানটি কি সরানো যেতে পারে? যেহেতু এটি একটি এসসিআইআই-আর্ট চ্যালেঞ্জ, আউটপুটটি ঠিক যেমন নির্দিষ্ট করা উচিত, কোনও অতিরিক্ত ব্যবধান ছাড়াই (@ পাপায়মান1000 দয়া করে নিশ্চিত করুন এটি ছাড় দেওয়া যায় কিনা)
হাইপারনিউটারিনো

আমি এটির জন্য একটি সম্পাদনা রেখেছি যদি এটির প্রয়োজন হয়। এখনই এটি বিতর্কযোগ্য বলে মনে হচ্ছে।
কেলি লোডার

হুম ... আমি প্রতিযোগিতার পক্ষে, আপনি পছন্দ করতে চাই যে উত্তরটি সঠিক ফলাফল দেয়। @ হাইপারনিউট্রিনো যেমন বলেছিলেন, এটি ASCII- আর্ট, সুতরাং এটি নির্দিষ্ট হিসাবে হওয়া উচিত।
পাপায়মান1000

ঠিক আছে, আমি এটা ঠিক করেছি।
কেলি লোডার

0

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

#NβFβ«¿ι«×#⌊⟦ιβ⟧A⁻βιβ↑»»‖←⟲O²⁴⁶

ব্যাখ্যা

#                                    Print "#"
 Nβ                                 Input number to b
    Fβ«                  »          For i in range(b)
        ¿ι«              »           If i is truthy (to skip 0)
           ×#⌊⟦ιβ⟧                   Print "#" * minimum of i and b
                  A⁻βιβ↑            Assign b-i to b
                           ‖         Reflect right
                            ⟲O²⁴⁶  Rotate overlap 90, 180 and 270 degrees

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


Trimমনে হয় গল্ফায়ারকে কাজ করেছে: NθFθ⁺¶#×#ιJ⁰¦⁰Tθ⁺¹θ#⟲O↖²⁴⁶( ⁺¹কোনও কাজের কারণ T⁰¦⁰এটি কোনও কারণে কাজ করে না and এবং তখন আর উপস্থিত ছিল না))
নীল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.