স্ট্রিং জিপ এবং বাছাই করুন


14

স্ট্রিংয়ের একটি তালিকা দেওয়া হয়েছে, প্রতিটি পজিশনে প্রতিটি স্ট্রিং থেকে একটি অক্ষর নিয়ে এএসসিআইআই অর্ডিনাল অনুসারে বাছাই করে আউটপুট স্ট্রিংয়ের সাথে যুক্ত করে একটি একক স্ট্রিং আউটপুট দেয়। অন্য কথায়, nইনপুট স্ট্রিংয়ের জন্য nআউটপুট এর প্রথম অক্ষরগুলি অর্ডিনাল অনুসারে বাছাই করা প্রতিটি ইনপুটগুলির প্রথম অক্ষর nহবে, আউটপুটের দ্বিতীয় অক্ষরগুলি অর্ডিনাল অনুসারে বাছাই করা প্রতিটি ইনপুটগুলির দ্বিতীয় অক্ষর হবে, এবং তাই চালু. আপনি ধরে নিতে পারেন যে স্ট্রিংগুলি সমস্ত সমান দৈর্ঘ্যের এবং কমপক্ষে একটি স্ট্রিং থাকবে। সমস্ত স্ট্রিং কেবলমাত্র ASCII মুদ্রণযোগ্য অক্ষর (অর্ডিনালস 32-127) নিয়ে গঠিত হবে।

পাইথনে রেফারেন্স বাস্তবায়ন ( এটি অনলাইনে চেষ্টা করুন ):

def stringshuffle(strings):
  res = ''
  for i in range(len(strings[0])):
    res += ''.join(sorted([s[i] for s in strings],key=ord))
  return res

উদাহরণ:

"abc","cba" -> "acbbac"
"HELLO","world","!!!!!" -> "!Hw!Eo!Lr!Ll!Od"

বিধি

  • স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ
  • এটি , তাই বাইট জেতে সংক্ষিপ্ত উত্তর

লিডারবোর্ড

এই পোস্টের নীচে স্ট্যাক স্নিপেট উত্তরগুলি থেকে লিডারবোর্ড তৈরি করে) ক) ভাষা প্রতি সংক্ষিপ্ত সমাধানের তালিকা হিসাবে এবং খ) সামগ্রিক লিডারবোর্ড হিসাবে।

আপনার উত্তরটি প্রদর্শিত হয়েছে তা নিশ্চিত করার জন্য, দয়া করে নীচের মার্কডাউন টেমপ্লেটটি ব্যবহার করে আপনার উত্তরটি শিরোনাম দিয়ে শুরু করুন:

## Language Name, N bytes

Nআপনার জমা দেওয়ার আকারটি কোথায় ? আপনি যদি নিজের স্কোরটি উন্নত করেন তবে আপনি পুরানো স্কোরগুলি শিরোনামে রেখে দিতে পারেন । এই ক্ষেত্রে:

## Ruby, <s>104</s> <s>101</s> 96 bytes

যদি আপনি নিজের শিরোনামে একাধিক সংখ্যা অন্তর্ভুক্ত করতে চান (যেমন আপনার স্কোর দুটি ফাইলের সমষ্টি বা আপনি আলাদাভাবে দোভাষী পতাকা দণ্ডের তালিকা করতে চান), নিশ্চিত করুন যে আসল স্কোরটি শিরোনামের শেষ সংখ্যা:

## Perl, 43 + 2 (-p flag) = 45 bytes

আপনি ভাষাটির নামটিকে একটি লিঙ্কও তৈরি করতে পারেন যা স্নিপেটে প্রদর্শিত হবে:

## [><>](http://esolangs.org/wiki/Fish), 121 bytes

উত্তর:


11

জিএস 2, 4 বাইট

*Ü■/

এটি STDIN থেকে স্ট্রিংগুলি পড়ছে, লাইনফিড দ্বারা পৃথক করা।

উত্স কোডটি সিপি 437 এনকোডিং ব্যবহার করে । এটি অনলাইন চেষ্টা করুন!

টেস্ট রান

$ xxd -r -ps <<< '2a 9a fe 2f' > zip-sort.gs2
$ echo -e 'HELLO\nworld\n!!!!!' | gs2 zip-sort.gs2 
!Hw!Eo!Lr!Ll!Od

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

*       Split the input into the array of its lines.
 Ü      Zip the resulting array.
  ■     Map the rest of the program over the resulting array.
   /        Sort.

6

হাস্কেল, 39 36 বাইট

import Data.List
(>>=sort).transpose

ব্যবহারের উদাহরণ: ((>>=sort).transpose) ["HELLO","world","!!!!!"]-> "!Hw!Eo!Lr!Ll!Od"

স্ট্রিংগুলির তালিকা ট্রান্সপোজ করুন, sortএটির উপরে মানচিত্র করুন এবং ফলাফলের স্ট্রিংয়ের >>=তালিকাটি সংযুক্ত করুন ( তালিকার প্রসঙ্গে concatMap)।


আমি ঠিক এই নিয়ে এসেছি!
গর্বিত হাসেলেলার

আমি করিনি; তালিকার মতো জিনিসের জন্য আমি মোনাডের উদাহরণটি ব্যবহার করতে ভুলে যেতে থাকি। (+1)
বলস্টে 25


5

টিস্ক্রিপ্ট , 9 বাইট

_t¡ßlp¡)µ

টিস্ক্রিপ্টের সমস্ত ভুল উপায়ে প্রয়োগ করা সমস্ত ডান বিল্ট-ইন রয়েছে।

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

Ungolfed

_t()m(#lp())j``

ব্যাখ্যা

_t()        // Transposes input array
    m(#     // Loops through inputs
       lp() // Sorts characters by char code
     )
j``         // Joins back into string

@intrepidcoder আমার জন্য ভাল কাজ করে। সম্ভবত আপনার ব্রাউজারটি কিছু ফাইল ক্যাশে করেছে? সম্ভবত আপনার ক্যাশে সাফ করার কাজ হতে পারে। আমি যদিও সাফারি ব্যবহার করছি। আমি ফাইলগুলি রিফ্রেশ করার চেষ্টা করব
ডাউনওয়েট


4

পাইথন, 50 48 বাইট

lambda x,y=''.join:y(map(y,map(sorted,zip(*x))))

-২ বাইটের জন্য @xnor কে ধন্যবাদ!


4
আপনি "".joinএকটি পরিবর্তনশীল সংরক্ষণ করতে পারেন ।
xnor

ওহ, আমি কোন ধারণা ছিল না। ধন্যবাদ!
ডেনিস


3

অক্টাভা, 15 বাইট

@(a)sort(a)(:)'

উদাহরণ:

octave:1> (@(a)sort(a)(:)')(["abc";"cba"])
ans = acbbac
octave:2> (@(a)sort(a)(:)')(["HELLO";"world";"!!!!!"])
ans = !Hw!Eo!Lr!Ll!Od

2

জুলিয়া, 46 বাইট

x->(j=join)(map(i->j(sort([i...])),zip(x...)))

এটি একটি নামহীন ফাংশন তৈরি করে যা স্ট্রিংগুলির একটি অ্যারে গ্রহণ করে এবং একটি স্ট্রিং প্রদান করে। এটি কল করার জন্য, এটির একটি নাম দিন f=x->...

Ungolfed:

function zipsort{T<:AbstractString}(x::Array{T,1})
    # Splat the input array and zip into an iterable
    z = zip(x...)

    # For each tuple consisting of corresponding characters
    # in the input array's elements, splat into an array,
    # sort the array, and join it into a string
    m = map(i -> join(sort([i...])), z)

    # Take the resulting string array and join it
    return join(m)
end

1

মিনকোলাং 0.13 , 46 বাইট

$od0Z2:$zIz:$xd0G2-[i1+z[di0c*+c$r]xz$(sr$Ok].

এখানে চেষ্টা করুন। যেমন ইনপুট আশা করে "HELLO""world""!!!!!"(সুতরাং কমা নেই)।

ব্যাখ্যা

$o     Read in whole input as characters
d      Duplicate top of stack (the ")
0Z     Count how often this appears in the stack
2:     Divide by two
$z     Store this in the register (z)
Iz:    Length of stack divided by z (k)
$x     Dump one element from the front/bottom of stack
d      Duplicate top of stack (which is k)
0G     Insert it at the front/bottom of stack
2-     k-2

  [                              Open for loop that repeats k-2 times
   i1+                           Loop counter + 1 (i)
      z[                         Open for loop that repeats z times
        d                        Duplicate top of stack (which is i)
         i                       Loop counter (j)
          0c                     Copy k from front of stack
            *                    Multiply (j*k)
             +                   Add (j*k + i)
              c                  Copy character at position j*k+i to the top
               $r                Swap top two elements of stack (so i is on top)
                 ]               Close for loop
                  x              Dump the top of stack (dump i)
                   z$(           Start a new loop with the top z elements
                      s          Sort
                       r$O       Reverse and output the whole (loop) stack as characters
                          k      Break - exits while loop
                           ].    Close for loop and stop


1

কে, 10 বাইট

,/{x@<x}'+

স্ট্রিংগুলির তালিকার ট্রান্সপোজ ( ) এর প্রতিটি ,/( {x@<x}) প্রতিটি ( ') সাজান ( ) যোগ দিন +

কর্মে:

  ,/{x@<x}'+("HELLO";"world";"!!!!!")
"!Hw!Eo!Lr!Ll!Od"

সাধারণ, তবে কে এখানে একক চরিত্রের বাছাইয়ের ফাংশন না রেখে এবং অপারেশনটিকে একটি বিচ্ছুরিত-সংগ্রহের সূচক অপারেটারে ভাগ করে @এবং একটি আদিম যা পেরিটেশন ভেক্টরকে একটি তালিকা বাছাই করবে তা ভাগ করে এখানে কিছুটা আঘাত পেয়েছে <


1

সি ++ 14, 152 বাইট

#include<iostream>
#include<regex>
[](auto s){for(int i=0;i<s[0].size();++i){auto r=""s;for(auto k:s)r+=k[i];std::sort(begin(r),end(r));std::cout<<r;}};

মানচিত্র + জিপের কোনও সুবিধা ব্যবহার করা হচ্ছে না (কেন অনুমান করুন)

অবহেলিত + ব্যবহার

#include <iostream>
#include <string>
#include <algorithm>
#include <vector>

int main()
{
    auto lambda = [](auto s)
    {
        for (int i = 0; i < s[0].size(); ++i)
        {
            auto r = ""s;
            for (auto k : s)
                r += k[i];
            std::sort(begin(r), end(r));
            std::cout << r;
        }
    };

    std::vector<std::string> data = { "HELLO", "world", "!!!!!" };
    lambda(data);
}

1

গণিত, 51 বাইট

""<>SortBy@ToCharacterCode/@Transpose@Characters@#&

ম্যাথমেটিকায় স্ট্রিং ম্যানিপুলেশন ব্যয়বহুল ...



1

পিএইচপি ,92 91 বাইট

for($argv[0]='';$a=array_column(array_map(str_split,$argv),$i++|0);print join($a))sort($a);

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

আমি নিশ্চিত যে পিএইচপি-র অন্তর্নির্মিত অ্যারে ফাংশনগুলি ব্যবহার না করে এটি আরও ছোট করা যেতে পারে, তবে চেষ্টা করতে হয়েছিল!

বা 85 বাইট

@ নাইট 2 এর দোল, পিএইচপি-র অন্তর্নির্মিত অ্যারে ফাংশনগুলি ব্যবহার না করে সংক্ষিপ্ত করে করা:

for(;''<$argv[1][$i++];print join($a))for($a=[];''<$a[]=$argv[++$$i][$i-1];sort($a));

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


@ নাইট 2 সুন্দরভাবে সম্পন্ন হয়েছে! আপনার নিজের হিসাবে এটি পোস্ট করা উচিত। এটি খুব খারাপ যে array_columnকোনও স্ট্রিংয়ের অ্যারেতে কাজ করবে না অন্যথায় এটি সিজির জন্য বেশ খানিকটা উপকারী হবে। এবং অবশ্যই এড়িয়ে $argv[0]
চলা

0

ক্লোজার / ক্লোজার স্ক্রিপ্ট, 43 বাইট

#(apply str(mapcat sort(apply map list %)))

একটি বেনামী ফাংশন তৈরি করে। ক্লজিউস্ক্রিপ্ট আরপিএলে লিখিত, বৈধ Clojure হওয়া উচিত।

এটি এখানে প্রবেশ করুন , তারপরে কল করুন (*1 ["HELLO" "world" "!!!!!"])। অথবা করুন (def f *1)এবং তারপরে ব্যবহার করুন (f ["abc" "cba"])


0

সিলোন, 166

String z(String+l)=>String(expand(t(l).map(sort)));[T+]n<T>(T?+i)=>[for(e in i)e else nothing];{[X+]*}t<X>([{X*}+]l)=>l[0].empty then{}else{n(*l*.first),*t(l*.rest)};

সিলোনটির একটি zipক্রিয়াকলাপ থাকলে , এটিগুলির পুনরাবৃত্তের পরিবর্তে এটি কেবল দুটি পুনরাবৃত্ত লাগে। unzipঅন্যদিকে, পুনরাবৃত্তিযোগ্য টিপলস নেয় এবং আমি আমার স্ট্রিংগুলিকে দ্বিপলিতে রূপান্তর করতে চাই না। সুতরাং আমি আমার নিজস্ব ট্রান্সপোজ ফাংশন বাস্তবায়িত করেছি, একটি হাস্কেল বাস্তবায়ন দ্বারা অনুপ্রাণিত যা গুগল আমার জন্য কোথাও খুঁজে পেয়েছিল

// zip-sort
//
// Question:  http://codegolf.stackexchange.com/q/64526/2338
// My answer: ...

// Takes a list of strings (same length), and produces
// a string made by concatenating the results of sorting
// the characters at each position.
String z(String+ l) =>
        String(expand(t(l).map(sort)));

// Narrow an iterable of potential optionals to their non-optional values,
// throwing an AssertionError if a null is in there.
[T+] n<T>(T?+ i) =>
        [for (e in i) e else nothing];

// Transpose a nonempty sequence of iterables, producing an iterable of
// sequences.
// If the iterables don't have the same size, either too long ones are
// cut off or too short ones cause an AssertionError while iterating.
{[X+]*} t<X>([{X*}+] l) =>
        l[0].empty
        then {}
        else { n(*l*.first), *t(l*.rest) };

ধরনের nএবং tআরো অনেক কিছু সাধারণ সংজ্ঞায়িত করা যায়নি, কিন্তু এই Codegolf ;-) আছে ( nকি একটি বিশেষ ক্ষেত্রে দেখা যায় আমি প্রস্তাবিত assertNarrowদুই সপ্তাহ আগে )।




0

জেলি , 3 বাইট

ZṢ€

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

কেবলমাত্র কার্যকর যদি পুরো প্রোগ্রাম হিসাবে বিবেচনা করা হয় : ফলস্বরূপ মানটি স্ট্রিংগুলির একটি তালিকা, তবে এটি যখন জেলি মুদ্রিত হয় তখন তা স্পষ্টতই সমতল করে তোলে

  €    Map
 Ṣ     sort
Z      over the columns of the input.

0

স্ট্যাক্স , 5 বাইট

LMFop

এতটা কাছে এলএমএনওপি :(

এটি চালান এবং এটি স্ট্যাক্সএল.এক্সজে ডিবাগ করুন!

সমস্ত ইনপুট একটি স্ট্রিং ( L) এর তালিকায় রাখুন এবং এই তালিকাটি স্থানান্তর করুন ( M)। প্রতিটি ফলাফলের স্ট্রিংয়ের জন্য ( F), সাজান ( o) এবং মুদ্রণ করুন ( p)।

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