চিঠি কমার সময় সংখ্যা বৃদ্ধি পায় Incre


23

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

আপনি ইনপুট অক্ষর ধারণকারী হিসাবে বস্তুর একটি তালিকা গ্রহণ করা উচিত (যে কোন যুক্তিসংগত ফর্ম: string, char, ইত্যাদি) এবং সংখ্যার। তারপরে আপনাকে সংখ্যাগুলি আরোহণের ক্রমে এবং বর্ণগুলি অবতরণ ক্রমে সাজানো উচিত। তবে আপনার চিঠিগুলি অক্ষরের অবস্থান এবং সংখ্যা পজিশনে রাখতে হবে। উদাহরণস্বরূপ, যদি তালিকাটি থাকে:

[L, D, L, L, D, L]

আউটপুট তালিকাটি আকারে হওয়া উচিত:

[L, D, L, L, D, L]

এর মাধ্যমে কাজ

ইনপুট: ['a', 2, 'b', 1, 'c', 3]

  • নম্বরগুলি আরোহণের ক্রমে সাজান: [1, 2, 3]
  • অক্ষরগুলি অবতরণ ক্রমে বাছাই করুন: ['c', 'b', 'a']
  • তাদের সাথে যোগ দিন তবে অর্ডারটি একই রাখুন: ['c', 1', 'b', 2, 'a', 3]

বিধি

  • তালিকায় কেবল অক্ষর এবং সংখ্যা থাকবে।
  • তালিকাটি খালি থাকতে পারে।
  • তালিকায় কেবল অক্ষর বা কেবল সংখ্যা থাকতে পারে।
  • যদি আপনার ভাষা মিশ্র টাইপের অ্যারেগুলিকে সমর্থন করে না তবে আপনি সংখ্যার পরিবর্তে অঙ্কের অক্ষর ব্যবহার করতে পারেন। মনে রাখবেন যে আপনার ভাষা যদি এটি সমর্থন করে তবে আপনাকে অবশ্যই মিশ্র প্রকারগুলি ব্যবহার করতে হবে।
  • চিঠিগুলি কেবল হবে [a-z]বা [A-Z], আপনি কোনটি চয়ন করতে পারেন।
  • চিঠিপত্র যেমন সাজানো হয় aসর্বনিম্ন হচ্ছে, zসর্বোচ্চ অর্থাত হচ্ছে a = 1, z = 26
  • স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।
  • I / O স্ট্রিং সহ যে কোনও মানক উপায় হতে পারে।

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

[5, 'a', 'x', 3, 6, 'b'] -> [3, 'x', 'b', 5, 6, 'a']

[ 3, 2, 1] -> [ 1, 2, 3 ]

[ 'a', 'b', 'c' ] -> [ 'c', 'b', 'a' ]

[] -> []

[ 2, 3, 2, 1 ] -> [1, 2, 2, 3]

এটি হিসাবে বাইট জেতে সংক্ষিপ্ত উত্তর!


মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়; এই কথোপকথন চ্যাটে সরানো হয়েছে ।
মার্টিন এন্ডার

উত্তর:


7

রেটিনা , 10 বাইট

O`\d
O^`\D

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

Oঅক্ষিপট মধ্যে পর্যায় সরাসরি নির্বাচনী এই প্রতিদ্বন্দ্বিতা দ্বারা প্রয়োজন বাছাই ধরনের সম্পাদন করতে পারবেন।

এখানে প্রথম লাইনটি অঙ্কগুলি বাছাই করে যখন দ্বিতীয় লাইন বিপরীতে অ-অঙ্কগুলি বাছাই করে।


13

পাইথন 2 , 53 52 বাইট

-২ বাইটসকে জি.রকেট -১ বাইট ধন্যবাদ জোনাথন ফ্রেচকে
ধন্যবাদ

def F(x):n=sorted(x);print[n.pop((e<x)-1)for e in x]

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

sortedতালিকা প্রথম এবং তারপর অক্ষর ভালো নম্বর থাকবে [3, 5, 6, 'a', 'b', 'x'], তারপর ব্যবহার e<xফিল্টার নম্বর কি এবং গৃহস্থালির কাজ কি, পাইথন যেকোনো নম্বরে একটি তালিকা দেখুন (ইনপুট) কম এবং একটি তালিকা একটি স্ট্রিং কম।


এই সংস্করণটি ব্যর্থ হয় IndexError: pop index out of range। পূর্বের সমাধানটি কাজ করেছিল work
মিঃ এক্সকোডার

এটি যদিও 55 বাইটের সাথে কাজ করে। 1-(e<'`')হওয়া উচিত (e<'`')-1। আপনি এগুলি কেবল ভুল ক্রমে রেখেছেন। BTW, তুমি আমাকে ninja'd: / আমার কাছে তা থাকত এই
জনাব Xcoder

@ মিঃ এক্সকোডার সাহায্যের জন্য ধন্যবাদ সি:
রড

2
সঙ্গে সংরক্ষণ দুইe>x
g.rocket

1
@ রুটটিও যা উদ্দেশ্যমূলক আচরণের বিপরীতে কাজ করে।
লিরিকলি

9

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

অক্ষরগুলি বড়হীন হওয়ার প্রত্যাশা করে

(⍋⊃¨⊂)@(~e)(⍒⊃¨⊂)@(e←∊∘⎕A)

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

এটি ফর্মের মাত্র দুটি অ্যাপ্লিকেশন, নির্দেশিত আইটেমগুলিতে f@gফাংশনটি প্রয়োগ করুন ।fg

প্রথম আবেদন আমরা ব্যবহার এর জন্য:
f:  ⍒⊃¨⊂ সাজানো বাংলাদেশের ( ) প্রতিটি পিক ( ⊃¨) সমগ্র যুক্তি থেকে ( )।
g:  (e←∊∘⎕A) সদস্যদের ( ) (এর ) একটি lphabet ( ⎕A), এবং দোকান ( ) নামে এই ফাংশন e

দ্বিতীয় আবেদন আমরা ব্যবহার এর জন্য:
f:  ⍋⊃¨⊂ আরোহী বাংলাদেশের ( ) প্রতিটি পিক ( ⊃¨) সমগ্র যুক্তি থেকে ( )।
g:  (~e) ( ~) বর্ণমালার সদস্য নয় ( e; আমরা যে ফাংশনটি আগে সংরক্ষণ করেছি)


আমি মনে করি এটিতে সমস্ত পূর্ণসংখ্যার জন্য কভার করা দরকার, সুতরাং দ্বিতীয় ফিল্টারটি এর সাথে প্রতিস্থাপন করুন83=⎕DR¨⍵
উরিল

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

এটা কি সবসময় 3=10|⎕DRপূর্ণসংখ্যার জন্য?
ঊরীয়েল

@ উরিল হ্যাঁ: 0 = ইউনিকোডচর, 1 = বুলিয়ান, 2 = ক্লাসিকচর, 3 = ইনট, 5 = ফ্লোট, 6 = পয়েন্টার, 7 = দশমিক, 9 = জটিল। ⌊0.1×⎕DRপ্রতিটি স্কেলারের প্রতিনিধিত্ব করতে ব্যবহৃত বিটের সংখ্যা দেয়, পয়েন্টার ব্যতীত, যা আর্কিটেকচারের উপর নির্ভর করে তবে সর্বদা 326 থাকে। সুতরাং, সমস্ত সংখ্যা 2|⎕DR
অ্যাডম

8

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

@ জাস্টিনমারিনারেরsort() পরামর্শ অনুসারে মাত্র 20 টি বাইট সংরক্ষণ করেছেন @ ক্রেইগএয়ারকে
আরও 4 টি বাইট সংরক্ষণ করা হয়েছে

রডের পাইথনের উত্তর হিসাবে অনুরূপ পদ্ধতির ব্যবহার :

a=>[...a].map(n=>a.sort()[1/n?'shift':'pop']())

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


আমি কি কিছু অনুভব করছি বা আপনি পুরো sortফাংশনটি সরাতে এবং কেবল sort()এটির নিজের ব্যবহার করতে পারছেন না ? এটি কোনও ক্রিয়া ছাড়াই (ক্রোম / এফএফ / এজ এ) একইভাবে সাজানোর জন্য মনে হয়।
জাস্টিন মেরিনার

@ জাস্টিনমারিনার প্রথমে আমি ভেবেছিলাম যে সংখ্যার মানগুলি সংখ্যা হতে পারে - এক্ষেত্রে একটি সাধারণ sort()ব্যর্থ হবে simple তবে যেহেতু আমরা অঙ্কগুলিতে সীমাবদ্ধ, আপনি সঠিক: এটি কাজ করে। ধন্যবাদ!
আর্নৌল্ড

1
চমৎকার সমাধান, আপনি কি a.sort()প্রতিটি লুপের পরিবর্তে স্থান পরিবর্তন / পপ করতে পারবেন x?.map(n=>a.sort()[1/n?'shift':'pop']())
ক্রেগ আয়র

@ ক্রেইগএয়ার ভাল ধরা!
আর্নৌল্ড

আমি বেশ নিশ্চিত যে এর +nপরিবর্তে ব্যবহার করা যাবে1/n
কনর

5

আর , 83 76 বাইট

-7 বাইট ধন্যবাদ মিফকে

function(n){u=unlist
d=n%in%0:9
n[d]=sort(u(n[d]))
n[!d]=sort(u(n[!d]),T)
n}

এটি নীচের মতোই তবে এটি ভেক্টরের listপরিবর্তে মিক্সড-টাইপ ইনপুটকে অনুমতি দেয় atomic(যা মিশ্র প্রকারের সাথে অক্ষরের মতো সবকিছু টাইপকাস্ট করে)।

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

আর , 68 61 বাইট

-7 বাইট ধন্যবাদ মিফকে

function(n){d=n%in%0:9
n[d]=sort(n[d])
n[!d]=sort(n[!d],T)
n}

বেনামে ফাংশন। সমস্ত অঙ্ক এই ক্ষেত্রে অক্ষরগুলিতে কাস্ট করা হয়। n[-d]অঙ্ক ছাড়াই অ্যারে হয়। NULLখালি ইনপুটটিতে ফিরে আসে (খালি তালিকা)।

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


আপনি কয়েকটি অক্ষর দিয়ে শেভ করতে পারেনd=n%in%0:9
মিফ

4

জাপট , 18 15 বাইট

ধন্যবাদ @ শেগি -3 বাইটের জন্য এবং 0এস এর সাথে অ্যারেগুলির জন্য ফিক্সিংয়ে সহায়তা করার জন্য ।


c ñc
®¤?Vv :Vo

প্রথম লাইনটি ইচ্ছাকৃতভাবে ফাঁকা ছেড়ে দেওয়া হয়েছে।

এটি অনলাইন চেষ্টা করুন! -Qবিন্যাসিত অ্যারে দেখতে ব্যবহার করে ।

ব্যাখ্যা

ইনপুট অ্যারে ওভাররাইট করা এড়াতে প্রথম লাইনটি ফাঁকা is
[5, 'a', 'x', 3, 6, 'b']

c ñc

( c) ইনপুট অ্যারে সমতল করে একটি অনুলিপি তৈরি করুন , তারপরে ( ñ) এর চর কোড ( c) দ্বারা প্রতিনিধিত্ব করা স্ট্রিংগুলি দিয়ে বাছাই করুন । এটি সংরক্ষণ করা হয় V
[3, 5, 6, 'a', 'b', 'x']

£

তারপরে ফাংশনটির মাধ্যমে ইনপুট অ্যারের মানচিত্র করুন ...

¤?Vv :Vo

সংখ্যাগুলিকে বাইনারি স্ট্রিং (সত্যবাদী) বা স্ট্রিংগুলিকে ""(মিথ্যা) ( ¤) রূপান্তর করুন । যদি সত্য হয়, V( v) এর শুরু থেকে অপসারণ করুন , অন্যথায় শেষ ( o) থেকে সরান ।



@ শেগি নিস, এটি সত্যিই চালাক। ধন্যবাদ!
জাস্টিন মেরিনার

আপনি স্যুইচ করতে Voএবং Vvচারপাশে ভুলে গেছেন । আমি দৃ convinced়ভাবে বিশ্বাস করি যে, তারেনারি ছাড়াই আরও একটি ছোট পথ থাকতে হবে।
শেগি

@ শেগি ওহ, ওফফফ! এবং হ্যাঁ, ঠিক যদি oনেতিবাচক মান বা কিছু দিয়ে শুরু থেকে সরিয়ে ফেলা যায় ...
জাস্টিন মেরিনার

4

জাভাস্ক্রিপ্ট, 164 162 158 142 বাইট

ভি এর অনর্থক কার্যভার অপসারণের পরে 1: 2 বাইট কম সম্পাদনা করুন।

2: 4 বাইট সম্পাদনা থেলথেলকোডারকে কম ধন্যবাদ।

জাস্টিন মেরিনারের উজ্জ্বল ইঙ্গিতগুলির জন্য 3: 16 বাইট সম্পাদনা করুন

x=>eval("n=v=>typeof(v)=='number';l=x.length;for(i=0;i<l;x[i++]=x[m],x[m]=w){for(v=w=x[j=m=i];++j<l;)n(e=x[j])==n(w)&&e<v==n(w)&&(m=j,v=e)}x")

কোড-গল্ফে এটি আমার প্রথমবার, তাই এটি অবশ্যই উন্নত হতে পারে ... তবে তবুও, চেষ্টা করে দেখার মতো।

প্রোগ্রামটি বাছাই বাছাইয়ের একটি বৈকল্পিক সম্পাদন করে, যা কেবলমাত্র বর্তমানের মতো একই ধরণের মানগুলি গ্রহণ করে (কেবল একটি সংখ্যা এবং একটি সংখ্যা, বা একটি চিঠি এবং একটি চিঠি)

পঠনযোগ্য ফর্ম:

x=>eval("
    n=v=>typeof(v)=='number';
    l=x.length;
    for(i=0;i<l;x[i++]=x[m],x[m]=w){
        for(v=w=x[j=m=i];++j<l;) 
            n(e=x[j])==n(w) && e<v==n(w) && (m=j,v=e)
    }
    x
")

for(j=i+1;j<l;j++)-> for(j=i++;++j<l;)এবং বাইরের লুপের বৃদ্ধি সরিয়ে দিন।
TheLethalCoder

স্বাগতম পিপিসিও!
TheLethalCoder

@ দ্য লেথাল কোডার যদি আমরা এত তাড়াতাড়ি কাউন্টারগুলিকে বাড়িয়ে তুলি তবে আমি এবং জে ব্যবহৃত লাইনগুলিও বদলাতে হবে ... তবে ধারণাটি সত্যিই স্মার্ট, আমি কীভাবে এটি ব্যবহার করব তা ভাবব think
mackoo13

আপনি বাড়ায় পারেন jহিসাবে আমি প্রস্তাব, আমি তোমাকে ব্যবহার দেখতে পাইনি iআরও নিচে শুধু পরিবর্তন x[i]=x[m]খুবx[i++]=x[m]
TheLethalCoder

আহ, অবশ্যই ... আমি কেন ভাবি নি x[i++]=x[m]... ধন্যবাদ!
ম্যাকু 13 ই

3

সি ++ 17 (জিসিসি) , 219 বাইট

#include <variant>
#include <set>
using V=std::variant<char,int>;void f(V*a,V*b){std::set<V>S[2];for(V*c=a;c<b;++c)S[c->index()].insert(*c);auto
C=S->rbegin();auto N=S[1].begin();for(;a<b;++a)*a=(a->index()?*N++:*C++);}

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

খুব কমই প্রতিযোগিতামূলক। তবে আমার অবশ্যই মিশ্রিত ধরণের অ্যারেগুলি সমর্থন করতে হবে? ঠিক আছে।

পরিসীমা শৈলীতে একটি ভেরিয়েন্টের অ্যারে গ্রহণ করে এবং এটি জায়গায় পরিবর্তিত করে। দুটি সাজানো সেটগুলিতে ইনপুট অনুলিপি করে এবং তারপরে ইনপুট / আউটপুট অ্যারেতে ফিরে আসে।


এটা মজার. আমি "মিক্সড-টাইপ অ্যারেগুলিকে এইভাবে সমর্থন করি না"। অন্যথায়, আমাকে void *সি এর একটি অ্যারে ব্যবহার করতে হবে ;) তবে, হ্যাঁ, এই জাতীয় হুপের মাধ্যমে কোনও সমাধান ঝাঁপিয়ে পড়া দেখতে আকর্ষণীয়।
ফেলিক্স পেলমেন

#includeএস এর মধ্যে স্পেসগুলি সরিয়ে আপনি দুটি বাইট সংরক্ষণ করতে পারেন
কনর



2

পাইথ , 12 11 বাইট

KSQm.(Kt>\@

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


ব্যাখ্যা

KSQm.(Kt<d\@  - Full program with implicit input.

KSQ           - Assign a variable K to the lexicographically sorted input.
   m          - Map over the input (with a variable d).
    .(K       - Pop the sorted list at this location:
       >\@    - If d is lexicographically lower than '@', at 0 (the first element). Else, at -1 (the last element).

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

@ অ্যাডম আপনার কেবলমাত্র দুটি সমজাতীয় অ্যারেগুলিতে বিভক্ত হওয়ার অর্থ যা প্রতিটি সহজেই বাছাইযোগ্য হবে ?
মিঃ এক্সকোডার

ওপির "ওয়ার্কথ্রু" তে বর্ণিত হিসাবে: 1. কোন উপাদানগুলি সংখ্যাসূচক এবং কোনটি চরিত্রগত তা নোট করুন। 2. সমস্ত সংখ্যা পৃথক অ্যারেতে বের করুন এবং এটি সাজান। অক্ষরগুলির জন্য একই করুন। ৩. সাজানো নম্বরটি আবার নম্বর স্লটে রাখুন। অক্ষরগুলির জন্য একই করুন।
অ্যাডম

@ অ্যাডম যদি ওপিকে এটিকে অবৈধ মনে করে তবে আপনি যা বলেছিলেন ঠিক তেমনই করব (এটি এর ফলে অনেক দীর্ঘতর পদ্ধতির ফলস্বরূপ হবে)
মিঃ এক্সকডার

2

পাইথন, 145 139 130 বাইট

6 আফগানিস্ত্রি @officialaimm ধন্যবাদ সংরক্ষণ করেছে

9 ক্রাইট_র্যান্ডস ধন্যবাদ 9 বাইট সংরক্ষণ করা হয়েছে

g=lambda s,a:sorted(x for x in s if(type(x)==str)==a)
def f(s):l,n=g(s,1),g(s,0)[::-1];return[[n,l][type(x)==str].pop()for x in s]

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



type(x)==strisinstance(...)আমার মনে হয় ব্যবহার করে কিছু বাইট বাঁচাতে পারে
Chris_Rands

@ ক্রিস_র্যান্ডস ধন্যবাদ!
উরিল

2

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

SaJ¹á{R¹þ{«vyay.;

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


SaJ               # Push 1 if letter 0 else, for all letters in string.
   ¹á{R           # Reverse sort letters from input.
       ¹þ{        # Regular sort digits from input.
          «       # Concatenate those two things.
           v      # For each letter in the sorted string...
            ya    # 0 if digit, 1 if letter.
              y.; # Replace first instance of 0/1 with digit/letter.

বাছাইয়ের মাধ্যমে বন্ধটি ব্যবহার করা আসলে আরও খারাপ ছিল: Σ©Ç®ai0<*}}¹SaJsvyay.;


2

পাইথন 3, 77 বাইট

এই উত্তরটি সেই মন্তব্যের উপর ভিত্তি করে তৈরি করা হয়েছে যা বলছে যে আপনি অক্ষর এবং অঙ্কগুলি ভাষার তুলনায় তুলনীয় না হলে আপনি '1', '2' ইত্যাদি ব্যবহার করতে পারেন। পাইথন 3 এ 'ক' এবং 1 তুলনীয় নয়।

def f(s):x=sorted(s,key=lambda c:ord(c)-95);return[x.pop(-(c>'.'))for c in s]

2

q / kdb +, 54 53 বাইট

সমাধান:

{x[w,q]:asc[x w:(&)d],desc x q:(&)(~)d:-7=type@/:x;x}

উদাহরণ:

q){x[w,q]:asc[x w:(&)d],desc x q:(&)(~)d:-7=type@/:x;x}(5;"a";"x";3;6;"b") / mixed list
3
"x"
"b"
5
6
"a"
q){x[w,q]:asc[x w:(&)d],desc x q:(&)(~)d:-7=type@/:x;x}3 2 1   / simple list
1 2 3
q){x[w,q]:asc[x w:(&)d],desc x q:(&)(~)d:-7=type@/:x;x}"abc"   / simple list
"cba"
q){x[w,q]:asc[x w:(&)d],desc x q:(&)(~)d:-7=type@/:x;x}2 3 2 1 / simple list
1 2 2 3

ব্যাখ্যা:

তালিকায় অক্ষরগুলি সন্ধান করুন, অবতরণকে সাজান, তালিকায় দীর্ঘতরগুলি সন্ধান করুন, তাদেরকে আরোহণের অনুসারে বাছাই করুন, তালিকা পেতে যোগ দিন, উদাহরণস্বরূপ ("x";"b";"a";3;5;6), তালিকা অনুসারে বাছাই করা মানগুলি তাদের মূল অবস্থানে ফিরিয়ে দিন, উদাহরণস্বরূপ 0 3 4 1 2 5

Golfing শুধু কুই কীওয়ার্ড আউট সুইচিং করা হয় ( each, whereএবং notতাদের জন্য) kসমতুল্য (যা তাদের বন্ধনীর মধ্যে আবৃত করা আবশ্যক)।

{x[w,q]:asc[x w:where d],desc x q:where not d:-7=type each x;x} / ungolfed
{                                                           ; } / lambda function with 2 statements
                                                 type each x    / return types of elements in mixed list
                                              -7=               / true where item is a long
                                            d:                  / save this bool array in d
                                        not                     / invert
                                  where                         / indices where true (we have chars)
                                q:                              / save these indices in q
                              x                                 / values of x at these indices
                         desc                                   / sort them descending
                        ,                                       / join/contatenate
                where d                                         / indices where we have digits
              w:                                                / save this in w
            x                                                   / values of x at these indices
        asc[           ]                                        / sort them ascending
 x[w,q]:                                                        / assign this list to x at indices w,q
                                                             x  / return x

সম্পাদনাগুলি

  • চারপাশে বর্গাকার বন্ধনী প্রয়োজন না হিসাবে -1 বাইট desc

2

সি (জিসিসি) , 125 113 110 বাইট

main(i){char*b,*c,s[99];for(gets(c=b=s);*++c||*(c=++b);)i=*b&64,i^*c&64||*c>*b^!i&&(i=*c,*c=*b,*b=i);puts(s);}

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

ব্যাখ্যা:

main(i)
{
    char*b,*c,s[99];

    // slightly modified stupid bubblesort, this line in fact
    // does nested looping with a single for statement
    for(gets(c=b=s);*++c||*(c=++b);)
    // (undefined behavior here, there's no sequence point between accesses to c,
    // so this could go wrong. Works with the gcc version on tio.)

        // determine whether the current b is a letter:
        i=*b&64,

        // for doing anything, b and c must be the same "type":
        i^*c&64

            // when c > b for letter or c <= b for digit
            || *c>*b^!i

            // then swap
            && (i=*c,*c=*b,*b=i);

    puts(s);
}

বড় হাতের অক্ষরে অক্ষর প্রত্যাশিত।


2

পিএইচপি, 66 বাইট:

for($a=$argv,sort($a);a&$c=$argv[++$i];)echo$a[$c<A?++$k:--$argc];

কমান্ড লাইন আর্গুমেন্ট থেকে ইনপুট নেয়, একটি স্ট্রিং মুদ্রণ করে। এটি দিয়ে চালান -nrবা অনলাইনে চেষ্টা করুন

পিএইচপি 7.1 এ একটি সতর্কতা সরবরাহ করে; ঠিক করার a&সাথে প্রতিস্থাপন ""<


1

গণিত, 107 বাইট

(s=#;s[[p]]=Sort[s[[p=#&@@@s~($=Position)~_String]],#2~Order~#>0&];s[[c]]=Sort@s[[c=#&@@@s~$~_Integer]];s)&

1

সি # (.নেট কোর) , 171 বাইট

a=>{var b=a.Where(x=>x is int).ToList();b.Sort();int i=0,j=0;return a.Select(x=>b.Contains(x)?b[i++]:a.Except(b).OrderByDescending(y=>y).ToList()[j++]);}

বাইট গণনা এছাড়াও অন্তর্ভুক্ত:

using System.Linq;

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

ব্যাখ্যা:

a =>
{
    var b = a.Where(x => x is int).ToList(); // Filter to only ints and transform to list
    b.Sort();                                // Sort the list
    int i = 0, j = 0;                        // Create index counters
    return a.Select(x =>                     // Replace each input element with
                    b.Contains(x) ?          // If it is in list b:
                    b[i++] :                 // Get the next element from b
                    a.Except(b)              // Otherwise take input and filter out those in b
                     .OrderByDescending(x=>x)// Order them z to a
                     .ToList()[j++]);        // Get the next element


1

রুবি , 265 বাইট

x.sort_by(&:to_s).select{|a| a.is_a?(String)}.zip(x.map.with_index {|a, i| a.is_a?(String) ? i : nil}.compact).each{|a,i| x[i] = a}
x.sort_by(&:to_s).select{|a| a.is_a?(Integer)}.zip(x.map.with_index {|a, i| a.is_a?(Integer) ? i : nil}.compact).each{|a,i| x[i] = a}

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

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

সর্বোত্তম পন্থা কী তা দেখার জন্য আরও ভাল রুবি উত্তর দেখতে স্নেহ খুঁজছেন। আমি আশা করি ভবিষ্যতের উত্তরগুলিতে উন্নতি করব =)

সুপাঠ্য

x = ["c", 1, "a", 3, "b", 2]

b = x.map.with_index {|a, i| a.is_a?(Integer) ? i : nil}.compact
s = x.map.with_index {|a, i| a.is_a?(String) ? i : nil}.compact

o = x.sort_by(&:to_s).select{|a| a.is_a?(Integer)}
d = x.sort_by(&:to_s).select{|a| a.is_a?(String)}

d.zip s
d.zip(s).each {|a, i| x[i] = a}

o.zip b
o.zip(b).each {|a, i| x[i] = a }

p x

1

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

আরও ছোট উপায় থাকতে পারে তবে Lensলাইব্রেরির সাথে আমার এটি চেষ্টা করতে হবে ।

import Control.Lens
import Data.List
i(!)f=partsOf(traverse.filtered(!'='))%~f.sort
f x=x&i(<)id&i(>)reverse

আমি fকেবল দুটি iঅনুরোধের সংমিশ্রণ হিসাবে সংজ্ঞায়িত করতে পারি , তবে xমনোমরফিজম সীমাবদ্ধতা থেকে কোনও ধরণের ত্রুটি এড়াতে আমার এখনও এটি প্রয়োগ করতে হবে। লক্ষ্য করুন ধরণ fহয় Traversable t => t Char -> t Charতাই এটি ব্যবহার করা যেতে পারে Stringগুলি যার তালিকাসমূহ হয় Charগুলি সেইসাথে সঙ্গে অ্যারেChar গুলি।

এখানে পরীক্ষার মামলাগুলি রয়েছে:

*Main> map f ["5ax36b","321","abc","","2321"]
["3xb56a","123","cba","","1223"]

1

পাইথন 3, 91 বাইট

def f(s):x=sorted(s,key=lambda c:(type(c)==str,c));return[x.pop(-(type(c)==str))for c in s]

1

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

#(map(fn[t c](nth((if(=(type 1)t)vec reverse)(sort((group-by type %)t)))(-(c t)1)))(map type %)(reductions(partial merge-with +)(for[i %]{(type i)1})))

উদাহরণ:

(def f #( ... ))
(f [5 \a \x 3 6 \b])
; (3 \x \b 5 6 \a)

এটি পূর্ণসংখ্যার এবং অক্ষরের সংখ্যক সমষ্টি গণনা গণনা করে এবং সম্পর্কিত ধরণের উপাদানগুলির একটি বাছাই করা তালিকা থেকে সঠিক উপাদানটি অনুসন্ধান করতে এটি ব্যবহার করে।


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