স্ট্রিং রোটেশন - আউটপুট স্ট্রিং বার বার প্রথম অক্ষরটিকে শেষের দিকে নিয়ে যায়


22

এখানে চ্যালেঞ্জটি হ'ল স্ট্রিং নেওয়া এবং তার সমস্ত ঘূর্ণন আউটপুট করা, বারে প্রথম অক্ষরটি বারে বারে স্ট্রিংয়ের প্রতিটি চরিত্রকে একবার করে মূল স্ট্রিংয়ের সাথে শেষ করে:

john -> ohnj, hnjo, njoh, john

আপনি শেষ দিক থেকে অক্ষরগুলি সরিয়ে অন্য দিকেও চক্রটি চালিয়ে যেতে পারেন:

john -> njoh, hnjo, ohnj, john

মূল শব্দটি এর আগে পৌঁছানো সত্ত্বেও আপনার প্রতি চিঠিতে একটি আবর্তন আউটপুট করা উচিত:

heehee -> eeheeh, eheehe, heehee, eeheeh, eheehe, heehee

চরিত্রের অ্যারেগুলিকে অনুমতি দেওয়া হয়, যতক্ষণ পর্যন্ত ফলাফল উপরে প্রদর্শিত হিসাবে কাজ করে।

সবচেয়ে কম উত্তর জয়!


5
যদি কোনও স্ট্রিং heeheeএর দৈর্ঘ্যের চেয়ে কম চক্রে মূল ক্রমে ফিরে আসে তবে আমরা কি সেখানে থামব? আমি আশা করি এটি অনেক উত্তরের জন্য একটি বড় পার্থক্য তৈরি করবে।
xnor

আমরা কি অন্য দিকে চক্র রাখতে পারি?
xnor

2
আমি আপনার স্পেসিফিকেশন সহ প্রশ্নটি সম্পাদনা করেছি, যদি আপনি যা ইচ্ছা করেন তা না হলে নির্দ্বিধায় এটি পরিবর্তন করুন।
xnor

1
@ এক্সনর যা আমার মূল পোস্টের চেয়ে অনেক পরিষ্কার দেখাচ্ছে, অনেক ধন্যবাদ!
I_P_Edwards

1
আমাদের কি ইনপুট / আউটপুট চরিত্রের অ্যারেগুলিতে অনুমতি দেওয়া হচ্ছে? (কিছু ভাষায় এই পার্থক্যটি গুরুত্বপূর্ণ হতে পারে
লেজিওনম্যামাল 978

উত্তর:


7

জেলি , 2 বাইট

ṙJ

একটি মোনাডিক লিঙ্ক অক্ষরের একটি তালিকা গ্রহণ করে যা অক্ষরের তালিকার একটি তালিকা দেয়

এটি অনলাইন চেষ্টা করুন! (লিঙ্কটি কল করে এবং নতুনলাইন অক্ষরের সাথে যোগদানের মাধ্যমে পাদলেখের সুন্দর প্রিন্টগুলি




6

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

s=input()
for c in s:s=s[1:]+c;print s

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


পাইথন 3 হ'ল আরও 9 টি বাইট।
wizzwizz4

1
@ wizzwizz4 আপনি 9 কোথায় পাবেন? পাইথন 3 - 39 বাইট (কোট ছাড়াই
স্টিডিন

@ পিজ্জাপ্যান্টস 184 আমি ভুলে গেছি যে স্ট্রিংগুলি অচল ছিল; তুমি ঠিক বলছো; এটি আরও 1 বাইট
wizzwizz4


4

জাপট, 5 3 বাইট

অক্ষর অ্যারে হিসাবে ইনপুট নেয়, অক্ষরের অ্যারের আউটপুট দেয়

£=é

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

£=é     :Implicit input of character array U
£       :Map
  é     :  Rotate U one element to the right
 =      :  Reassign to U for next iteration


3

ব্রেনফাক , 59 বাইট

,[>,]<[>>[>]+[<]<[<]>-[[>]>[>]<+[<]<[<]>-]>[.>]>[.>]<[<].<]

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

প্রতিটি স্ট্রিং নাল বাইট দ্বারা আলাদা করে আউটপুট দেয়।

ব্যাখ্যা:

,[>,]    # Get input
<[       # Start loop over input
  >>[>]       # Go to end of the string
  +           # Set it to one to mark it
  [<]<[<]>    # Move to the beginning of input
  -[[>]>[>]<+[<]<[<]>-]   # Transfer the first character to the end
  >[.>]>[.>]  # Print the rotated string
  <[<].       # Print a nul byte
<]       # Repeat loop while input

3

এমএটিএল , 6 5 বাইট

tf&+)

1 বাইট সংরক্ষিত @ লুইসকে ধন্যবাদ!

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

ব্যাখ্যা :

    # Implicitly grab input string
t   # Duplicate the input
f   # Create an array [1, ..., N] where N is the number of characters in the input
&+  # Add the transpose of this array to itself to create a 2D array of indices
    #
    #   +   1  2  3  4
    #       ----------
    #   1 | 2  3  4  5
    #   2 | 3  4  5  6
    #   3 | 4  5  6  7
    #   4 | 5  6  7  8
    #
)   # Use this 2D array to index into the original string using periodic indexing
    # Implicitly display the resulting character array

@ লুইস মেন্ডো চালাক! ধন্যবাদ!
Suever

3

ওল্ফ্রাম ভাষা (গণিত) , 35 26 বাইট a

Partition[#,Tr[1^#],1,-1]&

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

ইনপুট হিসাবে অক্ষরের একটি তালিকা নেয়।

Partition(তবে StringPartitionনীচে এর বৈকল্পিক নয় ) এর ইনপুটটিকে সাইক্লিক হিসাবে চিকিত্সা করার জন্য একটি alচ্ছিক চতুর্থ যুক্তি রয়েছে (এবং কীভাবে ঠিক তা করা যায় তা নির্দিষ্ট করার জন্য), যা এই সমাধানটিকে স্ট্রিংয়ের চেয়ে সহজ করে তোলে - কোনও 15-অক্ষর তৈরি না করেই - ইন ফাংশন।

ওল্ফ্রাম ল্যাঙ্গুয়েজ (ম্যাথমেটিকা) , 44 বাইট

Rest@StringPartition[#<>#,StringLength@#,1]&

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

একই, তবে ইনপুট হিসাবে একটি স্ট্রিং নেয়।

সক্রিয় "john"মধ্যে "johnjohn", তারপর সব length- লাগে StringLength["john"]অফসেট 1 এই স্ট্রিং এর সাবস্ট্রিং উত্পাদক, {"john","ohnj","hnjo","njoh","john"}তারপর, এই প্রথম ড্রপ Rest


যেহেতু অক্ষর অ্যারে অনুমোদিত, Rest@Partition[#~Join~#,Length@#,1]&তাই 36 বাইট হবে।
LegionMammal978

টুইটারে চরিত্রের অ্যারেগুলির সাথে একটি সংক্ষিপ্ত পদ্ধতির সম্ভবত রয়েছে, যদিও আমি এখনও কিছু ভেবে দেখিনি।
মিশা লাভরভ

2

সংযুক্তি , 13 বাইট

Rotate#{1:#_}

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

ব্যাখ্যা

Rotate#{1:#_}
      #          fork(f, g) = ${ f[x, g[x]] }; this forks:
Rotate               rotate's the input by
       {1:#_}        each number from 1 to the length of the input

বিকল্প

15 বাইট :{_&Rotate!1:#_}

16 বাইট :{Rotate[_,1:#_]}

16 বাইট :Rotate@Rotations

16 বাইট :Rotate#(1&`:@`#)

17 বাইট :Rotate#{1+Iota@_}

18 বাইট :Rotate#(1&`+@Iota)

19 বাইট :Rotate#(Succ=>Iota)


2

জে , 7 বাইট

#\|."{]

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

ব্যাখ্যা:

  |."{    - rotate ( "{ is short for "0 1 - rank 0 1 ) 
      ]   - the input
#\        - lenght of the successive prefixes of the input 

2
এর "মতো ব্যবহার করা খুব চতুর, এবং ভাষার অভিধান জ্ঞান প্রয়োজন। পদ সহ একটি ক্রিয়া আছে 1 0?
অ্যাডম

@ আদম আমি মনেকরি এটা "#:। আমি এখানে ফ্রাউনফাইগ্রোগ থেকে শিখেছি
গ্যালেন ইভানোভ



2

সি (32-বিট), 58 51 50 বাইট

সিলিংক্যাটকে ধন্যবাদ একটি দুর্দান্ত গোল নম্বর জন্য বাইট

i;f(s){for(i=0;i++<printf("%s%.*s\n",s+i,i,s)-2;);}

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

Degolf

i;           // "Global" i.
f(s){   // s is pointer to string, which conveniently fits in a 32 bit integer.
    for(i=0; // Initialize i.
        // Increment i and take its complement, and add it to the
        // return value of printf(); which just happens to be strlen(s)+1.
        // ~i + strlen(s) + 1 == strlen(s) + 1 - i - 1, so the last printed
        // string is the original string.
        ~++i + printf("%s%.*s\n",s+i,i,s);
        // The printf prints two strings: first until the terminating \0,
        // the second until a \0 or until i chars have been printed. It also
        // prints a linefeed.
}

সুপারিশ ~++i+printf("%s%.*s\n",s+i,i,s)পরিবর্তেi++<printf("%s%.*s\n",s+i,i,s)-2
ceilingcat

@ceilingcat ধন্যবাদ, বরাবরের মত!

@ceilingcat আপনাকে আসলেই ডাকা উচিত flooringcat

1

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

⮌Eθ⭆θ§θ⁻μκ

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

  θ         Input string
 E         Map over characters
    θ       Input string
   ⭆        Map over characters and join
      θ     Input string
     §      Circularly indexed by
       ⁻    Difference between
        μ   Inner index
         κ  Outer index
⮌           Reversed
            Implicitly print each string on its own line

বিপরীত দিকে ঘোরাতে করতে, প্রতিস্থাপন Minusসঙ্গে Plus




1

পার্ল 6 , 32 বাইট

{m:ex/^(.*)(.+)$/».&{[R~] @$_}}

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

m:ex/^(.*)(.+)$/ exmদ্বিতীয় সাবস্ট্রিংয়ের কমপক্ষে একটি অক্ষর থাকা আবশ্যক - ব্যতীত প্রতিটি সম্ভাব্য স্থানে ইনপুট স্ট্রিংকে বিভক্ত করে হ্রাসমূলকভাবে প্রদত্ত রেজেক্সটি স্পর্শ করে - যা আউটপুটটিতে দু'বার প্রদর্শিত থেকে ইনপুট স্ট্রিংকে বাধা দেয়। তারপরে ফলাফলগুলির প্রতিটি Matchক্যাপচার গ্রুপগুলি বিপরীত স্ট্রিং কনটেনটেশন অপারেটরের []সাথে একক স্ট্রিংয়ে ( ) হ্রাস পাবে R~




1

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

($s=$args|% t*y)|%{$h,$t=$s;-join($s=$t+$h)}

পরীক্ষার স্ক্রিপ্ট:

$f = {

($s=$args|% t*y)|%{$h,$t=$s;-join($s=$t+$h)}

}

@(
    ,('john', 'ohnj', 'hnjo', 'njoh', 'john')
    ,('heehee', 'eeheeh', 'eheehe', 'heehee', 'eeheeh', 'eheehe', 'heehee')
) | % {
    $s,$expected = $_
    $result = &$f $s
    "$result"-eq"$expected"
    $result
}

আউটপুট:

True
ohnj
hnjo
njoh
john
True
eeheeh
eheehe
heehee
eeheeh
eheehe
heehee

1

Tcl , 80 91 বাইট

proc P s {time {puts [set s [string ra $s 1 e][string in $s 0]]} [string le $s]}

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


প্রতিটি সময়ে পাঠ্য পুনঃনির্ধারণ কিছু বাইট সংরক্ষণ করেproc R t {time {puts [set t [string ra $t 1 end][string in $t 0]]} [string len $t]}
ডেভিড

এটিকে 80 বাইটে নামিয়েছেন, @ ডেভিডকে ধন্যবাদ
সার্জিওল


1

লুয়া , 61 বাইট

function(s)for i=1,#s do print(s:sub(i+1)..s:sub(1,i))end end

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

এক থেকে স্ট্রিংয়ের দৈর্ঘ্য পর্যন্ত একের পর এক সূচকগুলিতে বিভক্ত স্ট্রিং (এক-ভিত্তিক সূচক), বিপরীত ক্রমে টুকরোগুলি সংযুক্ত করুন, মুদ্রণ করুন।


1

রুবি , 39 বাইট

->s{a=s.chars.to_a;a.map{a.rotate!*''}}

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


1
সাইটে স্বাগতম! আপনার টিআইও লিঙ্কটি আপনার উত্তরের সাথে মিলে যায় বলে মনে হচ্ছে না। আপনার উত্তরটি আমাদের ইনপুট / আউটপুট প্রয়োজনীয়তার সাথে ফিট করে না বলেও মনে হয়। আপনি কোনও ফাংশন বা STDIN / STDOUT ব্যবহার করতে পারেন তবে আমরা পরিবর্তনশীল পুনরায় নিয়োগের অনুমতি দিই না।
গম উইজার্ড

ধন্যবাদ গারফ নিশ্চিত না যে আমি কীভাবে এই দু'জনকেই গোলমাল করতে পেরেছি। এখন সব ভাল হওয়া উচিত।
acornellier

1

জাভাস্ক্রিপ্ট, 48 43 36 বাইট

@ বুবলারের সৌজন্যে -5 বাইটস * -7 বাইট সৌজন্যে @ শ্যাগির সৌজন্যে-

ইনপুট একটি অক্ষর অ্যারে এবং আউটপুট একটি অক্ষর অ্যারের অ্যারে।

s=>s.map(_=>([a,...b]=s,s=[...b,a]))

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




@ শেগি এটি কি বৈধ বাইট গণনা এবং প্রবেশ? না [..."john"]আগে ফাংশন কল একটি অ্যারের ইনপুট স্ট্রিং এর ম্যানিপুলেশন যেমন গণনা করা হয় না?
অতিথি 271314

@ গেস্ট 271314, ইনপুট একটি চরিত্র এবং আউটপুট হল অক্ষর অ্যারের একটি অ্যারে যা চ্যালেঞ্জ স্পেস এবং আমাদের আই / ও ডিফল্ট দ্বারা অনুমোদিত।
শেভি

@ শেগি আপডেট হয়েছে। আপনি কি দয়া করে আপনার উপরের মন্তব্যটি ছেড়ে দিতে পারেন? অথবা আপনার মন্তব্যটি বিভ্রান্তি এড়াতে উত্তরে অন্তর্ভুক্ত করা উচিত? না দুটোই কি দরকার?
অতিথি 271314


1

এমবিএএসআইসি , 69 66 বাইট

-৩ বাইটস, ধন্যবাদ অর্জান জোহানসেনকে

1 INPUT S$:L=LEN(S$):FOR I=1 TO L:S$=MID$(S$+S$,2,L):PRINT S$:NEXT

আমি সন্দেহ করি আপনি এটি ছোট করতে পারেন 1 INPUT S$:L=LEN(S$):FOR I=1 TO L:S$=MID$(S$+S$,2,L):PRINT S$:NEXT
আর্জন জোহানসেন

@ আরজান জোহানসেন খুব সুন্দর, আপনাকে ধন্যবাদ।
wooshinyobject

1

ব্রেনফাক , 38 বাইট

,[>>,]<<<+>[[.>>]<<[<<]>-[+>.>-].<<+>]

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

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

,[>>,]<<    input string with empty cells in between
<+>         set first marker
[           main loop
  [.>>]     print remaining characters
  <<[<<]    return to start
  >-[+>.>-] print until marker (remove marker)
  .         print null
  <<+       set new marker
  >         restart loop with next character to the left
]           stop if there's no character to the left
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.