নম্বর সংযোজন


15

মোটামুটি সহজ চ্যালেঞ্জ: আপনি দুটি ইনপুট পাবেন, একটি স্ট্রিং এবং একটি সংখ্যা (সংখ্যাটি স্ট্রিং হিসাবে গ্রহণ করা যেতে পারে, "123"তার পরিবর্তে 123)

যদি স্ট্রিংটি কোনও সংখ্যায় শেষ না হয় (যেমন, এটি রেজেক্সের সাথে মেলে না \d$), কেবল স্ট্রিংয়ের শেষে সংখ্যাটি যুক্ত করুন।

যদি স্ট্রিংটি কোনও সংখ্যায় শেষ হয় (যেমন, এটি রেজেক্সের সাথে মেলে \d+$), আপনার প্রথমে এটি মুছুন এবং তারপরে নম্বরটি যুক্ত করুন।

ইনপুটগুলির কোনওটিই কখনই অবৈধ বা খালি হবে না (কেবলমাত্র সংখ্যাসূচক নয় এমন সংখ্যাসূচক ইনপুট দ্বারা অবৈধ সংজ্ঞায়িত)

সংখ্যাটিতে কখনই একটি -বা একটি থাকবে না .

স্ট্রিংটিতে কখনই কোনও নতুন লাইন বা অ-প্রিন্টেবল অ-হোয়াইটস্পেস অক্ষর থাকবে না।

পরীক্ষার কেস:

abc123 + 345 -> abc345
123 + 1 -> 1
hello + 33 -> hello33
123abc123 + 0 -> 123abc0
ab3d5 + 55 -> ab3d55
onetwo3 + 3 -> onetwo3
99ninenine + 9999 -> 99ninenine9999

উত্তর:


10

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

\d*¶

ইনপুট হিসাবে দুটি স্ট্রিং নেয়, একটি নতুন লাইনের দ্বারা পৃথক।

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


ninja'd। যদিও আমি নিশ্চিত না যে স্থানটি ভাল বিভাজক পছন্দ কিনা।
জন ডিভোরাক

যথেষ্ট ন্যায্য, একটি ট্যাবুলেটারে পরিবর্তিত হয়েছে।
ডেনিস

সেমিকোলন কেমন? সেটিকেও পালানোর দরকার নেই।
জন ডিভোরাক

ওহ, আমি কেবল ওপি'র স্পষ্টতা পড়েছি। নিউলাইন এটি।
ডেনিস

7

পাইথন 2 , 30 বাইট

lambda a,b:a.rstrip(`56**7`)+b

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


1
সমস্ত অঙ্ক সহ একটি সংখ্যা তৈরি করার জন্য দুর্দান্ত কৌশল!
TheLethalCoder

কী চলছে তা নিশ্চিত নয়, তবে আমার জন্য (উইন্ডোজে v2.7.11), যখন এটি aশেষ হয় তখন এটি ব্যর্থ হয় "L"কারণ 56**7মূল্যায়ন করে 1727094849536La="abcdL"; b="59"আউটপুটগুলির ইনপুট "abcd59"। আপনার টিআইও লিঙ্কটি কোনও দিন মূল্যায়ন করে না 56**7তাই কী হচ্ছে তা আমি জানি না
wnnmaw



5

জাভা 8, 32 বাইট

a->b->a.replaceAll("\\d*$","")+b

aস্ট্রিং হিসাবে ইনপুট নেয় , এবং bএটি কোনও স্ট্রিং বা পূর্ণসংখ্যা কিনা তা বিবেচ্য নয় (যদিও আমি নীচের টিআইও-লিঙ্কে পূর্ণসংখ্যা ব্যবহার করি)।

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



4

05 এ বি 1 ই , 9 বাইট

DvTFNÜ}}«

এটি অনলাইন চেষ্টা করুন! সম্ভবত একটি খারাপ সমাধান তবে এটি আমি নিয়ে আসতে পারছি সেরা

ব্যাখ্যা

DvTFNÜ}}«
Dv     }  # For each character in input1
  TF  }   # 10 times
    NÜ    # Get 0-9 and trim it from input1
        « # Concatenate with input2

কিছু মনে নেই, আমি ভুল ছিল।
ম্যাজিক অক্টোপাস উরান

4

জাপট , 10 বাইট

r"%d*$" +V

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

 r"%d*$" +V
Ur"%d*$" +V # Implicit input (U and V)
 r          # Remove
  "%d*$"    #   any trailing digits
U           #   from the first input
         +V # And append the second input
            # Implicit output

Uকোনও সংখ্যায় শেষ না হলে কাজ করে না। এর *পরিবর্তে, রেজিএক্সে ব্যবহার করার চেষ্টা করুন +টিআইও
শেগি

এখন এটা যদি কাজ না করে U আছে একটি সংখ্যা শেষ। আমি মনে করি আপনাকে করতে হবেr"%d+$" +V
ETH প্রোডাকশনগুলি

হ্যাঁ, আমি ঠিক বুঝতে পেরেছি। এখনই স্থির করা উচিত
লুক

4

পাইথন 2 , 44 41 39 বাইট

সম্পাদনা: -ডম হেস্টিংসকে -4 বাইট ধন্যবাদ thanks আমি নিয়মিত ভাব প্রকাশ করি না।

সম্পাদনা 2 : -2 বাইটগুলি @ টোটালিহুমানকে ধন্যবাদ জানিয়ে যে সংখ্যাটি একটি স্ট্রিং হিসাবে নেওয়া যেতে পারে

আশা করা উচিত ...

lambda x,y:re.sub("\d*$",y,x)
import re

স্ট্রিংয়ের শেষে অঙ্কগুলি সরিয়ে দেয় এবং সংখ্যাটি সংযোজন করে

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


আপনি যদি আপনার রেজেক্সটি প্রতিস্থাপন করেন \d*$, আপনি কিছু বাইট সংরক্ষণ করতে ""` y` ` with দিয়ে প্রতিস্থাপন করতে পারেন ?
ডম হেস্টিংস

@ ডোমহাস্টিংস: দুর্দান্ত! আমি নিয়মিত ভাব প্রকাশ করি না তাই ধন্যবাদ!
নীল এ।

1
আপনি yপ্যারামিটারটিকে স্ট্রিং হিসাবেও নিতে পারেন ।
সম্পূর্ণরূপে

@ টোটালিহুমান: সেই বিশদটি নিয়ে গ্লাসড। ধন্যবাদ!
নীল এ।

4

পিপ , 9 7 বাইট

a<|XD.b

@DLosc আমাকে 2 বাইট বাঁচিয়েছে!

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

ব্যাখ্যা

a<|         Strip all matches off the end of 'a' (the first cmd line arg)
   XD         of the pattern \d (ordinarily, a regex would be entered as '\d', but digits 
              have a pre-existing constant XD)
     .b     Then concatenate 'b' (the second cmd line arg)
            PIP implicitly prints the results of the last operation.


3

জাভাস্ক্রিপ্ট (ES6), 28 26 25 বাইট

x=>y=>x.replace(/\d*$/,y)
  • 1 বাইট সংরক্ষিত ধন্যবাদ নীলকে কেন আমাকে খুব সকালে গল্ফ করা উচিত নয় তা মনে করিয়ে দেওয়ার জন্য !

1
হয় ?প্রয়োজনীয়?
নিল


3

সি #, 45 বাইট

s=>n=>s.TrimEnd("0123456789".ToCharArray())+n

ব্যাখ্যা:

s=>n=>                                        // Take input
      s.TrimEnd(                              // Trim the end of the string with the specified chars
                "0123456789"                  // Create a string of the digits
                            .ToCharArray())   // Turn the string into a char array
                                           +n // Append the integer onto the end



2

Tcl 32 বাইট

proc s a\ b {regsub \\d*$ $a $b}

আমি প্রত্যাশিত ইন্টারফেস সম্পর্কে নিশ্চিত নই। এটি এমন একটি প্রক্রিয়া হিসাবে করা হয় যা দুটি ইনপুটকে কল আর্গুমেন্ট হিসাবে গ্রহণ করে। এটিকে স্ট্যান্ডলোন স্ক্রিপ্টে পরিণত করার জন্য যা স্টিডিনের ইনপুট পড়ে এবং ফলাফলটি স্টাডআউটে আউটপুট করে, তার জন্য অতিরিক্ত লাইন লাগবে:

puts [s [gets stdin] [gets stdin]]

বা এটি সমস্ত "ইনলাইন" করবেন:

puts [regsub \\d*$ [gets stdin] [gets stdin]]

ম্যাচিংয়ের অংশটি প্রতিস্থাপন করতে রেগসুব একটি আরই, মূল স্ট্রিং এবং একটি স্ট্রিং নেয়।


2

গণিত, 48 বাইট

ইতিমধ্যে একটি গাণিতিক সমাধান (84 বাইট) রয়েছে।

StringDrop[StringTrim["."<>#,_?DigitQ..]<>#2,1]&

2

গাজর , 16 21 বাইট

$^//^.*?(?=\d*$)/S0^#

এটি অনলাইন চেষ্টা করুন!(ইনপুট লাইনফিড পৃথক করা হয়)

ব্যাখ্যা

$^                Set the stack-string to be equal to the first line in the input
/                 Set the stack-array to be equal to the matches of this regex:
 /^.*?(?=\d*$)/   The beginning of the string followed by non-digit characters at the end that are not included in the match.
S0                Convert to a string with 0 as the delimiter
^#                Append the rest of the input to the stack-string

কোডটি a5b3একাধিক ডিজিটের মতো টেস্টকেসগুলির জন্য কাজ করে না বলে আমাকে বাইকাউন্টে 5 বাড়াতে হয়েছিল ।


2

হাস্কেল, 75 বাইট 95 বাইট 91 79 61 বাইট

b=(`notElem`['0'..'9'])
r=reverse
d#e=r(snd$break b$r d)++e

আমি রেজেক্স ছাড়াই এটি করার চেষ্টা করেছি যাতে এটি সম্ভবত নাটকীয়ভাবে উন্নত উত্তর হতে পারে। এছাড়াও বেশ কয়েকটি উপায় আছে যা আমি এই সম্পর্কে যেতে পারি তাই আমি নিশ্চিত না যে আমি কোনও ভিন্ন পদ্ধতির সাথে কয়েকটা বাইট শেভ করতে পারি কিনা I

আপডেট: আমি বাইটে উঠেছি কারণ আমি বুঝতে পেরেছিলাম যে আমি পরীক্ষার ক্ষেত্রে ব্যর্থ হচ্ছি যেখানে সংখ্যার সাথে স্ট্রিংয়ের প্রত্যয়টি নেই। এখন আমি নিশ্চিত যে রেইজেক্স আরও ভাল উত্তর সরবরাহ করবে।

আপডেট 2: কিছু দুর্দান্ত প্রতিক্রিয়ার পরে, আরও বাইট গল্ফ করা হয়েছিল!


2
b=(`elem`['0'..'9'])তুলনায় খাটো isDigit+ + importdropWhileপ্রতিস্থাপন করা যেতে পারে snd.span, অর্থাত্ =r(snd$span b$r d)++e। আপনি যদি পরীক্ষাটি উল্টো করেন তবে আপনি b=(`notElem`...)যেতে পারেন d#e|b$last$d=d++e|2>1=r(snd$break b$r d)++e
নিমি

@ নিমি পরামর্শের জন্য ধন্যবাদ! আমি স্প্যান এবং ব্রেক এবং সেগুলি কতটা কার্যকর হতে পারে তা ভুলে যেতে থাকি।
ম্যাপেল_শফট

1
|b$last$d=d++e|2>1অংশটি কি কেবল বাদ দেওয়া যায় না ? সমস্ত পরীক্ষার কেস ঠিক আছে বলে মনে হচ্ছে। এটি অনলাইন চেষ্টা করুন!
লাইকনি

@ লাইকনি দুর্দান্ত ধারণা! আপনি আমাকে 18 বাইট গল্ফ করেছেন!
ম্যাপেল_শ্যাফট

2
হবেনা! হাস্কেল সম্পর্কে নতুন কৌশল এবং জিনিসগুলি শিখার আগে আমি জানতাম না আমার গল্ফের প্রিয় কয়েকটি অংশ।
লাইকনি

1

গণিত, 84 বাইট

(k=#;T=ToCharacterCode;L=T@k;While[47<Last@L<58,w=k~StringDrop~-1;k=w;L=T@w];w<>#2)&

ইনপুট 2 স্ট্রিং

["ab3d5", "55"]

আউটপুট

ab3d55



1

নোথার , 11 বাইট

I"\d+$"-I+P

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

কোনও স্ট্রিং ইনপুট করার সময়, এটি উদ্ধৃতি চিহ্নগুলিতে আবদ্ধ করুন

ব্যাখ্যা:

I       - Push input to stack
"\d+$"  - Push string to stack
-       - Remove characters from first string which match the regex
I       - Push input to stack
+       - Append to the first string
P       - Print top item of stack

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