একটি স্ট্রিং উদ্বোধন করুন


27

একটি বর্গক্ষেত্র স্ট্রিং দেওয়া হয়েছে, স্ট্রিংয়ের জন্য সমস্ত ফলাফল আউটফার্লিংয়ের প্রতিটি পর্যায়ে উত্পাদন করে।

স্ট্রিংটি ঘড়ির কাঁটার দিকে একবারে এক চতুর্থাংশ ঘুরিয়ে আনতে হবে।

উদাহরণ

ইনপুট :

A

আউটপুট :

A

দ্রষ্টব্য : আমি এই নির্দিষ্ট পরীক্ষার ক্ষেত্রে ডুপ্লিকেটেড ইনপুটটি কেবল তখনই গ্রহণ করব যদি এটি আপনার বাইট গণনা হ্রাস করতে সহায়তা করে।

ইনপুট :

DC
AB

আউটপুট :

DC
AB

  D
ABC

ABCD

ইনপুট :

GFE
HID
ABC

আউটপুট :

GFE
HID
ABC

   HG
   IF
ABCDE

     IH
ABCDEFG

       I
ABCDEFGH

ABCDEFGHI

ইনপুট :

JIHG
KPOF
LMNE
ABCD

আউটপুট :

JIHG
KPOF
LMNE
ABCD

    LKJ
    MPI
    NOH
ABCDEFG

       NML
       OPK
ABCDEFGHIJ

          ON
          PM
ABCDEFGHIJKL

            PO
ABCDEFGHIJKLMN

              P
ABCDEFGHIJKLMNO

ABCDEFGHIJKLMNOP

বিধি

এটি তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।

  • যে কোনও যুক্তিসঙ্গত ফর্ম্যাটটি I / O এর জন্য এটি ধারাবাহিক বলে ধরে ধরে ব্যবহার করা যেতে পারে।
  • আউটপুট শীর্ষ লাইন প্যাড করতে স্পেস ব্যবহার করা আবশ্যক।
  • সমস্ত মুদ্রণযোগ্য অক্ষরের ইনপুট হ্যান্ডেল করতে সক্ষম হতে হবে (স্থান সহ: \x20- \x7e):
 ।? "# $% & '() * + - / 0123456789; @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^: _` ABCDEFGHIJKLMNOPQRSTUVWXYZ {|} ~
  • শীর্ষস্থানীয় / পিছনের সাদা স্থান অনুমোদিত ites
  • আপনি ধরে নিতে পারেন স্ট্রিংটি সর্বদা একটি বর্গক্ষেত্র হবে।
  • সমস্ত স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।

অনুপ্রেরণা: একটি স্কোয়ার প্রোগ্রাম লিখুন যা এটি "তালিকাভুক্ত" না হওয়া বারের চেয়ে বেশি হয়


আমরা আউটপুট মে ["A","A"]জন্য "A", মত আমার প্রোগ্রাম (পরিবর্তে আছে ["A"])? এগুলি আমার পক্ষে যুক্তিসঙ্গত বলে মনে হচ্ছে যেহেতু তারা কেবলমাত্র শুরু এবং শেষের অবস্থান, এবং আপনি কেবল একবার এটি উন্মুক্ত করার চেষ্টা করছেন।
মিঃ এক্সকোডার

@ মিঃ এক্সকোডার আমি সম্মত, নির্দিষ্ট পরীক্ষার কেসটি পূরণের জন্য কোড যুক্ত করা বাইটের অপচয় হিসাবে মনে হচ্ছে। আমি একক বাইট ইনপুট জন্য এটি গ্রহণ করব এবং সেই অনুযায়ী প্রশ্ন আপডেট করব!
ডম হেস্টিংস

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

@ মিঃ এক্সকোডার আমি আনন্দিত আপনি এটি পছন্দ করেছেন! আমি আশা করি আমি একা এই ধারণাটি নিয়ে আসার জন্য কৃতিত্ব নিতে পারি, তবে এটি হেল্কাহোম্বার চ্যালেঞ্জের জন্য সমস্ত ধন্যবাদ !
ডম হেস্টিংস

উত্তর:


9

এসওজিএল ভি0.12 , 21 20 19 18 17 বাইট

ø;[;ο⁴№č▓┼№TJι;jI

এখানে চেষ্টা করুন! ( যুক্ত হয়েছে কারণ এটি স্ট্যাকের ইনপুট আশা করে)

ব্যাখ্যা:

ø;[;ο⁴№č▓┼№TJι;jI
ø;               push an empty string below the input           stack with the input GFE,HID,ABC
  [              while [ToS (the array) isn't empty] do       ["", [["G","F","E"],["H","I","D"],["A","B","C"]]]  
                                                                stack at the second time looping
   ;               duplicate 2nd from top                     [[[H,G], [I,F], [D,E]], "ABC"]
    ο              wrap it in an array                        [[[H,G], [I,F], [D,E]], ["ABC"]]
     ⁴             duplicate 2nd from top                     [[[H,G], [I,F], [D,E]], ["ABC"], [[H,G], [I,F], [D,E]]]
      №            reverse vertically                         [[[H,G], [I,F], [D,E]], ["ABC"], [[D,E], [I,F], [H,G]]]
       č▓          join the inner arrays (┼ fails otherwise)  [[[H,G], [I,F], [D,E]], ["ABC"], ["DE", "IF", "HG"]]
         ┼         add the 2 parts together                   [[[H,G], [I,F], [D,E]], ["ABCDE", "   IF", "   HG"]]
          №        reverse vertically again                   [[[H,G], [I,F], [D,E]], ["   HG", "   IF", "ABCDE"]]
           T       print that without popping                 [[[H,G], [I,F], [D,E]], ["   HG", "   IF", "ABCDE"]]
            J      take the last line off                     [[[H,G], [I,F], [D,E]], ["   HG", "   IF"], "ABCDE"]
             ι     remove the rest of the array               [[[H,G], [I,F], [D,E]], "ABCDE"]
              ;j   remove the last line of the original array ["ABCDE", [[H,G], [I,F]]]
                I  rotate it clockwise                        ["ABCDE", [[I,H], [F,G]]]

7

পাইথন 2 , 209 207 205 203 202 201 200 196 বাইট

-কুয়েলক্লেফকে -4 বাইট ধন্যবাদ !

s=input();l=len;k=''.join;exec"print s;s=[x for x in[' '*l(s[0])+k(x[:-1]for x in s[-2::-1])[t::l(s[0])-1]for t in range(l(s[0]))][:-1]+[s[-1]+k(x[-1]for x in s)[-2::-1]]if x.strip()];"*(2*l(s)-1)

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

পাইথন 2 , 219 217 215 213 212 211 207 বাইট

s=input();l=len;k=''.join;exec"print'\\n'.join(s);s=[x for x in[' '*l(s[0])+k(x[:-1]for x in s[-2::-1])[t::l(s[0])-1]for t in range(l(s[0]))][:-1]+[s[-1]+k(x[-1]for x in s)[-2::-1]]if x.strip()];"*(2*l(s)-1)

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

স্ট্রিংগুলির তালিকার হিসাবে প্রথমটি আউটপুট, দ্বিতীয়টি এএসসিআইআই-আর্ট হিসাবে আউটপুট।


আমার ধারণা লিনের উত্তরের মতো [::-1][1:]হতে পারে [-2::-1]
কোয়েলক্লেফ

@ কিউলক্লেফ অনেক ধন্যবাদ!
মিঃ এক্সকোডার

4

কাঠকয়লা , 42 35 বাইট

AEθSθW⊟θ«⪫θ¶AEι⮌⪫Eθ§μλωθ⊞υι↙←⮌⪫υωD⎚

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। সম্পাদনা করুন: অক্ষর অ্যারে থেকে স্ট্রিংগুলিতে স্যুইচ করে বেশিরভাগ 7 টি বাইট সংরক্ষণ করা হয়েছে। ব্যাখ্যা:

AEθSθ

ভেরিয়েবলের স্ট্রিংগুলির অ্যারে হিসাবে ইনপুট স্কোয়ারটি পড়ুন q

W⊟θ«

অ্যারেতে শেষ স্ট্রিং খালি না থাকলেও, এটি সরান।

⪫θ¶

অ্যারের বাকী অংশ মুদ্রণ করুন।

AEι⮌⪫Eθ§μλωθ

শেষ স্ট্রিংয়ের প্রতিটি অক্ষরটি লুপ lকরে এবং বিপরীত অ্যারেটিতে প্রতিটি অবশিষ্ট স্ট্রিংয়ের তম অক্ষরে যোগদান করে বাকী অ্যারেটি ঘোরান ।

⊞υι↙←⮌⪫υω

পূর্বে সরানো শেষ স্ট্রিং এতে যুক্ত করুন u, যা উদ্যানহীন মান ধারণ করে এবং মুদ্রণ করে।

D⎚

ফলাফলটি আউটপুট করুন এবং তারপরে পরবর্তী পুনরাবৃত্তির জন্য প্রস্তুত ক্যানভাস সাফ করুন।

মনে রাখবেন যে এই সংস্করণটি একটি পৃথক লাইনে চূড়ান্ত উদ্বোধন ঘটায়, যদি এটি অনাকাঙ্ক্ষিত হয় তবে 38 বাইটের জন্য:

AEθSθW⊟θ«⊞υι←E⁺⟦⪫υω⟧⮌θ⮌κAEι⮌⪫Eθ§μλωθD⎚

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা: ←E⁺⟦⪫υω⟧⮌θ⮌κবর্তমান অ্যারেটিকে বিপরীতমুখী করে, সরল রেখাটিকে নতুনভাবে সংশোধন করে, তারপর প্রতিটি লাইনের অক্ষরগুলি বিপরীত করে, তারপরে সবকিছু উল্টো করে মুদ্রণ করে, ফলে কাঙ্ক্ষিত ফলাফল তৈরি হয়।


আমি এটি আরও চারকোল-ওয়াইয়ের সাথে করার চেষ্টা করেছি কিন্তু যেখানে আদেশ Rotateএবং Trimআদেশগুলি কার্সারটি রেখে গেছে সেখানে আমি কাজ করতে পারি না ...
নীল

3

হাস্কেল , 127 120 বাইট

e=[]:e
i#[x]=[]
i#s|t<-foldl(flip$zipWith(:))e$init s,j<-i++last s=(map((j>>" ")++)(init t)++[j++last t]):j#t
f s=s:""#s

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

ইনপুট, লাইন একটি তালিকা রয়েছে যেমন ["DC","AB"]দ্বিতীয় টেস্টে মামলা, আউটপুট লাইনের তালিকা একটি তালিকা রয়েছে: [["DC","AB"],[" D","ABC"],["ABCD"]]mapM (putStrLn . unlines)ফলাফলটি বেশ মুদ্রণ করতে ব্যবহার করুন ।

সম্পাদনা করুন: go টি বাইট সংরক্ষণ করে এটি লক্ষ্য করে যে খাটোটি কাজে আসার সময় আমি কিছুটা সংক্ষিপ্তtranspose দেখতে পেলাম কারণ এটি প্রত্যক্ষভাবে স্থানান্তরিত প্রতিটি প্রত্যাহারের বিপরীতে পরিবর্তন করা যেতে পারে।


2

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

[Dí.Bí»,¤UR¦ζŽ`Xì)

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

ব্যাখ্যা

[            Ž       # while stack is not empty, do:
 D                   # duplicate current list
  í                  # reverse each element
   .B                # pad with spaces to equal length
     í               # reverse each element again
      »,             # join with newlines and print
        ¤U           # store the last element in X
          R¦         # reverse the list and remove the first element
            ζ        # zip with spaces as filler
              `      # split elements separately to stack
               Xì    # prepend X to the last element
                 )   # join the stack to a list

2

জে, 62 বাইট

|."1@([:(#~[:-.[:*/"1' '=])|.@{:(}:@],{:@],[)|:@}:)^:(1<#)^:a:

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

আমি নিশ্চিত এটি অনেক গল্ফ করা যেতে পারে। এটি অতিরিক্ত হোয়াইটস্পেস মুদ্রণ করে তবে কেবল আউটপুটযুক্ত অ্যারের মধ্যে থাকা অ্যারেগুলিকে একই আকারের জন্য যেভাবে ফর্ম্যাট করে তার কারণেই J

আমি মনে করি একবার আমি andুকে যাচ্ছি এবং আমি যা করছি ঠিক তা মন্তব্য করার পরে, আমি কীভাবে এটি গল্ফ করব সে সম্পর্কে আরও ভাল ধারণা পেতে পারি (এখন এটি করার পরে আমি সত্যিই জানি না ...)। গল্ফ করার উদ্দেশ্যে, এটি লক্ষণীয়

  • আমাকে বিশেষ 1 কেস ইনপুটস (লুপটির কিছু অংশ) করতে হবে
  • আমাকে সম্পূর্ণ শ্বেতস্পেসের সাথে যুক্ত সমস্ত রেখাগুলি মুছে ফেলতে হবে (অবশ্যই এটির জন্য একটি বিল্টিন বা এটি করার আরও ভাল উপায় থাকতে হবে), যা শেষের কাছাকাছি ফিল্টার is
  • এখানে প্রচুর ক্যাপ, পরিচয় ফাংশন এবং শীর্ষস্থান রয়েছে

ব্যাখ্যা

এটি খোলাসা করে, আমি মূল ফাংশনটি তিনটিতে ভাগ করব।

unfurl_reversed   =. |.@{: (}:@] , {:@] , [) |:@}:
whitespace_filter =. #~ [: -. [: */"1 ' ' = ]
unfurl            =. |."1@(whitespace_filter @: unfurl_reversed) ^: (1 < #) ^: a:

test_case         =. 3 3 $ 'GFEHIDABC'

আমরা দ্বিতীয় পরীক্ষার কেস নিয়ে কাজ করব।

unfurl_reversed

|.@{: (}:@] , {:@] , [) |:@}:

এটি একবারে স্ট্রিংটি ফুরফুরে দেয় তবে বিপরীতে। এই সমস্তগুলি বিপরীতে এবং একটি নির্দিষ্ট ক্রমে করা হচ্ছে যাতে জে যেভাবে স্বয়ংক্রিয়ভাবে স্প্রেগুলির সাথে স্ট্রিংগুলিকে প্যাডগুলি প্লে করে যাতে তারা যে অ্যারের সাথে থাকে তার আকারের সাথে মেলে যাতে সঠিক ফাঁক দেয়।

|:@}: ইনপুট এর কার্টেল স্থানান্তর

   |:@}: test_case
GH
FI
ED

|.@{: ইনপুট এর লেজের বিপরীত হয়

   |.@{: test_case
CBA

আমি মনে করি আপনি যা করতে চান তা দেখতে পারেন: আমরা কার্টেল স্থানান্তর করার শেষ অংশের লেজের বিপরীতটি যুক্ত করতে চাই (এটি মুখের, তবে মূলত শেষটির CBAসাথে সংযুক্ত ED)। এটি আমাদেরকে একদম ফুরফুরে, বিপরীত দিক।

(}:@],{:@],[) ঠিক আছে।

এটি এতে যুক্ত CBAহয় ED, তারপরে বাকি অ্যারের সাথে যোগ দেয়। আমাদের ফলাফল তাই হয়

   unfurl_reversed test_case
GH   
FI   
EDCBA

whitespace_filter

#~ [: -. [: */"1 ' ' = ]
                 ' ' = ]  Equate each element to space
            */"1          Product of each row (all true?)
      -.                  Negate
#~                        Filter rows that are true

মূলত, কোনও সারি পুরোপুরি ফাঁকা আছে কিনা তা পরীক্ষা করে দেখার জন্য এবং এটি থাকলে তা সরিয়ে দেয়। এটি পরীক্ষার কেসের প্রথম পুনরাবৃত্তির জন্য কিছু করে না।

এটি প্রয়োজনীয় (কমপক্ষে আমি বিকল্প খুঁজে না পাওয়া পর্যন্ত) যেহেতু আমরা শেষ পর্যন্ত আমাদের আউটপুট স্ট্রিংয়ের অভ্যন্তরে হোয়াইট স্পেসে ফিরব।

খোলা

|."1@(whitespace_filter @: unfurl_reversed) ^: (1 < #) ^: a:

আনফুরল মূলত অন্যান্য ফাংশনগুলি একসাথে রাখে এবং বিশেষ ক্ষেত্রে একক অক্ষরের ইনপুট।

যখন ক্রিয়া ( ^:) এর শক্তিটি খালি বাক্স ( a:) দেওয়া হয় , এটি রূপান্তরিত না করে এবং কোনও অ্যারেতে ফলাফল সংগ্রহ না করা পর্যন্ত এটি কোনও ইনপুটটিতে একটি ফাংশন প্রয়োগ করে।

(1 < #) সারিগুলি সর্বদা 1 এর চেয়ে বেশি (বিশেষ ক্ষেত্রে 1 সারি ইনপুটগুলিতে) থাকে তা পরীক্ষা করে।

|."1প্রতিটি সারি বিপরীত করে, তাই এটি ফলাফলগুলি উল্টায় whitespace_filter @: unfurl


1

পাইথন 2 , 143 132 বাইট

a=input()
while 1:print'\n'.join(a);b=map(''.join,zip(*map(str.strip,a[-2::-1])));a[-1]+=b.pop();a[:-1]=[len(a[0])*' '+x for x in b]

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

প্রতিটি পুনরাবৃত্তির সালে bস্ট্রিং (প্রথম এন -1 সারি) এর "মাথা" হয়, 90 ডিগ্রী আবর্তিত যদি aহয় [" NML", " OPK", "ABCDEFGHIJ"]তারপর bহয় ["ON", "PM", "KL"]

একবার একটি স্ট্রিং মেলে ধরা করার জন্য, আমরা চূড়ান্ত পংক্তির শেষে bথেকে a[-1](দান "ABCDEFGHIJKL") এবং তারপর recompute a[:-1]মধ্যে স্ট্রিং বাকি স্পেস যোগ করে b

bএটি খালি হওয়ার সময় থেকে পপ করার চেষ্টা করে আমরা শেষ করি।

পাইথন 2 , 132 বাইট

a=input()
while 1:s=str.strip;print'\n'.join(a);a[:-1]=[len(a[0])*' '+''.join(x)for x in zip(*map(s,a[-2::-1]))];a[-1]+=s(a.pop(-2))

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

একই ধারণা, অন্যভাবে লেখা। আমরা a.pop(-2)যখন aমাত্র একটি উপাদান রয়েছে তখন চেষ্টা করে শেষ করি ।


1

পার্ল 5 , 155 বাইট

$"=$,;@a=map[/./g],<>;while(@a){say' 'x(length$s)."@$_"for@a[0..@a-2];say$s.="@{pop@a}";say@b=();for$i(0..$#a){$q=0;$b[$q++][$#a-$i]=$_ for@{$a[$i]}}@a=@b}

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

সত্যিই যুক্তি সংশোধন না করে কয়েকটি বাইট সংরক্ষণ করা হয়েছে। নীচের প্রবাহটি এখনও মূলত সঠিক।

# পার্ল 5 , 163 বাইট

$"=$,;@a=map[/./g],<>;while(@a){say' 'x(length$s)."@{$a[$_]}"for 0..@a-2;say$s.="@{pop@a}";say@b=();for$i(0..$#a){$b[$_][$#a-$i]=$a[$i][$_]for 0..$#{$a[$i]}}@a=@b}

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

কিভাবে?

$"=$,; #set the array output separator to null
@a=map[/./g],<>;   # take the input as a 2-D array @a
while(@a){         # repeat while there are still things to unfurl
  say' 'x(length$s)."@{$a[$_]}"for 0..@a-2; # output all but last
                                            # line of the remaining
                                            # square
  say$s.="@{pop@a}";  # remove bottom row, add it to the unfurled string $s
                      # and output it
  say@b=();           # clear temporary array; output empty array, causing
                      # a newline to output

                      # rotate remaining shape 90 degrees:
  for$i(0..$#a){$b[$_][$#a-$i]=$a[$i][$_]for 0..$#{$a[$i]}}
  @a=@b               # replace input with rotated array
}

দুর্দান্ত পদ্ধতি, তবে আমি প্রতিদ্বন্দ্বিতার প্রতিটি পর্যায়ে আউটপুট পরে আছি, আপনি সমস্ত পদক্ষেপ মুদ্রণের জন্য আপডেট করতে পারবেন? দুঃখিত!
ডম হেস্টিংস

1
ঠিক আছে, আমি এটি আবার লিখেছি।
এক্সকালি

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