আমাকে একটি দুর্গ তৈরি করুন সিঁড়িওয়ে!


13

আপনাকে মুদ্রণযোগ্য এএসসিআইআই সমন্বিত একটি স্ট্রিং দেওয়া হবে (নতুন লাইনগুলি ছাড়াই)। আপনার কাজটি আমার ক্যাসেলের জন্য একটি দুর্দান্ত সিঁড়ি তৈরি করা way

কীভাবে একটি সুন্দর সিঁড়ি তৈরি করা যায়?

  • প্রথমে আপনার স্ট্রিংয়ের সমস্ত আবর্তন হওয়া উচিত। উদাহরণস্বরূপ, abcdস্ট্রিংয়ের নিম্নলিখিত রোটেশনগুলি রয়েছে: abcd, bcda, cdab, dabc(প্রতিটি অক্ষর শেষ প্রান্তে পৌঁছে যায় যতক্ষণ না আমরা শেষ চরিত্রটিতে পৌঁছায়)।

  • আমরা এখন প্রতিটি ঘূর্ণন একে অপরের শীর্ষে রাখি:

    abcd
    bcda
    cdab
    dabc
    
  • আমরা সত্যিকারের সোজা দেয়ালে আরোহণ করতে পারি না, তাই আমাদের অবশ্যই সিঁড়ি বানাতে হবে। এর অর্থ আপনার ঘূর্ণন তালিকার প্রতিটি সূচকে এর সূচী অনুসারে কয়েকটি স্পেস যুক্ত করতে হবে:

    abcd
     bcda
      cdab
       dabc
    
  • আপনার একটি সিঁড়িও দরকার যা আমার দুর্গের অন্য প্রান্তের সাথে সংযুক্ত রয়েছে, সুতরাং আপনার প্রতিটি ঘূর্ণন বিপরীত করে কিছু স্পেসিং যুক্ত করে নীচের মতো একটি তৈরি করা উচিত:

    abcd      dcba
     bcda    adcb
      cdab  badc
       dabccbad
    

এটি , তাই বাইট জেতে সংক্ষিপ্ততম কোড এবং ট্যাগটির জন্য প্রমিত নিয়ম প্রয়োগ করা হয়।


পরীক্ষার কেস

  • ইনপুট abcd:, আউটপুট:

    abcd      dcba
     bcda    adcb
      cdab  badc
       dabccbad
    
  • ইনপুট aaaa:, আউটপুট:

    aaaa      aaaa
     aaaa    aaaa
      aaaa  aaaa
       aaaaaaaa
    
  • ইনপুট Code golf:, আউটপুট (স্পেসগুলি লক্ষ্য করুন):

    Code golf                flog edoC
     ode golfC              Cflog edo 
      de golfCo            oCflog ed  
       e golfCod          doCflog e   
         golfCode        edoCflog     
         golfCode        edoCflog     
          olfCode g    g edoCflo      
           lfCode go  og edoCfl       
            fCode gollog edoCf
    


সিঁড়িটি উপরে যাওয়া শুরু করা উচিত নয় এবং তারপরে নীচে নামার পরিবর্তে নীচে নামা উচিত, তারপরে ওঠা উচিত? : পি
স্টিফেন

@ স্টেপহেন এই চ্যালেঞ্জের উদ্দেশ্যে, এটি করা উচিত নয়: পি
মিঃ এক্সকোডার


dabগ। -------
অলিভার নি

উত্তর:


8

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

কোড:

vDNúsÀ}\».B∞

05AB1E এনকোডিং ব্যবহার করে । এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা:

v     }        # Length input times, do.. (N = iteration count)
 DNú           #   Duplicate and prepend N spaces
    sÀ         #   Swap and rotate one to the left
       \       # Discard the top of the stack
        »      # Join the stack by newlines
         .B    # Pad with spaces into a rectangle
           ∞   # Mirror the string


4

জেলি , 16 বাইট

J’ɓ⁹⁶ẋ;"ṙz⁶Zm€0Y

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

অবশ্যই, -1 ব্যবহার জনাথন অ্যালান এর ɓ!


আমার সমাধানটি খুব অনুরূপ মিথিকাগুলি, এখানে আপনি যান: J’ɓ⁹⁶ẋ;"ṙz⁶Zm€0Y(বা LḶজন্য J’)
জনাথন অ্যালান


3

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

.
$.`$* $&$'$`$.'$* ¶
%(`^
$_¶
O$^`.(?=.*$)

¶

এটি অনলাইন চেষ্টা করুন! ব্যাখ্যা: প্রথম পর্যায়ে প্রতিটি অক্ষর বিবেচনা করে বাম সিঁড়িটি তৈরি করে এবং বর্তমান অবস্থানের সমান ফাঁকা স্থান তৈরি করে তারপরে স্ট্রিংয়ের অবশিষ্ট অংশটি, তারপরে শুরু করা হয়, তারপরে স্ট্রিংয়ের অবশিষ্ট অংশের সমান ফাঁকা স্থান তৈরি করে। স্ক্রিপ্টের বাকী অংশগুলি প্রতিটি পংক্তির উপর দিয়ে চলে কেবলমাত্র ঘুরে আসে। প্রথমে লাইনটি সদৃশ হয়, তারপরে নকলের অক্ষরগুলি বিপরীত হয়, তারপরে লাইন এবং এর সদৃশটি সংলগ্ন হয়।


3

পাইথন 3 , 89 বাইট

x=input()
l=len(x)
for i in range(l):y=x[i:]+x[:i];j=' '*i;print(j+y+'  '*(l+~i)+y[::-1])

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

-1 বাইট ধন্যবাদ ওভেসকে ধন্যবাদ

-1 বাইট লিনকে ধন্যবাদ


l-i-1শুধু হতে পারে l+~iযেমন~i == -i-1
ovs

' '*(l+~i)*2সমান '  '*(l+~i), যা এক বাইট খাটো!
লিন


2

কাঠকয়লা , 23 21 20 বাইট

FLθ«FLθ§θ⁺κι↘MLθ←»‖C

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

সম্ভবত আরও গল্ফ করা যেতে পারে তবে আমি মোবাইল অ্যাপ থেকে পোস্ট করছি। ভার্বোজ সংস্করণে লিঙ্ক ।


ওহ বিটিডব্লু যদি আপনি কমপক্ষে কোনও ফ্ল্যাগ প্লে ব্যবহার করে ব্যাখ্যা যোগ না করেন
ASCII- কেবল

@ এএসসিআইআই-কেবল দুঃখিত, আমি ভেবেছিলাম ভার্জোজ সংস্করণটিকে ব্যাখ্যা হিসাবে গণনা করা হয়েছে।
চার্লি

কী এনভিএম তা দেখতে পায়নি তার অপেক্ষা করুন
ASCII-

আমি মনে করি না এটা সময়ে সত্য ছিল কিন্তু এই দিন একটি অবাধ স্ট্রিং সঙ্গে একটি বহুভুজ পূরণ করুন এবং ঠিক ফলাফলের আপনি 9 বাইট জন্য প্রয়োজন পেতে পারেন: G→↘←Lθθ‖C
নিল

2

হাস্কেল, 80 79 বাইট

(s:u)#t|q<-(t>>" ")++s:u++t++(u>>" ")=q++reverse q++'\n':u#(t++[s])
u#_=u
(#"")

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

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

(#"")                      -- start with the input string and an empty accumulator

(s:u)#t                    -- let s be the first char and u the rest of the input
                           -- string, and t the accumulator
    |q<-                   -- let q be half of the current line, i.e.
        (t>>" ")++         --   length of t times spaces
        s:u++              --   s and u (aka the input string)
        t++                --   the accumulator
        (u>>" ")           --   length of u times spaces
    = q ++ reverse q ++    -- the current line is q and q reversed
        '\n' :             -- and a newline
        u#(t++[s])         -- and a recursive call with u as the new input
                           -- string and s put at the end of t
_#_=[]                     -- base case: stop if the input string is empty

সম্পাদনা: বাইটের জন্য @ Ørjan জোহানসেনকে ধন্যবাদ।


u#_=uএকটি বাইট সংরক্ষণ করে।
janর্জন জোহানসেন

@ আরজান জোহানসেন: আমার কাছে প্রথমে স্ট্রিংগুলির একটি তালিকা ছিল এবং unlinesযেখানে u#_=uচেক টাইপ করা হয় না এবং পরে একটি একক স্ট্রিং তৈরি করা যায় ... ধন্যবাদ!
নিমি



1

গণিত, 119 বাইট

b=StringRotateLeft;j=Table;Column@j[""<>{" "~j~i,b[s=#,i],j["  ",t-i],b[StringReverse@s,-i]},{i,0,t=StringLength@#-1}]&

1

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

for($e=strlen($s=$argn);$i<$e;$s.=$s[$i],$s[$i++]=" ")echo$t=str_pad($s,2*$e-1),strrev($t),"
";

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

ভাঙ্গন

for($e=strlen($s=$argn);    # import input
    $i<$e;                  # loop length times
    $s.=$s[$i],                 # 2. append current character
    $s[$i++]=" ")               # 3. set current character to space
    echo$t=str_pad($s,2*$e-1),  # 1. print string padded with length-1 spaces
        strrev($t),             #    print reverse
        "\n";                   #    print newline

1

জাপট , 22 বাইট


l
VÇç +UéZn)+´Vç)ê1÷

শীর্ষস্থানীয় নিউলাইন প্রোগ্রামের অংশ।

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

আমার ডাব্লুআইপি কোডপেন ব্যবহার করে সমস্ত পরীক্ষার কেস চালান

ব্যাখ্যা

অন্তর্নিহিত: U= ইনপুট স্ট্রিং। ওভাররাইট না করার জন্য প্রথম লাইনটি ফাঁকা U

দ্বিতীয় লাইন পরোক্ষভাবে দৈর্ঘ্য (নির্ধারণ lএর) Uথেকে V

তৃতীয় লাইন:

VÇç +UéZn)+´Vç)ê1÷
VoZ{Zç +UéZn)+--Vç)ê1} · Ungolfed
VoZ{                 }   Create array [0, V) and map by...
    Zç                      The current value (Z) times " "
       +UéZn)               Concatenated with U rotated Z times left
             +--Vç)         Concatenated with --V times " ". This decrements V
                   ê1       Palindromize with repeated last char
                       · Join with newlines and implicitly output


1

জাভাস্ক্রিপ্ট (ES6), 118 বাইট

s=>[...s].map((_,y)=>Array(l=(j=s.length)*4-2).fill().map((_,x)=>(x=x<l/2?x:l-x-1)>=y&y+j>x?s[x%j]:" ").join``).join`
`

কোড স্নিপেট উদাহরণ:

f=
s=>[...s].map((_,y)=>Array(l=(j=s.length)*4-2).fill().map((_,x)=>(x=x<l/2?x:l-x-1)>=y&y+j>x?s[x%j]:" ").join``).join`
`
o.innerText=f("Code golf")
<pre id=o>


1

পাইথন 2 , 85 83 বাইট

  • @ ওভসকে 2 বাইটের জন্য ধন্যবাদ: l+~iএবং আমাকে একটি অবাঞ্ছিত স্থান সন্ধান করতে সহায়তা করেছে
x=input()
l=len(x)
for i in range(l):r=i*' '+x[i:]+x[:i]+(l+~i)*' ';print r+r[::-1]

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


1
l-1-iশুধু হতে পারে l+~iযেমন~i == -i-1
ovs

1

8 ম , 173 168 বাইট

কোড

s:len n:1- ( >r dup s:len n:1- "" ( " " s:+ ) rot times dup 0 r@ s:slice -rot r> -1 s:slice s:+ s:+ dup s:rev swap . . cr null s:/ a:shift a:push "" a:join ) 0 rot loop

মন্তব্য সহ দর্শনীয় সংস্করণ

: shifter \ s -- s
  null s:/     \ convert string into array
  a:shift      \ remove the first item in the array and put it on TOS
  a:push       \ append the former 1st item to array
  "" a:join    \ convert array into string
;

: stairway \ s -- s
  s:len n:1-
  (
    >r                       \ save loop index
    dup                      \ duplicate input string 
    s:len n:1-               \ get string length
    "" ( " " s:+ ) rot times \ make filler
    dup                      \ duplicate filler 
    0 r@ s:slice             \ make left filler
    -rot                     \ put left filler at proper position
    r> -1 s:slice            \ make right filler
    s:+ s:+                  \ build string ( 1st half of stairway )
    dup s:rev                \ build 2nd half 
    swap . . cr              \ print it
    shifter                  \ shift rotate 1st character
  ) 0 rot loop               \ loop from 0 to len(string)-1
;

ব্যবহার এবং উদাহরণ

ok> "abcd" s:len n:1- ( >r dup s:len n:1- "" ( " " s:+ ) rot times dup 0 r@ s:slice -rot r> -1 s:slice s:+ s:+ dup s:rev swap . . cr null s:/ a:shift a:push "" a:join ) 0 rot loop
abcd      dcba
 bcda    adcb 
  cdab  badc  
   dabccbad 

বা আরও পরিষ্কারভাবে

ok> "Code golf" stairway
Code golf                flog edoC
 ode golfC              Cflog edo 
  de golfCo            oCflog ed  
   e golfCod          doCflog e   
     golfCode        edoCflog     
     golfCode        edoCflog     
      olfCode g    g edoCflo      
       lfCode go  og edoCfl       
        fCode gollog edoCf 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.