একটি সুপার অ্যাক্রোস্টিক তৈরি করুন


35

পটভূমি

ডায়ালগ এপিএল 16.0 এর মুক্তির উদযাপন , যেখানে এই সমস্যার সমাধান {⊢⌺(≢⍵)⊢⍵}ব্যাখ্যা

কার্য

একটি মুদ্রণযোগ্য হওয়া ASCII স্ট্রিং প্রদত্ত বিজোড় দৈর্ঘ্যের এন , একটি করা এন × এন স্ট্রিং সঙ্গে বর্গক্ষেত্র অনুভূমিকভাবে কেন্দ্রিক, উল্লম্বভাবে কেন্দ্রীভূত করা সদৃশ, এবং প্রতিটি সারি ও কলাম একই স্ট্রিং এর acrostics সঙ্গে। নোট করুন যে বর্গের আকার n × n রাখতে কেন্দ্রিক স্ট্রিং ব্যতীত অন্য সমস্ত কেটে দেওয়া হবে ।

আপনার কোড ব্যাখ্যা অনেক প্রশংসা করা হবে।

বিধি

  1. আপনার পেছনের শ্বেতক্ষেত্র এবং নিউলাইন থাকতে পারে (এটিতে নীচের ডানদিকে ত্রিভুজ অন্তর্ভুক্ত রয়েছে)
  2. আপনি স্ট্রিংয়ের একটি তালিকা ফিরে আসতে পারেন

স্ট্রিং ব্যবহার করে উদাহরণ ABXCD:

  • এন হয় 5. প্রথমে আমরা দুটি কেন্দ্রিক স্ট্রিং আঁকি, একটি অনুভূমিক এবং একটি উল্লম্ব:

    ┌─────┐
    │ এ
    │ বি
    │ABXCD│
    │ সি │
    │ ডি
    └─────┘
    

    (5 × 5 বাউন্ডিং বাক্স স্পষ্টতার জন্য যুক্ত করা হয়েছে)

  • তারপরে আমরা সমস্ত সম্ভাব্য অ্যাক্রোস্টিকগুলি আনুভূমিকভাবে এবং উল্লম্বভাবে রাখি:

           একজন
          এবি
      ┌─────┐
      │ ABX│CD
      │ ABXC│D
      │ABXCD│
     A│BXCD │
    AB│XCD │
      └─────┘
       সিডি
       ডি
    
  • শেষ অবধি, আমরা কেবল সীমানা বাক্সের ভিতরে যা ফিরিয়ে আনব:

      ABX
     ABXC
    ABXCD
    BXCD 
    XCD  
    

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

World:

  Wor
 Worl
World
orld
rld

mississippi:

     missis
    mississ
   mississi
  mississip
 mississipp
mississippi
ississippi
ssissippi
sissippi
issippi
ssippi

Pneumonoultramicroscopicsilicovolcanoconiosis:

                      Pneumonoultramicroscopi
                     Pneumonoultramicroscopic
                    Pneumonoultramicroscopics
                   Pneumonoultramicroscopicsi
                  Pneumonoultramicroscopicsil
                 Pneumonoultramicroscopicsili
                Pneumonoultramicroscopicsilic
               Pneumonoultramicroscopicsilico
              Pneumonoultramicroscopicsilicov
             Pneumonoultramicroscopicsilicovo
            Pneumonoultramicroscopicsilicovol
           Pneumonoultramicroscopicsilicovolc
          Pneumonoultramicroscopicsilicovolca
         Pneumonoultramicroscopicsilicovolcan
        Pneumonoultramicroscopicsilicovolcano
       Pneumonoultramicroscopicsilicovolcanoc
      Pneumonoultramicroscopicsilicovolcanoco
     Pneumonoultramicroscopicsilicovolcanocon
    Pneumonoultramicroscopicsilicovolcanoconi
   Pneumonoultramicroscopicsilicovolcanoconio
  Pneumonoultramicroscopicsilicovolcanoconios
 Pneumonoultramicroscopicsilicovolcanoconiosi
Pneumonoultramicroscopicsilicovolcanoconiosis
neumonoultramicroscopicsilicovolcanoconiosis
eumonoultramicroscopicsilicovolcanoconiosis
umonoultramicroscopicsilicovolcanoconiosis
monoultramicroscopicsilicovolcanoconiosis
onoultramicroscopicsilicovolcanoconiosis
noultramicroscopicsilicovolcanoconiosis
oultramicroscopicsilicovolcanoconiosis
ultramicroscopicsilicovolcanoconiosis
ltramicroscopicsilicovolcanoconiosis
tramicroscopicsilicovolcanoconiosis
ramicroscopicsilicovolcanoconiosis
amicroscopicsilicovolcanoconiosis
microscopicsilicovolcanoconiosis
icroscopicsilicovolcanoconiosis
croscopicsilicovolcanoconiosis
roscopicsilicovolcanoconiosis
oscopicsilicovolcanoconiosis
scopicsilicovolcanoconiosis
copicsilicovolcanoconiosis
opicsilicovolcanoconiosis
picsilicovolcanoconiosis
icsilicovolcanoconiosis

প্রাপ্তি স্বীকার

ধন্যবাদ জাজিমা , লিকি নুন , মিঃ এক্সকোডার সবকিছুর জন্য , তবে এই চ্যালেঞ্জের ধারণাটি।


1
নীচের ডানদিকে স্পেস-ট্রায়ঞ্জকে অন্তর্ভুক্ত করতে হবে কি না?
flawr

1
@ ফ্লোয়ার ওপি: মে
অ্যাডম

উত্তর:



5

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

nXyPGZ+c

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

ব্যাখ্যা

n    % Implicit input. Number of elements
Xy   % Identity matrix of that size
P    % Flip vertically
G    % Push input again
Z+   % 2D convolution, maintaining size
c    % Convert to char (char 0 is displayed as space). Implicitly display

1
কে ভেবেছিল যে আমি এই উত্তরটি পছন্দ করব: ডি
ফ্লাওয়ার

1
@ ফ্লোয়ার হ্যাঁ, কে ভেবেছিলেন
লুইস মেন্ডো

4

রেটিনা , 70 59 বাইট

.
$.'$* $_$.`$* ¶
(?=((....))+)(?<-1>.)+(.*?)(?<-2>.)+¶
$3¶

এটি অনলাইন চেষ্টা করুন! সম্পাদনা করুন: @ মার্টিনএেন্ডারের কিছু সহায়তায় 11 বাইট সংরক্ষণ করা হয়েছে। ব্যাখ্যা: প্রথম পর্যায়ে প্রতিটি অক্ষরের জন্য একবার ইনপুট পুনরাবৃত্তি করে, শিয়ারটি পেতে প্রতিটি লাইনে যথাযথভাবে প্যাড করে। শেষ পর্যায়ে তারপরে কাঙ্ক্ষিত ফলাফল তৈরি করতে প্রতিটি দিক থেকে 25% সরিয়ে ফেলা হয়।


আমি মনে করি আমার আগে 59 ছিল। এখন বিশদ বিবরণটি খনন করার সময় নেই না, কিন্তু মূলত প্রথম পর্যায়ে আমি শুধু ইনপুট padded n/2স্পেস বাম এবং ডান (কিছু ব্যবহার (..)+.-> $#1$* $&$#1$*একটি trailing স্থান সঙ্গে) এবং তারপর শুধু একটি করেনি !&`...যেখানে ...ম্যাচ nঠিক nঅক্ষর।
মার্টিন ইন্ডার

আপনার পদ্ধতিটি কমপক্ষে 63 এ সংক্ষিপ্ত করা যেতে পারে: tio.run/##K0otycxL/…
মার্টিন

@ মার্টিনএন্ডার ধন্যবাদ, এবং আমি আরও 4 বাইট বন্ধ গল্ফ করেছি!
নীল

তোমার কি দ্বিতীয় দরকার $*sp?
ক্যালকুলেটরফলাইন

@ ক্যালকুলেটরফালাইন হ্যাঁ, আমার একই লম্বা হওয়ার জন্য সমস্ত লাইন দরকার, তাই আমি এটিকে 4 দিয়ে ভাগ করতে পারি
নীল

3

জাভা 8, 120 103 বাইট

s->{int l=s.length(),i=l/2;for(;i-->0;s=" "+s+" ");for(;++i<l;System.out.println(s.substring(i,l+i)));}

-17 বাইট @ অলিভিগ্রগ্রোয়ারকে ধন্যবাদ জানায়

ব্যাখ্যা:

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

s->{                      // Method with String parameter and no return-type
  int l=s.length(),       //  Length of the input-String
      i=l/2;              //  Temp index-integer (starting at halve the length floored)
  for(;i-->0;             //  Loop (1) from `l/2` to 0 (exclusive)
    s=" "+s+" "           //   Add spaces before and after the input-String
  );                      //  End of loop (1)
                          //  (If the input was "World", it is now "  World  ")
  for(;++i<l;             //  Loop (2) from 0 to `l` (exclusive)
    System.out.println(   //   Print:
      s.substring(i,      //    Substring of the modified input from `i`
                    l+i)  //    to `l+i` (exclusive)
    )                     //   End of print
  );                      //  End of loop (2)
}                         // End of method

i=l/2+1এবং i-->1এবং for(;i<lএকটি বাইট সংরক্ষণ করুন।
অলিভিয়ার গ্রাগোয়ার

1
এবং ... সম্পূর্ণ গল্ফড: s->{int l=s.length(),i=l/2;while(i-->0)s=" "+s+" ";while(++i<l)System.out.println(s.substring(i,l+i));}(103 বাইট) একমাত্র তাত্পর্যপূর্ণ পরিবর্তনটি হ'ল স্পেস সহ স্ট্রিংটি একবার "সবার উপরে" পরিবর্তে তৈরি করা হয় (এবং অবশ্যই ফিরে আসার পরিবর্তে মুদ্রণ হয়)।
অলিভিয়ার গ্রাগোয়ার

3

হাস্কেল, 62৪ 62 বাইট

f s|l<-length s=take l$take l<$>scanr(:)""(([2,4..l]>>" ")++s)

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

l<-length s               -- let l be the length of the input string

      ([2,4..l]>>" ")     -- take l/2 spaces and
                     ++s  -- append s
    scanr(:)""            -- make a list of the inits of the above string, e.g.
                          -- "  world" -> ["  world"," world","world","orld"...]
  take l <$>              -- take the first l chars of each string
take l                    -- and the first l strings

3

এসডাব্লুআই প্রোলগ, 234 বাইট

h(_,0,_,_,[]).
h(T,N,S,L,[H|U]):-sub_string(T,S,L,_,H),M is N-1,A is S+1,h(T,M,A,L,U).
s(T,R):-string_length(T,L),findall('_',between(1,L,_),A),string_chars(B,A),
                   string_concat(B,T,C),string_concat(C,B,D),S is L-((L-1)/2),h(D,L,S,L,R).

এখানে অনলাইনে চেষ্টা করুন: http://swish.swi-prolog.org/p/hEKigfEl.pl

বিশেষ দ্রষ্টব্য।

  1. শেষ লাইনটি একটি দীর্ঘ লাইন, আমি এই উত্তরে অনুভূমিক স্ক্রোলবার এড়াতে এখানে একটি লাইন ব্রেক এবং স্পেস যুক্ত করেছি।
  2. প্রশ্নটি প্যাডিংয়ের জন্য স্পেসগুলি জড়িত করে, তবে এইচটিএমএল রেন্ডারিং মিথস্ক্রিয়তার কারণে অনলাইন স্যুইশ অনলাইনে সেগুলি পরিষ্কারভাবে দেখায় না, আপনি উপস্থিত আছেন কিনা তা যাচাই করার জন্য আপনাকে ব্রাউজার ডেভ সরঞ্জামগুলিতে উত্স দেখতে হবে (তারা আছেন)। আমি _এখানে প্যাডিং পরিবর্তন করেছি , কারণ এটি এটি কার্যকরভাবে দেখায় এবং বাইট গণনাকে প্রভাবিত করে না।

সোয়েসে চলছে উদাহরণ:

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

অ্যাপ্রোচ, মূলত আমি প্রথমে যে কাজটি করতে পেরেছিলাম তা অবশ্যই দক্ষ দক্ষ প্রোলোগ ব্যবহারকারী এটিকে অনেক ছোট করতে পারে:

  • দৈর্ঘ্যের এল এর স্ট্রিং দেওয়া হয়েছে, আউটপুটটিতে L রেখা থাকবে এবং প্রতিটি লাইন L অক্ষর দীর্ঘ হবে, সুতরাং 'L' অনেক কিছু দেখায়। লাইনের সংখ্যার জন্য এল থেকে 0 থেকে কাউন্টডাউন, প্রতিটি লাইনের জন্য স্ট্রিং দৈর্ঘ্যের জন্য এল।
  • এল স্পেসের একটি প্যাডিং স্ট্রিং তৈরি করুন (আন্ডারস্কোর) দীর্ঘ, এটি ইনপুট স্ট্রিংয়ের উভয় প্রান্তে যুক্ত করুন, কারণ এটি একটি সাধারণ দৈর্ঘ্য যা অবশ্যই যথেষ্ট প্যাডিং হতে চলেছে।
  • এই ট্রিপল-দৈর্ঘ্যের স্ট্রিংয়ের একটি অফসেট গণনা করুন এবং ফলাফলগুলির তালিকায় প্রতিবার একটি স্ট্রিং তৈরি করে পুনরাবৃত্তি করুন।

ব্যাখ্যা করা এবং মন্তব্য করা কোড (চালানো নাও হতে পারে), superacrostic()নীচে থেকে পড়ুন , তারপরে helper()মূল সংস্থা, তারপরে helper()বেস কেস:

% helper function recursive base case, 
% matches when counter is 0, other input has any values, and empty list 'output'.
helper(_,0,_,_,[]). 



% helper function recursively generates substrings
% matching a padded input Text, a line Counter
% a substring starting Offset, a line Length,
% and an output list with a Head and a Tail
helper(Text, Counter, Offset, LineLength, [Head|Tail]):-

    sub_string(Text, Offset, LineLength, _, Head),    % The list Head matches
                                                      % a substring of Text starting 
                                                      % from Offset, of LineLength chars 
                                                      % and

    NextCounter is Counter-1,                         % decrement the Counter

    NextOffset is Offset+1,                           % increment the offset

    helper(Text, NextCounter, NextOffset, LineLength, Tail).  % Recurse for list Tail



% Result is a superacrostic for an input string Text, if
superacrostic(Text, Result):-
    string_length(Text, Length),                   % Length is length of input, 
                                                   % Text = 'ABXCD', Length = 5
                                                   % and

    findall('_',between(1,Length,_),PaddingList),  % PaddingList is a list of padding
                                                   % chars Length items long, 
                                                   % ['_', '_', '_', '_', '_']
                                                   % and

    string_chars(PaddingString, PaddingChars),     % PaddingString is the string from 
                                                   % joining up that list of chars
                                                   % '_____'
                                                   % and

    string_concat(PaddingString, Text, Temp),      % Temp is Text input with a
                                                   % padding prefix
                                                   % Temp = '_____ABXCD'
                                                   % and

    string_concat(Temp, PaddingString, PaddedText), % PaddedText is Temp with 
                                                    % a padded suffix
                                                    % Temp = '_____ABXCD_____'
                                                    % and


    S is Length - ((Length - 1) / 2),              % Starting offset S for the substring
                                                   % is just past the padding,
                                                   % then half the input length back
                                                   % '_____ABXCD_____'
                                                   %     |
                                                   % to start the first line,
                                                   % and


    helper(PaddedText, Length, S, Length, Result). % Result is the list generated from 
                                                   % the helper function, 

    % to recurse Length times for that many output rows, S starting offset, 
    % Length linelength, and Result 'output'.


2

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

f=(s,k=1,l=s.length)=>k>l?'':(' '.repeat(l)+s).substr(l/2+k,l)+`
`+f(s,k+1)

console.log(f("World"))


72 বাইট । বা 70 টি বাইট যদি আপনি ES8 এর সাথে যেতে চান তবে আমার মতো।
শেগি

2

এপিএল (ডায়ালগ ইউনিকোড) , 10 টি অক্ষর = 22 বাইট

{⊢⌺(≢⍵)⊢⍵}

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

{} বেনামে ফাংশন যেখানে আর্গুমেন্টটি represented দ্বারা প্রতিনিধিত্ব করে

 যখন আচ্ছাদিত অঞ্চল প্রদান

⌺() আকারের স্টেনসিল সহচরী

   এর দৈর্ঘ্য

   যুক্তি

 উপর

 যুক্তি

প্রতিটি অক্ষরটিকে ইনপুট হিসাবে একই দৈর্ঘ্যের সাথে স্ট্রিংয়ের মাঝখানে তৈরি করতে, প্রয়োজন অনুযায়ী বাম বা ডান প্যাডিংয়ের মাধ্যমে এটি কাজ করে। যেমন ধরুন ABXCD:

স্ট্রিংয়ের পাঁচটি অক্ষর রয়েছে, সুতরাং স্টেনসিলটিতে একটি "খোলার" থাকবে যা পাঁচটি অক্ষর প্রস্থের।

┌──↓──┐     মধ্যম মার্কারের সাথে স্টেনসিল খোলার
│ ABX│CD   দিন Aমধ্যম হতে
 │ ABXC│D   তারপর B
  │ABXCD|   ইত্যাদি
  A|BXCD | 
  AB|XCD  |
    └──↑──┘ চূড়ান্ত স্টেনসিল অবস্থান



2

জাভাস্ক্রিপ্ট (ES8), 66 63 62 বাইট

একটি অ্যারে প্রদান করে।

s=>[...s].map((_,x)=>s.padStart(l*1.5).substr(x,l),l=s.length)

চেষ্টা করে দেখুন

o.innerText=(f=
s=>[...s].map((_,x)=>s.padStart(l*1.5).substr(x,l),l=s.length)
)(i.value="Pneumonoultramicroscopicsilicovolcanoconiosis").join`\n`;oninput=_=>o.innerText=f(i.value).join`\n`
<input id=i><pre id=o>


ব্যাখ্যা

s=>

প্যারামিটারের মাধ্যমে স্ট্রিংটিকে আর্গুমেন্ট হিসাবে গ্রহণ করে বেনামে ফাংশন s

[...s]

স্ট্রিংটিকে পৃথক অক্ষরের অ্যারেতে বিভক্ত করুন।

l=s.length

স্ট্রিংয়ের দৈর্ঘ্য পান এবং এটিকে ভেরিয়েবলের জন্য বরাদ্দ করুন l

.map((_,x)=>                                        )

অ্যারের উপরে মানচিত্র তৈরি করুন, প্রতিটি ফাংশন দিয়ে প্রতিটি উপাদান অতিক্রম করছেন যেখানে xবর্তমান উপাদানটির সূচক রয়েছে।

s.padStart(l*1.5)

প্রতিটি উপাদানের জন্য, দৈর্ঘ্যের মূল দৈর্ঘ্যের 1.5 গুন না হওয়া অবধি মূল স্ট্রিংগুলি পূর্ববর্তী স্থানগুলি দিয়ে চাপান।

.substr(x,l)

lবর্তমান উপাদানের সূচক থেকে শুরু করে দৈর্ঘ্যের সাবস্ট্রিং পান ।


2

ভি , 14 , 11 বাইট

òlÙxHÄ$x>>ê

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

3 বাইট সংরক্ষিত @nmjmcman ধন্যবাদ!

Hexdump:

00000000: f26c d978 48c4 2478 3e3e ea              .l.xH.$x>>.

আসল পদ্ধতির (18 বাইট):

ø..
Duu@"ñLÙxHÄ$x>

ব্যাখ্যা:

ò           " Recursively:
 l          "   Move one char to the right (this will break the loop if we move too far
  Ù         "   Duplicate this line down
   x        "   Delete the first character on this line
    H       "   Move to the first line
     Ä      "   Duplicate this line up
      $     "   Move to the end of this line
       x    "   And delete a character
        >>  "   Put one space at the beginning of this line
          ê "   And move to this column on the last line
            " (implicit) ò, end the loop.

কয়েকটি বাইট সংরক্ষণ করুন: এটি অনলাইনে চেষ্টা করুন!
nmjcman101

@ nmjcman101 আহ, এটাই প্রতিভা! আমি সম্পূর্ণরূপে ভুলে গেছি ê। ধন্যবাদ :)
ডিজেএমসিএমহেম

2

পাওয়ারশেল কোর , 68 বাইট

0..($L=($a="$args").Length-1)|%{-join(' '*($L/2)+$a)[($_..($_+$L))]}

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

নিরর্থক ব্যাখ্যা

# Input string ABXCD
# -> indexes  0,1,2,3,4  string indexing and num of output lines.
# -> Pad with half-len of spaces __ABXCD.
# -> sliding window array of chars:
# __ABXCD
# |    |       0..4
#  |    |      1..5
#   |    |     2..6
#    |    |    3..7   (selecting indexes past the end returns $nulls, no error)
#     |    |   4..8

# joining those chars into a line


$Text = "$args"                            # script args array to string.
$L    = $Text.Length - 1                   # useful number

$Offsets = 0..$L                           # range array 0,1,2,3,.. to last offset

$Offsets | ForEach-Object {                # Offsets doubles as number of output lines

    $LinePadding = ' ' * ($L / 2)          # lead padding string __
    $PaddedText  = $LinePadding + $Text    # -> __ABXCD

    $Chars = $_..($_+$L)                   # windows 0..4, then 1..5, then 2..6, etc.
    $Line  = $PaddedText[$Chars]           #_,_,A,B,X then _,A,B,X,C then A,B,X,C,D etc.

    -join $Line                            # __ABX  then _ABXC then ABXCD etc.

}

1
যোগদান করা উনল্ফের যত্ন [($_..($_+$L))]?
রুটটি

সংক্ষিপ্ত উত্তর @root, (যেতে না দিয়ে যোগ দিতে, তা করছেন -join ($Padding + $Text)[0,1,2,3,4]একটি আউটপুট লাইন জন্য একটি padded স্ট্রিং কয়েকটি অক্ষর নির্বাচন করতে, এবং এরকম একটি সংক্ষিপ্ত উপায় হতে একটি স্ট্রিং মধ্যে যারা যোগদান .SubString()। এবং এটি জায়গায় প্যাডিং এবং জায়গায় অক্ষরের পরিসর তৈরি করছে। আমার উত্তরটিতে পুরো উনলগফের ব্যাখ্যা যুক্ত হয়েছে।
টেসেল্ল্যাটিংহেকলারের

2

জাপট , 19 17 14 বাইট

@ ইথ প্রডাকশন এবং @ শেগির জন্য 5 টি বাইট সংরক্ষণ করা হয়েছে

¬£iSp½*Ul¹tYUl

এটি অনলাইন পরীক্ষা! -Rনিউলাইনগুলির সাথে যোগ দেওয়ার জন্য পতাকা যুক্ত করা হয়েছে (দৃশ্যমানতার উদ্দেশ্যে)

ব্যাখ্যা

¬£iSp½*Ul¹tYUl
                U = Implicit input
¬               Split the input into an array of chars
 £              Map; At each char:
  i               Insert:
   S                Space " "
    p               repeated(
     ½*Ul           .5 * U.length times 
         ¹          )
          t        Substring(
           Y         Index,
            Ul       U.length) 

1
সেখানে উৎপন্ন করার জন্য একটি অনেক খাটো পথ হওয়া উচিত Sp½*Ul, কিন্তু আমি মনে করি না এক এটিএম হয় না ... BTW, আপনি সাধারণত পরিবর্তন করতে পারেন sXX+Yথেকে tXY( s == .slice, t == .substr)
ETHproductions

@ এথ প্রডাকশন ওহ হ্যাঁ, ধন্যবাদ!
অলিভার


অথবা, অ্যারে ফেরত দেওয়ার অনুমতি হিসাবে 14 বাইট অনুমোদিত
শেগি



1

কিউবিআইসি , 32 বাইট

_L;|A=space$(a'\`2)+A[a|?_sA,b,a    

মনুষ্য, space$কিউবিআইসিতে আমার যোগ করার সময় ...

ব্যাখ্যা

  ;             Read a cmd line parameter as A$
_L |            And take its length as 'a'
A=space$        Set A$ to a number of spaces
(a'\`2)           equal to its own length halved
+A                prepended to itself
[a|             FOR b= 1 to the length of A$
?_sA,b,a        Print a substring of our space-padded A$, starting at the b'th character, running for a chars

নমুনা রান

Command line: acknowledgement
       acknowle
      acknowled
     acknowledg
    acknowledge
   acknowledgem
  acknowledgeme
 acknowledgemen
acknowledgement
cknowledgement
knowledgement
nowledgement
owledgement
wledgement
ledgement
edgement

1

গণিত, 88 বাইট

T=Table;Column@Reverse@T[T[" ",i]<>StringDrop[s=#,-i],{i,d=-⌊StringLength@s/2⌋,-d}]&

1

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

এটি (এখনও) বেশ দীর্ঘ, তবে বার্তাভেলিকে ধন্যবাদ মনে করিয়ে দেওয়ার জন্য যে স্ট্রিংগুলির একটি তালিকা আউটপুট করাও গ্রহণযোগ্য!

f s|m<-div(length s)2=take(2*m+1).(`drop`((*>)s" "++s))<$>[m+1..3*m+1]

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


আমি কেবল ৮২ এ পৌঁছাতে পারলাম: অনলাইনে চেষ্টা করে দেখুন!
বার্তাভেল

পছন্দ করেছেন আপনার ডান দিকটি কাটা হয়নি।
Adám

হ্যাঁ আমি একটি বাগ প্রবর্তিত! আপনার কনক্যাটটি ফেলে দিয়ে আপনি কিছুটা অর্জন করতে পারেন: অনলাইনে চেষ্টা করে দেখুন!
বার্তাভেল 16

এটি কেটে দেওয়ার সাথে সাথে 84 টি আপনার এপ্রোচ আরও ভাল করে তুলছে! এটি অনলাইন চেষ্টা করুন!
বার্তাভেল 16

এবং আপনি আরও অনেক কিছু সঞ্চয় করতে পারেন, কারণ আপনার একক স্ট্রিং ফেরার দরকার নেই, স্ট্রিংগুলির তালিকাও ঠিক আছে!
বার্তাভেল


1

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

$a="$args";$L=$a.Length;$m=($L+1)/2;$s=" "*($m-1)+$a+" "*($m-1);for($h=0;$h-lt$L;$h++){$r="";0..$L|%{$r+=$s[$_+$h]};$r}

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

Ungolfed

$a="$args"
$L=$a.Length                        # the length of the input
$m=($L + 1) / 2                     # the midpoint of the input
$s=" " * ($m-1) + $a + " " * ($m-1) # create a string using the input and padded on both sides with spaces

for($h=0;$h -lt $L;$h++) {          # the height, matching the length of the input
    $r=""                           # init/reset the output string

    0..$L | % {                     # number range to represent each character in the string
        $r+=$s[$_+$h]               # append the output string with the next character
    }

    $r                              # write the output
}

1
চমৎকার উত্তর! সাইটে স্বাগতম। :)
ডিজেএমসিমেহেম

1

পাইথন 2 ,76 74 73 বাইট

-1 ফিলিপনার্ডিবাটিস্টাকে ধন্যবাদ

অবশ্যই, অন্যান্য পাইথন উত্তরের মতো সংক্ষিপ্ত নয়, তবে এটি সম্পূর্ণ আলাদা পদ্ধতিতে চেষ্টা করার মতো:

n=input();x=len(n)
for i in range(x):print((2*x-~i)*' '+n)[x+x/2:2*x+x/2]

এটি অনলাইন চেষ্টা করুন! (by৪ বাইট সংস্করণ সহ)

এটি প্রথমে সম্পূর্ণ স্ট্রিং তৈরি করে এবং তারপরে স্কোয়ারে ফিট করার জন্য এটি টুকরো টুকরো করে।


ব্যাখ্যা

এন = ইনপুট (); - ইনপুট নেয় এবং এটিকে একটি ভেরিয়েবল এন-এর জন্য নিযুক্ত করে
          x = লেন (এন) - ইনপুটটির দৈর্ঘ্য একটি ভেরিয়েবল এক্সকে নির্ধারণ করে
আমার পরিসীমা (x) এর জন্য: - 0 এর সাথে পরিসীমা পুনরায় করা হয় ... x, একটি ভেরিয়েবল সহ
                   মুদ্রণ - ফলাফল আউটপুট
                         ((2 * xi-1) * '' + n) - "হীরা" স্ট্রিং তৈরি করে
                                          [x + x / 2: 2 * x + x / 2] - বাক্সটি ফিট করার জন্য স্ট্রিংটি কেটে দেয়

(2*x+~i)একটি বাইট সংরক্ষণ করতে
ফিলিপ নারদী বাটিস্তা

@ ফিলিপনার্দিবাটিস্তা ধন্যবাদ

1

জে , 19 বাইট

|.!.' '"{~2%~#\-#\.

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

ব্যাখ্যা

|.!.' '"{~2%~#\-#\.  Input: string S
             #\      Length of each prefix of S, [1, 2, ..., len(S)]
                #\.  Length of each suffix of S, [len(s), ..., 2, 1]
               -     Subtract elementwise
          2%~        Divide by 2
                     We now have a range [(1-len(S))/2, ..., -1, 0, 1, ..., (len(S)-1)/2]
       "{~           Use each value to operate on S
|.!.' '                Perform a shift while replacing characters with ' '

সঙ্গে কাজ করে ''প্রতিস্থাপন হিসাবে।
ফ্রেউনিফ্রোগ

0

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

(a)=>{int L=a.Length,l=L/2;for(;l-->0;)a=" "+a+" ";for(;++l<L;)Console.WriteLine(a.Substring(l,L));};

মূলত @ কেভিনক্রুজসনের উত্তর। 2 বাইটের সঞ্চয় string.Lengthকরে কারণ () এবং অন্য 2 বাইটের প্রয়োজন হয় না কারণ দ্বিতীয় তর্কটি string.Substring()সূচকের শেষের চেয়ে দৈর্ঘ্য হয় তবে লম্বা হওয়ার কারণে Console.WriteLine()এটি 2 বাইট হারায় l আমার আরও নিষ্পাপ বাস্তবায়ন হয়েছিল, তবে এটি প্রায় দ্বিগুণ ছিল ...


0

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

Golfed

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

l=[Len(A1)]:For i=Int(-l/2)+2To l/2+1:?Mid(Space(l-i)&[A1],l,l):Next

Ungolfed

Sub C(ByVal s As String)
    Let l = Len(s)
    For i = Int(-l / 2) + 2 To l / 2 + 1 Step 1
        Debug.Print Mid(Space(l - i) & s, l, l)
    Next i
End Sub

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