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


29

আপনি যদি একটি স্ট্রিং বাছাই করেন তবে আপনি সাধারণত কিছু পাবেন:

         ':Iaaceeefggghiiiiklllllmnnooooprrssstttttuuyyyy

হ্যাঁ, এটি ছিল প্রথম বাক্যটি সাজানো।

যেহেতু আপনি দেখতে পারেন, সেখানে পুনরাবৃত্তি অক্ষরের একটি অনেক আছে, aa, eee, ttttt, 9 স্পেস এবং তাই।

যদি আমরা 128প্রথম সদৃশটির 256দ্বিতীয়, 384তৃতীয় এবং এর মতো এএসসিআইআই-মান যুক্ত করি তবে এটি আবার বাছাই করুন এবং নতুন স্ট্রিং আউটপুট করুন (একই অক্ষরগুলি ফিরে পেতে মডুলাস 128) আমরা স্ট্রিংটি পাই:

 ':Iacefghiklmnoprstuy aegilnorstuy egilosty iloty lt    

(একক শীর্ষস্থানীয় স্থান এবং 4 টি পূর্ববর্তী স্থানগুলি নোট করুন)।

STRING "ক্রমানুসারে সাজানো" হয় <space>':I....uy, <space>aeg....uy, <space>egi....ty, <space>iloty, <space>lt, <space>, <space>, <space>, <space>

এটিতে অঙ্কের সাথে যদি আমরা একটি স্ট্রিং ব্যবহার করি তবে এটি কল্পনা করা আরও সহজ হতে পারে। স্ট্রিং 111222334যখন "সাজানো" হবে: 123412312

চ্যালেঞ্জ:

অবাক হওয়ার মতো কিছু নেই, চ্যালেঞ্জটি এমন একটি কোড লিখুন যা উপরের বর্ণনানুসারে স্ট্রিং সাজায়।

আপনি ধরে নিতে পারেন যে ইনপুট স্ট্রিংটিতে 32-126 (স্পেস থেকে টিলডে স্থান) সীমাতে কেবল ছাপার যোগ্য ASCII- অক্ষর থাকবে।


পরীক্ষার কেস:

**Test cases:**
 *:Tacest*es*s*

If you sort a string you'll typically get something like:
 ':Iacefghiklmnoprstuy aegilnorstuy egilosty iloty lt    

Hello, World!
 !,HWdelorlol

#MATLAB, 114 bytes
 #,14ABLMTbesty 1A

f=@(s)[mod(sort(cell2mat(cellfun(@(c)c+128*(0:nnz(c)-1),mat2cell(sort(s),1,histc(s,unique(s))),'un',0))),128),''];
'()*+,-0128:;=@[]acdefhilmnoqrstuz'(),0128@acefilmnorstu'(),12celmnostu'(),12celnstu(),clnst(),cls(),cs(),()()()()

এটি , তাই বাইটে গণিত প্রতিটি ভাষার সংক্ষিপ্ত কোডটি রেফ জিততে পারে ।


শিরোনামটি কিছুটা বিভ্রান্তিকর, যার ফলে আমি এটি ভাবছি এবং বর্ণনাকে উপেক্ষা করছি: tio.run/nexus/05ab1e#@1@td2jh4ZVe//… চমৎকার চ্যালেঞ্জ অন্যথায়, আমি সংক্ষেপে পূরণ করার জন্য এটি প্রসারিত করার পক্ষে কাজ করব।
ম্যাজিক অক্টোপাস আরন

আমরা কি স্ট্রিংয়ের পরিবর্তে অক্ষরের একটি তালিকা আউটপুট করতে পারি?
গম উইজার্ড 21

আপনি যদি কোনও স্ট্রিং ইনপুট করতে পারেন তবে আউটপুটটিও একটি স্ট্রিং হওয়া উচিত। অক্ষরের একটি তালিকা যদি আপনার ভাষাগুলিতে স্ট্রিংগুলি ইনপুট এবং আউটপুট দেওয়ার স্বাভাবিক উপায় হয় তবে তা ঠিক। উদাহরণস্বরূপ {'S', 'g', 'i', 'n', 'r', 't'}আপনি পাইথনে আউটপুট নিতে পারবেন না , যেহেতু এটি করার "সাধারণ" উপায় "String"
স্টিভি গ্রিফিন

আমি আমার মন্তব্য উপরে সংশোধন করব: একটি স্ট্রিং অক্ষরের একটি তালিকা, তাই অক্ষরের একটি তালিকা স্বীকৃত আউটপুট গৃহীত হয়। তবে স্ট্রিংগুলির একটি তালিকা গ্রহণ করা হয় না। এর অর্থ, যদি আপনার তালিকার কোনও উপাদানটিতে দ্বিতীয় অক্ষর যুক্ত করা সম্ভব হয় তবে তা গ্রহণযোগ্য নয়। উদাহরণস্বরূপ: {'a','b'}মতলব গ্রহণ করা হয় না যেহেতু আপনি এই মত অক্ষরের প্রতিটি একটি অক্ষর যোগ করতে পারেন: {'aa','b'}। আপনার ইনপুট এবং আউটপুট অবশ্যই একই ফর্ম্যাটে থাকতে হবে।
স্টিভি গ্রিফিন

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

উত্তর:


15

পাইথ, 5 বাইট

s.T.g

পরীক্ষা স্যুট

খুব সোজা: গ্রুপ এবং সাজান, স্থানান্তর, একত্রিত।

s.T.g
s.T.gkQ    Implicit variables
   .gkQ    Group the input input lists of elements whose values match when the
           identity function is applied, sorted by the output value.
 .T        Transpose, skipping empty values. This puts all first characters into
           a list, then all second, etc.
s          Concatenate.

Pyth সবকিছু আছে নতুন জে পরিণত, এটা ভয়ঙ্কর
shabunc

3
@ শ্যাবুনক আপনি যদি নতুন জে দেখতে চান, github.com/ ডেনিসমিশেল
জেলি

13

জেলি , 3 বাইট

ĠZị

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

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

ওহ ছেলে, এই চ্যালেঞ্জটি জেলির জন্যই তৈরি হয়েছিল।

গ্রুপ পরমাণু ( Ġ) একটি অ্যারের লাগে 1 ইনপুট এবং গ্রুপ সূচকের যে অ্যারের অভিন্ন উপাদানের মিলা হিসাবে। সূচক গোষ্ঠীর অ্যারেগুলি সম্পর্কিত উপাদানগুলির সাথে কী হিসাবে বাছাই করা হয়, যা এই চ্যালেঞ্জের জন্য আমাদের যথাযথভাবে প্রয়োজন।

এরপরে, জিপ অ্যাটম ( Z) সূচকগুলির উত্পন্ন (র‌্যাগড) ম্যাট্রিক্সের সারি এবং কলামগুলি স্থানান্তর করে। এটি কেবল ম্যাট্রিক্সের কলামগুলি পড়ে এমন উপাদানগুলি এড়িয়ে চলে যা সেই কলামে উপস্থিত নেই। ফলস্বরূপ, আমরা সর্বনিম্ন কোড পয়েন্ট সহ অক্ষরের প্রথম সূচক পাই, তারপরে দ্বিতীয় সর্বনিম্ন কোড পয়েন্ট সহ অক্ষরের প্রথম সূচক, ... এর পরে নিম্নতম কোড পয়েন্ট সহ অক্ষরের দ্বিতীয় সূচক ইত্যাদি

শেষ অবধি , আনইনডেক্স অণু ( ) উত্পাদিত ক্রমে তার সমস্ত সূচকে ইনপুট অ্যারের উপাদানগুলি পুনরুদ্ধার করে। ফলাফলটি একটি 2 ডি চরিত্রের অ্যারে, যা প্রিন্ট করার আগে জেলি চ্যাপ্টা করে।


1 জেলির একটি স্ট্রিং টাইপ নেই, কেবলমাত্র অক্ষরের অ্যারে।


"ওহ ছেলে, এই চ্যালেঞ্জটি জেলির জন্যই তৈরি হয়েছিল।" -> 3 বাইট উত্তর
geisterfurz007 এই বিশৃঙ্খলা বন্ধ করুন

আমি যেমন বলেছি, প্রায় জেলি জন্য তৈরি। :)
ডেনিস

10

পাইথন 3, 109 105 104 103 99 93 90 88 81 79 69 বাইট

ফ্লিপট্যাকের জন্য 2 বাইট সংরক্ষণ করা হয়েছে

7 বাইট সংরক্ষণ করা হয়েছে কারণ ফ্লর্নকোকে আমার বোবা ত্রুটিটি ধরা পড়ে

এক্সটোরের জন্য 2 বাইট সংরক্ষণ করা হয়েছে

ডেনিসকে 10 বাইট সংরক্ষণ করা হয়েছে

a=[*input()]
while a:
    for c in sorted({*a}):print(end=c);a.remove(c)

ব্যাখ্যা

আমরা আমাদের স্ট্রিংকে একটি স্প্ল্যাট ব্যবহার করে একটি তালিকায় রূপান্তর করে এবং সেই তালিকাটি একটি ভেরিয়েবলের মধ্যে সঞ্চয় করে শুরু করি a। তারপরে যদিও আমাদের aশূন্য তালিকার তালিকা নয় আমরা aসাজানো ক্রমে প্রতিটি অনন্য সদস্যের মধ্য দিয়ে যাচ্ছি , এটি মুদ্রণ করুন এবং তালিকা থেকে সেই চরিত্রের একটি অনুলিপি সরিয়ে ফেলুন।

প্রতিটি পুনরাবৃত্তি মুদ্রণ করে প্রতিটি উপস্থিত অক্ষরের একটি অনুলিপি মুদ্রণ করে a


1
@ স্টেভিগ্রিফিন setএকটি অরসোর্টড সেট।
ফ্লিপট্যাক

2
@ স্টিভিগ্রিফিন মুদ্রিত হওয়ার পরে এগুলি বাছাই করা হয় তবে তাদের ASCII মানগুলি অনুসারে নয়। এটি প্রায়শই উপস্থিত হয় তবে তারা বিশ্বাস করে যে তারা কোনও ধরণের হ্যাশ অনুসারে বাছাই করেছে।
গম উইজার্ড

1
fকয়েকটি বাইট সংরক্ষণের জন্য আপনি তালিকার পরিবর্তে একটি স্ট্রিং তৈরি করতে পারেন ।
ফ্লোরকোয়েন

1
যদি আপনি নেন a=list(input()), আপনি এটি করতে পারেন a.remove(c), যা নেট সঞ্চয়।
xnor

1
পাইথন 3 এ স্যুইচ করলে অনেকগুলি বাইট সাশ্রয় হয়। tio.run/nexus/…
ডেনিস

6

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

import Data.List
concat.transpose.group.sort

ব্যবহারের উদাহরণ:

Prelude Data.List> concat.transpose.group.sort $ "If you sort a string you'll typically get something like:"
" ':Iacefghiklmnoprstuy aegilnorstuy egilosty iloty lt    "

বাছাই করুন, স্ট্রিংগুলির (যেমন "aabbc"-> ["aa","bb","c"]) তালিকার সমান অক্ষর গোষ্ঠীভুক্ত করুন , আবার একটি স্ট্রিংয়ে স্থানান্তর এবং সমতল করুন।


6

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

lambda s:`zip(*sorted((s[:i].count(c),c)for i,c in enumerate(s)))[1]`[2::5]

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


1
এটি বৈধ কিনা তা জানি না তবে lambda s:`[sorted((1e9+s[:i].count(c),c)for i,c in enumerate(s))]`[18::21]সর্বোচ্চ দৈর্ঘ্যের স্ট্রিংয়ের জন্য কাজ করে 9e9
xnor

@ এক্সনর আপনি দুটি বাইট সংরক্ষণ করতে ড্রপ []এবং পরিবর্তন 18করতে 17পারেন। lambda s:`sorted((1e9+s[:i].count(c),c)for i,c in enumerate(s))`[17::21]
গম উইজার্ড

@xnor খুব কমপক্ষে, এটি একটি বৈধ 32-বিট পাইথন গল্ফ হওয়া উচিত। আমি এ থেকে মুক্তি পাওয়ার চেষ্টা করেছি zip, তবে আমার মনে হয় না যোগটি 1e9আমার সাথে কখনও ঘটত ... ধন্যবাদ!
ডেনিস

পছন্দ করুন ধন্যবাদ!
ডেনিস

স্ট্রিংটিতে ব্যাকস্ল্যাশ থাকলে এটি ব্যর্থ হয়।
লিন

4

ডায়ালগ এপিএল , 21 অক্ষর = 39 বাইট

t[0~⍨∊⍉(⊢⌸t)[⍋∪t←⍞;]]

t[... ] সূচক টি (শীঘ্রই সংজ্ঞায়িত করতে হবে) এর সাথে ...

0~⍨ থেকে শূন্য সরানো

 তালিকাভুক্ত (সমতল)

 পক্ষান্তরিত

(⊢⌸t)[... ;] কীড * টি , সারি সূচিকৃত ...

   সূচকগুলি বাছাই করা হবে

   এর অনন্য অক্ষর

  t←টি , যার মান রয়েছে

   অনুরোধ করা পাঠ্য ইনপুট

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


⊢⌸tএকটি টেবিল তৈরি করে যেখানে সারি তালিকার প্রতিটি অনন্য অক্ষর 'সূচকের (ক আয়তক্ষেত্রাকার টেবিলের জন্য শূন্য সঙ্গে padded) টি


1
কোনটি গ্লাইফ বেশি ব্যয়বহুল?
Ren

1
@ wptreanor চারকে প্রতি বাইটের পরিবর্তে পুরো জিনিসটি ইউটিএফ -8 হিসাবে দেখা দেয়।
আদম

4

সি, 109 106 105 104 102 100 97 98 96 91 বাইট

98 বাইটে ফিরে আসুন, f (n) পুনঃব্যবহারযোগ্য করতে j শুরু করতে হবে

স্ট্রেন বি- এর জায়গায় পুটস ব্যবহার করে 96-এর নিচে

আমার কাছে স্ট্রলিংয়ে ফিরে আসতেই আশ্চর্যের বিষয় ছিল তবে আমি (; i++;) লুপ থেকে মুক্তি পেয়েছি তাই এখন এটি 91 বাইটে নেমে এসেছে। স্পষ্টতই পুস্তকগুলির জন্য ম্যান পৃষ্ঠা;

"RETURNS
   If successful, the result is a nonnegative integer; otherwise, the result is `EOF'."

... আমি ভাগ্যবান যে এটি প্রথম স্থানে কাজ করছিল

char*c,i,j;f(m){for(j=strlen(m);j;++i)for(c=m;*c;c++)if(*c==i){*c=7,putchar(i),j--;break;}}

পরীক্ষার কোড ...

main(c,v)char**v;
{
    char test[] = "If you sort a string you'll typically get something like: ";
    char test2[] = "Hello, World!";

    f(test);puts("");    
    f(test2);puts("");    
}

এখানে কয়েকটি পরীক্ষার কেস দেওয়া আছে, এখন এটিকে গল্ফ করার সময় এসেছে

C:\eng\golf>a.exe
 ':Iacefghiklmnoprstuy aegilnorstuy egilosty iloty lt
 !,HWdelorlo

প্রথম পরীক্ষার ক্ষেত্রে পিছনের স্থানগুলি কি বাকী রয়েছে?
স্টিভি গ্রিফিন

প্রথম পরীক্ষার ক্ষেত্রে আমার তিনটি পিছনে স্থান রয়েছে ... কারণ আমি ইনপুট স্ট্রিংয়ের পিছনে স্থানটি অন্তর্ভুক্ত করি নি ;-)
ক্লাব্ল্যাঙ্ক

4

গণিত, 68 60 59 বাইট

Split[Characters@#~SortBy~ToCharacterCode]~Flatten~{2}<>""&

একটি স্ট্রিং গ্রহণ করে। একটি স্ট্রিং আউটপুটস।

যদি অক্ষরের তালিকার অনুমতি দেওয়া হয় (46 বাইট):

Split[#~SortBy~ToCharacterCode]~Flatten~{2,1}&

সংস্করণ Sort(40 বাইট) ব্যবহার করে :

Split@Sort@Characters@#~Flatten~{2}<>""&

এই সংস্করণটি আমার উত্তর Sortহতে পারে না কারণ এখানে ব্যবহার করা যায় না; Sortক্যানোনিকাল অর্ডার অনুসারে বাছাই করুন, চরিত্র কোড দ্বারা নয়।


আমি গণিত জানি না তাই এটি ঠিক ঠিক হতে পারে তবে আপনি কি এই মন্তব্যটি পড়েছেন ?
স্টিভি গ্রিফিন

@ স্টেভিগ্রিফিন ওয়েলপ, না। আমি এটি ঠিক করতে পারি, তবে স্ট্রিং বনাম চর [] পার্থক্য নেই এমন ভাষাগুলিতে কি এটি অন্যায়ভাবে সুবিধা দেয় না? সম্পর্কিত মেটা আলোচনা
JungHwan মিন

ভাল যুক্তি. আমি একটি সংশোধন করেছি, মূলটির নীচে মন্তব্যটি দেখুন। ফেয়ার? আমি নিশ্চিত নই যে এটি আপনার উত্তরটি বৈধ করে কিনা।
স্টিভি গ্রিফিন

@ স্টেভি গ্রিফিন ম্যাথেমেটিকার চরিত্র এবং স্ট্রিংয়ের মধ্যে কোন পার্থক্য নেই। এমনকি Charactersকমান্ড প্রযুক্তিগতভাবে দৈর্ঘ্য -1 স্ট্রিংয়ের একটি তালিকা আউটপুট করে।
জংহওয়ান মিন

1
@ স্টেভিগ্রিফিন আমার কাছে মনে হয় এটিও প্রাসঙ্গিক । আমি মনে করি যে কোনও যুক্তিসঙ্গত বিন্যাসে
ইনপুটটিকে

3

পাইথন 2, 77 76 বাইট

d={}
def f(c):d[c]=r=d.get(c,c),;return r
print`sorted(input(),key=f)`[2::5]

স্টিডিন থেকে ইনপুট হিসাবে একটি উদ্ধৃত স্ট্রিং নেয়।

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


আমি মনে করি এটি অনুমোদিত নয় কারণ ফাংশনগুলি পুনরায় ব্যবহারযোগ্য হতে হবে । আপনি এটি একটি প্রোগ্রাম করতে পারে।
xnor

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

@ এক্সনোর ধন্যবাদ, স্থির।
ফ্লোরকোয়াক

3

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

f=s=>s&&(a=[...new Set(s)]).sort().join``+f(a.reduce((s,e)=>s.replace(e,``),s))
<input oninput=o.textContent=f(this.value)><pre id=o>

অনন্য অক্ষরের সেটটি বের করে, এটিকে বাছাই করে, মূল স্ট্রিং থেকে এগুলি সরিয়ে, এবং স্ট্রিংয়ের বাকী ধরণের ক্রম অনুসারে গণনা করে কাজ করে। 81 টি বাইট সমাধান যা আমি আকর্ষণীয় পেয়েছি:

f=s=>s&&(s=[...s].sort().join``).replace(r=/(.)(\1*)/g,"$1")+f(s.replace(r,"$2"))

3

জে , 16 15 বাইট

/:+/@(={:)\;"0]

এটি এমন ক্রিয়া যা একটি স্ট্রিং গ্রহণ করে এবং প্রদান করে। এটি অনলাইন চেষ্টা করুন!

মাইল একটি বাইট সংরক্ষণ করেছে, ধন্যবাদ!

ব্যাখ্যা

এখানে খুব বেশি অভিনব কিছু নয়: প্রাথমিকভাবে সংক্রমণের ক্রম অনুসারে, দ্বিতীয়ত চর মান অনুসারে বাছাই করুন।

/:+/@(={:)\;"0]  Input is y.
          \      Map over prefixes:
  +/              Sum
    @(   )        of
      =           bit-array of equality
       {:         with last element.
                 This gives an array of integers whose i'th element is k
                 if index i is the k'th occurrence of y[i].
           ;     Pair this array
            "0   element-wise
              ]  with y
/:               and sort y using it as key.

আমি মনে করি আপনি বন্ধনীর বাইরে to + / @ (= {:) `
মাইল মাইল

@ মাইল ওহ হ্যাঁ, কারণ একটি ট্রেনের অসীম র‌্যাঙ্ক রয়েছে। সুন্দর ধন্যবাদ!
জাগারব

3

ম্যাথামেটিকা, 55 বাইট, অ-প্রতিযোগিতামূলক

(Sort@Characters@#//.{a___,b_,b_,c___}:>{a,b,c,b})<>""&

সম্পাদনা: দুর্ভাগ্যবশত, ম্যাথামেটিকাল এর sortহয় না চরিত্র কোড দ্বারা, কিন্তু বর্ণানুসারে, যেখানে বড় হাতের তখনি ছোট হাতের অনুসরণ দ্বারা (অর্থাত Hi Thereকরার অনুসারে বাছাই করা হয়{ , e, e, h, H, i, r, T} )।

এটি নিদর্শনগুলি ব্যবহার করে কাজ করে:

//.{a___,b_,b_,c___}:>{a,b,c,b}
    a___       c___              (Three _) a zero or more members, named a and c
         b_,b_                   exactly one member, repeated twice (since they have the same name)
                    :>           Delayed Rule (replace left hand side with right hand side.)
                                 Delayed Rule evaluate on each substitution, avoiding conflicts with predefined variables
                      {a,b,c,b}  put one of the b-named member after all other sequences
//.                              repeat until no change (aka Replace Repeated)

1
একটি ছোটখাটো জিনিস: Rule (->)হওয়া উচিত RuleDelayed (:>)(বাইট গণনায় কোনও পরিবর্তন নয়) কারণ উভয় পক্ষের Ruleভেরিয়েবল রয়েছে। Ruleপূর্ব-বিদ্যমান সংজ্ঞাগুলির সাথে দ্বন্দ্ব সৃষ্টি করতে পারে। উদাহরণস্বরূপ: a=3;5/.{a_->a}ফেরত 3, না 5। (এর a_->aমূল্যায়ন a_->3- যদি আপনি ব্যবহার করেন তবে a_:>aএটি সেভাবেই থাকে এবং a=3;5/.{a_:>a}ফিরে আসে 5)।
জংহওয়ান মিন

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

@ জংহওয়ানমিন রুলডেলেডে স্থির হয়েছে। ধন্যবাদ।
স্পেসমিট

2

ব্রেনফ * সিকে , 458 226 বাইট

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

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

সংখ্যাওয়ং , 262 226 বাইট

8400000087111111442111911170004000400000071114002241202271214020914070419027114170270034427171114400000091111112711170000007000400040000007111400224120227121402091407041902711417027004219190071420091171411111170007000771111117

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

আমি এই দুটি এখানে রেখেছি কারণ সেগুলি অভিন্ন কোড।


2

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

for($s=count_chars($argv[1]);$s=array_filter($s);$c%=128)echo$s[++$c]--?chr($c):'';

দুর্ভাগ্যক্রমে আপনি unsetএকটি বার্ষিকীতে থাকতে পারে না তাই আমার বিরক্তিকর দীর্ঘ ব্যবহার করা দরকার array_filter
ব্যবহার করুন:

php -r "for($s=count_chars($argv[1]);$s=array_filter($s);$c%=128)echo$s[++$c]--?chr($c):'';" "If you sort a string you'll typically get something like:"

2

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

f=lambda s,i=0,c='':s[i>>7:]and(s.count(c)>i>>7)*c+f(s,i+1,chr(i%128))

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

এটি খুব অদক্ষ। পরীক্ষা লিংক পরিবর্তন i>>7করতে i>>5এবং সেট 10000. করার পুনরাবৃত্তির সীমা ইনপুট শুধুমাত্র ASCII মান 126 পর্যন্ত হয়েছে অনুমান।

দুটি লুপের মাধ্যমে পুনরাবৃত্তি করতে ডিভ-মোড ট্রিক ব্যবহার করে: i/128বাইরের লুপের ন্যূনতম গণনা এবং i%128অভ্যন্তরীণ লুপে ASCII মানগুলি । cপ্রদত্ত ASCII মান সহ একটি অক্ষর অন্তর্ভুক্ত করে যদি স্ট্রিংয়ের বারের সংখ্যাটি কমপক্ষে তার সর্বনিম্ন গণনা হয়।

অ্যাসাইনমেন্টটি অনুকরণ করার জন্য কোডটি একটি কৌশল ব্যবহার করে c=chr(i%128) যাতে এটি এক্সপ্রেশনটিতে উল্লেখ করা যায় (s.count(c)>i>>7)*c। পাইথন lambdaগুলি অ্যাসাইনমেন্টের অনুমতি দেয় না কারণ তারা কেবল এক্সপ্রেশন নেয়। একটি defবা সম্পূর্ণ প্রোগ্রামে রূপান্তর করা এখানে এখনও নিট ক্ষতি।

পরিবর্তে, ফাংশনটি rec chr(i%128)চ্ছিক ইনপুট হিসাবে পরবর্তী পুনরাবৃত্ত কলটিতে মানটি এগিয়ে দেয় । এটি একের পর এক বন্ধ করে iদেওয়া হয়েছে কারণ বর্ধিত হয়েছে, তবে স্ট্রিংটিতে বিশেষ চরিত্র না থাকায় কিছু যায় আসে না '\x7f'(আমরা 128 থেকে 256 পর্যন্তও বাড়িয়ে তুলতে পারি)। প্রাথমিকটি c=''নিরীহ।


2

ভি , 37 36 বাইট

বাইটের জন্য @ ডিজেএমসিমেহেমকে ধন্যবাদ!

Í./&ò
dd:sor
Íî
òͨ.©¨±«©±À!¨.«©/±³²

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

নিশ্চিত না যে আমি শেষের দিকে রেজেক্স পছন্দ করি, তবে আমার এটি তৈরি করা দরকার ò কোনওভাবে ব্রেক করা ।

ব্যাখ্যা করা

Í./&ò                    #All chars on their own line
dd:sor                   #Delete empty line, sort chars
Íî                       #Join all lines together s/\n//
òͨ.©¨±«©±À!¨.«©/±³² #until breaking s/\v(.)(\1+)\1@!(.+)/\3\2\1

Íî(বা :%s/\n//g) এর চেয়ে সংক্ষিপ্তVGgJ
ডিজেএমসিএমহেম

1

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

{my \a=.comb.sort;[~] flat roundrobin |a.squish.map({grep *eq$_,a})}

আমি কিছুটা অবাক হয়ে জানতে পেরেছিলাম যে তালিকার উপাদানগুলির মতো গোষ্ঠীর অভ্যন্তরীণ কোনও উপায় নেই। স্কোয়াশ-ম্যাপ বিট এটিই করে।


1
আমি পেতে "এই seq ইতিমধ্যে হয়েছে iterated" যদি না আমি নামান্তর aকরতে @a(+2 বাইট)। এছাড়াও, (-3 বাইট) grep *eq$_,লিখিত হতে পারে grep $_,যেহেতু একটি স্ট্রিং একটি বৈধ স্মার্ট-ম্যাচার।
11:25

1
{[~] flat roundrobin |.comb.classify(~*){*}.sort»[*]} - এই প্রকরণটি কেবল 54 বাইট।
11:45

@ এসএমএস আমি ত্রুটিটি দেখতে পাচ্ছি না। হতে পারে আমরা বিভিন্ন সংস্করণ ব্যবহার করছি? আমি rakudo-star-2016.10 এ আছি। যাইহোক, আপনার সমাধানটি আমার লজ্জায় ফেলেছে, আপনার এটি পৃথক উত্তর হিসাবে পোস্ট করা উচিত।
শান

আমি এই সপ্তাহে গিট রেপোর মূল শাখা থেকে সংকলিত একটি রক্তপাত প্রান্তের রাকুডো ব্যবহার করছি। যাইহোক, আমি classifyএখন ভিত্তিক সমাধানটি পৃথক উত্তর হিসাবে পোস্ট করেছি ।
স্মলস

1

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

s=>(a=[],x={},[...s].sort().map(c=>a[x[c]=n=-~x[c]]=(a[n]||'')+c),a).join``

স্থিতিশীল n দ্বারা lexicographically সাজানো স্ট্রিং বাছাই করে তম occurence

F=s=>(a=[],x={},[...s].sort().map(c=>a[x[c]=n=-~x[c]]=(a[n]||'')+c),a).join``

const update = () => {
  console.clear();
  console.log(F(input.value));
};
input.oninput = update;
update();
#input {
  width: 100%;
  box-sizing: border-box;
}
<input id="input" type="text" value="         ':Iaaceeefggghiiiiklllllmnnooooprrssstttttuuyyyy" length=99/>
<div id="output"></div>


1+~~হিসাবে একই -~
নীল

@ নীল অসাধারণ ধন্যবাদ -২ বাইট
জর্জ রিথ

1

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

{[~] flat roundrobin |.comb.classify(~*){*}.sort»[*]}

ব্যাখ্যা:

  • { }: একটি ল্যাম্বদা যা একটি যুক্তি নেয় - যেমন 21211
  • .comb: অক্ষরের তালিকায় ইনপুট যুক্তি বিভক্ত করুন - যেমন (2,1,2,1,1)
  • .classify(~*): অক্ষরহীন হ্যাশ ফিরিয়ে দেওয়া - স্ট্রিং তুলনাটিকে গ্রুপিং শর্ত হিসাবে গ্রুপবদ্ধ করুন - যেমন eg { 2=>[2,2], 1=>[1,1,1] }
  • {*}: হ্যাশের সমস্ত মানগুলির একটি তালিকা ফেরত দিন - যেমন [2,2], [1,1,1]
  • .sort: এটি বাছাই - যেমন [1,1,1], [2,2]
  • »[*]: আইটেমের পাত্রে স্ট্রিপটি হ্যাশে থাকার কারণে অ্যারেগুলি আবৃত করা হয়েছিল, যাতে তারা নিম্নলিখিত পদক্ষেপে একটি আইটেম হিসাবে বিবেচিত হবে না - যেমন (1,1,1), (2,2)
  • roundrobin |: সমস্ত ক্লান্ত না হওয়া অবধি সাব-তালিকাগুলি জিপ করুন - যেমন (1,2), (1,2), (1)
  • flat: ফলাফল সমতল করুন - যেমন 1, 2, 1, 2, 1
  • [~]: আবার স্ট্রিং পেতে এটিকে সংঘবদ্ধ করুন - যেমন 12121

( roundrobinপদ্ধতির জন্য ক্রেডিট শানের উত্তরে যায় ))


1

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

{.¡"ä"©¹g׫øJ®K

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

ব্যাখ্যা

{                # sort input
 .¡              # group by equal elements
   "ä"©          # push "ä" and store a copy in the register
       ¹g×       # repeat the "ä" input-nr times
          «      # concatenate the result to each string in the grouped input
           ø     # zip
            J    # join to string
             ®K  # remove all instances of "ä" in the string

15 বাইটের মধ্যে 10 টি বিভিন্ন দৈর্ঘ্যের জিপিং স্ট্রিংগুলি পরিচালনা করার জন্য প্রায় 05AB1E এর উপায় পাওয়ার জন্য।


1

এফশার্প, 194 190 170 140 133 বাইট

let f=Seq.map
let(@)=(>>)
f int@Seq.groupBy id@f(snd@Seq.mapi((*)128@(+)))@Seq.concat@Seq.sort@f((%)@(|>)128@byte)@Array.ofSeq@f char

অ্যারের পরিবর্তে সিক ব্যবহার করা কয়েক বাইট সংরক্ষণ করে

একটি সংক্ষিপ্ত নাম সংজ্ঞায়িত করা এবং একটি এড়ানোর জন্য অন্য মানচিত্র ব্যবহার করা (fun ->) ব্লক

দেখা যাচ্ছে যে F # একটি ইন-তে কোনও মানচিত্র তৈরি করতে পারে, তাই সিস্টেমের সংক্ষিপ্ত নামটি সরিয়ে ফেলুন e পাঠ্য.ইনকোডিং.এএসসিআই এবং অন্য মানচিত্রে যোগ করা আমার 20 টি বাইট সংরক্ষণ করে!

একটি স্ট্রিংয়ের পরিবর্তে একটি চর অ্যারে ফিরিয়ে দেওয়া, আমার 30 বাইট সঞ্চয় করে!

আমার আর এটি নিশ্চিত করার দরকার নেই যে এটি একটি স্ট্রিং, আমাকে 7 বাইট সংরক্ষণ করে


0

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

স্পষ্টতার জন্য নিউলাইন দিয়ে পৃথক করা, বাইট গণনার অংশ নয়:

s=>[...s].map(a=>(m[a]=-~m[a])*128+a.charCodeAt(),m={})
.sort((a,b)=>a-b).map(a=>String.fromCharCode(a%128)).join``

ডেমো

`**Test cases:**
 *:Tacest*es*s*

If you sort a string you'll typically get something like:
 ':Iacefghiklmnoprstuy aegilnorstuy egilosty iloty lt    

Hello, World!
 !,HWdelorlol

#MATLAB, 114 bytes
 #,14ABLMTbesty 1A

f=@(s)[mod(sort(cell2mat(cellfun(@(c)c+128*(0:nnz(c)-1),mat2cell(sort(s),1,histc(s,unique(s))),'un',0))),128),''];
'()*+,-0128:;=@[]acdefhilmnoqrstuz'(),0128@acefilmnorstu'(),12celmnostu'(),12celnstu(),clnst(),cls(),cs(),()()()()`.split`\n\n`.map(s=>(p=s.split`\n`,console.log(`${p[0]}\n\n${r=f(p[0])}\n\nmatch: ${r==p[1]}`)),
f=s=>[...s].map(a=>(m[a]=-~m[a])*128+a.charCodeAt(),m={}).sort((a,b)=>a-b).map(a=>String.fromCharCode(a%128)).join``)


আমার মতলব কোড হিসাবে একই বাইটকাউন্ট এবং ঠিক একই পদ্ধতির। যদিও এখনও গল্ফ মাইনের চেষ্টা করেনি। আপনি পরে ব্যাখ্যাটি যুক্ত করলে আমি সম্ভবত পরে উজ্জীবিত হব :-) (আমি কোনও ব্যাখ্যা ছাড়াই উত্তরগুলি সমর্থন না করার একটি নীতি তৈরি করেছি, এমনকি যখন আমি এটি বুঝতে পারি) :-)
স্টিভি গ্রিফিন

0

ক্লোজার, 79 বাইট

#(for[V[(group-by(fn[s]s)%)]i(range 1e9)k(sort(keys V))c[(get(V k)i)]:when c]c)

একটি বেনামে ফাংশন, অক্ষরের ক্রম দেয়। কোনও অক্ষর পর্যন্ত 10 ^ 9 পর্যন্ত পুনরাবৃত্তি সমর্থন করে, যা প্রচুর পরিমাণে হওয়া উচিত।



0

রুবি, 59 + 1 = 60 বাইট

-nপতাকার জন্য একটি বাইট যুক্ত করে । @ পেট্রিকরোবার্টসের অভিধান সমাধানের বন্দর।

d={};print *$_.chars.sort_by{|c|d[c]||=0;c.ord+128*d[c]+=1}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.