अलग अक्षर और संख्या


15

पाठ के एक पैराग्राफ में संख्याएं और अक्षर अक्षर मिश्रित होते हैं। आपका कार्य प्रत्येक पंक्ति के समान क्रम में संख्याओं को बाईं ओर और दाईं ओर वर्णमाला अक्षरों को अलग करना है।

नियम:

  1. संख्या सादे पूर्णांक हैं; कोई दशमलव बिंदु और कोई नकारात्मक / सकारात्मक संकेत नहीं है।
  2. संख्याएं सन्निहित नहीं भी हो सकती हैं, लेकिन मामला जो भी हो, उन्हें उसी क्रम में बाईं ओर धकेलना होगा।
  3. संख्या शब्दों के बीच में हो सकती है।
  4. पाठ में केवल ASCII अक्षर और संख्याएँ हैं, साथ ही रिक्त स्थान, अंडरस्कोर, कॉमा और डॉट्स हैं।
  5. जो स्क्रिप्टिंग के मामले में न्यूनतम कीस्ट्रोक्स (जैसे विम मैक्रोज़) या कम से कम बाइट्स के साथ ऐसा करता है वह विजेता है।

उदाहरण पाठ:

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.

अपेक्षित उत्पादन:

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.

4
@SibiCoder में आपका स्वागत है! आप अगली बार सैंडबॉक्स का उपयोग करना चाह सकते हैं । इसे यहां करने से पहले चुनौतियों को पोस्ट करने के लिए उपयोग किया जाता है। इस तरह से आप अन्य उपयोगकर्ताओं से प्रतिक्रिया प्राप्त कर सकते हैं और चुनौती में सुधार कर सकते हैं
लुइस मेंडू

1
मतलब अक्षर के लिए वर्णमाला का उपयोग करना , मेरा मानना ​​है, भारतीय अंग्रेजी का एक विशिष्ट।
टीआरआईजी

2
@AstroDan दोनों को डिफ़ॉल्ट रूप से अनुमति है।
अदनान

2
अब बहुत स्पष्ट लगता है। @ करीबी मतदाता - क्या आपको लगता है कि आप अपने वोट अब वापस ले सकते हैं?
डिजिटल ट्रामा

1
पहला परीक्षण मामला तय किया, क्योंकि यह सबसे अधिक संभावना एक टाइपो से ज्यादा कुछ नहीं था। मैं इस पद को फिर से खोलने के लिए मतदान कर रहा हूं।
बैसड्रॉप कंबरवुबवबूब

जवाबों:


11

रेटिना , 14 बाइट्स

O%$`\d|(.)
$#1

इसे ऑनलाइन आज़माएं!

व्याख्या

O एक छँटाई चरण पेश करता है। %रेटिना को प्रत्येक पंक्ति में परिवर्तन को अलग से लागू करने के लिए कहता है। $इसे निर्दिष्ट प्रतिस्थापन के परिणाम के आधार पर मैचों को क्रमबद्ध करने के लिए कहता है।

रेगेक्स ही वह है \d|(.)जो या तो एक अंक से मेल खाता है, या कुछ और जो समूह में कैद है 1। यह प्रतिस्थापित किया जाता है $#1जिसके साथ समूह के कैप्चर की संख्या होती है 1। यही है, अंकों के लिए छँटाई कुंजी है 0और बाकी सब चीज़ों के लिए छँटाई कुंजी है 1। चूंकि रेटिना में छंटाई स्थिर है, यह बस अंकों को बाईं ओर और बाकी सब चीजों को दाईं ओर ले जाता है।


9

05AB1E, 14 10 बाइट्स

कोड:

|vyþyyþ-¶J

स्पष्टीकरण:

|                 # push all lines in input as array of strings
 v                # for each line in array
  yþ              # push only digits from line
    yyþ-          # push line without digits
        ¶         # push newline char
         J        # join as string
                  # end loop and print explicitly

उदाहरण इनपुट:

एक शब्द में 433884 की तरह कोई भी पाठ हो सकता है,
लेकिन सभी सुन्नियों को बाईं ओर ले जाना होगा,
लेकिन एल्फ 6 डायबिटीज va9lues को दाईं ओर pas46ted किया जाना है।
पाठ h4p या dfeintino की तरह s2huffled या यहाँ तक कि
अर्थहीन शब्द co43mbined एक साथ81 से chara29cters s4huffled हो सकता है।

उदाहरण आउटपुट:

433884A शब्द में किसी भी संख्या का पाठ हो सकता है जैसे,
89but सभी संख्याओं को बाईं ओर ले जाना होगा
6946but वर्णमाला मानों को दाईं ओर चिपकाया जाना है।
4292 इस पाठ में hlep या dfeintino या यहां तक ​​कि
4381meaningless शब्दों को एक साथ मिलाकर वर्णों को जोड़ा जा सकता है।

इसे ऑनलाइन आज़माएं


8

पायथन 3, 64 बाइट्स

तीन बराबर समाधान! मैं नहीं चुन सकता।

while 1:print(*sorted(input(),key=lambda x:-x.isdigit()),sep='')
while 1:print(*sorted(input(),key=lambda x:x<'0'or'9'<x),sep='')
while 1:print(*sorted(input(),key=str.isdigit,reverse=1),sep='')

इसी लंबाई का एक और प्रकार:while 1:print(*sorted(input(),key=lambda x:-('/'<x<':')),sep='')
बाइट कमांडर

5

पर्ल, 17 बाइट्स

16 बाइट्स कोड + 1 स्विच

s/\d/!print$&/ge

आवश्यक है -p

प्रयोग

perl -pe 's/\d/!print$&/ge' <<< 'a1b2c3d4e5f6'
123456abcdef

वैकल्पिक रूप से:

print/\d/g,/\D/g

आवश्यक है -n

प्रयोग

perl -ne 'print/\d/g,/\D/g' <<< 'a1b2c3d4e5f6'
123456abcdef

1
यह देखने के लिए अच्छा है कि एक गैर-गोल्फिंग भाषा प्रतिस्पर्धी है, यहां तक ​​कि गोल्फिंग भाषाओं के खिलाफ भी।
जेम्स

@DrGreenEggsand HamDDJ मुझे खुशी है कि आपको यह पसंद आया! मैं कई जवाब नहीं जोड़ रहा हूँ, लेकिन मैं इस एक के समाधान को काफी पसंद करता हूँ! इसके अलावा, मुझे यकीन है कि कुछ लोग पर्ल को एक गोल्फ भाषा के रूप में वर्गीकृत करेंगे, क्योंकि यह केवल लिखने के रूप में वर्णित है !
डोम हेस्टिंग्स

5

हून , 92 83 बाइट्स

|*
*
(turn (lore +<) |=(@ `tape`(welp (skid (trip +<) |=(@ !=(~ (rush +< nud)))))))

++loreएक मल्टी-लाइन कॉर्ड को एक में विभाजित करता है (list cord), (trip +<)इसे एक टेप में बदल देता है। ++skidदो में एक सूची को अलग करता है: एक तरफ जहां फ़ंक्शन वापस लौटता है, एक तरफ जहां यह वापस नहीं आता है। हमारा फ़ंक्शन वर्ण ++nud(संख्यात्मक) के साथ पार्स करने की कोशिश करता है और जांचता है कि क्या यह पूरी तरह से पार्स करता है, और फिर हम दो सूचियों को एक साथ टेप में वापस वेल्ड कर देते हैं।

> %.
  '''
  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.
  '''
  |*
  *
  (turn (lore +<) |=(@ `tape`(welp (skid (trip +<) |=(@ !=(~ (rush +< nud)))))))
<<
  "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."
>>

1
भगवान, मैं हुण को कभी नहीं बढ़ाऊंगा। ♥
लिन

4

MATL , 13 12 बाइट्स

`jt4Y2m&)hDT

सही आउटपुट उत्पन्न करने में त्रुटि (डिफ़ॉल्ट रूप से अनुमत) के साथ बाहर निकलता है।

इसे ऑनलाइन आज़माएं!

व्याख्या

`          T    % infinite loop
 j              % input one line as a string
  t             % duplicate
   4Y2          % predefined literal: '0123456789'
      m         % true for elements of string that are digits, false for the rest
       &)       % two-output indexing: push digits, then non-digits
         h      % concatenate the two strings
          D     % display

4

वी, 12 बाइट्स

òí¨Ä©¨ä©/²±
​

V, एक अधूरा, 2D स्ट्रिंग आधारित गोल्फिंग भाषा है। हालांकि यह अधूरा है, यह कार्यक्रम प्रतिबद्ध 45 के रूप में काम करता है , जिसे कल रात प्रकाशित किया गया था, जिससे यह एक प्रतिस्पर्धी जवाब बन गया। (मेरे पिछले V उत्तरों में से अधिकांश गैर-प्रतिस्पर्धी थे।)

ध्यान दें, अनुगामी न्यूलाइन आवश्यक है, हालांकि यह बग के कारण है।

इसे ऑनलाइन आज़माएं!

स्पष्टीकरण:

ò            #Recursively, do:
 í           #Substitute on every line
  ¨Ä©¨ä©/²±  #The following regex. 

¨Ä©¨ä©/²± विम रेगेक्स में विस्तार:

:%s/\(\D\)\(\d\)/\2\1

जो एक गैर-अंक है और (\D)उसके बाद एक अंक है (\d), और उन्हें स्वैप करें।

चूंकि यह सकल यूनिकोड वर्णों से भरा है, इसलिए यहां एक प्रतिवर्ती हेक्सडंप है:

00000000: f2ed a8c4 a9a8 e4a9 2fb2 b10a            ......../...

4
मुझे इस जवाब पर वाकई गर्व है। भाषा पर कुछ और काम के साथ, यह आसानी से 4-5 बाइट्स छोटी हो सकती है, लेकिन यह उन विशेषताओं को देखने के लिए अच्छा है जो मैं वास्तव में काम कर रहा हूं। यह एक दिन पहले काम नहीं होता। = डी
जेम्स

3

जावास्क्रिप्ट ईएस 6, 40 बाइट्स

a=>a.replace(/\D/g,'')+a.replace(/\d/g,'')

कई अन्य समाधानों की कोशिश की, लेकिन इसे इससे छोटा नहीं मिला।
मेरा पहला प्रयास था, a=>[...a.match(/\d/g),...a.match(/\D/g)].join``लेकिन वह 5 बाइट्स लंबा है

इसे यहाँ आज़माएँ


3

CJam, 9 13 16 बाइट्स

qN/{{A,s-,}$}%N*

वहाँ नहीं है f$...

यह 13 बाइट्स संस्करण लगभग काम करता है:

{l{A,s-,}$N}h

3

PowerShell v2 +, 55 बाइट्स

$args[0]-split"`n"|%{($_-replace'\D')+($_-replace'\d')}

मल्टी-लाइन इनपुट का समर्थन करने की आवश्यकता के कारण, हमें अपने -replaceबयानों को एक लूप के साथ और -splitनई कड़ियों में संलग्न करना होगा। अन्यथा मूल रूप से जावास्क्रिप्ट समाधान के बराबर है ।


3

पायथ - 11 बाइट्स

मेरे ग्रुपिंग टेस्ट को पसंद न करें। इनपुट को लाइनों की सूची के रूप में लेता है, मुझे बताएं कि क्या यह ठीक नहीं है।

jms_.g}k`MT

इसे यहाँ ऑनलाइन आज़माएँ


3

अजगर, १६ 15 बाइट्स

1 बाइट @FryAmTheEggman को धन्यवाद ।

jms+@J`MTd-dJ.z

इसे ऑनलाइन आज़माएं!

नमूना इनपुट:

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.

नमूना उत्पादन:

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.

यह काम किस प्रकार करता है

jms+@J`MTd-dJ.z

 m           .z    for each line (d):
         d           yield d (the line)
     J                 assign J to
        T              [0,1,2,3,...,9]
      `M               with each number converted to string
    @                intersect with J
   +                 append:
          -dJ          filter d for characters not in J
  s                  convert to one string
j                  join by newline

आप की जरूरत नहीं है Uक्योंकि नक्शे स्वचालित रूप से रेंजर्स के लिए पूर्णांक डालते हैं।
FryAmTheEggman

ओह, याद दिलाने के लिए धन्यवाद!
लीक नन

2

रेटिना, 16 बाइट्स

स्थिर बुलबुला प्रकार।

%+`(\D)(\d)
$2$1

नमूना इनपुट:

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.

नमूना उत्पादन:

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.

इसे ऑनलाइन आज़माएं!


1
कृपया अपना कोड अपडेट करें। संख्या शब्दों के बीच में आ सकती है। अगर आपका अपडेट किया गया है, तो इसका जुर्माना।
सिबिओडर

2

सी #, 59 बाइट्स

I=>Regex.Replace(I,"[^0-9]","")+Regex.Replace(I,@"\d+","");

रेगेक्स का उपयोग करते हुए एक साधारण सी # लैम्ब्डा फ़ंक्शन।

नमूना उत्पादन

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.

2

C # (LINQ), 110 बाइट्स

s=>string.join("",s.Where(c=>"0123456789".Contains(c).Concat(s.SelectMany(c=>new[]{c}.Except("0123456789"))));

सबसे छोटा समाधान नहीं, अब तक, लेकिन मुझे लगा कि यह LINQ का एक अच्छा उपयोग होगा।


समान लेकिन थोड़ा छोटा: string.Join ("", s.Where (c => char.IsDigit (c))। Concat (s.Where (c =>! Char.IsDigit (c))));
मार्क

@ मार वाह, मैं 5 साल से इस भाषा का उपयोग कर रहा हूं और मुझे नहीं पता char.IsDigitथा ...
निक मर्टिन

2

कारक ६१

[ "\n"split [ [ digit? ] partition [ write ] bi@ nl ] each ]

यह एक भोला तरीका है।

"\n"splitस्टैक के शीर्ष पर स्ट्रिंग को लाइनों में विभाजित करता है। फिर, के लिएeach लाइन के लिए:

  1. [ digit? ] partition अंकों को केवल और केवल गैर-अंकों में विभाजित करता है
  2. [ write ] bi@दोनों को आउटपुट करता है, और nlएक नई रेखा प्रिंट करता है।

पुनश्च:

एक शब्द के रूप में 90 बाइट्स (71 यदि आप 1-अक्षर के साथ-फैक्टरिश-लॉन्ग-नाम की जगह लेते हैं):

: numbers-to-the-front ( s -- ) "\n"split [ [ digit? ] partition [ write ] bi@ nl ] each ;


2

जावा 8, 130 126 86 बाइट्स

a->{for(String s:a)System.out.println(s.replaceAll("\\D","")+s.replaceAll("\\d",""));}

-4 बाइट्स जावा 7 से 8 को परिवर्तित करने और अप्रयुक्त चरित्र
-40 बाइट्स को परिवर्तित करने के लिए प्रोग्राम को कार्य करने और बदलने के [^\\d]लिए\\D

स्पष्टीकरण:

इसे यहाँ आज़माएँ।

a->{                             // Method with String-array parameter and no return-type
  for(String s:a)                //  Loop over the array
    System.out.println(          //   Print with a trailing new-line:
      s.replaceAll("\\D","")     //    All digits,
      +s.replaceAll("\\d",""));  //    plus all non-digits

2

जीएनयू सेड, 28

स्कोर में -rsed के विकल्प के लिए +1 शामिल है ।

:
s/([^0-9])([0-9])/\2\1/
t

बार-बार एक नंबर वर्ण के बाद एक गैर-संख्या वर्ण स्विच करता है जब तक कि कोई और प्रतिस्थापन नहीं किया जाता है।

अफसोस की बात है कि sedge regexes के पास नहीं है , \dया \Dइसलिए उन्हें longhand लिखा जाना चाहिए।

Ideone।


1

ऑक्टेव, 37 32 बाइट्स

@(s)disp([s(x=s>47&s<58),s(~x)])

ans('The text might con4tain chara29cters s2huffled like hlep or dfeintino or even')
4292The text might contain characters shuffled like hlep or dfeintino or even

इनपुट मल्टीलाइन हो सकता है; देखें (अद्यतन) चुनौती
लुइस मेंडो

1

क्लोजर, 113 बाइट्स

(fn[s](map(fn[x](println(apply str(sort-by #(when-not(Character/isDigit %)1)x))))(clojure.string/split-lines s)))

रेखा की शुरुआत के लिए अंक बताता है।


1

Oracle SQL 11.2, 131 बाइट्स

इनपुट स्ट्रिंग में लाइनों को '¤' द्वारा अलग किया जाता है। इस तरह इनपुट के रूप में उपयोग करने के लिए तालिका बनाना आवश्यक नहीं है।

A word can have any number of text like 433884but all the numb89ers has to be moved left side ¤but alph6abetical va9lues has to be pas46ted on right sideThe text might con4tain chara29cters s2huffled like hlep or dfeintino or even¤meaningless1 words co43mbined togeth81er.

प्रश्न:

SELECT REGEXP_REPLACE(COLUMN_VALUE,'[^0-9]')||REGEXP_REPLACE(COLUMN_VALUE,'[0-9]')FROM XMLTABLE(('"'||REPLACE(:1,'¤','","')||'"'));

संयुक्त राष्ट्र के golfed

SELECT REGEXP_REPLACE(COLUMN_VALUE,'[^0-9]')||  -- Every number
       REGEXP_REPLACE(COLUMN_VALUE,'[0-9]')     -- Every character not a number   
FROM   XMLTABLE(('"'||REPLACE(:1,'¤','","')||'"'))  -- Split on ¤


1

हास्केल, 60 बाइट्स

import Data.List;g(n,l)=n++l;f=g.partition(`elem`['0'..'9'])

प्रयोग

f "A word can have any number of text like 433884,"

1

सेड, 35 बाइट्स

h
s/[0-9]//g
x
s/[^0-9]//g
G
s/\n//

यह लाइन की एक प्रतिलिपि बनाता है, एक कॉपी और दूसरे से अक्षरों को हटाता है, उन्हें फिर से शुरू करने से पहले।


1

बैश, 42 बाइट्स

read a&&echo "${a//[^0-9]}${a//[0-9]}"&&$0

चेतावनी दी है कि इस पुनरावर्ती कार्यान्वयन इनपुट की प्रत्येक पंक्ति के लिए एक नई प्रक्रिया की तलाश करता है!



0

जूलिया 0.6 , 77 बाइट्स

x->(l=r="";for c=x
c=='\n'?(println(l*r);l=r=""):'/'<c<':'?(l*=c):(r*=c)
end)

अनाम फ़ंक्शन एक स्ट्रिंग और प्रिंटिंग आउटपुट ले रहा है। वर्णों पर लूप, उन्हें बाईं lया दाईं rबफ़र्स में जोड़ना जब तक यह एक नई रेखा नहीं पाता है, तब यह बफ़र्स को प्रिंट और खाली करता है। बहुत सारे संभावित उपयोगी निर्माण जैसे sort, filterऔर तार्किक अनुक्रमण (बूलियन मूल्यों की एक सरणी के साथ अनुक्रमण) स्ट्रिंग्स पर काम नहीं करते हैं।

इसे ऑनलाइन आज़माएं!


0

विम, 30 कीस्ट्रोक्स

qr:%s/\v(\D+)(\d+)/\2\1/<Enter>@rq@r

एक खोज को रिकॉर्ड करें और एक्शन को बदलें जो अंकों को गैर-अंकों के बाईं ओर ले जाता है। मैक्रो को तब तक पुनरावर्ती रूप से कॉल करें जब तक कि कोई अपवाद नहीं मिला पैटर्न द्वारा (जब किसी भी गैर-अंक के दाईं ओर अधिक अंक नहीं हैं)।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.