অঙ্কের জোড়ার বর্ণনা অনুসারে বাছাই করুন


17

একটি ধনাত্মক পূর্ণসংখ্যা দেওয়া, আমরা জোড়ভাবে নেওয়া তার অঙ্কগুলি দ্বারা বর্ণিত একটি নতুন সংখ্যা গঠন করতে পারি (সংখ্যার বিজোড় সংখ্যার সাথে সংখ্যার জন্য শীর্ষস্থানীয় 0 যুক্ত)।

যেমন:

  • 1234 এক 2, তিন 4s হিসাবে পড়া যায় - সুতরাং, 1234 এর আউটপুট 2444।

  • 3৪৩ এর অদ্ভুত সংখ্যা রয়েছে, তাই এটি তৈরি করতে একটি শীর্ষস্থানীয় শূন্য যুক্ত করা হয়। তারপরে, 0643 পড়তে পারা যায়: শূন্য 6s, চার 3 এস, সুতরাং আউটপুট 3333 হবে।

(এটি OEIS A056967 )।

কার্য: ধনাত্মক পূর্ণসংখ্যার একটি অ্যারে দেওয়া, তাদের অঙ্ক-জোড়-বর্ণিত মান অনুসারে বাছাই ক্রমে সাজান sort অর্ডার ইনপুট সংখ্যাগুলির মধ্যে গুরুত্বপূর্ণ নয় যা একই মানকে নিয়ে যায়।

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

আউটপুট : উপরে বর্ণিত উপায়ে সাজানো অ্যারে, সাধারণ যেকোন উপায়ে ফিরে এসেছে (ফাংশন রিটার্নের মান / STDOUT / শূন্যের দিকে চিৎকার / ইত্যাদি) আপনি এগুলি পৃথকভাবে মুদ্রণ করতে পারেন, তাদের সংখ্যা, স্ট্রিং বা তালিকার তালিকা হিসাবে ফিরিয়ে দিতে পারেন ডিজিটের।

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

Input 
Output

[19, 91, 2345, 2023]
[19, 2023, 2345, 91]

[25257, 725, 91, 5219, 146125, 14620512]
[725, 5219, 14620512, 91, 146125, 25257]

[123130415 3335 91 111111111 528 88]
[528, 111111111, 123130415, 3335, 88, 91]

[1 21 33 4 5]
[1 4 5 21 33]

[3725, 10, 2537, 1, 1225, 2512]
[10, 1, 1225, 2512, 2537, 3725]

[125, 26, 1115, 1024] 
[1115, 1024, 125, 26]

(চতুর্থ পরীক্ষার ক্ষেত্রে, 1, 4, এবং 5 টি সমস্ত 0 তে মূল্যায়ন করে এবং তাই তাদের মধ্যে যে কোনও ক্রম অনুসারে বাছাই করা যায় Similarly একইভাবে পঞ্চম পরীক্ষার ক্ষেত্রে, 10 এবং 1 উভয়ই 0 এর মান নির্ধারণ করে, এবং তাই এটির ক্ষেত্রেও বাছাই করা যায়) হয় আদেশ।)

(সম্পর্কিত) আপনি যা দেখছেন বলুন , ওয়ান 1, টু 1, ওয়ান 2 ওয়ান 1

স্যান্ডবক্সে প্রশ্নটি পরিষ্কার করতে সাহায্য করার জন্য কেভিন ক্রুইজসেনকে ধন্যবাদ।


2
আমরা কি ইনপুট হিসাবে সংখ্যার তালিকার একটি তালিকা নিতে পারি? আমরা সংখ্যার তালিকার একটি তালিকা আউটপুট করতে পারি?
মিঃ এক্সকডার 13

@ মিঃ এক্সকোডার ইনপুটটি সংখ্যার তালিকা নয়, পূর্ণসংখ্যার একটি তালিকা হিসাবে হওয়া উচিত। আউটপুট হ'ল ডিজিটের তালিকার একটি তালিকা হতে পারে, যদি এটি কোনওরকম আরও সুবিধাজনক হয়।
সূন্দর - মনিকা পুনরায় ইনস্টল করুন

@ মেল দ্বারা চিহ্নিত হিসাবে, আমার উত্তর 10 টিরও বেশি সংখ্যার জন্য কাজ করবে না। এটি ঠিক যেমন রাখে তা বৈধ, বা 32 বাইটের দামে আমার এটি পরিবর্তন করা উচিত।
জেসি

@ জায়েসি যদি আমি সঠিকভাবে বুঝতে পারি তবে সীমাবদ্ধতা হ'ল কারণ এটি আর-তে পূর্ণসংখ্যার ধরণের সীমা - কারণ strtoiপূর্ণসংখ্যা ফেরত দেয় - সঠিক? যদি তা হয় তবে তা ঠিক আছে, এটি যেমন আইনসম্মত।
সূন্দর - মনিকা পুনরায় ইনস্টল করুন

আপনি সঠিক! যেমন আছে তেমন রাখবে
জেসি

উত্তর:


5

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

1 বাইট সংরক্ষণ করার জন্য ধন্যবাদ এনএনজি :)

{⍵[⍋⌽↑,⍨⌿⍴⌿0 10⊤⍵⊤⍨⍴⍨100]}

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

ডিজাইমা ও এনজিএন থেকে অনুপ্রেরণা নেওয়া উচিত


100⊥⍣¯1⊢⍵-> ⍵⊤⍨⍵/10026 এর জন্য কাজ করে
jslip

আমি প্রদত্ত পরীক্ষার কেসগুলিতে সত্যই ডাব্লুএসএফএল চাই না
এইচপিউইজ

26 MAXWS = 1M সম্ভব
ngn

100⊥⍣¯1⊢⍵->⍵⊤⍨⍴⍨100
এনজিএন

1
@ H.PWiz এবং এখানে 26 বাইট জন্য একটি ভিন্ন সমাধান আছে:{⍵[⍋⌽↑,⍨⌿⍴⌿⊃⊥⍣¯1/10 100⍵]}
ngn

3

আর , 141 বাইট

(s<-scan(,""))[order(strtoi(sapply(s,function(x)paste(strrep((m=matrix(c(if(nchar(x)%%2)0,el(strsplit(x,""))),2))[2,],m[1,]),collapse=""))))]

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

বরং শ্রমসাধ্য উত্তর - তবে এটি সমস্ত পরীক্ষার ক্ষেত্রে কাজ করে। অঙ্ক-জোড় আউটপুট তৈরি করে এবং এটি অনুসারে ইনপুটটি সাজান।


আমি আজ বিকেলে এটিতে কাজ করার পরে আমি অন্য উত্তরে আমার দৃষ্টিভঙ্গি পোস্ট করেছি তবে আমাকে বাধা দেওয়া হয়েছিল। কেবল আপনাকে নিশ্চয়তা দেওয়ার জন্য আমি ক্রেডিট ছাড়াই আপনার কাছ থেকে অনুপ্রেরণা পাইনি;)
ডিগইমআল

@ ডিগেম সমস্ত উদ্বেগ নয় :) - আসলে আমি মনে করি vআপনার অন্যান্য উত্তরগুলি থেকে আমি চলকটির জন্য নামটি নিয়েছিলাম - আমি এর vআগে কখনও ব্যবহার করি নি । এবং দুর্দান্ত ব্যবহার intToUtf8!
জেসি

আহ আমি সত্যিই আমার একক বর্ণের ভেরিয়েবলের নামগুলিতে jeর্ষা করি! না, সিরিয়াসলি ... স্ট্যাকওভারফ্লো থেকে প্রতিবার এসে আমি যখন কোনও "অনুরূপ" বিকল্প পোস্ট করি তখন এটি চুরির মতো মনে হয়;)
ডিগইমআল

strtoi 10 সংখ্যার উপরে পূর্ণসংখ্যার জন্য na ফিরে আসবে, (as.numeric হবে না)
mnel

নির্দেশের জন্য @ মেল ধন্যবাদ! আমি সূন্দর দিয়ে যাচাই করেছি এবং যেহেতু এটি পূর্ণসংখ্যার টাইপের একটি সীমাবদ্ধতা আমি এটিকে এটিকে ছেড়ে দিতে পারি :)
জেসি

3

আর , 120 বাইট

(v=scan())[order(sapply(v,function(n,e=nchar(n))sum((a=rep((x=n%/%10^(0:(e-1-e%%2))%%10)[!0:1],x[!1:0]))*10^seq(a=a))))]

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

  • -11 বাইটস @ সুন্দর "পাটিগণিত" পরামর্শের জন্য ধন্যবাদ!

ব্যাখ্যা সহ বর্ণহীন কোড:

# define a function G which takes a number 'n' and uncompress it multiplied by 10
# e.g. 2735 -> 775550, 61345 -> 355550 etc.
G=function(n){
  e = nchar(n)                   # get the n.of digits in the compressed number

  x = n%/%10^(0:(e-1-e%%2))%%10  # split 'n' into vector of digits reversed adding 
                                 # trailing zero if 'e' is odd (e.g. 123 -> c(0,3,2,1))

  even = x[!0:1]                 # take only the odd elements of 'x' (= even digits)
  odd  = x[!1:0]                 # take only the even elements of 'x' (= odd digits)
                                 # N.B. :
                                 # these tricks work because !0:1 is c(TRUE,FALSE)
                                 # and V[c(TRUE,FALSE)] exploits the fact that R 
                                 # automatically recycles the logical indexes up to the
                                 # length of the vector V

  a = rep(even,odd)              # repeat each value in 'even' 'odd' times obtaining the
                                 # uncompressed number as digits vector. Note that in
                                 #  case of single digit 'n', 'a' will be an empty vector

  sum(a*10^seq(a=a))             # multiplies 'a' * 10^(1:length(a)) and sum 
                                 # obtaining the uncompressed number multiplied by 10
                                 # N.B. in case of empty 'a', we get 0
}

v = scan()                       # take vector v from stdin

w = sapply(v,G(n))               # apply G to all numbers of 'v'

v[order(w)]                      # use the uncompressed values as weights to sort 'v'

[!1:0]কৌতুক বাস্তব সুন্দর - কখনও আগে দেখা।
জেসি

@ সুন্দর: ব্যাখ্যা যুক্ত হয়েছে;)
ডিগইএমআল

1
খুশী হলাম। আমি জানতাম [!1:0]el ফেলাগুলি পরিষ্কার কিছু লুকিয়ে রেখেছে। আমি এটি আর আর গল্ফিংয়ের টিপস নিয়ে খেলছিলাম, অঙ্কগুলি অঙ্ক থেকে গাণিতিকভাবে (ছাড়াই as.double) পাওয়ার চেষ্টা করছিলাম , তবে কেবল 132 বাইট সংস্করণ নিয়ে এসেছিল: টিআইও
- মনিকা পুনরায় ইনস্টল করুন

@ সুন্দর: আমি গাণিতিক পদ্ধতির কথা ভাবি নি ... আমি 11 বাইট সংরক্ষণ করেছি, ধন্যবাদ!
digEmAll সমস্ত

2

পাইথ , 14 বাইট

oir9c.[Z2jNT2T

এখানে চেষ্টা করুন! | পরীক্ষা স্যুট! | আই / ও সংখ্যাগুলির তালিকা সহ 12 বাইট

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

oir9c.[Z2jNT2T – Full program.
o              – Sort the input list by the results of the following code (variable: N).
         jNT   – Cast the current element to a list of digits.
     .[Z2      – Pad it on the left with 0s to the nearest multiple of 2.
    c       2  – Split in pieces of length 2.
  r9           – Run length decode.
 i           T – Cast the list of digits to a base 10 integer.

2

জেলি , 10 বাইট

ṚẋƝm2ṚFḌµÞ

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

একটি পরীক্ষা স্যুট পরীক্ষা করে দেখুন!

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

Ṛm2ṚFḌµÞ মোনাডিক লিংক / সম্পূর্ণ প্রোগ্রাম। | উদাহরণ: [25257, 725, 91, 5219, 146125, 14620512]
        mon monadic লিঙ্কের ফলাফল দ্বারা ইনপুট তালিকাটি বাছাই করুন: | উদাহরণ: 725
N N কে এটির ডিজিট অ্যারেতে প্রচার করুন এবং এটি বিপরীত করুন। | [৫, ২,]]
 x প্রতিটি পরপর দুটি অঙ্কের x, y এর জন্য xy বার পুনরাবৃত্তি করুন। | [[৫, ৫], [২, ২, ২, ২, ২, ২, ২]]
   m2 মডুলার 2. এই অ্যারের প্রতিটি অন্যান্য উপাদান নিন। | [[৫, ৫]]
     Verse বিপরীত। | [[৫, ৫]]
      এফ ফ্ল্যাটেন। | [৫, ৫]
       Dec দশমিক থেকে পূর্ণসংখ্যায় রূপান্তর। | 55

এটি অবশ্যই একটি কাকতালীয়: 2537এবং 3725একই সংখ্যার প্রতিনিধিত্ব করবেন না।
এরিক দ্য আউটগল্ফার

আপনি কি আমাকে একটি পরীক্ষার কেস দিতে পারেন যা এটি ধরা পড়বে, এবং আমি এটি প্রশ্নের সাথে যুক্ত করব?
সূন্দর - মনিকা পুনরায় ইনস্টল করুন

@ সুন্দর আসিক যেমন বলেছেন [2537, 3725],। আমি কখনও সন্দেহ করি নি যে এটি একটি কাকতালীয় ঘটনা, তাই আমি উত্তরে সেই নোটটি অন্তর্ভুক্ত করেছি
মিঃ এক্সকোডার

@ মিঃ এক্সকোডার টেস্টকেস যুক্ত হয়েছে, ধন্যবাদ।
সূন্দর - মনিকা পুনরায় ইনস্টল করুন

2

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

*.sort(+*.flip.comb.rotor(2).map({[x] $_}).join.flip)

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

বেনামে যাই হোক না কেন লাম্বদা যা মানগুলির তালিকা নিয়ে আসে এবং সংখ্যার জোড় যা বর্ণনা করে তা অনুসারে সাজায়।

এই ক্ষেত্রে, আমি নম্বরটি বিপরীত করছি, তারপরে rotorপ্রতিটি জোড় সংখ্যার জন্য তালিকাটি দু'একটি করে আনছি । এটি বিজোড় দৈর্ঘ্যের সংখ্যার জন্য প্রথম সংখ্যাটি বাদ দেবে, তবে যেহেতু এটি 0সেই সংখ্যার বারে অনুবাদ করে , ঠিক আছে। এছাড়াও, এটি [x]সঠিকভাবে ব্যবহার করতে মানগুলিকে সীমাবদ্ধ করে।



2

হাস্কেল , 89 88 বাইট

ওভিএসকে একটি বাইট ধন্যবাদ সংরক্ষণ করা হয়েছে

import Data.List
(%)=mod
m?n|n<1=0|n%100<10=m?div n 100|w<-n-10=m*10?w+m*n%10
sortOn(1?)

শেষ লাইনটি একটি বেনামি ফাংশন সংজ্ঞায়িত করে যা এর মতো ব্যবহার করা যেতে পারে:

> sortOn(1?)[19, 91, 2345, 2023]
[19,2023,2345,91]

মূল কার্যকারিতা ইনফিক্স অপারেটর দ্বারা সরবরাহ করা হয় (?)যা একটি গুণক m, এবং বাকী আরএলই ইনপুট রাখে n(?)অবিচ্ছিন্নভাবে nদশটি অঙ্ক করার সময় থেকে 10 কে বিয়োগ করে এবং যেমনটি এটি চূড়ান্ত অঙ্কের অন্য অনুলিপিটি আউটপুটটির সামনের দিকে ধাক্কা দেয় (গুণক দ্বারা m, যা প্রতিবার 10 দ্বারা বৃদ্ধি করা হয়)। দশকের স্থানটি ক্লান্ত হয়ে গেলে, চূড়ান্ত দুটি অঙ্ক বাতিল হয়ে যায় এবং সংখ্যাটি 0 এ না হওয়া পর্যন্ত প্রক্রিয়াটি পুনরাবৃত্তি হয় অবশেষে, আমরা অপারেটরটিকে (1 এর প্রাথমিক গুণক সহ) একটি বাছাই কী হিসাবে ব্যবহার করি।


1
m?n|n<1=0|n%100<10=m?div n 100|w<-n-10=m*10?w+m*n%10একটি বাইট সংক্ষিপ্ত।
ovs

2

হুশ , 10 বাইট

ÖödṁΓ*C_2d

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

ব্যাখ্যা

ÖödṁΓ*C_2d    Full function
Ö             Sort the input list by the result of...
 ö            The composition of these four functions:
         d      Convert to a list of digits
      C_2       Split into length-2 sublists starting at the end
   ṁ            Map the following function and concatenate the results:
    Γ*            Repeat the list tail X times, where X is the list head
  d             Convert back to an integer

2

ডায়ালগ এপিএল, 41 39 36 35 31 30 29 বাইট

f←⊂⌷¨⍨∘⍋{10⊥∊⍴⌿0 10100⊥⍣¯1⊢⍵}¨

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

-2 ধন্যবাদ গরু হাতুড়ে
-4 (প্লাস -4 বেস রূপান্তর ধারণা জন্য) ধন্যবাদ ngn
-2 ধন্যবাদ H.PWiz


⊃,/হয়ে উঠতে পারে
ক্রিটিক্সি লিথোস

@ কৌজাক্যাক আমি জানতাম আমি একটি অন্তর্নির্মিতটি ভুলে যাচ্ছি: পি
ডিজাইমা

{⍺⍴⍨⍎⍵}->⍴⍨∘⍎
ngn

@ জেন অবশ্যই, আমি সব
জট

এখানে -1 বাইট অন্য কৌতুক নেই - trainify {⍵[⍋F ⍵]}যেমন⊂⌷¨⍨∘⍋F
ngn

2

সি (জিসিসি) (32 বিট সিস্টেম), 188 177 176 বাইট

char*p,*q,c[99],b[99]="0";i;d(x){for(p=b+!(sprintf(b+1,"%d",x)&1),q=c;i=*p++;++p)for(i-=48;i--;*q++=*p);*q=0;atoi(c);}m(int*a,int*b){return d(*a)-d(*b);}s(l,c){qsort(l,c,4,m);}

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

উপর amd64অ্যাড পতাকা-m32 কম্পাইল জন্য।

ব্যবহার : s(x,n);যেখানে xবাছাইয়ের জন্য পূর্ণসংখ্যার অ্যারেগুলিকে নির্দেশ করে এবংn সেই অ্যারের দৈর্ঘ্য।

দ্বিতীয় পরীক্ষার কেস ভুল ফলাফল 25257দেয় কারণ রূপান্তর করে2222277777 যা যা একটি 32 বিট পূর্ণসংখ্যাকে উপচে ফেলে - এই সংখ্যাটি ছাড়াই 5 তম পরীক্ষার কেস যুক্ত করে।

ব্যাখ্যা:

char*p,                                     // d(): input pointer
    *q,                                     // d(): output pointer
    c[99],                                  // d(): output buffer
    b[99]="0";                              // d(): input buffer
                                            //      (fixed first char 0)
i;                                          // d(): repeat counter

d(x){                                       // conversion function
    for(
            p=b+!(sprintf(b+1,"%d",x)&1),   // print number in decimal to
                                            // input buffer, starting at second
                                            // character, initialize input
                                            // pointer to first or second char
                                            // depending on the length of the
                                            // number
            q=c;                            // initialize output pointer
            i=*p++;                         // set repeat counter to digit and
                                            // point to next digit, stop when
                                            // NUL character is found
            ++p)                            // point to next digit after loop
        for(i-=48;i--;*q++=*p);             // inner loop, append current digit
                                            // i-48 ('0') times to output buffer
    *q=0;                                   // terminate output with NUL
    atoi(c);                                // convert to number, 'return' not
                                            // needed as atoi() leaves result
                                            // on the stack
}

m(int*a,int*b){                             // comparison function for qsort
    return d(*a)-d(*b);                     // return difference of converted
}                                           // values

s(l,c){                                     // sorting function
    qsort(l,c,4,m);                         // only "wrap" qsort, assuming
}                                           // sizeof(int) is 4

আপনার d()সাথে সম্পর্কিত স্ট্রিং এবং ফাংশনগুলির কারণে আপনার ফাংশন দীর্ঘ, আপনি কেবলমাত্র শেষ 2 টি সংখ্যা পড়ে এবং এই জাতীয় আউটপুট তৈরি করে অনেকগুলি বাইট সংরক্ষণ করতে পারেন: o;u;i;d(x){for(u=1,o=0;x;x/=100)for(i=0;i++<x%100/10;o+=x%10*u,u*=10);x=o;}m(int*a,int*b){u=d(*a)-d(*b);}s(l,c){qsort(l,c,4,m);}আপনি এসকে ঘোষণা এবং আরম্ভ করে এড়িয়ে বাইটগুলিও সংরক্ষণ করতে পারবেন char
অ্যানিও

সুন্দর ধারণা - আমার মনে হয় পূর্ণসংখ্যার মানগুলিতে কাজ করা একে একে সম্পূর্ণ আলাদা দৃষ্টিভঙ্গি করে তোলে, সুতরাং আপনার কোনও উত্তর পোস্ট করার বিষয়টি বিবেচনা করা উচিত? :)
ফেলিক্স পেলমেন

সুপারিশ b-~sprintf(b+1,"%d",x)%2পরিবর্তেb+!(sprintf(b+1,"%d",x)&1)
ceilingcat

@ অ্যানিও পরামর্শ দিনx/10%10x%100/10
সিলিংক্যাট


1

ব্র্যাচল্যাগ , 18 বাইট

{↔ġ₂ẹ{Ċj₎|Ȯt}ˢ↔c}ᵒ

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

ব্যাখ্যা

তিনটি পৃথক ক্ষেত্রে অ্যাকাউন্টের জন্য প্রয়োজনীয় ছোট ছোট জিনিসগুলির বোঝা: সংখ্যার বিজোড় সংখ্যা, সংখ্যার 0 বারের জোড়া এবং সাধারণ জোড়া।

{               }ᵒ     Order the Input according to the output of this predicate
 ↔                       Reverse the number
  ġ₂                     Group into pairs; the last digit is alone if there are
                           an odd number of them
    ẹ{      }ˢ           For each group:
      Ċ                    If there are two elements
       j₎                  Juxtapose the first one as many times as the second
                             element (won't work if the second element is 0)
         |                 Else
          Ȯ                If there is one element (odd number of digits)
           t               just take that element
                           (Else don't select anything, i.e. 0 repetitions)
              ↔c         Reverse and concatenate back into an integer

আমি মনে করি এটি |Ȯtঅপ্রয়োজনীয়, এবং বাস্তবে এটি ভুলভাবে সাজিয়েছে: এটি 0 এর পরিবর্তে 1 দিয়ে প্যাডিংয়ের সমতুল্য [125, 26, 1] দেওয়া হয়েছে, [1, 26, 125] এর পরিবর্তে [1 এর পরিবর্তে [1, 26, 125] , 125, 26]।
সূন্দর - মনিকা পুনরায় ইনস্টল করুন

1

পার্ল 5 , 76 বাইট

একবারের জন্য ওয়ান-লাইনারের পরিবর্তে একটি ফাংশন।

বেশ সোজা এগিয়ে: সংখ্যা রূপান্তর করতে gব্যবহার করে সংখ্যাসূচকভাবে ইনপুটগুলি বাছাই করে hhরেজেক্স ব্যবহার করে এটি করে s/(.)(.)/$2x$1/gre(যা সম্ভবত যথেষ্ট পাঠযোগ্য)। আর 0বাম-প্যাডিং সঙ্গে সম্পন্ন করা হয় 0 x("@_"=~y///c%2)."@_"(যেখানে y///cলেখার একটি স্বল্পমেয়াদী উপায় length, xপুনরাবৃত্তি অপারেটর এবং .সংযুক্তকরণের)।

sub h{(0 x("@_"=~y///c%2)."@_")=~s/(.)(.)/$2x$1/gre}sub g{sort{h($a)-h$b}@_}

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

আমি কিছু সংক্ষিপ্ত পার্ল উত্তর দেখতে আশা করছি!


1

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

^.?((..)*)$
$1 $&
%)`\G(\d)(.)
$1*$2
N`
.+ 

এটি অনলাইন চেষ্টা করুন!লাইনের শুরুতে বাছাই কী উত্পন্ন করা শক্ত তবে সংক্ষিপ্ত ধরণের স্টেজের ফলে সামগ্রিকভাবে 3 বাইট সাশ্রয় হয়। ব্যাখ্যা:

%)`

প্রতিটি লাইনে প্রথম দুটি পর্যায় পৃথকভাবে প্রয়োগ করুন।

^.?((..)*)$
$1 $&

মিল এবং একটি বহু সংখ্যক পেছনের অঙ্ক অনুলিপি করুন।

\G(\d)(.)
$1*$2

প্রতিটি অঙ্কের জুটিকে তাদের বর্ণিত মান দিয়ে প্রতিস্থাপন করুন। \G\dস্থান থামাতে ম্যাচ ঘটায়।

N`

সংখ্যা অনুসারে বাছাই করুন।

.+ 

বাছাই কী মুছুন।


এটি একটি কী দ্বারা বাছাই করা একটি চালাক কৌশল। ভাল একটা.
সূন্দর - মনিকার পুনরায় ইনস্টল করুন

1

05 এ বি 1 ই , 20 19 বাইট

ΣDgÉi¦}2ôε`sиJ}J0ìï

+1 বাইটের জন্য বাগ-ফিক্সড এবং তারপরে @ সুন্দরকে -2 বাইট দ্বারা গল্ফ করা হয়েছে

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

অবশ্যই গল্ফ করা যেতে পারে .. এটি সম্পর্কে খুব খুশি নয় টিবিএইচ ..

ব্যাখ্যা:

Σ                    # Sort by:
 Dg                  #  Duplicate the current number, and take it's length
                     #   i.e. 25257 → 5
                     #   i.e. 4 → 1
   Éi }              #  If this length is odd:
     ¦               #   Remove the first digit
                     #    i.e. 25257 → '5257'
                     #    i.e. 4 → ''
       2ô            #  Then split the number in pieces of 2
                     #   i.e. '5257' → ['52','57']
                     #   i.e. '' → []
         ε    }      #  And map each to:
          `          #   Push both digits to the stack
                     #    i.e. '52' → '5' and '2'
           s         #   Swap them
            и        #   Repeat the first digit the second digit amount of times
                     #    i.e. '2' and '5' → ['2','2','2','2','2']
             J       #   Join the list of digits together
                     #    i.e. ['2','2','2','2','2'] → '22222'
               J     #  Join all numbers back together again
                     #   i.e. ['','22222','77777'] → '2222277777'
                     #   i.e. [] → ''
                0ì   #  Prepend a 0 (because `Σ` will put all '' at the back)
                     #   i.e. 2222277777 → '02222277777'
                     #   i.e. '' → '0'
                  ï  #  Cast it to an integer, because sorting is done string-wise by
                     #  default despite 05AB1E's interchangeability of strings and numbers;
                     #  and it's also to remove all leading zeros
                     #   i.e. '02222277777' → 2222277777
                     #   i.e. '0' → 0

1

সংযুক্তি , 50 বাইট

SortBy!N@Flip##~`&&>PadRight&0&2=>Chop&2@Flip@List

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

ব্যাখ্যা

SortBy!N@Flip##~`&&>PadRight&0&2=>Chop&2@Flip@List      anonymous function, argument: [a1..aN]
SortBy!                                                 sort the given array by grading f[ai]
                                                        e.g. 42513
                                              List      digits of ai
                                                        e.g. [4, 2, 5, 1, 3]
                                         Flip@          flip the digits around
                                                        e.g. [3, 1, 5, 2, 4]
                                  Chop&2@               chop into groups of 2
                                                        e.g. [[3, 1], [5, 2], [4]]
                    PadRight&0&2=>                      pad each group to size 2 with 0's
                                                        e.g. [[3, 1], [5, 2], [0, 4]]
                  &>                                    using each sub array as arguments...
               ~`&                                      ...repeat the 2nd the 1st amount of times
                                                        e.g. [[1, 1, 1], [2, 2, 2, 2, 2], []]
             ##                                         then:
         Flip                                           reverse the groups
                                                        e.g. [[2, 2, 2, 2, 2], [1, 1, 1]]
       N@                                               then convert it to an number
                                                        e.g. 22222111


1

জাপট, 13 বাইট

ñ_ì_ò2n)®rçì

এটি ব্যবহার করে দেখুন বা সমস্ত পরীক্ষার কেস চালান


ব্যাখ্যা

ñ_                :Sort by passing each integer through a function
  ì_              :  Split to an array of digits, pass it through the following function and implicitly convert back to an integer
    ò2n)          :    Starting from the end of the array, split at every second element
        ®         :    Map
         rç       :      Reduce X & Y by repeating X Y times
           Ã      :    End mapping
            ¬     :    Join



0

জাভা 11, 204 189 বাইট

L->{L.sort((a,b)->Long.compare(s(a+""),s(b+"")));}long s(String s){var r="";for(int l=s.length(),i=l%2;i<l;)r+=s.split("")[++i].repeat(s.charAt(i++-1)-48);return r.isEmpty()?0:new Long(r);}

ল্যাংসের একটি তালিকা প্যারামিটার হিসাবে নেয় এবং এই ইনপুট-তালিকাটি (নতুন তালিকার প্রত্যাবর্তন না করে) বাছাই করে।

এটি অনলাইনে চেষ্টা করে দেখুন (দ্রষ্টব্য: String.repeat(int)অনুকরণ করা হয়েছে repeat(String,int)কারণ জাভা 11 টি টিআইও তে এখনও নেই The বাইট-গণনাটি একই রয়ে গেছে))

ব্যাখ্যা:

L->{                     // Method with ArrayList<Long> parameter and no return-type
  L.sort(                //  Sort the list by:
   (a,b)->Long.compare(  //   Using a builtin Long-comparator with:
     s(a+""),s(b+"")));} //   The correctly formatted values as described in the challenge

long s(String s){        // Separated method with String parameter and long return-type
  var r="";              //  Temp-String, starting empty
  for(int l=s.length(),  //  The length of the input-String
      i=l%2;i<l;)        //   If the length is even:
                         //    Loop `i` in the range [0,`l`) (in steps of 2)
                         //   Else (the length is odd):
                         //    Loop `i` in the range [1,`l`) (in steps of 2) instead
    r+=                  //   Append the result-String with:
      s.split("")[++i].  //    The digit at index `i+1`
      .repeat(s.charAt(i++-1)-48);
                         //    Repeated the digit at index `i` amount of times
  return r.isEmpty()?    //  If the temp-String is empty:
          0              //   Return 0
         :               //  Else:
          new Long(r);}  //   Convert the temp-String to a long and return it

হাই, চ্যালেঞ্জটি স্পষ্টভাবে স্ট্রিং ইনপুটটিকে অস্বীকার করে, দুঃখিত! (আমি জাভায় এটির অনুমতি দেওয়ার জন্য প্রলুব্ধ হয়েছি, তবে অন্য উত্তরের ক্ষেত্রে এটি মোটামুটি উপযুক্ত হবে না
- মনিকা পুনরায় ইনস্টল করুন

@ সুন্দর আহ, সেই প্রয়োজনীয়তা মিস করেছেন; আমার খারাপ .. ভাগ্যক্রমে +""সংখ্যাটি স্ট্রিংয়ে রূপান্তর করতে এটি কেবল 2x যোগ করার একটি সহজ সমাধান । এখনই ঠিক করা উচিত। :)
কেভিন ক্রুইজসেন

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