একটি ওয়েভ স্ট্রিং লাইন বাই লাইন প্রিন্ট করুন


23

চ্যালেঞ্জ

একটি প্রোগ্রাম বা ফাংশন লিখুন যা পরামিতি হিসাবে স্ট্রিং sএবং পূর্ণসংখ্যার মধ্যে নেয় n। আপনার প্রোগ্রামটি স্ট্রিংটি মুদ্রণ করা উচিত (বা প্রত্যাবর্তন) যখন নিম্নলিখিত রূপে রুপান্তরিত হবে:

উপরের-বামে শুরু করে নীচে এবং ডানদিকে সরান, sউচ্চতার তরঙ্গ হিসাবে লিখুন n। তারপরে, উপরে থেকে নীচে পর্যন্ত প্রতিটি সারি স্ট্রিং হিসাবে (ফাঁকা ছাড়াই) একত্রিত করুন।

উদাহরণ

"WATERMELON" স্ট্রিং এবং 3 এর উচ্চতা দেওয়া হয়েছে:

তরঙ্গটি দেখতে দেখতে এটির মতো হওয়া উচিত:

W   R   O
 A E M L N
  T   E

তারপরে, সারিগুলি উপরে থেকে নীচে একত্রিত করুন:

WRO
AEMLN
TE

সুতরাং, আপনার প্রোগ্রামটির "WROAEMLNTE" স্ট্রিংটি ফিরিয়ে দেওয়া উচিত

তেমনি, উচ্চতা 4 সহ "ওয়াটারমেলন" নিম্নলিখিত তরঙ্গ উত্পাদন করা উচিত:

W     E
 A   M L
  T R   O
   E     N

আপনার প্রোগ্রামটি তারপরে "WEAMLTROEN" স্ট্রিংটি ফেরত পাঠানো উচিত

বিধি

ইনপুট

ইনপুট যে কোনও যুক্তিসঙ্গত বিন্যাসে নেওয়া যেতে পারে। আপনার পছন্দ অনুযায়ী স্ট্রিংটি যে কোনও ক্ষেত্রেই হতে পারে। আপনি এটা ধরে নিতে পারেন0 < n <= s.length

আউটপুট

আউটপুটে কেবল রুপান্তরিত স্ট্রিং (এসটিডিওউটে ফিরে আসে বা মুদ্রিত হোক), এবং কোনও পিছনে থাকা নতুন লাইন থাকা উচিত।

স্কোরিং

এটি , তাই বাইট জেতে সংক্ষিপ্ত উত্তর! স্ট্যান্ডার্ড লুফোলগুলি অনুমোদিত নয়।

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

Input                        Output

programmingpuzzles, 5 ->     piermnlsomgzgapzru
codegolf, 3           ->     cgoeofdl
elephant, 4           ->     enlatehp
1234567, 3            ->     1524637
qwertyuiop, 1         ->     qwertyuiop

আমরা কি ধরে নিতে পারি n> 1? দয়া করে স্পষ্ট করুন এবং যদি কোনও পরীক্ষার কেস না যোগ করেন
লুইস মেন্ডো

1
আপনি ধরে নিতে পারেন n > 0, তবে n=1এটি একটি বৈধ কেস। আমি এখনই প্রশ্ন আপডেট করব।
কাউয়াবাংহোল

2
@ কাউবাংঘোলে আমি জানি :) সম্পর্কিত কেবল এর অর্থ এটি কিছুটা অনুরূপ এবং বিদ্যমান উত্তরগুলি এই চ্যালেঞ্জের জন্য সহায়ক হতে পারে। লিখিত প্রশ্নগুলিতে ডানদিকে উপস্থিত হওয়ার জন্য আমি কেবল এটি উল্লেখ করেছি। সম্পর্কিত! = সদৃশ ;)
কেভিন ক্রুইজসেন

5
আমি কখনও কখনও একটি রেল দিয়ে এনকোডড রেল বেড়া সাইবারটি দেখিনি। শুধু বলুন '
wooshinyobject

1
@ ভেসকাঃ হ্যাঁ, পুরানো ডাবল পচা 13 কৌশল trick
wooshinyobject

উত্তর:


5

কাস্তে , 6 বাইট

δÖK…¢ḣ

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

জন্য কাজ করে n = 1পাশাপাশি।

ব্যাখ্যা

δÖK…¢ḣ  Implicit inputs, say n=4 and s="WATERMELON"
     ḣ  Range: [1,2,3,4]
    ¢   Cycle: [1,2,3,4,1,2,3,4,1,2,3,4..
   …    Rangify: [1,2,3,4,3,2,1,2,3,4,3,2..
δÖK     Sort s by this list: "WEAMLTROEN"
        Print implicitly.

উচ্চতর অর্ডার ফাংশন δহুডের নীচে এর মতো কাজ করে। ধরুন আপনার কাছে একটি উচ্চতর অর্ডার ফাংশন রয়েছে যা একটি আনরি ফাংশন এবং একটি তালিকা গ্রহণ করে এবং একটি নতুন তালিকা প্রদান করে। উদাহরণস্বরূপ, Öএকটি ফাংশন নেয় এবং কী হিসাবে এটি ব্যবহার করে একটি তালিকা বাছাই করে। তারপরে δÖএকটি বাইনারি ফাংশন এবং দুটি তালিকাগুলি নেয়, তালিকাগুলি একসাথে জিপ Öকরে, বাইনারি ফাংশনটি কী হিসাবে ব্যবহার করে জোড়গুলি বাছাই করার জন্য প্রয়োগ করা হয় এবং শেষ পর্যন্ত জোড়গুলি দ্বিতীয় স্থানাঙ্কে প্রজেক্ট করে। আমরা Kমূল ফাংশন হিসাবে ব্যবহার করি , যা কেবল তার প্রথম যুক্তিটি ফেরত দেয় এবং দ্বিতীয়টিকে উপেক্ষা করে।


6

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

Zv3L)t?yn:)2$S}i

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা

ইনপুট বিবেচনা করুন 5, 'programmingpuzzles'

Zv     % Input, implicit: number n. Symmetric range
       % STACK: [1 2 3 4 5 4 3 2 1]
3L     % Push [1 -1+1j]. When used as an index, this means 1:end-1
       % STACK: [1 2 3 4 5 4 3 2 1], [1 -1+1j]
)      % Index. Removes last element
       % STACK: [1 2 3 4 5 4 3 2]
t      % Duplicate
       % STACK: [1 2 3 4 5 4 3 2], [1 2 3 4 5 4 3 2]
?      %   If non-empty and non-zero
       %   STACK: [1 2 3 4 5 4 3 2]
  y    %   Implict input: string s. Duplicate from below
       %   STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2], 'programmingpuzzles'
  n    %   Number of elements
       %   STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2], 18
  :    %   Range
       %   STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2], [1 2 3 ··· 17 18]
  )    %   Index modularly
       %   STACK: 'programmingpuzzles', [1 2 3 4 5 4 3 2 1 2 3 4 5 4 3 2 1 2]
  2$S  %   Two-input sort: stably sorts first input as given by the second
       %   STACK: 'piermnlsomgzgapzru'
}      % Else. This branch is entered when n=1. The stack contains an empty array
       %   STACK: []
  i    %   Take input
       %   STACK: [], [], 'programmingpuzzles'
       % End, implicit
       % Display stack, implicit. Empty arrays are not displayed


5

জে , 54, 29, 27 26 বাইট

-1 বাইট hoosierEE ধন্যবাদ

([\:#@[$[:}:|@i:@<:@]) ::[

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


@ লুইস মেন্ডো হুম, আবারও আমি গুরুত্বপূর্ণ কিছু মিস করলাম। ধন্যবাদ! সংশোধন করা হয়েছে।
গ্যালেন ইভানভ

1
আমি প্রথমদিকে এটি খুব মিস করেছি, তখন বুঝতে পারলাম এবং ওপিকে জিজ্ঞাসা করেছি। n=1শুরু থেকেই কোনও পরীক্ষার কেস হওয়া উচিত ছিল
লুইস মেন্ডো

1
|@i:পরিবর্তে [:|i:একটি বাইট সংরক্ষণ করুন
hoosierEE

হ্যাঁ, ধন্যবাদ!
গ্যালেন ইভানভ

5

আর , 68 বাইট

function(s,n)intToUtf8(unlist(split(utf8ToInt(s),-(n:(2.9-n)-1)^2)))

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

  • -১০ বাইটস @ জিউসেপ্পকে ধন্যবাদ
  • -17 বাইট কারণ আমি নির্বোধ ছিল
  • -9 বাইট এবং n=1কেস স্থিরীকৃত @ জে.ডোকে ধন্যবাদ
  • -3 বাইটস @ জাইসি ধন্যবাদ


3

05 এ বি 1 ই (উত্তরাধিকার) , 11 8 বাইট

Σ²Lû¨¾è¼

@ লুইস মেন্ডো'র এমএটিএল উত্তরের দ্বারা অনুপ্রাণিত ।
-3 বাইটস @ আদনানকে ধন্যবাদ কারণ আমি একজন বোকা ..>।>

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

ব্যাখ্যা:

Σ           # Sort the (implicit) input-string by:
 ²L         #  Create a list in the range [1, second input-integer]
            #   i.e. 5 → [1,2,3,4,5]
   û        #  Palindromize it
            #   i.e. [1,2,3,4,5] → [1,2,3,4,5,4,3,2,1]
    ¨       #  Remove the last item
            #   i.e. [1,2,3,4,5,4,3,2,1] → [1,2,3,4,5,4,3,2]
     ¾è     #  Index into it (with wraparound) using the counter_variable (default 0)
            #   i.e. counter_variable = 0 → 1
            #   i.e. counter_variable = 13 → 4
       ¼    #  And after every iteration, increase the counter_variable by 1

দ্রষ্টব্য: counter_variableব্যবহৃত হয়েছে, কারণ 05AB1E এর পাইথন লিগ্যাসি সংস্করণে, Σএকটি বিল্টিন ইনডেক্স ছিল না- Nযা এটি 05AB1E এর নতুন এলিক্সির পুনর্লিখন সংস্করণে রয়েছে। তাহলে আমি কেন এখনও উত্তরাধিকার সংস্করণটি ব্যবহার করব? কারণ এলিক্সির পুনর্লিখনে এটি স্পষ্টভাবে অক্ষরগুলির তালিকায় স্ট্রিংকে রূপান্তর করে, }Jএকটি স্ট্রিংটিকে আউটপুট থেকে ফেরত রূপান্তর করতে অতিরিক্ত প্রয়োজন হয় (এবং এটিতে এখন একটি বাগও রয়েছে যেখানে èদৈর্ঘ্যের তালিকায় সূচীতে মোটেও কাজ হয় না where ..: এস)


¹g∍05AB1E এর জন্য সাইক্লিক ইনডেক্সিং ব্যবহার করা হয়েছে বলে আপনার অংশের দরকার নেই è
আদনান

@ আদনান আহ, আমি একজন বোকা ..>।> ধন্যবাদ!
কেভিন ক্রুজসেন

2

জাপট , 16 বাইট

¬üÏu´VÑ aV°ÃÔc q

এটি অনলাইন পরীক্ষা!

ব্যাখ্যা

 ¬ üÏ   u´ VÑ  aV° Ã Ô c q
Uq üXY{Yu--V*2 aV++} w c q    Ungolfed
                               Implicit: U = input string, V = size of wave
Uq                             Split U into chars.
   üXY{            }           Group the items in U by the following key function:
       Y                         Take the index of the item.
        u--V*2                   Find its value modulo (V-1) * 2.
               aV++              Take the absolute difference between this and (V-1).
                                 This maps e.g. indices [0,1,2,3,4,5,6,7,...] with V=3 to
                                                        [2,1,0,1,2,1,0,1,...]
                                 The items are then grouped by these values, leading to
                                 [[2,6,...],[1,3,5,7,...],[0,4,...]].
                     w         Reverse the result, giving [[0,4,...],[1,3,5,7,...],[2,6,...]].
                       c       Flatten.
                         q     Join back into a single string.

ওও কি এই üপদ্ধতিটি নতুন?
লুইস ফেলিপ দে জেসুস মুনোজ

হ্যাঁ, শনিবার যোগ হয়েছে :-)
ইটিএইচ প্রডাকশন

আপনি বাইট এবং আউটপুট একটিকে সংরক্ষণ করতে অক্ষরের অ্যারে হিসাবে ইনপুট নিতে পারেন বা -Pঅন্যটি সংরক্ষণ করতে পতাকা ব্যবহার করতে পারেন
শেগি

2

জেলি , 8 বাইট

উচ্চতা 1 জন্য 6 বাইটার ব্যর্থ হয়; এটির জন্য দুটি বাইট ব্যবহার করা হয়েছিল ... সম্ভবত একটি 7 পাওয়া যাবে?

ŒḄṖȯ1ṁỤị

একটি ডায়াডিক লিঙ্কটি ইতিবাচক পূর্ণসংখ্যা এবং অক্ষরের একটি তালিকা গ্রহণ করে যা অক্ষরের একটি তালিকা দেয়।

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

কিভাবে?

ŒḄṖȯ1ṁỤị - Link: positive integer N; list of characters, T
ŒḄ       - bounce (implicit range of) N -> [1,2,3,...,N-1,N,N-1,...,3,2,1]
  Ṗ      - pop off the final entry         [1,2,3,...,N-1,N,N-1,...,3,2]
   ȯ1    - OR one                          if this is [] get 1 instead
     ṁ   - mould like T (trim or repeat to make this list the same length as T)
      Ụ  - grade-up (get indices ordered by value - e.g. [1,2,3,2,1,2] -> [1,5,2,4,6,3])
       ị - index into T

2

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

@ ম্যাটএইচ দ্বারা প্রস্তাবিত সংক্ষিপ্ত সূত্র (-3 বাইট)

হিসাবে ইনপুট লাগে (string)(n)

s=>n=>--n?[...s].map((c,x)=>o[x=x/n&1?n-x%n:x%n]=[o[x]]+c,o=[])&&o.join``:s

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


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

@ বুদ্ধিমানের জন্য 4 টি বাইট সংরক্ষণ করা হয়েছে

হিসাবে ইনপুট লাগে (string)(n)

s=>n=>--n?[...s].map((c,x)=>o[x=n*n-(x%(n*2)-n)**2]=[o[x]]+c,o=[])&&o.join``:s

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


আমার সমাধানটি আপনার মতো বেশ সমান হয়ে গেছে। আপনি এর সন্নিবেশ সূচক গণক বাইট -3 সংরক্ষণ করতে পারবেন oসঙ্গে x/n&1?n-x%n:x%nপরিবর্তে n*n-(x%(n*2)-n)**2
ম্যাথএইচ

@ ম্যাথ চমৎকারভাবে সম্পন্ন হয়েছে। ধন্যবাদ!
আর্নল্ড


1

এমবিএএসআইসি , 146 159 155 বাইট

1 INPUT S$,N:DIM C$(N):P=1:D=1:FOR I=1 TO LEN(S$):C$(P)=C$(P)+MID$(S$,I,1)
2 IF N>1 THEN P=P+D
3 IF P=N OR P=1 THEN D=-D
4 NEXT:FOR I=1 TO N:PRINT C$(I);:NEXT

এন = 1 পরিচালনা করতে আপডেট হয়েছে

আউটপুট:

? programmingpuzzles, 5
piermnlsomgzgapzru

? codegolf, 3
cgoeofdl

? elephant, 4
enlatehp

? 1234567, 3
1524637

? WATERMELON, 4
WEAMLTROEN

? qwertyuiop, 1
qwertyuiop

বর্তমানে কেস n = 1 সাপোর্ট করে না।
wooshinyobject

কেস এন = 1 হ্যান্ডেল করতে আপডেট হয়েছে
wooshinyobject

তুলনাগুলি পরিষ্কার করে 4 টি বাইট সংরক্ষণ করা হয়েছে।
wooshinyobject

1

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

->\n{*.comb.sort({-abs n-1-$++%(2*n-2||1)}).join}

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

কারিড ফাংশন হিসাবে ইনপুট নেয়।

ব্যাখ্যা:

->\n{*.comb.sort({-abs n-1-$++%(2*n-2||1)}).join}
->\n{                                           }  # Take an number
     *.comb        # Turn the string into a list of chars
           .sort({                       })   # And sort them by
                           $++    # The index of the char
                              %(2*n-2||1)  # Moduloed by 2*(n-1) or 1 if n is 0
                       n-1-       # Subtract that from n-1
                   abs            # get the absolute value
                  -               # And negate to reverse the list
                                          .join  # and join the characters

এটি যে ক্রম অনুসারে বাছাই করা হয়েছে তা এর জন্য দেখতে (এর জন্য n=5):

(-4 -3 -2 -1 0 -1 -2 -3 -4 -3 -2 -1 0 -1 -2 -3 -4 -3 -2 -1)

1

জে , 24 বাইট

4 :'x\:(#x)$}:|i:<:y'::[

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

সুস্পষ্ট ডায়াডিক ক্রিয়া এটি চালান 'codegolf' f 3

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

4 :'x\:(#x)$}:|i:<:y'::[    x: string, y: height
4 :                         Define a dyadic verb:
               i:<:y        Generate a range of -(y-1) .. y-1
            }:|             Take absolute value and remove last
       (#x)$             1) Repeat to match the string's length
    x\:                     Sort x by the decreasing order of above
                     ::[    If 1) causes `Length Error`, return the input string instead

সাধারণত, সুস্পষ্ট ফাংশন আকারে অতিরিক্ত 5 বাইট নেয় n :'...'। তবে ত্রুটি হ্যান্ডলিং যুক্ত করা থাকলে পার্থক্য এবং স্থানের কারণে পার্থক্যটি 2 বাইটে নেমে যায় (tacit)<space>::


আমি কেন সবসময় ব্যবহার করার ঝোঁক sort up!? আপনার সুস্পষ্ট ক্রিয়াটি এখনও 3 বাইট সংক্ষিপ্ত রয়েছে। ভালো সিদ্ধান্ত!
গ্যালেন ইভানভ


1

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

param($s,$n)$r=,''*$n
$s|% t*y|%{$r[((1..$n+$n..1)*$s.Length|gu)[$i++*($n-gt1)]-1]+=$_}
-join$r

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

$f = {

param($s,$n)$r=,''*$n
$s|% t*y|%{$r[((1..$n+$n..1)*$s.Length|gu)[$i++*($n-gt1)]-1]+=$_}
-join$r

}

@(
    ,("1234567", 3            ,     "1524637")
    ,("qwertyuiop", 1         ,     "qwertyuiop")
    ,("codegolf", 3           ,     "cgoeofdl")
    ,("elephant", 4           ,     "enlatehp")
    ,("programmingpuzzles", 5 ,     "piermnlsomgzgapzru")
) | % {
    $s,$n,$e = $_
    $r = &$f $s $n
    "$($r-eq$e): $r"
}

আউটপুট:

True: 1524637
True: qwertyuiop
True: cgoeofdl
True: enlatehp
True: piermnlsomgzgapzru

ব্যাখ্যা

এই পান্ডুলিপি:

  • সারিগুলির একটি অ্যারে তৈরি করে,
  • উপযুক্ত মান সহ সারিগুলি পূরণ করে,
  • এবং যোগদান করা সারিগুলি প্রদান করে।

এক্সপ্রেশনটি ((1..$n+$n..1)*$s.Length|gu একটি সিকোয়েন্স তৈরি করে 1,2,3,3,2,1,1,2,3,3,2,1... এবং সংলগ্ন সদৃশগুলি সরিয়ে দেয়। গেট-gu ইউনিকের জন্য উপনাম ।

  • জন্য $n=3deduplicated ক্রম:1,2,3,2,1,2,3,2,1...
  • জন্য $n=1deduplicated ক্রম:1

এক্সপ্রেশনটি $i++*($n-gt1) প্রতিলিপিযুক্ত ক্রমের একটি সূচক ফেরত দেয়। =$i++যদি $n>1, অন্যথায়=0


1

রুবি , 75 65 বাইট

->s,h{a=['']*h;x=-k=1;s.map{|c|a[x+=k=h-x<2?-1:x<1?1:k]+=c};a*''}

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

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

এটি কীভাবে জেগে উঠেছে:

  • hস্ট্রিং তৈরি করুন
  • ইনপুট স্ট্রিংয়ের প্রতিটি চরিত্রের জন্য, তার সূচকের উপর ভিত্তি করে কোন স্ট্রিংটি সেট করতে হবে তা স্থির করুন (স্ট্রিংয়ের সূচিটি পরিবর্তন হওয়া পর্যন্ত hএবং তারপরে নীচে অবধি উপরে চলে যাওয়া হবে 0)
  • সমস্ত স্ট্রিং একসাথে যোগদান করুন


@ জিবি এটি শেষ মামলায় কাজ করে না
অসোন তুহিদ

1

সি, 142 134 বাইট

8 বাইট জনাথন ফ্রেচের জন্য ধন্যবাদ সংরক্ষণ করা

কোড:

t;i;j;d;f(s,n)char*s;{for(t=strlen(s),i=0;i<n;i++)for(j=0;j+i<t;j=d+i+(n<2))d=j-i+2*~-n,putchar(s[i+j]),i>0&i<n-1&d<t&&putchar(s[d]);}

ব্যাখ্যা:

// C variable and function declaration magic
t;i;j;d;f(s,n)char*s;{
    // Iterate through each "row" of the string
    for(t=strlen(s),i=0;i<n;i++)
        // Iterate through each element on the row
        // Original index iterator here was j+=2*(n-1), which is a full "zig-zag" forward
        // The (n<2) is for the edge case of n==1, which will break the existing logic.
        for(j=0; j+i<t; j=d+i+(n<2))
            // If j+i is the "zig", d is the "zag": Original index was d=j+i+2*(n-i-1)
            // Two's complement swag here courtesy of Jonathan Frech
            d=j-i+2*~-n,
            putchar(s[i+j]),
            // Short circuit logic to write the "zag" character for the middle rows
            i>0 & i<n-1 & d<t && putchar(s[d]);
}

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


1
হ্যালো এবং পিপিসিজিতে আপনাকে স্বাগতম; সুন্দর প্রথম গল্ফ 134 বাইট (জিসিসি ধরে)
জোনাথন ফ্রেচ

0

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

⭆NΦη¬⌊E²﹪⁺μ⎇νι±ι∨⊗⊖θ¹

মিআমিমি±আমি=0(গেলিক ভাষার2এন-2)

 N                      First input as a number
⭆                       Map over implicit range and join
   η                    Second input
  Φ                     Filter over characters
       ²                Literal 2
      E                 Map over implicit range
          μ             Character index
             ι ι        Outer index
              ±         Negate
            ν           Inner index
           ⎇            Ternary
         ⁺              Plus
                   θ    First input
                  ⊖     Decremented
                 ⊗      Doubled
                    ¹   Literal 1
                ∨       Logical Or
        ﹪               Modulo
     ⌊                  Minimum
    ¬                   Logical Not
                        Implicitly print

0

SNOBOL4 (CSNOBOL4) , 191 বাইট

	S =INPUT
	N =INPUT
	A =ARRAY(N)
	A<1> =EQ(N,1) S	:S(O)
I	I =I + -1 ^ D
	S LEN(1) . X REM . S	:F(O)
	A<I> =A<I> X
	D =EQ(I,N) 1
	D =EQ(I * D,1)	:(I)
O	Y =Y + 1
	O =O A<Y>	:S(O)
	OUTPUT =O
END

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

Sতার Nপরে আলাদা লাইনে লাগে on

ব্যাখ্যা:

	S =INPUT			;* read S
	N =INPUT			;* read N
	A =ARRAY(N)			;* create array of size N
	A<1> =EQ(N,1) S	:S(O)		;* if N = 1, set A<1> to S and jump to O
I	I =I + -1 ^ D			;* index into I by I + (-1)^D (D starts as '' == 0)
	S LEN(1) . X REM . S	:F(O)	;* extract the first character as X and set S to the
					;* remaining characters, jumping to O when S is empty
	A<I> =A<I> X			;* set A<I> to A<I> concatenated with X
	D =EQ(I,N) 1			;* if I == N, D=1
	D =EQ(I * D,1)	:(I)		;* if I == D == 1, D = 0. Goto I
O	Y =Y + 1			;* increment the counter
	O =O A<Y>	:S(O)		;* concatenate the array contents until last cell
	OUTPUT =O			;* and print
END



0

পাইথ , 22 21 বাইট

|seMhD,V*lz+PUQP_UQzz

পৃথক লাইনে nঅনুসরণ করে ইনপুট নেয় s। এটি এখানে অনলাইনে চেষ্টা করুন , বা এখানে সমস্ত পরীক্ষার কেস একবারে যাচাই করুন

|seMhD,V*lz+PUQP_UQzz   Implicit: Q=eval(input()), z=remaining input

             UQ         Range [0-Q)
            P           All but last from the above
                         e.g. for Q=3, yields [0,1]
               P_UQ     All but last of reversed range
                         e.g. for Q=3, yields [2,1]
           +            Concatenate the previous two results
                          e.g. for Q=3, yields [0,1,2,1]
        *lz              Repeat len(z) times
      ,V           z    Vectorised pair the above with z, truncating longer to length of shorter
                          e.g. for Q=3, z=WATERMELON, yields:
                          [[0,'W'],[1,'A'],[2,'T'],[1,'E'],[0,'R'],[1,'M'],[2,'E'],[1,'L'],[0,'O'],[1,'N']]
    hD                  Sort the above by the first element
                          Note this is a stable sort, so relative ordering between equal keys is preserved
  eM                    Take the last element of each
 s                      Concatenate into string
                          Note that if n=1, the result of the above will be 0 (sum of empty array)
|                   z   If result of above is falsey, yield z instead

সম্পাদনা: প্রক্রিয়াটির শেষে খালি চেকটি সরিয়ে একটি বাইট সংরক্ষণ করা হয়েছে। পূর্ববর্তী সংস্করণ: seMhD,V*lz|+PUQP_UQ]0z


0

লাল , 153 বাইট

func[s n][i: v: m: 1 b: collect[foreach c s[keep/only reduce[v i c]v: v + m
if all[n > 1(i: i + 1)%(n - 1)= 1][m: -1 * m]]]foreach k sort b[prin last k]]

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

ব্যাখ্যা:

f: func [ s n ] [                      ; s is the string, n is the height
    i: 1                               ; index of the current character in the string
    v: 1                               ; value of the "ladder"
    m: 1                               ; step (1 or -1)
    b: collect [                       ; collect the values in a block b
        foreach c s [                  ; foreach character in the string 
            keep/only reduce [ v i c ] ; keep a block of the evaluated [value index char] 
            i: i + 1                   ; increase the index
            v: v + m                   ; calculate the value 
            if all [ n > 1             ; if height is greater than 1 and
                    i % (n - 1) = 1    ; we are at a pick/bottom of the ladder
                   ]
                [ m: -1 * m ]          ; reverse the step
        ]
    ]
    foreach k sort b [ prin last k ]   ; print the characters in the sorted block of blocks
]

0

আমার কাছে সমস্যার দুটি সমাধান রয়েছে। প্রথম সমাধানটি আমি প্রথমে করেছি তারপরে আমি এটি করার আরও একটি উপায় নিয়ে ভাবলাম যা আমি ভেবেছিলাম বাইটগুলি বাঁচাতে পারে তবে এটি তেমন হয়নি তবে আমি এটিকে যাইহোক অন্তর্ভুক্ত করেছি।


সমাধান 1

পিএইচপি , 152 144 116 বাইট

<?php
for($i=0;$i<$n=$argv[2];$i++)
    for($j=$i;$s=$argv[1][$j];$j+=$n<2|(($f=!$f|!$i)?$i<$n-1?$n+~$i:$i:$i)*2)
        echo $s;
  • 8 জ্যোতিঃজোকিংকে ধন্যবাদ
  • ২৮ বাইট @ শ্যাগি কে ধন্যবাদ

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


সমাধান 2

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

<?php
$s=$argv[0];
$n=$argv[1];
$l=strlen($s);
for($i=0;$i<$l;){
    for($j=0;$j<$n&&$i<$l;)
        $a[$j++].=$s[$i++];
    for($j=$n-2;$j>0&&$i<$l;)
        $a[$j--].=$s[$i++];
}
echo join($a);

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


আপনার আরম্ভ করার দরকার নেই $fএবং $n-1-$iহতে পারে $n-~$i144 বাইট
জো কিং

@ জোকিংয়ের উন্নতিতে -২৮ বাইট
শেগি

গলি; যে বিরতি যখন n=1এটি একই বাইট গণনার জন্য কাজ করে।
শেগি

এছাড়াও আপনি সংক্ষিপ্ত ট্যাগ ব্যবহার এবং স্থান অপসারণ করতে পারেন পরে echoকরার আরও 5 বাইট সংরক্ষণ
রোমশ

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