মাইনক্রাফ্ট দুর্গ ভাঙ্গা


18

কোনও সহকর্মী পিপিসি ব্যবহারকারীর কাছ থেকে ইউটিউব ভিডিওটি অন্তর্ভুক্ত করুন ...

আপনারা প্রতিদ্বন্দ্বিতা হ'ল এএসসিআইআই-আর্টটি অ্যান্ডিসাইট এবং ডায়োরাইটের একটি মাইনক্রাফ্ট কাসল প্রাচীর আঁকুন। আকৃতি প্রাচীর হয় ক্যান্টর সেট । রেফারেন্সের জন্য, ক্যান্টর সেটটি নিম্নলিখিত এন বার পুনরাবৃত্তি করে তৈরি করা হয় :

  • বর্তমান পদক্ষেপ তিনগুণ
  • মধ্যস্থটিকে ফাঁকা স্থান দিয়ে প্রতিস্থাপন করুন
  • এর নীচে একটি সম্পূর্ণ লাইন যুক্ত করুন

এটি প্রথম চারটি ধাপের জন্য নিম্নলিখিতটি তৈরি করে:

*

* *
***

* *   * *
***   ***
*********

* *   * *         * *   * *
***   ***         ***   ***
*********         *********
***************************

তবে, আপনার চ্যালেঞ্জটি এতটা সহজ নয়। আপনি দেখুন, ক্যান্টারের সেটটি সত্যই বড় হয়ে যাওয়ার পরে, বারবার একই চরিত্রটি বারবার দেখার জন্য বিরক্তিকর হয়ে ওঠে। সুতরাং আমরা এটি পরিবর্তন করতে যাচ্ছি একটি বড় ধারাবাহিক এবং ক্ষুদ্র লক্ষ লক্ষ *চিহ্নের ওভারলেল করে #। আপনার প্রতি তিনটি অক্ষরে অনুভূমিকভাবে এবং প্রতিটি সারিতে উল্লম্বভাবে বিকল্প হওয়া উচিত। (অবশ্যই স্পেসগুলি একই রেখে) উদাহরণস্বরূপ, দ্বিতীয় উদাহরণটি হয়ে উঠবে:

* *
###

এবং তৃতীয় উদাহরণটি হয়ে উঠবে:

* *   * *
###   ###
***###***

সম্পূর্ণতার জন্য, এখানে উদাহরণ পাঁচ এবং পাঁচটি রয়েছে:

#4
* *   * *         * *   * *
###   ###         ###   ###
***###***         ***###***
###***###***###***###***###

#5
* *   * *         * *   * *                           * *   * *         * *   * *
###   ###         ###   ###                           ###   ###         ###   ###
***###***         ***###***                           ***###***         ***###***
###***###***###***###***###                           ###***###***###***###***###
***###***###***###***###***###***###***###***###***###***###***###***###***###***

এবং একটি মেগা উদাহরণ, 6th ষ্ঠ পুনরাবৃত্তি:

* *   * *         * *   * *                           * *   * *         * *   * *                                                                                 * *   * *         * *   * *                           * *   * *         * *   * * 
###   ###         ###   ###                           ###   ###         ###   ###                                                                                 ###   ###         ###   ###                           ###   ###         ###   ###
***###***         ***###***                           ***###***         ***###***                                                                                 ***###***         ***###***                           ***###***         ***###***
###***###***###***###***###                           ###***###***###***###***###                                                                                 ###***###***###***###***###                           ###***###***###***###***###
***###***###***###***###***###***###***###***###***###***###***###***###***###***                                                                                 ***###***###***###***###***###***###***###***###***###***###***###***###***###***
###***###***###***###***###***###***###***###***###***###***###***###***###***###***###***###***###***###***###***###***###***###***###***###***###***###***###***###***###***###***###***###***###***###***###***###***###***###***###***###***###

চ্যালেঞ্জ

আপনাকে অবশ্যই একটি সম্পূর্ণ প্রোগ্রাম বা ফাংশন লিখতে হবে যা ইনপুটটির জন্য ধনাত্মক পূর্ণসংখ্যাকে গ্রহণ করে এবং এই মাইনক্রাফ্ট ক্যাসল ফ্র্যাক্টালের এন 'ম প্রজন্মকে আউটপুট করে । আপনি যে কোনও যুক্তিসঙ্গত পদ্ধতিতে ইনপুট এবং আউটপুট নিতে পারেন এবং আপনাকে অবৈধ ইনপুটগুলি নিয়ে উদ্বিগ্ন হওয়ার দরকার নেই (যেমন 1 এর চেয়ে কম সংখ্যা, ভাসমান পয়েন্ট সংখ্যা, অ-সংখ্যা ইত্যাদি)।

সবচেয়ে স্বল্পতম উত্তর, বাইট জিতে মাপা!


উত্তর:


5

জেলি , 43 36 35 বাইট

ḶṚ3*µ5B¤xЀṁ€Ṁ×\Ṛ©1,‘xS$¤ṁ×®ị“*# ”Y

মাত্র একটি সূচনা, আমি নিশ্চিত যে এটি আরও কম হতে পারে।

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

* এন > 5 এর জন্য, আপনার ব্রাউজারটি আউটপুটটি মোড়তে পারে তবে আপনি যদি এটিকে অন-মোড়ানো সম্পাদক হিসাবে কপি-পেস্ট করেন তবে আপনি সঠিক আউটপুট দেখতে পাবেন।

ব্যাখ্যা

ḶṚ3*µ5B¤xЀṁ€Ṁ×\Ṛ©1,‘xS$¤ṁ×®ị“*# ”Y  Input: integer n
Ḷ                                    Create the range [0, n)
 Ṛ                                   Reverse it
  3*                                 Raise 3 to the power of each
    µ                                Begin a new monadic chain on the powers of 3
     5B¤                             Nilad. Get the binary digits of 5 = [1, 0, 1]
        xЀ                          Duplicate each of [1, 0, 1] to a power of 3 times
             Ṁ                       Get the maximum of the powers of 3
           ṁ€                        Reshape each to a length of that value
              ×\                     Cumulative products
                Ṛ©                   Reverse and save the result
                  1,‘xS$¤            Niladic chain.
                  1                    Start with 1
                    ‘                  Increment it
                   ,                   Pair them to get [1, 2]
                       $               Operate on [1, 2]
                      S                  Sum it to get 3
                     x                   Repeat each 3 times to get [1, 1, 1, 2, 2, 2]
                         ṁ           Reshape that to the saved table
                          ×®         Multiply elementwise with the saved table
                            ị“*# ”   Use each to as an index to select from "*# "
                                  Y  Join using newlines
                                     Return and print implicitly

3

জাভাস্ক্রিপ্ট (ES7), 132 125 বাইট

n=>[...Array(n)].map((_,i)=>[...Array(3**~-n)].map((_,j)=>/1/.test((j/3**i|0).toString(3))?" ":`*#`[j/3+i&1]).join``).join`\n`

যেখানে \nআক্ষরিক নিউলাইন চরার প্রতিনিধিত্ব করে। 141 বাইটের জন্য ES6 সংস্করণ:

f=
n=>[...Array(n)].map((_,i)=>[...Array(Math.pow(3,n-1))].map((_,j)=>/1/.test((j*3).toString(3).slice(0,~i))?" ":`*#`[j/3+i&1]).join``).join`
`
;
<input type=number min=1 oninput=o.textContent=f(+this.value)><pre id=o>


2

পাইথন 2, 142 138 136 বাইট

r=range
def f(n):
 for i in r(n+1):
  s="";d=i%2<1
  for k in r(3**i):s+="#*"[(6+d-1+k*(d*2-1))%6<3]
  exec"s+=len(s)*' '+s;"*(n-i);print s

এটি এখান থেকে কোডের টুকরো এবং তারপরে এই চ্যালেঞ্জের জন্য সম্পাদিত।

পরে একটি ব্যাখ্যা পোস্ট করবে।

এছাড়াও, বিটিডাব্লু, দুটি স্পেস ট্যাব।

সম্পাদনা 1: 4 বাইট সংরক্ষণ করেছেন @ ডিজেএমসিমেহেমকে ধন্যবাদ thanks

সম্পাদনা 2: 2 বাইট সংরক্ষণ করেছেন @ ডাগ হাগলেনিকে ধন্যবাদ।


1
এটি পাইথন 2 যেহেতু, আপনি কি বন্ধনীগুলি সরাতে পারবেন না exec("s+=len(s)*' '+s;"*(n-i))?
অ্যাক্রোলিথ

@ দাগ হাগলেনি আহা, ধন্যবাদ! (শীঘ্রই যথেষ্ট উত্তর না দেওয়ার জন্য দুঃখিত)
21

1

রুবি, 115 103 102 বাইট

->n{g=->{T.tr"*#","#*"}
*s=?*
(n-1).times{|i|T=s[-1]
s=s.map{|l|l+' '*3**i+l}+[i<1??#*3:g[]+T+g[]]}
s}

স্ট্যান্ডার্ড ক্যান্টোর সেট গল্ফের জন্য jsvnm সমাধানের ভিত্তিতে ।

-12 বাইট জর্দান ধন্যবাদ।


g=->{T.tr"*#","#*"}
জর্ডান

এছাড়াও, s.map!{...}পরিবর্তে s=s.map{...};s
জর্ডান

@ জর্দান এস.ম্যাপ! করতে হবে +পরিবর্তন করতে <<, এবং এটি একই দৈর্ঘ্য শেষ পর্যন্ত চাই। আমি বিশ্বাস করি যে sএটি এখনও উভয় প্রান্তে প্রয়োজনীয় - মানচিত্রটি একটি .timesলুপের অভ্যন্তরে।
এম-ক্র্যাজান

আহ, ঠিক আছে।
জর্ডান

1

জে, 47 45 বাইট

' *#'{~3(]*$@]$1 2#~[)(,:1)1&(,~],.0&*,.])~<:

ক্যান্টর সেট চ্যালেঞ্জ আমার সমাধান উপর ভিত্তি করে ।

ব্যবহার

   f =: ' *#'{~3(]*$@]$1 2#~[)(,:1)1&(,~],.0&*,.])~<:
   f 1
*
   f 2
* *
###
   f 3
* *   * *
###   ###
***###***

ব্যাখ্যা

' *#'{~3(]*$@]$1 2#~[)(,:1)1&(,~],.0&*,.])~<:  Input: n
                                           <:  Decrement n
                      (,:1)                    A constant [1]
                           1&(           )~    Repeating n-1 times on x starting
                                               with x = [1]
                                        ]        Identity function, gets x
                                   0&*           Multiply x elementwise by 0
                                      ,.         Join them together by rows
                                ]                Get x
                                 ,.              Join by rows
                           1  ,~                 Append a row of 1's and return
       3                                       The constant 3
        (                 )                    Operate on 3 and the result
                    [                          Get LHS = 3
               1 2                             The constant [1, 2]
                  #~                           Duplicate each 3 times
                                               Forms [1, 1, 1, 2, 2, 2]
           $@]                                 Get the shape of the result
              $                                Shape the list of [1, 2] to
                                               the shape of the result
         ]                                     Get the result
          *                                    Multiply elementwise between the
                                               result and the reshaped [1, 2]
' *#'                                        The constant string ' *#'
     {~                                       Select from it using the result
                                             as indices and return

1

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

for($r=($n=--$argv[1])?["* *","###"]:["*"];++$i<$n;$r[]=$a.$b.$a){$a=strtr($b=end($r),"#*","*#");foreach($r as&$s)$s.=str_pad("",3**$i).$s;}echo join("\n",$r);

ভাঙ্গন

for(
    $r=($n=--$argv[1])  // pre-decrease argument, initialize result
    ?["* *","###"]      // shorter than handling the special iteration 2 in the loop
    :["*"]              // iteration 1
    ;
    ++$i<$n             // further iterations:
    ;
    $r[]=$a.$b.$a       // 3. concatenate $a, $b, $a and add to result
)
{
                        // 1. save previous last line to $b, swap `*` with `#` to $a
    $a=strtr($b=end($r),"#*","*#"); 
                        // 2. duplicate all lines with spaces of the same length inbetween
    foreach($r as&$s)$s.=str_pad("",3**$i).$s;  # strlen($s)==3**$i
}
// output
echo join("\n",$r);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.