ইন্টারলিভিং বিপরীত


20

একটি স্ট্রিং দেওয়া হয়েছে, এটি আন্তঃবিভাজন বিপরীতে। এখানে কিভাবে জন্য এটা করতে করতে abcdefghiএবং abcdefghij, 0-ইন্ডেক্স:

  1. বিজোড় সূচকগুলিতে বর্ণগুলি থেকে চরগুলি সম সূচকগুলিতে পৃথক করুন:
    acegi
     bdfh
    acegi bdfhj
  2. বিজোড় সূচকগুলিতে বর্ণগুলি বিপরীত করুন:
    acegi
     hfdb
    acegi jhfdb
  3. আবার একটি স্ট্রিং মধ্যে ইন্টারলিভ:
    ahcfedgbi 
    ajchefgdib

বিধি

  • আপনাকে অবশ্যই সম-দৈর্ঘ্য এবং বিজোড় দৈর্ঘ্যের উভয় স্ট্রিং সমর্থন করতে হবে।
  • 0-সূচক অনুসারে, আপনাকে অবশ্যই বিজোড় সূচকগুলিতে অক্ষরগুলি বিপরীত করতে হবে, এমনকি নয়।
  • 1-সূচক অনুসারে অবশ্যই আপনার চরিত্রগুলি অবশ্যই বিচ্ছিন্ন নয়, এমনকি সূচকগুলিতে বিপরীত হবে।
  • ইনপুটটিতে মুদ্রণযোগ্য এএসসিআইআই (কোড পয়েন্ট 32-126) থাকবে, কোনও নিউলাইন নেই।
  • আপনি ইনপুটটি স্ট্রিং হিসাবে বা অক্ষরের তালিকার হিসাবে নিতে পারেন (1-চর স্ট্রিং নয়)। যেমন String/ char[]বা char*অনুমোদিত, কিন্তু String[]/ char[][]বা char**হয় না।

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

Input
Output

Hello, World!
HdlroW ,olle!

Hello World!
H!llooW rlde

ABCDEFGHIJKLMNOPQRSTUVWXYZ
AZCXEVGTIRKPMNOLQJSHUFWDYB

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
 }"{$y&w(u*s,q.o0m2k4i6g8e:c<a>_@]B[DYFWHUJSLQNOPMRKTIVGXEZC\A^?`=b;d9f7h5j3l1n/p-r+t)v'x%z#|!~

P
P

AB
AB

xyz
xyz

খালি স্ট্রিংয়ের জন্য, খালি স্ট্রিংটি নিজেই ফিরে আসুন।



আমি মনে করি এটি একধরনের "সিক্রেট কোড" (পিগ ল্যাটিনের মতো) যা আমরা ৮০ বা 90 এর দশকে বাচ্চা হিসাবে শিখেছিলাম, "বেড়া" শব্দ বা কিছু দিয়ে কিছু করা হয়েছিল, তবে আমার স্মৃতিটি কিছুটা অস্পষ্ট। আমার বন্ধুরা এবং আমি এটি গোপন বার্তাগুলি এনকোড করার জন্য ব্যবহার করব এবং আমার মনে হয় না যে প্রাপ্তবয়স্করা আমাদের চিঠিগুলি খুঁজে পেয়েছিল সেগুলি কখনও তাদের খুঁজে পেয়েছিল ...
ফায়ারফক্স

@ ফায়ারফক্স আপনি হয়ত রেলের বেড়া সিফারের কথা ভাবছেন , যা এর অনুরূপ।
Carmeister

আহ আমি মনে করি।
12

উত্তর:


7

জেলি , 7 বাইট

s2ZU2¦Z

এটি একটি সম্পূর্ণ প্রোগ্রাম।

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

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

s2ZU2¦Z  Main link. Argument: s (string)

s2       Split s into pairs.
  Z      Zip/tranpose, grouping characters by the parity of their indices.
     ¦   Sparse application:
   U         Upend; reverse both strings in the pair.
    2        Replace the second string with the reversed string.
      Z  Zip/transpose, interleaving the two strings.

এটাই
হ'ল

3
একসাথে মন ভাল মনে। ;)
ডেনিস

12

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

t2L)P5M(

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

ব্যাখ্যা

t     % Implicit input. Duplicate
      % STACK: 'abcdefghi', 'abcdefghi'
2L    % Push [2, 2, 1j]. This represents 2:2:end when used as an index
      % STACK: 'abcdefghi', 'abcdefghi', [2, 2, 1j]
)     % Get entries at those indices
      % STACK: 'abcdefghi', 'bdfh'
P     % Flip
      % STACK: 'abcdefghi', 'hfdb'
5M    % Push [2, 2, 1j] again
      % STACK: 'abcdefghi', 'hfdb', [2, 2, 1j]
(     % Write entries at those indices. Implicit display
      % STACK: 'ahcfedgbi'

5
সুতরাং 2L"পুশ [2,2,1j]", এবং 5M"পুশ [2,2,1j] আবার" হয় ... এবং কিছু মানুষ বলে golfing ভাষায় পাঠযোগ্য নয়!
লিও

3
@ লিও :- ডি 2Lএকটি পূর্বনির্ধারিত আক্ষরিক উত্পাদন করে। 5Mএকটি স্বয়ংক্রিয় ক্লিপবোর্ড যা সাম্প্রতিক ফাংশন কলগুলির ইনপুটগুলিকে সঞ্চয় করে। এটি আসলে 2Lএকই বাইট গণনা দ্বারা প্রতিস্থাপন করা যেতে পারে
লুইস মেন্ডো

7

এলিস , 10 বাইট

/ZY
\IOR@/

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

এই প্রোগ্রামের অর্ধেক বাইটগুলি উত্সটি সঠিকভাবে ফর্ম্যাট করার জন্য ব্যয় করা হয়েছে, আসল কমান্ডগুলি কেবলমাত্র IYRZO, কারণ এই কাজের জন্য অ্যালিসের ঠিক সঠিক বিল্টিন রয়েছে।

ব্যাখ্যা

যেমনটি আমি বলেছি, আয়নাগুলি ( /\), নতুন লাইন রয়েছে এবং আইপিটি @সঠিক দিকে চালিত করতে এবং শেষে প্রোগ্রামটি শেষ করতে রয়েছে to লিনিয়ারাইজড আসল কোডটি নিম্নলিখিত:

IYRZO
I      Input a line
 Y     Unzip it into its even positions and its odd ones
  R    Reverse the odd positions
   Z   Zip it back again
    O  Output

বেশ সোজা, আমি বলব।


আমি যদি বুঝতে পারি যে কোণায় আয়নাগুলি কীভাবে কাজ করে ...
লুইস মেন্ডো

@ লুইসমেন্দো প্রথমে আপনি আয়নাটি অতিক্রম করেন যা আপনাকে কার্ডিনাল (অনুভূমিক / উল্লম্ব) থেকে অর্ডিনাল (ডায়াগোনাল) মোড বা বিপরীতে পরিণত করে। তারপরে আপনি যদি কার্ডিনাল মোডে থাকেন তবে আপনি লাইন / কলামের অন্য প্রান্তে মোড়াবেন, আপনি যদি অর্ডিনাল মোডে থাকেন তবে আপনি কোণার বিরুদ্ধে ফিরে যান। এই ক্ষেত্রে দক্ষিণ-পূর্ব আয়নাটি অর্ডিনাল মোডে এসে পড়েছে, আপনাকে কার্ডিনালকে স্যুইচ করতে এবং দ্বিতীয় লাইনের শুরুতে মোড়কে তোলে, যেখানে অন্য একটি আয়না আপনাকে আবার অর্ডিনালে ফিরে যেতে এবং উত্তর-পূর্বের দিকে যেতে শুরু করে
লিও

আহ, সুতরাং বাউন্সিং কেবল তির্যক ক্ষেত্রে, একই দিক থেকে আপনি এসেছিলেন। তারপরে এটি আমার ধারণা থেকে সহজ। ধন্যবাদ!
লুইস মেন্ডো

6

জাভা (ওপেনজেডিকে 8) , 108 96 94 93 বাইট

ব্যবহার করে 1 বাইট সংরক্ষিত @ নিল এর ঝরঝরে কৌতুক ব্যবহারs[s.length+~i|1]

String f(char[]s){int a=s.length,b=0;String c="";for(;b<a;b++)c+=s[b%2<1?b:a+~b|1];return c;}

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


1
100 বাইটের নিচে জাভা ... বৈধ মনে হচ্ছে।
এরিক আউটগল্ফার

" জাভা (ওপেনজেডিকে 8 ) " তাহলে কেন আপনি পুনরাবৃত্তি না করে জাভা 7 পদ্ধতি ব্যবহার করছেন? প্রতিস্থাপন একটি জাভা 8 ল্যামডা ব্যবহার করুন String f(char[]s)সঙ্গে s->.. আর তুমি রেখে পাশাপাশি একটি বাইট সংরক্ষণ করতে পারবেন intভিতরে জন্য-লুপ আরম্ভের: for(int a=s.length,b=0;b<a;b++)এটি অনলাইনে চেষ্টা করুন।
কেভিন ক্রুইজসেন




3

জেলি , 9 বাইট

Ḋm2U
m2żÇ

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

Ḋm2U Helper Link -> Dequeue (return last len-1 elements), take every second element, reverse
m2żÇ Main Link -> Take every second element, then interleave with the result of the helper link

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


তোমাদের স্থলাভিষিক্ত তাহলে ¢সঙ্গে Ç, আপনি প্রয়োজন হবে না ³সাহায্যকারী লিঙ্কে।
ডেনিস

@ ডেনিস ওহ আমি যা ভেবেছিলাম আমি প্রথমবার এটি করেছি _ _> কিছুই নয়, আমি অবশ্যই কিছু খুঁজে পেয়েছি। ধন্যবাদ!
হাইপারনিউটারিনো

3

রেটিনা ,17 13 বাইট

O^$`(?<=\G.).

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

নীলকে ধন্যবাদ একটি ত্রুটি স্থির করে।

4 টি বাইট সংরক্ষণ করে কোবি ধন্যবাদ।

বিজোড় সংখ্যক চরিত্রের আগে প্রতিটি বর্ণ নির্বাচন করে এবং সেগুলি বিপরীত করে। \Gগত ম্যাচের শেষের সাথে কোনটি মিলছে তা ব্যবহার করে এটি করে ।


শেষ টেস্টকেস ভুল। এর $পরিবর্তে আপনার প্রয়োজন হবে #
নীল

@ নীল ওফস, আপনি পুরোপুরি ঠিক বলেছেন। সংশোধন করা হয়েছে!
FryAmTheEggman

\Gপরিবর্তে আপনি চেহারাটির পিছনে ব্যবহার করতে পারেন , এবং আপনি এটি মুছে ফেলতে$ পারেন : O^`(?<=\G.).(12 বাইট)
Kobi

1
@ কোবি টিপস জন্য ধন্যবাদ! তবে দুর্ভাগ্যবশত এটিকে কেবল মনে হয়েছিল $যেহেতু আমি সমস্ত অপসারণগুলি লিক্সোগ্রাফিকাল ক্রমে ছিল সেহেতু আমি সরিয়ে ফেলতে পারি । আমি একটি নতুন পরীক্ষার কেস যুক্ত করেছি যা আপনার কোডটি ব্যর্থ হবে।
FryAmTheEggman

@ ফ্রাইআম দ্য এজিগম্যান - বুঝেছি, ভাল কথা। অনুমান এটি ঠিক ভাগ্য ছিল।
কোবি


2

এপিএল (ডায়ালগ) , 9 বাইট

⎕IO←0বিজোড় এবং এমনকি এর সঠিক সংজ্ঞা দেওয়ার জন্য (বহু সিস্টেমে ডিফল্ট) প্রয়োজন ।

⌽@{2|⍳≢⍵}

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

 বিপরীত

@ প্রয়োগ করার পরে মাস্ক ফলাফল দ্বারা ফিল্টার উপাদানসমূহ এ

{ ব্যভিচারী ফাংশন

2| এর Mod-2

 সূচকগুলি

 এর ট্যালি (দৈর্ঘ্য)

 যুক্তি

} তর্ক উপর


যখন এই প্রশ্নটি পোস্ট করা হয়েছিল তখন কি ভি 16 ছিল?
জাকারি

@ জ্যাচারý এটি বিটাতে ছিল, তবে এটির পরে আর কিছু আসে যায় না
অ্যাডম

ওহ, সুতরাং আমি এখন আপনার ভি 17 ব্যবহার করবে বলে মনে করি?
জাকারি

1

রাদা , 34 বাইট

f a{a/=""a[::2]<>reverse(a[1::2])}

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

ব্যাখ্যা

a/=""                    Convert the argument a into an array of length-1 strings
      <>                 Interleave
a[::2]                   Every even element of a with
        reverse(a[1::2]) Every odd element of a reversed

এখানে একই বাইকাউন্টে বিকল্প সমাধান রয়েছে

36 34 বাইট

{[_/""]|_[::2]<>reverse(_1[1::2])}

এটি একটি অনামী কাজ যা ইনপুট স্ট্রিম থেকে স্ট্রিং হিসাবে ইনপুট নেয়।




1

হাস্কেল , 63 বাইট

(_:r)!(a:s)=a:s!r
_!_=[]
f s=([' '|even$length s]++reverse s)!s

এটি অনলাইন চেষ্টা করুন!ব্যবহার: f "some string"

বিজোড় স্ট্রিংগুলির মতো abcdefghi, ফাংশনটি fস্ট্রিংটি এবং এর বিপরীতটি ফাংশনে পাস করে !, যা উভয় স্ট্রিং থেকে চরগুলি পরিবর্তন করে। এমনকি স্ট্রিংয়ের জন্য এটি কাজ করে না এবং অফসেটটি পেতে ডান চরিত্রটি যুক্ত করতে হবে।


1

সি, 69 বাইট

c,l;f(char*s){l=strlen(s);for(c=0;c<l;++c)putchar(s[c&1?l-l%2-c:c]);}

বেশ সহজ. বর্তমান অক্ষর বা বিপরীতটি মুদ্রণ করে স্ট্রিংটি চলে।

অবহেলিত এবং ব্যাখ্যা:

f(char *str) {
    int len = strlen(str);      // Get the total length
    for(int c = 0; c<len; ++c)  // Loop over the string
        putchar(s[              // Print the char that is,
            c & 1               // if c is odd,
                ? l - l % 2 - c // c chars from the end (adjusting odd lengths),
                : c             // and at index c otherwise
        ]);
}

1

গণিত, 82 বাইট

""<>(f=Flatten)[{#&@@#,Reverse@Last@#}&@f[Characters@#~Partition~UpTo@2,{2}],{2}]&

1

জাপট , 14 13 বাইট

কোডের 12 বাইট, -Pপতাকাটির জন্য +1 ।

1 শাটগি ধন্যবাদ 1 বাইট সংরক্ষণ করা

¬ë íU¬Åë w)c

ব্যাখ্যা:

¬ë íU¬Åë w)c
¬                   Split the input into an array of chars
 ë                  Get every other char, starting at index 0
   í                Pair with:
    U¬                Input, split into a char array
      Å               .slice(1)
       ë              Get every other char
         w            Reverse
           c       Flatten
-P                 Join into a string

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


হুম, ë2,1বরং কুরুচিপূর্ণ। আমি মনে করি আপনি ó oপরিবর্তে এটি করতে পারেন , সম্ভবত ...
ইটিএইচ প্রোডাকশনগুলি

@ এথ প্রডাকশন হ্যাঁ, আমার মনে হয় Åëএটিও কার্যকর হয়।
অলিভার

ওহ, দুর্দান্ত এক :-)
ETH প্রোডাকশনগুলি


1

কে (ওকে) , 18 বাইট

সমাধান:

{x[w:&2!!#x]:x@|w}

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

উদাহরণ:

> {x[w:&2!!#x]:x@|w}"Hello, World!"
"HdlroW ,olle!"
> {x[w:&2!!#x]:x@|w}"Hello World!"
"H!llooW rlde"

ব্যাখ্যা:

বেশিরভাগ ডান থেকে বামে ব্যাখ্যা করা, বিজোড়-সূচক অক্ষরগুলি সন্ধান করুন, তাদের বিপরীত করুন এবং তাদেরকে আবার স্ট্রিংয়ে রেখে দিন

{x[w:&2!!#x]:x@|w} / solution
{                } / lambda function with implicit parameter x
         #x        / count x,    #"Hello, World!" -> 13
        !          / til,        !13 -> 0 1 2 3 4 5 6 7 8 9 10 11 12
      2!           / 2 modulo,   2!0 1 2 3 4 5 6 7 8 9 10 11 12 -> 0 1 0 1 0 1 0 1 0 1 0 1 0
     &             / where true, @0 1 0 1 0 1 0 1 0 1 0 1 0 -> 1 3 5 7 9 11
   w:              / store in variable w
               |w  / reverse w,  |1 3 5 7 9 11 -> 11 9 7 5 3 1
             x@    / index into x at these indices
 x[        ]:      / assign right to x at these indices

1

জে, 26 বাইট

[:,@,./(0 1$~#)]`(|.@])/.]

ungolfed

[: ,@,./ (0 1 $~ #) ]`(|.@])/. ]

ব্যাখ্যা

  • (0 1$~#)]`(|.@])/.]সমান /./ বিজোড় গোষ্ঠীগুলিতে ইনপুট বিভক্ত করতে কী ব্যবহার করুন: (0 1$~#)ইনপুটটির দৈর্ঘ্যে চক্রাকারে 0 এবং 1 পুনরাবৃত্তি করে গ্রুপ সংজ্ঞা তৈরি করে। আমরা তার মূল ক্রিয়ার জন্য কী এর ক্রিয়াবাচক ফর্ম ব্যবহার ]`(|.@]), প্রথম গ্রুপে পরিচয় প্রযোজ্য এবং দ্বিতীয় গ্রুপ reverses যা: (|.@])
  • এখন আমাদের দুটি গ্রুপ রয়েছে, বিজোড় একটি বিপরীত হয়েছে, আমরা কেবল তাদের একসাথে জিপ করব এবং সমতল করব: ,@,./

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


21। বাইট (\:2|#\)({~/:)#\<.#\.এবং 19 বাইট সাথে [:,@,./]]| |। /।
মাইল

ধন্যবাদ মাইল দ্বিতীয়টিতে টাইপো আছে? আমি একটি ত্রুটি
জোনা

@ মাইলগুলিও প্রথমটি: আমি বুঝতে পারি এটি কীভাবে পার্স করে এবং প্রযুক্তিগতভাবে কী ঘটছে, তবে আমি সামগ্রিক কৌশলটি দেখছি না। আপনি কি স্পষ্ট করতে পারেন?
জোনাহ

ওহ হ্যাঁ, এটি হওয়ার কথা [:,@,./]]`|./.~2|#\, টিক্সগুলি পার্স করা হয়েছে
মাইল

17 বাইট সহ0,@|:]]`|./.~2|#\
মাইল

0

পাইথন 3, 93 87 বাইট

lambda s:"".join("".join(t)for t in zip(s[::2],reversed(s[1::2])))+("",s[-1])[len(s)%2]

4 টি বাইট সংরক্ষণের reversed(s[1::2])সাথে প্রতিস্থাপন করুনs[1::2][::-1]
মিঃ এক্সকোডার

এটি শেষ পর্যন্ত 83 বাইট এবং গল্ফযোগ্য হিসাবে নেমে আসে:f=lambda s,j="".join:j(j(t)for t in zip(s[::2],s[1::2][::-1]))+("",s[-1])[len(s)%2]
মিঃ এক্সকডার

0

পার্ল 6 ,  63 58  55 বাইট

{[~] .comb[{flat roundrobin (0,2...^*>=$_),[R,] 1,3...^*>=$_}]}

এটা পরীক্ষা করো

{[~] flat roundrobin .comb[{0,2...*},{$_-1-$_%2,*-2...*}]}

এটা পরীক্ষা করো

{[~] flat roundrobin .comb[{0,2...*},{[R,] 1,3...^$_}]}

এটা পরীক্ষা করো

{  # bare block lambda with implicit parameter 「$_」

  [~]                 # reduce using string concatenation operator

    flat              # make the following a flat list

    roundrobin        # grab one from each of the following 2 lists,
                      # repeat until both are empty

    .comb\            # split the input into graphemes (implicit method call)

    [                 # index into that sequence



      { 0, 2 ... * }, # code block producing every non-negative even number


      {               # code block producing reversed odd numbers
                      # (「$_」 here contains the number of available elements)

        [R,]          # reduce with reversed comma operator
                      # (shorter than 「reverse」)

        1, 3 ...^ $_  # odd numbers stopping before it gets
                      # to the number of input elements
      }


    ]
}

এর roundrobinপরিবর্তে আমাকে ব্যবহার করতে হয়েছিল zip, কারণ zipইনপুট তালিকাগুলির মধ্যে কোনও একটি শেষ হয়ে যাওয়ার সাথে সাথে বন্ধ হয়ে যায়।




0

জিএনইউ এপিএল 1.2, 24 বাইট

R[X]←⌽R[X←2×⍳⌊.5×⍴R←⍞]◊R

এপিএল ডান থেকে বামে কাজ করে। ⍴R←⍞ব্যবহারকারী ইনপুট বরাদ্দ করে Rএবং তার দৈর্ঘ্যের মূল্যায়ন করে। গুণমান .5এবং মেঝে ফাংশন প্রয়োগ করে এটি অর্ধেক । আর্গুমেন্টে 1 থেকে সমস্ত সংখ্যা ফেরত দেয়।

এপিএল অ্যারেতে পরিচালিত হয়, সুতরাং অ্যারে কেবলমাত্র প্রতিটি উপাদানকে দ্বিগুণ থেকে পেয়েছি , আমাদের কেবলমাত্র সূচকগুলি প্রদান করে (1-সূচকযুক্ত, তাই নির্ভর করে⎕IO 1 হওয়ার )।

কোনও ভেক্টরের একাধিক সূচক অ্যাক্সেস করার সময়, এপিএল ভেক্টরের সেই সূচকগুলিতে উপাদান দেয়। R[X←2×⍳⌊.5×⍴R←⍞]কেবল সমান সূচকযুক্ত উপাদান দেয়। উপাদানগুলি বিপরীত। তারপরে, বিপরীত মানগুলি সমান সূচকগুলিতে ফিরে বরাদ্দ করুন (এই সূচকগুলি X6 বাইট সংরক্ষণের জন্য নির্ধারণ করুন )।

বিবৃতি বিভাজক হয়। বিপরীত কাজ শেষ হওয়ার পরে, Rফলাফলটি মুদ্রণের জন্য মূল্যায়ন করুন ।


0

পার্ল 5, 46 + 3 -এফ পতাকা = 49 বাইটের জন্য

while(++$x<@F){print$F[$x%2?$x-1:@F-$x-$#F%2]}

ইনপুটটিকে -Fঅক্ষরের অ্যারেতে স্বয়ংক্রিয়ভাবে বিভক্ত করতে পতাকা ব্যবহার করে ,@F । অ্যারের মধ্য দিয়ে লুপ হয় এবং বিজোড় ইনপুটটির জন্য প্রান্তিক সূচক বা সেই সূচক (একটি বিজোড় দৈর্ঘ্যের স্ট্রিংয়ের জন্য এক) এর ফলাফলকে আউটপুট করে।

একটি ট্রেলিং নিউলাইন দিয়ে ইনপুট নেয়। ট্রেলিং করা নতুন লাইন ছাড়া, কেবল প্রাক-বর্ধন পরিবর্তন করা যায়$x পোস্ট-ইনক্রিমেন্টে পারে।

আরও কিছুটা পঠনযোগ্য:

while(++$x<@F) { #While the index is less than the number of elements in the array. $x is 1-indexing the array despite the fact that perl is 0-indexed because it keeps us from having to use a proper for loop or a do-while loop
    if($x%2) { #If $x is odd
        print $F[$x-1] #Print the element
    } else {
        print $F[@F-$x-$#F%2] #Print from the end. $#F%2 fixes it for odd length strings    
    }
}

0

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

DgÉi¶«}2ô.BøRćR‚˜øJ¶K

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

আমি 05AB1E তে এটি না করার কারণটি অনুমান করছি কারণ এটি চূড়ান্ত ...

তবুও আরেকবার zip ফাংশনের অটো-ড্রপ-শেষ-উপাদানটি সাহায্যের পরিবর্তে ব্যথা করে।

পিএস যদি আমার উত্তর সম্পর্কে উন্নতি পরামর্শ থাকে, আপনার নিজের পোস্ট করুন; আপনি পয়েন্ট পাওয়ার ওয়ারেন্টের পক্ষে এটি যথেষ্ট উন্নতি। এই উত্তরটি নিয়ে আমি বেশ লজ্জা পেয়েছি।


0

কিউ / কেডিবি +, 70 56 47 38 35 29 27 বাইট

সমাধান:

{x[w]:x(|)w:(&)#:[x]#0 1;x}

উদাহরণ:

q){x[w]:x(|)w:(&)#:[x]#0 1;x}"Hello, World!"
"HdlroW ,olle!"
q){x[w]:x(|)w:(&)#:[x]#0 1;x}"Hello World!"
"H!llooW rlde"

ব্যাখ্যা:

স্ট্রিংয়ের বিজোড় সূচকগুলি সন্ধান করুন, এই তালিকাটি বিপরীত করুন, এই পয়েন্টগুলিতে উপাদানগুলি টানুন এবং তারপরে তাদেরকে আসল স্ট্রিংটিতে পুনরায় নিয়োগ করুন।

{x[w]:x reverse w:where count[x]#0 1;x} / ungolfed
{                                   ; } / lambda function with two lines
                                 0 1    / the list (0;1)
                                #       / take
                        count[x]        / length of input
                  where                 / indices where this is > 0
                w:                      / save in variable w
        reverse                         / reverse this list
      x                                 / index into x at these points
     :                                  / assignment             
 x[w]                                   / assign x at indices with new values
                                     x  / return x

সম্পাদনা:

  • -9 বাইট; আউট সুইচিং countজন্য (#:), tilজন্য (!), whereজন্য (&:)এবং reverseজন্য (|:)

  • -3 বাইট; আউট সুইচিং (#:)জন্য (#), (&:)জন্য (&)এবং (|:)জন্য(|)

  • -6 বাইট; সম্পূর্ণ পুনরায় লিখুন

  • -২ বাইট; প্রয়োগের চেয়ে অ্যাসাইনমেন্ট ব্যবহার করা


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