Paragraf teks memiliki angka dan huruf alfabet tercampur. Tugas Anda adalah untuk memisahkan angka ke sisi kiri dan huruf alfabet ke sisi kanan dalam urutan yang sama dari setiap baris.
Aturan:
- Angka adalah bilangan bulat; jadi tidak ada titik desimal, dan tidak ada tanda negatif / positif.
- Angka mungkin berdekatan atau tidak, tetapi apa pun masalahnya, mereka harus didorong ke kiri dalam urutan yang sama.
- Angka dapat terjadi di antara kata-kata.
- Teks ini hanya berisi huruf dan angka alfabet ASCII, beserta spasi, garis bawah, koma, dan titik.
- Orang yang melakukan ini dengan penekanan tombol minimum (seperti makro vim) atau paling sedikit jumlah byte dalam kasus scripting adalah pemenangnya.
Teks Contoh:
A word can have any number of text like 433884,
but all the numb89ers has to be moved left side
but alph6abetical va9lues has to be pas46ted on right side.
The text might con4tain chara29cters s2huffled like hlep or dfeintino or even
meaningless1 words co43mbined togeth81er.
Output yang diharapkan:
433884A word can have any number of text like ,
89but all the numbers has to be moved left side
6946but alphabetical values has to be pasted on right side.
4292The text might contain characters shuffled like hlep or dfeintino or even
14381meaningless words combined together.
Jawaban:
Retina , 14 byte
Cobalah online!
Penjelasan
O
memperkenalkan tahap penyortiran.%
memberitahu Retina untuk menerapkan transformasi ke setiap baris secara terpisah.$
memintanya untuk mengurutkan pertandingan berdasarkan hasil penggantian yang ditentukan.Regex itu sendiri adalah
\d|(.)
yang cocok dengan digit, atau apa pun yang ditangkap dalam grup1
. Ini diganti dengan$#1
yang merupakan jumlah tangkapan kelompok1
. Yaitu, kunci penyortiran untuk digit adalah0
dan kunci penyortiran untuk semua yang lain adalah1
. Karena pengurutan di Retina stabil, ini hanya memindahkan angka ke kiri dan yang lainnya ke kanan.sumber
05AB1E,
1410 byteKode:
Penjelasan:
Input Contoh:
Contoh Output:
Cobalah online
sumber
Python 3, 64 byte
Tiga solusi setara! Saya tidak bisa memilih.
sumber
while 1:print(*sorted(input(),key=lambda x:-('/'<x<':')),sep='')
Perl, 17 bytes
16 bytes code + 1 switch
Requires
-p
.Usage
Alternatively:
Requires
-n
.Usage
sumber
Hoon ,
9283 byte++lore
membelah kabel multi-line menjadi(list cord)
,(trip +<)
mengubahnya menjadi pita.++skid
memisahkan daftar menjadi dua: satu sisi di mana fungsi mengembalikan ya, satu sisi di mana ia mengembalikan tidak. Fungsi kami mencoba mem-parsing karakter dengan++nud
(numerik) dan memeriksa apakah ia mem-parsing sepenuhnya, dan kemudian kami mengelas kedua daftar kembali bersama menjadi rekaman.sumber
MATL,
1312 bytesExits with an error (allowed by default), producing the correct output.
Try it online!
Explanation
sumber
V, 12 bytes
V, adalah bahasa golf berbasis string 2D yang belum selesai. Meskipun belum selesai, program ini bekerja pada commit 45 , yang diterbitkan tadi malam, menjadikan ini sebagai jawaban yang bersaing. (Sebagian besar jawaban V saya sebelumnya tidak bersaing.)
Perhatikan, baris baru yang tertinggal diperlukan, meskipun ini disebabkan oleh bug.
Cobalah online!
Penjelasan:
¨Ä©¨ä©/²±
meluas ke vim regex:yang merupakan non-digit
(\D)
diikuti oleh digit(\d)
, dan tukar mereka.Karena ini diisi dengan karakter unicode kotor, berikut adalah hexdump yang dapat dibalik:
sumber
Javascript ES6, 40 bytes
a=>a.replace(/\D/g,'')+a.replace(/\d/g,'')
Tried several other solutions, but couldn't get it smaller than this.
My first try was
a=>[...a.match(/\d/g),...a.match(/\D/g)].join``
but that's 5 bytes longerTry it here
Show code snippet
sumber
CJam,
91316 bytesThere isn't
f$
...This 13 bytes version nearly works:
sumber
PowerShell v2+, 55 bytes
Due to the need to support multi-line input, we have to encapsulate our
-replace
statements with a loop and-split
on newlines. Otherwise basically equivalent to the JavaScript solution.sumber
Pyth - 11 bytes
Don't like my grouping test. Takes input as list of lines, tell me if that's not ok.
Try it online here.
sumber
Pyth,
1615 bytes1 byte thanks to @FryAmTheEggman.
Try it online!
Sample input:
Sample output:
How it works
sumber
U
because maps automatically cast integers to ranges.Retina, 16 bytes
Stable bubble sort.
Sample input:
Sample output:
Try it online!
sumber
C#, 59 bytes
A simple C# lambda function using regex.
Sample output
sumber
C# (LINQ), 110 bytes
Not the shortest solution, by far, but I thought this would be a good use of LINQ.
sumber
char.IsDigit
existed...Factor 61
It's a naive approach.
"\n"split
splits the string on top of the stack into lines. Then, foreach
line:[ digit? ] partition
splits each line into digits-only and non-digits-only[ write ] bi@
outputs both, andnl
prints a newline.PS:
As a word 90 bytes (71 if you replace the-factorish-long-name with 1 letter):
sumber
Pyth, 14 bytes
Try it online!
Explanation:
The logic of the solution is the same as in Lynn's answer.
sumber
Java 8,
13012686 bytes-4 bytes converting Java 7 to 8 and removing an unused character
-40 bytes converting program to function and changing
[^\\d]
to\\D
Explanation:
Try it here.
sumber
GNU Sed, 28
Score includes +1 for
-r
option to sed.Repeatedly switches one non-number character followed by one number character until no more substitutions are made.
Sadly sed regexes don't have
\d
or\D
, so these have to be written out longhand.Ideone.
sumber
Octave,
3732 bytessumber
Clojure, 113 bytes
Sorts digits to the beginning of the line.
sumber
Oracle SQL 11.2, 131 bytes
The lines in the input string are separated by '¤'. That way it is not necessary to create a table to use as the input.
Query :
Un-golfed
sumber
APL, 28 chars
sumber
Haskell, 60 bytes
Usage
sumber
Sed, 35 bytes
This makes a copy of the line, removes digits from one copy and letters from the other, before recombining them.
sumber
Bash, 42 bytes
Be warned that this recursive implementation forks a new process for each line of input!
sumber
Japt v2,
1412 bytes-2 bytes thanks to ETHproductions
Run it
sumber
Julia 0.6, 77 bytes
Anonymous function taking a string and printing output. Loops over characters, adding them to the left
l
or rightr
buffers until it finds a newline, then it prints and empties buffers. Lots of potential useful constructs likesort
,filter
and logical indexing (indexing with an array of boolean values) don't work on Strings.Try it online!
sumber
Vim, 30 keystrokes
Record a search and replace action that moves digits to the left of non-digits. Call the macro recursively until an exception is thrown by the pattern not being found (when there are no more digits to the right of any non-digits).
sumber
C (gcc), 106 bytes
Try it online!
sumber