Urutkan berdasarkan apa yang pasangan digit gambarkan

17

Diberikan bilangan bulat positif, kita dapat membentuk angka baru yang dijelaskan dengan digitnya yang diambil secara berpasangan (dengan 0 terkemuka ditambahkan untuk angka dengan jumlah ganjil digit).

Untuk mis .:

  • 1234 dapat dibaca sebagai satu 2, tiga 4s - jadi, output untuk 1234 adalah 2444.

  • 643 memiliki jumlah digit ganjil, jadi nol depan ditambahkan untuk membuatnya genap. Kemudian, 0643 dapat dibaca sebagai: nol 6s, empat 3s, maka outputnya adalah 3333.

(Ini adalah OEIS A056967 ).

Tugas: Diberikan array bilangan bulat positif, urutkan berdasarkan nilai digit-pasangan yang dijelaskan, dalam urutan menaik. Urutan tidak masalah antara nomor input yang mengarah ke nilai yang sama.

Input : array / daftar / set bilangan bulat positif. Angka nol di input tidak diperbolehkan, dan input sebagai string / daftar digit / dll. tidak diizinkan - input harus sedekat mungkin dengan tipe integer / numerik karena bahasa Anda mampu digunakan.

Output : array diurutkan dengan cara yang disebutkan di atas, dikembalikan dengan cara biasa (nilai pengembalian fungsi / STDOUT / berteriak ke dalam kekosongan / dll.) Anda dapat mencetaknya secara individual, mengembalikannya sebagai angka, string, atau daftar digit.

Uji kasus

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]

(Dalam test case ke-4, 1, 4, dan 5 semuanya dievaluasi menjadi 0, dan dengan demikian dapat disortir di antara mereka dalam urutan apa pun. Demikian pula dalam case test kelima, 10 dan 1 keduanya dievaluasi menjadi 0s, dan dengan demikian dapat diurutkan dalam salah satu pesanan.)

(Terkait: Katakan apa yang Anda lihat , Satu 1, Dua 1, Satu 2 Satu 1

Terima kasih kepada Kevin Cruijssen untuk bantuan mengklarifikasi pertanyaan di Sandbox.

sundar - Pasang kembali Monica
sumber
2
Bisakah kita mengambil daftar daftar digit sebagai input? Bisakah kita menampilkan daftar daftar digit?
Tn. Xcoder
@ Mr.Xcoder Input harus sebagai daftar bilangan bulat, bukan daftar digit. Output bisa berupa daftar daftar digit, jika itu entah bagaimana lebih nyaman.
sundar - Reinstate Monica
seperti yang ditunjukkan oleh @mnel, jawaban saya tidak akan berfungsi untuk angka di atas 10 digit. apakah sah untuk menyimpannya apa adanya, atau haruskah saya memodifikasinya dengan biaya 32 byte.
JayCe
@JayCe Jika saya mengerti dengan benar, batasannya adalah karena itulah batas tipe integer di R - karena strtoimengembalikan integer - benar? Jika demikian, itu baik-baik saja, itu sah.
sundar - Reinstate Monica
Anda benar! akan menyimpannya apa adanya.
JayCe

Jawaban:

5

APL (Dyalog) , 26 byte

Terima kasih ngn untuk menghemat 1 byte :)

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

Cobalah online!

Inspirasi diambil dari dzaima & ngn

H.Piz
sumber
100⊥⍣¯1⊢⍵-> ⍵⊤⍨⍵/100bekerja untuk 26.
jslip
Saya tidak benar-benar ingin WSFULL pada kasus tes yang diberikan
H.PWiz
26 dimungkinkan dengan MAXWS = 1M
ngn
100⊥⍣¯1⊢⍵->⍵⊤⍨⍴⍨100
ngn
1
@ H.PWiz dan inilah solusi berbeda untuk 26 byte:{⍵[⍋⌽↑,⍨⌿⍴⌿⊃⊥⍣¯1/10 100⍵]}
ngn
3

R , 141 byte

(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=""))))]

Cobalah online!

Jawaban yang agak melelahkan - tetapi bekerja pada semua kasus uji. Membangun output digit-pasangan dan mengurutkan input sesuai dengan ini.

JayCe
sumber
Saya memposting pendekatan saya pada jawaban lain karena saya sedang mengerjakannya pada sore ini tetapi saya terganggu. Hanya untuk meyakinkan Anda, saya tidak mendapatkan inspirasi dari Anda tanpa kredit;)
digEmAll
@digEmSemua jangan khawatir :) - Sebenarnya saya pikir saya mengambil nama vuntuk variabel dari jawaban Anda yang lain - Saya tidak pernah menggunakan vsebelumnya. Dan penggunaan yang bagus intToUtf8!
JayCe
ahah aku benar-benar iri dengan nama variabel huruf tunggal saya! Tidak, serius ... datang dari StackOverflow setiap kali saya memposting alternatif "mirip" rasanya mencuri;)
digEmAll
strtoi akan mengembalikan NA untuk bilangan bulat di atas 10 digit, (as.numeric tidak akan)
mnel
@ terimakasih sudah menunjukkan! Saya memeriksa dengan sundar dan karena ini adalah batasan dari tipe integer saya dapat membiarkannya apa adanya :)
JayCe
3

R , 120 byte

(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))))]

Cobalah online!

  • -11 byte, terima kasih atas saran "arithmetical" @sundar!

Kode tidak dikunci dengan penjelasan:

# 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'
menggali semua
sumber
The [!1:0]trick real nice - tidak pernah melihat itu sebelumnya.
JayCe
@sundar: penjelasan ditambahkan;)
digEmAll
1
Bagus. Saya tahu orang-orang [!1:0]itu menyembunyikan sesuatu yang rapi. Saya sedang bermain-main dengan ini dan tips tentang golf R, mencoba untuk mendapatkan nomor dari angka secara hitung (tanpa as.double), tetapi hanya muncul dengan versi 132 byte: TIO
sundar - Reinstate Monica
@sundar: Saya tidak berpikir dengan pendekatan aritmatika ... Saya menyelamatkan 11 byte, terima kasih!
digEmAll
2

Pyth , 14 byte

oir9c.[Z2jNT2T

Coba di sini! | Suite uji! | 12 byte dengan daftar angka I / O

Bagaimana itu bekerja?

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.
Tuan Xcoder
sumber
2

Jelly , 10 byte

ṚẋƝm2ṚFḌµÞ

Cobalah online!

Lihatlah suite tes!

Bagaimana itu bekerja

ṚẋƝm2ṚFḌμÞ Tautan monadik / Program lengkap. | Contoh: [25257, 725, 91, 5219, 146125, 14620512]
        μÞ Urutkan daftar input dengan hasil tautan monadik: | Contoh: 725
Ṛ Promosikan N ke susunan digitnya dan balikkan. | [5, 2, 7]
 ẋƝ Untuk setiap dua digit berturut-turut x, y, ulangi xy kali. | [[5, 5], [2, 2, 2, 2, 2, 2, 2]]
   m2 Modular 2. Ambil setiap elemen lain dari array ini. | [[5, 5]]
     Ṛ Mundur. | [[5, 5]]
      Ratakan. | [5, 5]
       Ḍ Konversi dari desimal ke integer. | 55
Tuan Xcoder
sumber
Ini jelas suatu kebetulan: 2537dan 3725tidak mewakili angka yang sama.
Erik the Outgolfer
Bisakah Anda memberi saya test case yang akan menangkap itu, dan saya akan menambahkannya ke pertanyaan?
sundar - Reinstate Monica
@sundar Seperti kata Erik [2537, 3725],. Saya tidak pernah meragukan bahwa ini adalah suatu kebetulan, maka saya memasukkan catatan itu ke jawabannya
Tn. Xcoder
@ Mr.Xcoder Testcase menambahkan, terima kasih.
sundar - Reinstate Monica
2

Perl 6 , 53 byte

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

Cobalah online!

Anonim Apapun lambda yang mengambil daftar nilai dan mengurutkannya dengan apa yang digambarkan pasangan angka.

Dalam hal ini, saya membalikkan angka, lalu rotormemasukkan daftar dengan dua untuk mendapatkan setiap pasangan angka. Ini akan mengecualikan digit pertama untuk jumlah panjang ganjil, tetapi karena itu diterjemahkan ke 0kali angka itu, tidak apa-apa. Plus, itu berbaris nilai-nilai untuk digunakan [x]dengan benar.

Jo King
sumber
2

Haskell , 89 88 byte

Menyimpan satu byte berkat ovs

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?)

Baris terakhir mendefinisikan fungsi anonim yang dapat digunakan seperti:

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

Fungsionalitas inti disediakan oleh operator infiks (?)yang melacak pengali m,, dan input RLE yang tersisa n. (?)terus mengurangi 10 dari nsementara ada puluhan digit untuk dikurangkan dari, dan saat itu melakukannya mendorong salinan lain dari digit akhir ke depan output (melalui pengali m, yang meningkat 10 setiap kali). Ketika puluhan tempat habis, dua digit terakhir dibuang dan proses berulang hingga jumlahnya dikurangi menjadi 0. Akhirnya, kami menggunakan operator (dengan pengali awal 1) sebagai kunci pengurutan.

nitrogen
sumber
1
m?n|n<1=0|n%100<10=m?div n 100|w<-n-10=m*10?w+m*n%10byte lebih pendek.
Ovs
2

Sekam , 10 byte

ÖödṁΓ*C_2d

Cobalah online!

Penjelasan

Öö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
Sophia Lechner
sumber
2

Dyalog APL, 41 39 36 35 31 30 29 byte

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

Cobalah online!

-2 terima kasih kepada Sapi dukun
-4 (ditambah -4 untuk ide konversi dasar) terima kasih kepada ngn
-2 terima kasih H.PWiz

dzaima
sumber
⊃,/dapat menjadi
Kritixi Lithos
@Cowsquack Saya tahu saya lupa built-in: p
dzaima
{⍺⍴⍨⍎⍵}->⍴⍨∘⍎
ngn
@ ngn tentu saja, saya tidak pernah bisa mengingat semua hal jot / kereta api
dzaima
inilah trik lain untuk -1 byte - latih {⍵[⍋F ⍵]}sebagai⊂⌷¨⍨∘⍋F
ngn
2

C (gcc) (sistem 32bit), 188 177 176 byte

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);}

Cobalah online!

pada amd64add flag -m32untuk dikompilasi.

Penggunaan : di s(x,n);mana xmenunjuk ke array bilangan bulat untuk disortir dan npanjang array itu.

Test case kedua memberikan hasil yang salah karena mengkonversi 25257memberikan 2222277777yang melebihi integer 32bit - menambahkan test case ke-5 tanpa nomor itu.

Penjelasan:

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
Felix Palmen
sumber
Fungsi Anda d()panjang karena string dan fungsi yang terkait dengannya, Anda dapat menyimpan banyak byte hanya dengan membaca 2 digit terakhir dan membangun output seperti ini: 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);}Anda juga akan menyimpan byte dengan menghindari mendeklarasikan dan menginisialisasi chars.
Annyo
Ide bagus - saya pikir bekerja pada nilai integer membuat ini pendekatan yang sama sekali berbeda, jadi Anda harus mempertimbangkan memposting jawaban? :)
Felix Palmen
Sarankan b-~sprintf(b+1,"%d",x)%2alih-alihb+!(sprintf(b+1,"%d",x)&1)
ceilingcat
@Annyo menyarankan x/10%10bukannyax%100/10
ceilingcat
1

Python 2 , 102 101 97 101 byte

lambda l:sorted(l,key=lambda x:int(''.join(v*int(c)for c,v in zip(*[iter(`x`[len(`x`)%2:])]*2))or 0))

Cobalah online!

TFeld
sumber
@sundar Jangan khawatir, diperbaiki
TFeld
1

Brachylog , 18 byte

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

Cobalah online!

Penjelasan

Banyak hal kecil yang diperlukan untuk menjelaskan tiga kasus yang berbeda: jumlah ganjil, sepasang 0 kali jumlah, dan pasangan normal.

{               }ᵒ     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
Fatalisasi
sumber
Saya pikir |Ȯtitu tidak perlu, dan pada kenyataannya membuatnya agak salah: itu setara dengan padding dengan 1 bukannya 0, jadi mengingat [125, 26, 1], ketik sebagai [1, 26, 125] alih-alih [1 , 125, 26].
sundar - Reinstate Monica
1

Perl 5 , 76 byte

Fungsi alih-alih satu baris untuk sekali.

Cukup mudah: gmengurutkan input secara numerik, gunakan huntuk mengonversi angka. hmelakukan ini dengan menggunakan regex s/(.)(.)/$2x$1/gre(yang mungkin cukup mudah dibaca). Dan 0bantalan-kiri dilakukan dengan 0 x("@_"=~y///c%2)."@_"(di mana y///ccara penulisan singkat length, xadalah operator pengulangan dan .penggabungan).

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

Cobalah online!

Saya berharap untuk melihat beberapa jawaban Perl pendek!

Dada
sumber
1

Retina , 44 byte

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

Cobalah online! Menghasilkan kunci sortir pada awal baris lebih sulit tetapi tahap sortir pendek menghasilkan penghematan 3 byte secara keseluruhan. Penjelasan:

%)`

Terapkan dua tahap pertama pada setiap baris secara individual.

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

Cocokkan dan salin jumlah digit trailing yang genap.

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

Ganti setiap pasangan digit dengan nilainya yang dijelaskan. The \G\dmenyebabkan pertandingan berhenti di ruang.

N`

Sortir secara numerik.

.+ 

Hapus tombol sortir.

Neil
sumber
Itu trik pintar untuk mengurutkan berdasarkan kunci. Bagus
sundar - Reinstate Monica
1

05AB1E , 20 19 byte

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

Bug-diperbaiki untuk +1 byte, dan kemudian di-golf dengan -2 bytes berkat @sundar .

Cobalah secara online atau verifikasi semua kasus uji .

Pasti bisa main golf .. Tidak terlalu senang tentang itu tbh ..

Penjelasan:

Σ                    # 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
Kevin Cruijssen
sumber
1

Attache , 50 byte

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

Cobalah online!

Penjelasan

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
Conor O'Brien
sumber
1

JavaScript (ES8), 72 70 byte

a=>a.sort((a,b)=>(g=n=>n&&g(n/100|0)+''.padEnd(n/10%10,n%10))(a)-g(b))

Cobalah online!

Arnauld
sumber
1

Japt, 13 byte

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

Cobalah atau jalankan semua test case


Penjelasan

ñ_                :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
Shaggy
sumber
0

Jelly , 14 byte

DŻLḂ$¡ẋ@2/ẎḌµÞ

Cobalah online!

Erik the Outgolfer
sumber
0

Java 11, 204 189 byte

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);}

Mengambil Daftar Long sebagai parameter dan mengurutkan input-Daftar ini (tanpa mengembalikan Daftar baru).

Cobalah online (CATATAN: String.repeat(int)ditiru sebagairepeat(String,int) karena Java 11 belum menggunakan TIO. Penghitungan byte tetap sama.)

Penjelasan:

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
Kevin Cruijssen
sumber
Hai, tantangannya secara eksplisit melarang input string, maaf! (Saya tergoda untuk mengizinkannya untuk Java, tetapi itu tidak adil untuk jawaban yang lain.)
sundar - Reinstate Monica
@sundar Ah, tidak memenuhi persyaratan itu; saya buruk .. Untungnya ini adalah perbaikan yang mudah dari hanya menambah 2x +""untuk mengubah angka menjadi String. Harus diperbaiki sekarang. :)
Kevin Cruijssen
1
Bagus. Saya tidak berharap itu dari Jawa. :)
sundar - Reinstate Monica