একটি স্ট্রিং প্রতিটি সংখ্যা বৃদ্ধি


11

দশমিক সংখ্যাযুক্ত একটি স্ট্রিং দেওয়া:

teststring134this 123test string54 100

নতুন স্ট্রিং দেওয়ার জন্য এই স্ট্রিংয়ের প্রতিটি সংখ্যাকে এক করে বাড়িয়ে দিন

teststring135this 124test string55 101

স্ট্রিংটি প্রদান করা যেতে পারে:

  • একটি কমান্ড লাইন আর্গুমেন্ট
  • stdin
  • একটি হার্ড কোডিং ভেরিয়েবল বা ফাংশন আর্গুমেন্ট

একটি সংখ্যার জন্য সমস্ত সম্ভাব্য অবস্থান কভার করুন:

  • একটি শব্দের উপসর্গ হিসাবে; 123test124test
  • শব্দের প্রত্যয় হিসাবে; test123test124
  • একটি শব্দের ভিতরে; te123stte124st
  • একা test 123 testtest 124 test

পাইথনে একটি অ-গল্ফযুক্ত সমাধান এখানে দেওয়া হয়েছে:

NUMBERS = '0123456789'

def increment(s):
    out = ''

    number = ''
    for c in s:
        if c in NUMBERS:
            number += c
        else:
            if number != '':
                out += str(int(number) + 1)
                number = ''
            out += c

    if number != '':
        out += str(int(number) + 1)
        number = ''

    return out


print "\"%s\"" % (increment('teststring134this 123test string54 100'))

এটি একটি code-golfপ্রশ্ন, সংক্ষিপ্ততম কোডের জয়।


5
মজার বিষয়: এই 3 বিশুদ্ধ Regex বদল (কোন callbacks) সঙ্গে কাজ করা যেতে পারে stackoverflow.com/questions/12941362/... (যে যদিও golfiest উপায় হবে না)
মার্টিন Ender

4
আপনি ইনপুট নির্দিষ্ট করেছেন তবে আউটপুট নয়। আপনার ইনপুট স্পেস থেকে আমি উভয় STDOUT এবং ফেরতের মান ধরে নিচ্ছি। তবে আমরা কী হার্ডকোডযুক্ত ভেরিয়েবলের ফলাফলটি সংরক্ষণ করতে পারি (ঠিক যেমনটি আমরা এটি থেকে ইনপুট নিতে পারি)?
মার্টিন এন্ডার

1
বহন সম্পর্কে কী? 999 এর কি হয়?
ফ্লফি


7
নেতিবাচক সংখ্যা সম্পর্কে কি? দশমিক পয়েন্ট সহ সংখ্যাগুলি কী? দশমিক পয়েন্ট সহ সংখ্যার কী হবে এবং এর আগে কিছুই নেই (সম্ভবত একটি বিয়োগ চিহ্ন ছাড়া)?
পিটার টেলর

উত্তর:


23

পার্ল, 14 বাইট

s/\d+/$&+1/ge

প্রয়োজন -pসুইচ, যা আমি এক বাইট হিসাবে গণনা করা হয়েছে।

উদাহরণ রান

$ perl -p <(echo 's/\d+/$&+1/ge') <<< 'teststring134this 123test string54 100'
teststring135this 124test string55 101

5
আমার উত্তরটির সাথে খুব মিল এখানে হা হা কোডগল্ফ.স্ট্যাকেক্সেঞ্জিং.com
a/

12

রুবি, 30 24 বাইট

$><<s.gsub(/\d+/,&:next)

ইনপুটটি সংরক্ষণ করা হবে বলে আশা করে s


3
$1.nextব্লক ব্যবহার করা যাবে না ?
আগস্ট

@ আগস্ট সুন্দর, ধন্যবাদ! আমি জানতাম না nextযে পরিশীলিত ছিল।
মার্টিন এন্ডার

11

ভিম - 13 টি কীস্ট্রোক

0qqqqq^Al@qq@q

প্রত্যাশা বর্তমান লাইন হবে।

বা 8 + সিল (লগ (এন)) কীস্ট্রোকের চূড়ান্তভাবে অনেক সংখ্যার (যেমন 999) জন্য:

0qq^Alq999@q

আমি এই কাজটি করতে পারছি বলে মনে হচ্ছে না .... (আমি ভিএম 7.০.২3737 ব্যবহার করছি)
জেরি যেরেমিয়া

10

জাভাস্ক্রিপ্ট (ES6) - 28

H=k=>k.replace(/\d+/g,k=>++k)

ব্যবহার করে চালান H("test 123 234t")


1
আপনি এটি বের করতে পারেন H=এবং এটি কেবল একটি বেনাম ফাংশন হতে পারে।
মামা ফান রোল

8

পার্ল, 23

ধরে নিই ইনপুট স্ট্রিং নির্ধারিত হয়েছে $_

s/\d+/@{[$&+1]}/g;print

8

পাইথন 2 - 59

পরিবর্তনশীল হিসাবে স্ট্রিং সরবরাহ করুন n

import re;print re.sub('\d+',lambda x:`int(x.group())+1`,n)

6

সি 99 - 86 (জিসিসি 4.9.0 এবং ভিজ্যুয়াল সি ++ 2013)

সম্পাদনা করুন: জিসিসি 4.9.0 (-std = c99 সহ) এবং ভিজ্যুয়াল সি ++ 2013 উভয়ই সাফল্য সহ একই কোডটি (সতর্কতা সহ) বিল্ড করুন। আমি জানতাম না যে আপনি এটা করতে পারবেন! ইঙ্গিতটির জন্য ধন্যবাদ।

সম্পাদনা: এটি এমনকি আমার কাছে ঘটেছিল না যে স্ট্রিংটি তৈরি করার পরে এটি মুদ্রণের পরিবর্তে আমার এটিকে ফ্লাই স্ক্রিনে লিখতে হবে। এটি একটি বিশাল পার্থক্য করে। ধন্যবাদ ডেনিস!

এটি একটি হার্ড কোডিং স্ট্রিং ব্যবহার করছে তবে স্ট্রিংয়ের বিষয়বস্তু মোটের সাথে গণনা করা হয়নি (= "" গণনা করা হয়েছে)।

main(i){for(char*q,*s="test123test999test-1test";i=strtol(s,&q,0),*s;q>s?printf("%d",i+1,s=q):putchar(*s++));}

মূলত এটি স্ট্রিংয়ের মাধ্যমে একটি অক্ষরটি একবারে প্রতিটি পরীক্ষাগুলিতে পরীক্ষা করে দেখা হয় যে এটি কোনও পূর্ণসংখ্যা কিনা। যদি এটি হয় তবে এটি পূর্ণসংখ্যাটিকে বাড়িয়ে দেয় এবং আউটপুটে লেখায় অন্যথায় এটি বর্তমান অক্ষরটিকে আউটপুটে অনুলিপি করে।

এটি হার্ডকোডযুক্ত স্ট্রিং ফাঁস করে কারণ এটি বাড়ায়।


1
আমি নিশ্চিত যে আপনি কয়েকটি includeগুলি থেকে মুক্তি পেতে পারেন এবং এটি এখনও সিসির সাথে জরিমানা সংকলন করবে।
মার্টিন এন্ডার

1
এই যেমন একটি স্ট্রিং সঙ্গে কাজ করবে 99?
অ্যানাটলিগ

@ মার্টিনবাটনার: হ্যাঁ তবে তারপরে এটি বৈধ সি হবে না, কেবল সিসিসি-তে কাজ করার কিছু ঘটে।
আর .. গীটহাব বন্ধ করুন ICE

@ আর .. এটি সাধারণত পিপিসিজিতে অনুমোদিত। আমি এটি বেশিরভাগ ক্ষেত্রেই অভিযোগ না করে দেখেছি (এবং পরবর্তীকালে সম্পন্ন করেছি)।
মার্টিন এন্ডার

হ্যাঁ, এবং এটি আমার একটি সাধারণ উপস্থাপনা। ভাষাটি "জিসিসি" বা "সি অন [বিশেষ খিলান / ইত্যাদি হিসাবে তালিকাবদ্ধ করা উচিত। হ্যাকগুলি কাজ করে]]" বা অনুরূপ, সি এর পরিবর্তে, যদি এটি আসলে বৈধ নয় সি :-)
আর .. গিটহাব স্টপ সহায়তা আইসিসি

5

জে (20)

ভেরিয়েবলটিতে ইনপুটটি সংরক্ষণ করা হবে বলে আশাবাদী a

'\d+'>:&.".rxapply a

টেস্ট:

   a=:'teststring134this 123test string54 100'
   '\d+'>:&.".rxapply a
teststring135this 124test string55 101

5

(চ?) লেক্স (39)

ফাইল inc.l:

%%
[0-9]+ printf("%d",atoi(yytext)+1);

কম্পাইল:

$ flex inc.l
$ gcc lex.yy.c -o inc -lfl

চালান:

$ echo 'teststring134this 123test string54 100' | ./inc
teststring135this 124test string55 101

$ i='(-: 2 empty bottles of beer :-)'
$ tty=$(tty)
$ for n in {2..5} ; do i=$(./inc<<<$i|tee $tty) ; done
(-: 3 empty bottles of beer :-)
(-: 4 empty bottles of beer :-)
(-: 5 empty bottles of beer :-)
(-: 6 empty bottles of beer :-)

আসলটি দিয়ে আমি এটি পরীক্ষা করিনি lex। মন্তব্য স্বাগত।


1
%%এটি কোনও ব্যবহারকারীর কোড না হওয়ায় আপনি পিছনে যেতে পারেন : flex.sourceforge.net/manual/…
জোশ

আরে ... হ্যাঁ! আমি চেষ্টা করেছিলাম কিন্তু নতুন লাইনের পিছনে ছাড়াই এবং এটি ব্যর্থ হয়েছে ... তখন আমি চূড়ান্ত নিউলাইন যোগ করার চেষ্টা করিনি ... ;-) ... বোকা ভুল!

3

ইম্যাক্স - 20 টি অক্ষর

C-M-% [0-9]+ RET \,(1+ \#0) RET !

বর্তমান বাফারে উপস্থিত থাকার জন্য পাঠ্য প্রক্রিয়া করা প্রয়োজন। আমি এখানে CM-% কে একটি চরিত্র হিসাবে গণনা করেছি কারণ তিনটি সংশোধককে ধরে রাখলে এটি একটি কীস্ট্রোক দিয়ে প্রবেশ করা যায়।


3

জিএনইউ সেড, 304 (1-ফর পতাকা সহ)

আমি এই প্রশ্নটিকে একটি সম্ভাব্য সদৃশ হিসাবে ঘনিষ্ঠভাবে ভোট দিয়েছি, তবে এটি সম্ভবত এর বিপরীত কারণ এই উত্তরটি তুচ্ছভাবে সেখানে কাজ করা যায় না। এখনও পর্যন্ত দীর্ঘতম উত্তর।

সেড ডকুমেন্টেশন থেকে এই উদাহরণটি দ্বারা অনুপ্রাণিত , যদিও স্ট্রিংয়ে একাধিক সংখ্যা হ্যান্ডেল করার জন্য এটি কিছু কাজ প্রয়োজন:

:d
s/9([^0-9]+|$)/_\1/g
td
s/8(_*)([^0-9]+|$)/9\1\2/g
s/7(_*)([^0-9]+|$)/8\1\2/g
s/6(_*)([^0-9]+|$)/7\1\2/g
s/5(_*)([^0-9]+|$)/6\1\2/g
s/4(_*)([^0-9]+|$)/5\1\2/g
s/3(_*)([^0-9]+|$)/4\1\2/g
s/2(_*)([^0-9]+|$)/3\1\2/g
s/1(_*)([^0-9]+|$)/2\1\2/g
s/0(_*)([^0-9]+|$)/1\1\2/g
s/(^|[^0-9_]+)(_+)/\11\2/g
y/_/0/

আউটপুট:

$ for s in "teststring134this 123test string54 100" "123test" "test123" "te123st" "test 123 test" ; do echo "$s" | sed -rf incr.sed ; done
teststring135this 124test string55 101
124test
test124
te124st
test 124 test
$ 

নোট করুন এটি অস্থায়ীভাবে _অক্ষরগুলি সন্নিবেশ করায় তাই _ইনপুট প্রবাহে থাকলে ভুল ফলাফল হতে পারে । _এটির প্রশমন হিসাবে, আমরা কিছু স্ক্রিন-এ প্রিন্টযোগ্য কিছু অক্ষর (উদাঃ ASCII 0x07 বিইএল) দিয়ে সেড স্ক্রিপ্টে প্রতিস্থাপন করতে পারি এবং ধরে নিই যে ইনপুট স্ট্রিমটিতে কেবল মুদ্রণযোগ্য ASCII রয়েছে। আমি এটি পরীক্ষা করার সময় এটি ঠিকঠাক কাজ করে বলে মনে হচ্ছে।



2

লুয়া - 68 টি অক্ষর

d='(%D-)'for k,i,j in s:gmatch(d..'(%d+)'..d)do io.write(k,i+1,j)end

এস ইনপুট সংরক্ষণ করা হবে আশা।


2

সিজেম, 67 58 53 48 31 টি অক্ষর

এই প্রশ্নটি সিজেমের জন্য সবচেয়ে খারাপ প্রশ্নের মতো। কোনও রেজেক্স, কোনও প্যাটার্নের মিল নেই, কোনও ব্যতিক্রম ধরা নেই। তবে আমরা এখানে যাচ্ছি (# ইওলো)

Sl+_A,sNerN%\[_A,s-Ner~]:)]zs1>

এই একটিকে কেবলমাত্র বর্ণমালা এবং কেবলমাত্র সংখ্যার গোষ্ঠীতে বিভক্ত করে। প্রতিটি অঙ্কের ইনক্রিমেন্টগুলি এবং একবারে প্রত্যেকটির একটি উপাদান নিয়ে দুটি অ্যারে ব্যয় করে।


পূর্ববর্তী সমাধান:

L_l{:Ci57-zA<:RC*+:N\R!N*NNW?i):NL?+RLC?@R*}/NL?

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

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

বেসিক ধারণাটি হ'ল অক্ষরটি আলাদা আলাদাভাবে স্ট্রিংয়ে রেখে সংরক্ষণ করা এবং যখন আমরা একটি অ অঙ্কিত অক্ষর পাই তখন বর্ধিত মানটিকে চূড়ান্ত স্ট্রিংয়ে ফেলে দিন।

L_                                               "Push two empty strings to stack,"
                                                 "first representing the final string"
                                                 "and second, the current ongoing number";
  l{                                       }/    "Run this block for each character of input string";
    :Ci                                          "Store the character to C and convert to"
                                                 "its ASCII equivalent integer";
       57-zA<:R                                  "Subtract 57 from the integer and compare"
                                                 "its absolute value with 10. Numeric character"
                                                 "would result to true here. Store the result in R";
               C*+:N                             "Take either 0 or 1 characters from C based"
                                                 "on value of R, add it to the second string"
                                                 "from first step. Also store the value in N";
                    \                            "Switch the strings. Now the string containing"
                                                 "the final result string is at top of stack";
                     R!N*                        "If the character was not a digit and N contains a number in it";
                         NNW?i):NL?+             "Convert N to number and increment it."
                                                 "If N is blank, take 0 instead. Put the final"
                                                 "value back in N and add it to the final result string";
                                    RLC?         "If the character was not a digit, push it to stack";
                                        @R*      "Put the ongoing numeric string back to top of stack";
                                             NL? "This is to handle the case when the last number"
                                                 "is not followed by a string, so stack will"
                                                 "have a string at top. Push the value of N to stack in that case";

1

কোবরা - 88

do(s='')=RegularExpressions.Regex.replace(s,'\d+',do(m as Match)='[int.parse("[m]")+1]')

1

সি # - 178 169 টি অক্ষর

এটি ধরে নিয়েছে যে 999 এর মতো সংখ্যাগুলি 1000 এ উপচে পড়ার অনুমতি রয়েছে এবং - + ,. E কোনও সংখ্যার অংশ নয়।

class T{static void Main(){var a="".ToCharArray();for(int b=1,c,i=a.Length;i-->0;b=48>c|c>57?7:b>0?c>56?a[i]='0':++a[i]*0:b)c=a[i];System.Console.Write(a);}}

ভাল পাঠযোগ্য ফর্ম:

class T
{
    static void Main()
    {
        var a="7teststring134this 123test string59 100".ToCharArray();

        for (int b=3, c, i=a.Length; i-->0;
            b=48>c|c>57
                ?7
                :b>2
                    ?c>56?a[i]='0':++a[i]*0
                    :b
        ) c=a[i];

        System.Console.Write(a);
        System.Console.ReadKey();
    }
}

আমি এখানে নতুন, কোড গল্ফ এর আগে কখনও চেষ্টা করিনি, একবার চেষ্টা করে দেখলাম :)

আমি ভাবছি যদি কারও কাছে এটিকে আরও খাটো করার ধারণা থাকে ...

সি # তে অংশ নেওয়া ভাল লাগবে যদি আমরা আসল কোডের চারপাশে সমস্ত প্রয়োজনীয় কাঠামো বাদ দিতে পারি - তবে এটির জন্য কেবলমাত্র 82 টি অক্ষর থাকবে এবং এটি কোনও শক্তিশালী সিস্টেম ফাংশন কল না করেই।


পয়েন্টার (182 অক্ষর) এর সাথে একই:

class T
{
    unsafe static void Main()
    {
        char[] a="7teststring134this 123test string59 100".ToCharArray();

        int b=3;
        fixed (char* s=&a[0])
            for (var p=s+a.Length; p-->s; )
                b=*p<48|*p>57
                    ?7
                    :b>2
                        ?*p>56?*p='0':++*p*0
                        :b;

        System.Console.Write(a);
        System.Console.ReadKey();
    }
}

উপচে পড়া ছাড়াই এখন, এটি সঠিকভাবে 999 কেস (223 অক্ষর) পরিচালনা করে:

class T
{
    static void Main()
    {
        var s=new System.Text.StringBuilder("9999teststring134this 123test string99 100");

        for (int b=3, c, i=s.Length; i-->0; )
        {
            c=s[i];
            b=48>c|c>57
                ?b>8?8:7
                :b>2
                    ?c>56?c-(s[i]='0'):++s[i]*0
                    :b;
            if (b>8&i<1|b==8) s.Insert(i+9-b, '1');
        }

        System.Console.Write(s);
        System.Console.ReadKey();
    }
}

আরেকটি ভিন্ন প্রবীণ, এটি স্ট্যান্ডার্ড ইনপুট থেকে পড়ে এবং পুনরাবৃত্তি ব্যবহার করে:

namespace System {
    using C=Console;
    class T {
        class t {
            byte b=1;
            string s="";
            void R() {
                var c=C.Read();
                if (c>31) {
                    R();
                    if (48>c|c>57) b=1;
                    else if (b==1) c=c==57?48:++c*b--;
                    s=(char)c+s;
                }
            }
            public t() {
                R();
                C.Write(s);
            }
        }
        static void Main() {
            new t();
            C.ReadKey();
        }
    }
}

দ্রষ্টব্য: Console.ReadKey();এবং স্ট্রিংটি নিজেই গণনা করা উচিত নয়।

আমি ইতিমধ্যে একাধিক বার উন্নতি করেছি, মন্তব্য দেখুন। আরও উন্নতির জন্য এখনও অবকাশ আছে, আমি বলব :) এবং দৈর্ঘ্যের জন্য দুঃখিত, তবে আমি মনে করি বিভিন্ন সংস্করণগুলি সেগুলি রাখার জন্য যথেষ্ট আকর্ষণীয় ...


না, "পরিবেশ" থেকে মুক্তি পাওয়ার অনুমতি নেই। আপনার পরিবর্তে if(c==57)লিখতে পারার পরে আমি আপনার দ্বিতীয় কোডটি গণনা করি , টের্নারি অপারেটর সম্পর্কেও what গল্ফিং ট্রিকস অনেক আছে। হতে পারে আপনার কোডগল্ফ.স্ট্যাকেক্সেঞ্জারওয়েজ পরিদর্শন করা উচিত / প্রশ্নগুলি 2203c--;c=48;
গর্বিত হাসেলেলার

ধন্যবাদ, আমি গল্ফ সম্পর্কে কিছুই জানি না :) আপনি যা দেখেন এখানে সবকিছুই আমার দ্বারা উদ্ভাবিত হয়েছিল ;-) 57-1 নয় 48 So তাই আমি বুঝতে পারি না।
মাফ-নরম


আমি সত্যিই সি # ভালভাবে জানি না তবে আমি অনুমান করি আপনি কিছু অপারেটরকে এগুলি একসাথে আটকে রাখতে ব্যবহার করতে পারেন... ? ... : c++*b--
গর্বিত হাসেলেলার


1

গ্রোভি, 38 বাইট

{it.replaceAll(/\d+/,{(it as int)+1})}

উগঘঃহ ... আমি এই শব্দগুলিকে একেবারে ঘৃণা করি replaceএবং allতারা আমার জন্য সমস্ত রেগেক্স গল্ফ নষ্ট করে দেয়।


1
(it as int)+1it.next()
manatwork

0

পিএইচপি - 91 বাইট

<?$i=fgets(STDIN);for($n=0;$n<strlen($i);$n++)if(is_numeric($i[$n]))$i[$n]=$i[$n]+1;echo$i;

আমি নিয়মিত ভাব প্রকাশ করতে চাইনি। পিএইচপি সরাসরি একটি স্ট্রিং অফসেট বৃদ্ধি করতে সক্ষম নয়, সুতরাং, ইনক্রিমেন্ট স্টেপটিতে আমার কিছু বাইট যুক্ত করা দরকার। এই ওয়ান লাইনের স্ক্রিপ্টটি আমাকে পিএইচপি স্ক্রিপ্টিংয়ের খুব অন্ধকার যুগের কথা মনে করে ...


আমি এখনই পর্যবেক্ষণ করেছি যে প্রশ্নটি আপনাকে অ্যালগেরিজমের ক্রমের ফলাফলের সংখ্যা বাড়িয়ে দিতে বলেছে। এই উত্তরটি ভুল। তবে আমি সত্যিই অনুভব করি যে অপের উচিত তিনি কী চান সে সম্পর্কে আরও বিশদ যুক্ত করা উচিত।
আলেকজান্দ্রে টেলিস


0

সেড এবং বাশ - 40 (অনুরোধ এবং পাইপ সহ)

$ cat << EOF |sed 's/[0-9]\+/$((\0+1))/g;s/^/echo /'|bash
teststring134this 123test string54 100
123test
test123
te123st
test 123 test
EOF

আউটপুট:

teststring135this 124test string55 101
124test
test124
te124st
test 124 test

আমি এই পরীক্ষার স্ট্রিংটি চেষ্টা করেছিলাম: 42;rm -rf /এটি প্রথমবার কাজ করেছিল।
ডেনিস

2
আপনি পরিবর্তন করতে পারেন \0থেকে &(-1 গৃহস্থালির কাজ), $((…))থেকে $[…](-2 অক্ষর), s/^/echo /থেকে iecho \\আপনার কমান (-2 অক্ষর) বর্তমান কোড। তবে প্রথমে @ ডেনিস দ্বারা উল্লিখিত বাগটি ভাল করে নিন। (তিনি লিখেছিলেন মজা করার জন্য এবং সমস্যা সম্পর্কে ইঙ্গিত হিসাবে "এটা প্রথমবার কাজ" আসলে আপনার কোড ইনপুটের ব্যর্থ রয়েছে। ;, #, `…`, $(…)খুব এবং হয়ত অন্য বিশেষ অক্ষর।)
manatwork

স্বেচ্ছাসেবক কোড কার্যকরকরণ একটি বৈশিষ্ট্য :-)
মিলিগজেক

কোনও ধরণের ইনপুট বিধিনিষেধ না রেখে এবং কোডটি ক্ষুদ্র করে না রেখে এই রুটে যাওয়ার কোনও উপায় নেই। সমাধানের প্রকৃতি হ'ল ইনপুটটি অনুবাদ করা এবং কোনও অনুবাদককে গণিত করার জন্য ব্যবহার করা যেহেতু সেড এটি করতে পারে না। ব্যবহারকারীর ইনপুট কোনও দোভাষীকে আঘাত করার সাথে সাথে পালানো বাদাম। পূর্বের শেড উদাহরণের সংক্ষিপ্ত, সেড গণিত করতে পারে না।
এমজিজেকে

কিছুটা সংক্ষিপ্ততর: eval echo `sed 's/[0-9]\+/$[&+1]/g'`- এখনও কোড ইঞ্জেকশন সমস্যা আছে যদিও আমার অন্য অনুরূপ প্রশ্নের উত্তর অনুসারে কোডগলফ.স্ট্যাকেক্সেঞ্জের.com
ডিজিটাল ট্রমা

0

জাভা 7, 119 বাইট

void c(String s){for(String x:s.split("(?=[^\\d]+)|(?<=[^\\d]+)"))System.out.print(x.matches("\\d+")?new Long(x)+1:x);}

প্রয়োজনটি যদি কেবল কোনও ফাংশনের পরিবর্তে কোনও প্রোগ্রাম হয় তবে এটি 149 বাইট:

class M{public static void main(String[]a){for(String x:a[0].split("(?=[^\\d]+)|(?<=[^\\d]+)"))System.out.print(x.matches("\\d+")?new Long(x)+1:x);}}

অবরুদ্ধ এবং পরীক্ষার কোড:

এখানে চেষ্টা করুন।

class M{
  static void c(String s){
    for(String x : s.split("(?=[^\\d]+)|(?<=[^\\d]+)")){
      System.out.print(x.matches("\\d+")
                        ? new Long(x) + 1
                        : x);
    }
  }

  public static void main(String[] a){
    c("123test");
    System.out.println();
    c("test123");
    System.out.println();
    c("te123st");
    System.out.println();
    c("test 123 test");
    System.out.println();
    c("7teststring134this 123test string59 100");
  }
}

আউটপুট:

124test
test124
te124st
test 124 test
8teststring135this 124test string60 101


0

ড্যাশ , 16 বাইট (নন-কেপটিং)

rstr[R"\d+""g"+1

এটি একটি ফাংশন / আংশিক অ্যাপ্লিকেশন প্রদান করে।

ব্যবহার:

rstr[R"\d+""g"+1]"test 123 234t"

ব্যাখ্যা

rstr[          #. replace any parts of the input
  R "\d+" "g"  #. matching /\d+/g
  +1           #. with its incremented form
]

এই উত্তরটি কি প্রতিযোগিতামূলক?
ডেনিস

উহু চেরা :( আমি একরকম চিন্তা এই একটি ক্যাটালগ প্রশ্ন ছিল।
মামা মজা রোল

0

সিজেম, 18 বাইট

q_A,s-_:(:`ers~]:)

এখানে চেষ্টা করুন।

ব্যাখ্যা

q         e# Read input.
_A,s-     e# Duplicate and remove digits.
_         e# Duplicate.
:(:`      e# Decrement and get the string representation of each character.
er        e# Map the characters to the decremented string representation.
s~        e# Flatten to string and evaluate.
]:)       e# Wrap in an array and increment each element.

0

আর, 83 বাইট

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

paste0(el(r(x,m<-gregexpr("\\d+",x),T)),c(as.numeric(el(r(x,m)))+1,""),collapse="")

অবহেলিত এবং ব্যাখ্যা

r=regmatches                                        # Alias for regmatch
y=r(x<-scan(,""),m<-gregexpr("\\d+",x))             # return match digits
i=r(x,m,T)                                          # return inverted match (non-digits)
paste0(el(i),c(as.numeric(el(y))+1,""),collapse="") # join digits+1 and non-digits, element-wise

উদাহরণ আউটপুট

input: 
"teststring135this 124test string55 101"

output:
[1] "teststring136this 125test string56 102"

0

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) কমান্ড-লাইন বিকল্প /u:System.Text.RegularExpressions.Regex;System.Int32, 40 বাইট সহ

Replace(n,"\\d+",m=>Parse(m.Value)+1+"")

এনপুট নামের একটি ভেরিয়েবলের প্রত্যাশা।

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


2
অবৈধ, একটি পরিবর্তনশীল ইনপুট আশা করতে পারে না
ASCII- শুধুমাত্র

@ ascii-only এই প্রশ্নটি স্পষ্টতই এটির অনুমতি দেয় বলে মনে হচ্ছে 'যদিও ব্যক্তিগতভাবে আমি আজকের ইনপুট মানগুলিতে লেগে থাকার চেষ্টা করব
জো কিং

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