অনুগ্রহ করে আমাকে মুক্ত করে দাও!


34

কোড-গল্ফার হিসাবে, আমরা মুক্তি দেওয়ার জন্য অভ্যস্ত নই ( অবশ্যই )। আমাদের এটি করতে সাহায্য করার জন্য কয়েকটি সরঞ্জামের দরকার আছে।

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

কার্য

আপনার কাজটি হ'ল একটি প্রোগ্রাম / রুটিন / ... লিখুন যা কোনও সংস্করণ নম্বর বৃদ্ধি করবে।

আপনাকে সংস্করণ নম্বর বৃদ্ধি করতে হবে এবং "কম গুরুত্বপূর্ণ "গুলি পুনরায় সেট করতে হবে (অর্থাত্ প্যাচ সংস্করণ)।

আপনি দুটি আর্গুমেন্ট পাবেন: বর্তমান সংস্করণ (প্রাক্তন "1.0.3") স্ট্রিং হিসাবে এবং কোনটি আপডেট করতে হবে তা জানতে একটি সূচক (0 বা 1-ইনডেক্স)।

উদাহরণ, 0-সূচকযুক্ত:

next-version("1.0.3", 0) # 2.0.0
next-version("1.2.3.4.5", 2) # 1.2.4.0.0
next-version("10.0", 0) # 11.0
next-version("3", 0) # 4
next-version("1", 7) # ERROR
next-version("01", 0) # ERROR

সংস্করণটি একটি স্ট্রিং, প্রতিটি অংশ একটি সংখ্যা, একটি বিন্দুর সাহায্যে পৃথক। এখানে কোনও শীর্ষস্থানীয়, কোনও পিছনে বা কোনও টানা বিন্দু (এবং সংখ্যার / বিন্দুর বাইরে কিছুই নেই) থাকতে পারে। সংস্করণ স্ট্রিংয়ের আকারের কোনও সীমা নেই।

^[1-9]\d*(\.[1-9]\d*)*$

ত্রুটি কেস (শেষ দুটি উদাহরণ) অপরিবর্তিত আচরণ। ভুল ইনপুটগুলির ক্ষেত্রে যা ঘটে তা এই চ্যালেঞ্জের সাথে কোনও প্রাসঙ্গিক নয়।

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


1
আমরা কি ইনপুট হিসাবে প্রথমে সূচক এবং তারপরে সংস্করণ নম্বর হিসাবে গ্রহণ করতে বলতে পারি?
লিও

@ হ্যাঁ, আদেশটি কোনও সমস্যা নয়।
ভেন

আমি স্ট্রিংয়ে চূড়ান্ত সংখ্যা বাড়ানোর জন্য একটি পরীক্ষার কেস বা একটি উদাহরণ বা পরীক্ষা করার জন্য কিছু যুক্ত করতে পারি।
nmjcman101

@ nmjcman101 কীভাবে এটি একটি বিশেষ কেস?
ভেন

3
আমি আশা করি জয়ের শর্তটি "সর্বাধিক পঠনযোগ্য" হিসাবে একই চ্যালেঞ্জটি তৈরি করতে পারতাম যাতে কেউ সত্যিকারের কাজে ব্যবহারের জন্য এগুলি লিখতে পারে। =)
jpmc26

উত্তর:


12

জাপট, 16 11 বাইট

¡V«´V+ÂX}'.

এটি অনলাইন পরীক্ষা! ইনপুট নম্বরটি 1-সূচকযুক্ত।

আমার জাভাস্ক্রিপ্ট উত্তরের উপর ভিত্তি করে। এটি জাপটের অন্যতম সহায়ক বৈশিষ্ট্যটির সুবিধা গ্রহণ করে: প্রতিটি আইটেম ম্যাপ করার আগে একটি স্ট্রিংকে অন্যটিতে বিভক্ত করা, তারপরে ম্যাপিংয়ের পরে আবার সেই স্ট্রিংয়ে যোগ দেওয়া।

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

¡  V«  ´ V+Â X}'.
Um@V&&!--V+~~X}'.
                   Implicit: U = input string, V = input number
Um@           }'.  Split U at periods, then map each item X by this function:
   V&&               If V is 0, return V.
      !--V+~~X       Otherwise, decrement V and return X + !V (increments X iff V was 1).
               '.  Re-join the result with periods.
                   Implicit: output last expression

2
সত্যিই একটি মিষ্টি বৈশিষ্ট্য!
জোনাথন অ্যালান

1
ঠিক আছে, আমি ভেবেছিলাম ব্যাগে রেখেছি। মাফ করবেন, আমি আমার ভি উত্তরটি সম্পর্কে অবলম্বন করতে যাচ্ছি এবং এটিকে শেষ করে দেওয়া প্রতিটি ছোট্ট বাইট চেপে ধরব। : P: P
DJMcMayhem

11

Vim 20 25 বাইট

আমি দুর্ভাগ্যক্রমে বুঝতে পেরেছিলাম যে এটি শেষ নম্বরটি আপডেট করার ক্ষেত্রে পরিচালনা করে না, তাই আমাকে বাইট যুক্ত করতে হয়েছিল। এটি 1-সূচকযুক্ত।

DJA.0@"t.qq2wcw0@qq@qx

TryItOnline

Unprintables:

DJA.^[0@"t.^Aqq2wcw0^[@qq@qx

এটি পৃথক লাইন হিসাবে বিপরীত ক্রমে আর্গুমেন্ট গ্রহণ করে:

3
1.2.3.4.5

ব্যাখ্যা:

DJ                           # Delete the input argument, and join lines
  A.^[0                      # Add a period to the end
       @"t.                  # Move to the "Copy register"th period
           ^A                # Increment the number under the cursor
             qq       @qq@q  # Until an error
               2w            # Move the cursor forward to the next number
                 cw0^[       # Change the number to 0
                           x # Delete the last '.'

1
নিস! একটি ব্যাখ্যা সহায়ক হবে
ক্রিতিক্সী লিথোস

পছন্দ করেছেন দুর্ভাগ্যক্রমে আমাকে চূড়ান্ত সংস্করণ নম্বর বাড়ানোর জন্য কিছু বাইট যোগ করতে হয়েছিল, তবে এটি ঘটে।
nmjcman101

আমি মনে করি যদি আপনি 0-ইন্ডেক্স গিয়েছিলাম, আপনি শুধু করতে পারে DJ@"t.<C-a>qq2wcw0<esc>@qq@qযা ফিরে বিশ ডাউন
DJMcMayhem

@ ডিজেএমসিএমহেম আমার মনে হয় না আমি এটি করতে পারি কারণ আমি তখন 0 এবং 1 এর মধ্যে পার্থক্য করতে সক্ষম হব না
nmjcman101

1
ওহ হ্যাঁ, ভাল পয়েন্ট। কীভাবে DJ@"f.@"<esc><C-a>qq2wcw0<esc>@qq@q?
DJMcMayhem

11

জাভাস্ক্রিপ্ট (ES6), 44 42 40 37 বাইট

সংরক্ষিত 3 বাইট @ নীলকে ধন্যবাদ

x=>i=>x.replace(/\d+/g,n=>i&&+n+!--i)

ইনপুট নম্বরটি 1-সূচকযুক্ত।

পরীক্ষার স্নিপেট

f = x=>i=>x.replace(/\d+/g,n=>i&&+n+!--i)

console.log(f("1.0.3")(1))
console.log(f("1.2.3.4.5")(3))
console.log(f("10.0")(1))
console.log(f("1")(8))


2
ক্রসড আউট 44 এখনও 44 :)
কৃতিক্সিত লিথোস

1
@ ক্রিতিক্সিলিথোস আমার ব্রাউজারে কী ভুল? cubeupload.com/im/ofJySU.png
গুস্তাভো রদ্রিগেস

n=>i&&+n+!--i
নীল

@ নীল ধন্যবাদ! এই অভিব্যক্তিটি আর কীভাবে গল্ফ করা যায় তা আমি ঠিক বুঝতে পারি না ...
ইটিএইচ প্রডাকশনগুলি

10

ভি , 13 , 12 বাইট

Àñf.ñò2wcw0

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

এটি 0-সূচকযুক্ত।

সেখানে একটি ctrl-a(ASCII 0x01) রয়েছে, সুতরাং এখানে একটি পাঠযোগ্য সংস্করণ রয়েছে:

Àñf.ñ<C-a>ò2wcw0

ব্যাখ্যা:

À                   " 'arg1' times
 ñ  ñ               " Repeat the following:
  f.                "   Move to the next '.' character
     <C-a>          " Increment the next number
          ò         " Recursively:
           2w       "   Move two words forward
              cw    "   Change this word
                0   "   to a '0'

7

পার্ল, 40 37 34 + 1 = 35 বাইট

-2 বাইটস @ দাদাকে ধন্যবাদ -৩ বাইটস একটি ধারণার জন্য ধন্যবাদ যা আমি @ ইটিএইচ প্রডাকশনগুলির জ্যাপ কোড পড়ার মাধ্যমে পেয়েছি।

-pপতাকা নিয়ে দৌড়াও।

$a=<>;s/\d+/$a--<0?0:$&+!($a+1)/ge

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

কোড ভাঙ্গা

-p          #Wraps the program in a while(<>){ ... print$_} statement.
            #Input is read into the $_ variable
$a=<>;s/\d+/$a--<0?0:$&+!($a+1)/ge
$a=<>;                              #Reads the version update into $a
      s/   /                   /ge  #Substitution regex:
                                g   #Repeats the substitution after first match
                                 e  #Interprets replacement as Perl code
       \d+                          #Matches 1 or more digits, and stores match in $&
                  ? :               #Ternary operation
            $a--<0                  #Checks if $a is negative and then decrements $a
                  ?0                #If negative, we've passed our match; print 0 instead
                    :$&+!($a+1)     #Otherwise, we're either printing $& + 0 (if $a was positive) or $& + 1 (if $a was 0).
#Since substitution implicitly modifies $_, and -p prints $_, it prints our answer

উভয় পক্ষের সমস্ত বন্ধনী সরান! (এবং $&তার পরিবর্তে $1)
দাদা

আমি জানতাম আমি কিছু মিস করছি! ধন্যবাদ!
গ্যাব্রিয়েল বেনামি

1-ইনডেক্সড নম্বরগুলি ব্যবহার করে 4 বাইট বাঁচাতে পারে: অনলাইনে চেষ্টা করে দেখুন!
এক্সকালি

5

জেলি , 19 17 বাইট

ṣ”.V€‘⁹¦µJ’<⁹×j”.

1-ইন্ডেক্স।

TryItOnline!

কিভাবে?

ṣ”.V€‘⁹¦µJ’<⁹×j”. - Main link: currentVersion, theIndex
ṣ”.               - ṣplit left (currentVersion) at occurences of '.'
   V€             - eVal €ach (creates a list of integers)
      ⁹           - right argument (theIndex)
       ¦          - apply to given index(es)
     ‘            -    increment
        µ         - monadic chain separation (call the above result z)
         J        - range(length(z))  i.e. ([1,2,3,...,length])
          ’       - decrement         i.e. ([0,1,2,...,length-1])
            ⁹     - right argument (theIndex)
           <      - less than?        i.e. ([1,1,...,(1 at theIndex),0...,0,0,0]
             ×    - multiply by z (vectortises) - zeros out all of z after theIndex
              j”. - join with '.'

3
10 কে অভিনন্দন !!
লুইস মেন্ডো

জেলি ২.০ এর জন্য অপেক্ষা করতে পারে না যাতে আপনি এটি থেকে মুক্তি পেতে পারেন V€
ভেন

@ লুইস মেন্ডো - ধন্যবাদ! আমি খুব অযৌক্তিক (ডেনিস আমার করার আগে আমার 1 কে মাইলফলক লক্ষ্য করেছিল)।
জোনাথন অ্যালান

5

ম্যাটল্যাব, 85 বাইট

function f(s,j);a=split(s,'.');a(j)=string(double(a(j))+1);a(j+1:end)='0';join(a,'.')

একটি ভিত্তিক, এবং গল্ফ প্রথম প্রচেষ্টা!


সাবাশ! প্রথমবার আমি নতুন stringধরণের ক্রিয়াটি দেখছি :-)
লুইস মেন্ডো

5

সি # 116 104 বাইট

using System.Linq;(v,i)=>string.Join(".",v.Split('.').Select(int.Parse).Select((x,n)=>n==i?x+1:n>i?0:x));

ব্যাখ্যা

using System.Linq;(v,i)=>   //Anonymous function and mandatory using
    string.Join(".",                    //Recreate the version string with the new values
        v.Split('.')                    //Get individual pieces
            .Select(int.Parse)          //Convert to integers
                .Select(            
                    (x,n)=>             //Lambda with x being the part of the version and n being the index in the collection
                        n==i                    
                            ?x+1        //If n is the index to update increment x
                            :n>i        //Else if n is greater than index to update
                                ?0      //Set to zero
                                :x));   //Otherwise return x

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


আপনার stringএবং intবেনামে ফাংশন স্বাক্ষরের দরকার নেই
TheLethalCoder

@ লেথলকোডার আহ্ হ্যাঁ অবশ্যই, ধন্যবাদ
জাস্টিনএম - মনিকা

4

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

আমি মনে করি এটি সত্যিই খাটো হতে পারে .. একটি অগণিত বিকল্প থাকতে পারে এমন উপায়ের প্রয়োজন।

lambda s,n:'.'.join(str([-~int(x)*(i==n),x][i<n])for i,x in enumerate(s.split('.')))

যদি আমরা সংস্করণটিকে স্ট্রিংগুলির তালিকা হিসাবে নিতে সক্ষম হই তবে একটি 75 বাইট সমাধান রয়েছে:

g=lambda s,n:(str(-~int(s[0]))+'.0'*~-len(s))*(n<1)or s[0]+'.'+g(s[1:],n-1)

তদ্ব্যতীত, যদি ইনপুট এবং আউটপুট উভয়ই সংখ্যার তালিকা হত তবে একটি 64৪-বাইট সমাধান রয়েছে:

g=lambda s,n:([-~s[0]]+[0]*~-len(s))*(n<1)or [s[0]]+g(s[1:],n-1)

4

ভি 14 20 বাইট

আবার, আমাকে চূড়ান্ত অঙ্ক বাড়ানোর কোণার ক্ষেত্রে কোড যুক্ত করতে হয়েছিল। (1-ইন্ডেক্স)

DJA.0@"t.ò2wcw0òx

TryItOnline

Unprintables:

DJA.^[0@"t.^Aò2wcw0^[òx

এটি পৃথক লাইন হিসাবে বিপরীত ক্রমে আর্গুমেন্ট গ্রহণ করে:

3
1.2.3.4.5

1
চমৎকার উত্তর! অন্য কেউ ভি ব্যবহার করে দেখে আমি সর্বদা খুশি! ঠিক তেমনই আপনি জানেন, আপনি যদি 'আরগস'-এ প্রথম ইনপুট রাখেন তবে এটি সেই সংখ্যায়' ক 'রেজিস্ট্রেশন করবে, যাতে আপনি @a(বা আরও ছোট À) করতে পারেন যা আপনাকে একগুচ্ছ বাইট সংরক্ষণ করতে পারে।
DJMcMayhem

4

ব্যাচ, 119 বাইট

@set s=%1
@set i=%2
@set t=
@for %%i in (%s:.=,%)do @set/an=!!i*(%%i+!(i-=!!i))&call set t=%%t%%.%%n%%
@echo %t:~1%

1-ইন্ডেক্স।


4

পার্ল 6, 67 বাইট, 0-সূচকযুক্ত

->$v,$i {$v.split('.').map({++$>$i??($++??0!!$_+1)!!$_}).join: '.'}

ব্যাখ্যা:

->$v,$i {$v.split('.').map({++$>$i??($++??0!!$_+1)!!$_}).join: '.'}
->$v,$i {                                                         } # function taking version/index to increment
         $v.split('.')                                              # split by dot
                      .map({                          })            # for each version number
                            ++$>$i??                                # if an anonymous variable ($), incremented,
                                                                    #  is greater than $i (index to increment)
                                    ($++??       )                  # if it's not the first time we've been over $i
                                                                    # (using another anonymous value, which gets default-init'd to 0)
                                          0                         # then 0 (reset lower version numbers)
                                           !!$_+1                   # otherwise, increment the number at $i
                                                  !!$_              # otherwise return the number part
                                                        .join: '.'  # join with a dot

3
শুধু fyi, স্ব উত্তর সম্পূর্ণরূপে যোগ্য। বস্তুত, তারা করছি উৎসাহিত
DJMcMayhem

@ ডিজেএমসিএমহেম আমি এ সম্পর্কে জানতাম, কিন্তু আমি ভেবেছিলাম তারা যোগ্য নয়
ভেন

3

পাওয়ারশেল 3+, 75 74 বাইট

($args[0]-split'\.'|%{$m=!$b;$b=$b-or$args[1]-eq$i++;(+$b+$_)*$m})-join'.'

Ungolfed

(
    $args[0] -split '\.' | 
        ForEach-Object -Process {
            $m= -not $b
            $b = $b -or ($args[1] -eq $i++)
            (([int]$b) + $_) * $m
        }
) -join '.'

ব্যাখ্যা

পরামিতি ব্যবহার করে গৃহীত হয় $args অ্যারে ।

  1. সংস্করণটির স্ট্রিং চালু করুন . , তারপরে প্রতিটি উপাদানটির জন্য:
    1. $mসেট করা আছে -not $b। প্রথম দৌলে, অপরিবর্তিত $bথাকবে যা মিলিত হবে $false, তাই $mশুরু হবে $true$mসর্বদা 0বা একটি গুণক হওয়ার উদ্দেশ্যে 1এবং এটি পরে ব্যবহার করা হবে। $mঅবশ্যই এখানে মূল্যায়ন করা উচিত কারণ আমরা এটি শেষ পুনরাবৃত্তির উপর ভিত্তি করে রাখতে চাই$b মানের ।
    2. $b-orএকটি পুনরাবৃত্তির $iসাথে $args[1](সূচক প্যারামিটার) তুলনা করার ফলাফলটি নিজেকে সেট করা হয় । একবার যখন আমরা বাড়ানো হবে এমন উপাদানটিতে আছি তখন এর অর্থ এখানে $bসেট $trueকরা হবে। অতিরিক্ত হিসাবে, এটি $trueপ্রতিটি পরবর্তী পুনরাবৃত্তিতে হবে কারণ শর্তসাপেক্ষ-or বর্তমান মান সহ।
    3. $bUnary +( $false=> 0, $true=> 1) ব্যবহার করে একটি সংখ্যায় রূপান্তরিত হয় , তারপরে বর্তমান সংস্করণ উপাদানটিতে যুক্ত হয় $_যা a [string], তবে পাওয়ারশেল সর্বদা বাম দিকে ডানদিকে যুক্তি যুক্ত করার চেষ্টা করে, সুতরাং পাটিগণিত সম্পাদন করা হবে, স্ট্রিং সংক্ষিপ্তকরণ না। তারপরে এই মানটি দ্বারা গুণিত হবে $m, যা এখনও রয়েছে [bool]তবে সুস্পষ্টভাবে একত্রিত হবে।
  2. এর সাথে ফলাফল অ্যারে পুনরায় যোগদান করুন .

সুতরাং, প্রথম পুনরাবৃত্তি যেখানে $bপরিণত হয় $true, $bতা সমান তৈরি করে $falseযখন $mমূল্যায়ন করা হত , যা গুণককে রাখবে$m$true1

সময় যে run $bহয়ে $trueএবং সংস্করণ উপাদান (যেমন যোগ করা হয় 1), যার ফলে এটি বৃদ্ধিশীল এবং যেহেতু গুণক এখনও 1যে শেষ ফলাফল হতে হবে।

পরবর্তী পুনরাবৃত্তির উপর, $bইতিমধ্যে সমান $trueতৈরি হবে, যা গুণক করবে । যেহেতু এখনই চিরকাল থাকবে , গুণকটি সর্বদা থাকবে , সুতরাং প্রত্যাবর্তিত প্রতিটি উপাদানও হবে ।$m$false0$b$true00


2

আর, 100 95 92 86 বাইট

আর এর জন্য অস্বাভাবিকভাবে, এটি 0-সূচি ব্যবহার করে। দুটি আর্গুমেন্ট (একটি স্ট্রিং এবং একটি পূর্ণসংখ্যা) সহ বেনামে ফাংশন। সম্ভবত একটি বাচ্চা নেভিগেশন গল্ফ করা যেতে পারে।

function(v,i)cat((x=scan(t=el(strsplit(v,"\\."))))+c(rep(0,i),1,-x[-(0:i+1)]),sep=".")

2

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

'.¡vy²N‹i0*}²NQi>})'.ý

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

আমি কীভাবে করব তা জানি না 05-এএফ 1 ই-তে, সুতরাং এটি হওয়া উচিত তার চেয়ে দীর্ঘ।


1
আমি যদি ভুল বোঝাবুঝি না করি তবে আমার মনে হয় না এটি কাজ করে। প্রশ্ন বলছে যে আপনাকে গৌণ সংস্করণগুলি 0-আউট করতে হবে, তাই 1.0.0.0.3, 3উত্পাদন করা উচিত 1.0.0.1.0নয় 1.0.0.1.3
লাম্বদাবেটা

@ ল্যাম্বদাবেটা ভুল লেখা, স্থির।
ম্যাজিক অক্টোপাস উরান

2

কফি-স্ক্রিপ্ট: 77 67 বাইট

f=(p,i)->((z<i&&v||z==i&&~~v+1||0)for v,z in p.split '.').join '.'

Woot! বিটা রিলিজের জন্য কেক এবং কফির সময়।

@ এভেন এবং কুইসকে ধন্যবাদ আমি 10 বাইট কামিয়েছি!


নিস! আপনার এখানে পার্সেন্ট দরকার আছে তা নিশ্চিত নন যদিও?
ভেন

বিটিডব্লিউ আপনি প্যারেনলেস কল ব্যবহার করে দুটি বাইট সংরক্ষণ করতে পারেন (যেমন .join '.'বা .split '.')
ভেন

+পরিবর্তে ব্যবহার করুন parseInt( ~~যদি আপনার এটির পূর্ণসংখ্যায় কাস্ট করার প্রয়োজন হয় তবে ব্যবহার করুন )
সাইয়েস

2

পাইথন 3, 89 86 বাইট

lambda v,c:'.'.join((str((int(x)+1)*(i==c)),x)[i<c]for i,x in enumerate(v.split('.')))

জিনিসগুলি সম্পন্ন করার খুব সহজ উপায়

সম্পাদনা করুন: @ কেডে উল্লেখ করে শর্তসাপেক্ষে আবার লিখুন


2

পিএইচপি, 81 বাইট

ভয়ানক দীর্ঘ। কমপক্ষে: অ্যালিফ্যান্ট এখনও পাইথনকে মারছে।

foreach(explode(".",$argv[1])as$i=>$v)echo"."[!$i],($i<=$n=$argv[2])*$v+($i==$n);

বিন্দু দ্বারা বিভক্ত প্রথম যুক্তির মাধ্যমে লুপগুলি: "."[!$i]প্রথমটির জন্য খালি এবং অন্য প্রতিটি উপাদানগুলির জন্য একটি বিন্দু; ($i<=$n)এবং ($i==$n)সুস্পষ্টভাবে পূর্ণসংখ্যায় 0বা 1পূর্ণসংখ্যার গাণিতিকদের জন্য কাস্ট করা হয় ।


2

জাভাস্ক্রিপ্ট (ES6), 57 55 বাইট

(s,x)=>s.split`.`.map((j,i)=>i==x?+j+1:i>x?0:j).join`.`

উদাহরণ:

n=(s,x)=>s.split`.`.map((j,i)=>i==x?+j+1:i>x?0:j).join`.`

console.log(n('1.0.3', 0))
console.log(n('1.2.3.4.5', 2))
console.log(n('10.0', 0))
console.log(n('3', 0))
console.log(n('1', 7))

সেরা জেএস বাস্তবায়ন নয় তবে এটি মোটামুটি সহজ এবং আপনি যে যুক্তিটি আশা করতে চান তা অনুসরণ করে।


ঠিক আছে, এটি মারাত্মকভাবে পরিষ্কার ছিল না, ধন্যবাদ।
ফ্লোরারি


1

পাওয়ারশেল, 80 100 95 92 বাইট

এর জন্য একটি কনস্ট ব্যবহার করে 5 বাইট সংরক্ষণ করা হয়েছে -1..if

!$bপরিবর্তে ব্যবহার করে 3 বাইট সংরক্ষণ করা হয়েছে$b-eq0

filter x($a,$b){[int[]]$y=$a.Split('.');-1..((-$b,-1)[!$b])|%{$y[$_]=0};$y[$b]++;$y-join'.'}

ব্যাখ্যা:

filter x($a,$b){
    [int[]]$y=$a.Split('.') #Split input into integer array
    $y[$b]++ #Increment 'major' version no. ($b) by one
    -1..((-$b,-1)[!$b])|%{$y[$_]=0} #Set all trailing numbers to 0, now also checks for $b=0 cases.
    $y-join'.' #Join back into '.' seperated Array
}

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

x "1.0.3" 0
x "1.2.3.4.5" 2
x "10.0" 0
x "1" 7
2.0.0
1.2.4.0.0
11.0
Index was outside the bounds of the array.

নিস! আমি এখানে আরও পাওয়ার শেল দেখতে পছন্দ করি।
ব্রিটিশবাদী

@ ব্রায়ান্টিস্ট সত্যিই সি # এর একটি হালকা ওজনবিহীন সংস্করণ যা সমস্ত কিছুর সাথে ইন্টারফেস করতে পারে god
কলস

ওহ একেবারে; পাওয়ারশেলটি আমার জাম, তবে অনেকেই এটিকে গল্ফ করার জন্য ব্যবহার করার কথা ভাবেন না। এতে কিছু বৈশিষ্ট্য রয়েছে যা গল্ফিংয়ের জন্য দুর্দান্ত, এবং অন্যেরা এটি গল্ফিংয়ের জন্য স্তন্যপান করে তোলে, তবে সামগ্রিকভাবে এটি একটি কঠিন পছন্দ! আমি আমার পরবর্তী PSUG এ পাওয়ারশেলে গল্ফিং সম্পর্কে একটি উপস্থাপনা করার ধারণাটি নিয়ে কাজ করছি।
ব্রিটিশবাদী

@ ব্রায়েন্টিস্ট ডিফল্ট এলিয়াসগুলি সুন্দর, তবে আমি গল্ফিংয়ের জন্য কয়েকটি সাধারণ কমান্ডের একটি পূর্বনির্ধারিত সেটটি সিঙ্গেল চর অ্যালিয়াস চ হিসাবে ব্যবহার করতে সক্ষম হতে চাই, যদি বলি যে এটি কিছু বাস্তব গল্ফিং ভাষার সাথে প্রতিযোগিতা করতে পারে যদি আমরা ব্যবহার করতে পারি rপরিবর্তেrandom
কলস

মজার বিষয় random, এটি কোনও উপাধি নয়! এটি পাওয়ারশেলের কমান্ড মূল্যায়নের ফলাফল। যেহেতু এটি এলিয়াস, ফাংশন, সেমিডলেটস, নেটিভ অ্যাপ্লিকেশন ইত্যাদির মধ্যে একটি কমান্ড সন্ধান করছে, এটি সর্বশেষ কাজটি করার চেষ্টা Get-করে যা তা যা আছে তা থেকে প্রস্তুত করা। সুতরাং আপনি আসলে কল করছেন Get-Random, তবে প্রযুক্তিগতভাবে কোনও নাম নেই। আপনি চালিয়ে এই পরিশ্রমী দেখতে পারেন service, অথবা childitem, অথবা সর্বাধিক বিদ্রূপ জন্য, alias
ব্রিটিশবাদী

1

উদ্দেশ্য-সি 531 বাইট

#import<Foundation/Foundation.h>
int main(int argc,const char *argv[]){@autoreleasepool{NSString *s=[NSString stringWithUTF8String:argv[1]];NSInteger n=strtol(argv[2],NULL,0);NSArray *c=[s componentsSeparatedByString:@"."];if(c.count<=n)NSLog(@"ERROR");else{int i=0;NSMutableString *v=[[NSMutableString alloc]init];for(;i<n;++i)[v appendFormat:@"%@.",[c objectAtIndex:i]];[v appendFormat:@"%li", strtol(((NSString *)[c objectAtIndex:i++]).UTF8String,NULL,0)+1l];for(;i<c.count;++i)[v appendString:@".0"];NSLog(@"%@",v);}}return 0;}

কম্পাইল:

clang -fobjc-arc -Os main.m -o main

ব্যবহার:

./main 1.2.3 1

কোডগল্ফে স্বাগতম শিরোনামে, আপনার উত্স কোডের আকারটি বলা উচিত, বাইট কোড নয়। এবং উত্সটি অবশ্যই যথাসম্ভব সংক্ষিপ্ত হওয়া উচিত (কোনও অপ্রয়োজনীয় সাদা স্থান, একক চরিত্রের পরিবর্তনশীল নাম ইত্যাদি) নয়। শুভকামনা
তিতাস

সম্ভবত এর 0পরিবর্তে ব্যবহার করতে পারেন NULLএবং মূলটির return 0;শেষে অপসারণ করতে পারেন । NSString *sসম্ভবত স্থানটি সরিয়ে নেওয়া যেতে পারে। **argv1 টির বাইট খাটো *argv[]@autoreleasepool{}সম্ভবত অপ্রয়োজনীয়।
ভেন

1

জাভাস্ক্রিপ্ট ES6: 60 বাইট

n.split(".").map((n,r)=>{return r>i?n=0:n}).join("."),n[i]++}

2
পিপিসিজিতে আপনাকে স্বাগতম! এটি বৈধ বলে মনে হয় না, কারণ এটি কোনও উপায়ে ইনপুট নেয় না, এবং একটি অতিরিক্তও রয়েছে} শেষে আরও রয়েছে। Golfing অন: তীর ফাংশন বৈশিষ্ট্য এক, অন্তর্নিহিত প্রত্যাবর্তন, তাই আপনি প্রতিস্থাপন করতে পারেন (n,r)=>{return r>i?n=0:n}সঙ্গে (n,r)=>r>i?n=0:nকিছু বাইট সংরক্ষণ করুন।
ETH প্রোডাকশনগুলি

1

আর, 75 বাইট

f=function(a,b){n=scan(t=a,se=".");m=-n;m[b]=1;m[1:b-1]=0;cat(n+m,sep=".")}

সূচীকরণ 1-ভিত্তিক। আপনি এটি এখানে অনলাইনে খেলতে পারেন ।


1

এপিএল (ডায়ালগ) , 31 বাইট

প্রয়োজন ⎕IO←0( আমি ndex O rigin 0), যা বহু সিস্টেমে ডিফল্ট। পুরো প্রোগ্রাম বডি; পাঠ্য ইনপুট (সংস্করণ) এবং তারপরে অঙ্কের ইনপুট (সূচী) এর জন্য অনুরোধ জানানো হয়।

' 'R'.'⍕⎕(⊢∘≢↑↑,1+⊃)⊃⌽'.'VFI

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

 পাঠ্য ইনপুট জন্য প্রম্পট

'.'⎕VFIভি ইরিফি এবং এফ ixফিল্ড বিভাজক হিসাবে ক্ষেত্রগুলি ব্যবহার করে I nput (ক্ষেত্রগুলির বৈধতা, ক্ষেত্রগুলির মান)

 বিপরীত (মান সামনে রাখার জন্য)

 প্রথমটি বেছে নিন (মানগুলি)

⎕(...)  বাম আর্গুমেন্ট হিসাবে মূল্যায়ন ইনপুট ব্যবহার করে, এটিতে নিম্নলিখিত সূক্ষ্ম ফাংশন প্রয়োগ করুন:

প্রতিটি ফাংশন অ্যাপ্লিকেশনের অ-সামঞ্জস্য সমতুল্য ব্যাখ্যা করার জন্য আমরা এখন বাম আর্গুমেন্ট (সূচী) নির্দেশ করতে এবং ডান আর্গুমেন্টটি চিহ্নিত করতে (মূলত ইনপুটযুক্ত বর্তমান সংস্করণ সংখ্যার স্বতন্ত্র সংখ্যার তালিকা) ব্যবহার করব।

 সমতূল্য  (⍺⊃⍵) ব্যবহার থেকে একটি উপাদান বাছাই

1+ একটি যোগ করুন 

↑,থেকে নেওয়া সংখ্যার (⍺↑⍵), প্রিপেন্ডের  সমতুল্য 

⊢∘≢↑ সমতূল্য  (⍺⊢∘≢⍵)↑ সমতুল্য করার  (≢⍵)↑ যে থেকে অনেক নম্বর নিতে হিসাবে সেখানে উপাদান প্রয়োজনে শূন্য সঙ্গে প্যাডিং প্রয়োগ

 ফর্ম্যাট (প্রতিটি সংখ্যার মধ্যে একটি স্পেস দিয়ে স্ট্রিংফাই)

' '⎕R'.' পিরিডিআর আর পিপিরিডস সহ এপিলেস স্পেস


1

জাভা 8, 130 বাইট

s->n->{String r="",a[]=s.split("\\.");for(int l=a.length,i=-1;++i<l;)r+=(i>n?0:new Long(a[i])+(i<n?0:1))+(i<l-1?".":"");return r;}

ব্যাখ্যা:

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

s->n->{                 // Method with String and Integer parameters and String return-type
  String r="",          //  Result-String
  a[]=s.split("\\.");   //  String-array split by the dots
  for(int l=a.length,   //  Length of the array
      i=-1;++i<l;)      //  Loop from 0 to `l` (exclusive)
    r+=                 //   Append the result-String with:
       (i>n?            //    If index `i` is beyond input `n`:
        0               //     Append a zero
       :                //    Else:
        new Long(a[i])  //     Convert the current String to a number
        +(i<n?          //     If index `i` is before input `n`
           0            //      Leave the number the same by adding 0
          :             //     Else:
           1))          //      Add 1 to raise the version at index `n`
       +(i<l-1?         //    If we've haven't reached the last iteration yet:
          "."           //     Append a dot
         :              //    Else:
          ""            //     Append nothing
   );                   //  End of loop
   return r;            //  Return the result-String
}                       // End of method

1

লাইভস্ক্রিপ্ট, 53 52 বাইট

->(for e,i in it/\.
 [+e+1;0;e][(i>&1)+2*(i<&1)])*\.

-1 বাইট ধন্যবাদ কেবলমাত্র ASCII- এর জন্য!

পুরানো ব্যাখ্যা:

(a,b)->x=a/\.;x[b]++;(x[to b] ++ [0]*(x.length-1-b))*\.
(a,b)->                                                 # a function taking a and b (version and index)
       x=a/\.;                                          # split a on dot, store in x
              x[b]++;                                   # increment at the given index
                     (x[to b]                           # slice be from 0 to the index
                              ++                        # concat (both spaces are necessary so it's not interpreted as an increment operator
                                 [0]*(x.length-1-b))    # with enough zeros to fill the array back to its original size (x's size)
                                                    *\. # join on dot

অন্য একটি স্ব-উত্তর ... যে কেউ যেভাবেই লাইভস্ক্রিপ্টে গল্ফ করে। : P: P

আমি অন্য সংস্করণে কাজ করছিলাম:

(a,b)->(a/\.=>..[b]++;..[b to *]=0)*\.

তবে *খুব বেশি বোঝা একটি স্প্লিকিং সূচক হিসাবে স্বীকৃত হয়, সুতরাং =0অ্যাক্সেস চেষ্টা করবে 0[0]। সুতরাং আপনার মতো কিছু লিখতে ..[b to ..length- b]=[0]*(..length-1-b)হবে এবং এটি শেষ পর্যন্ত longer


1
দুঃখজনকভাবে f=(a,b)->(for e,i in a/\.<newline> if i<b then e else if i>b then 0 else+e+1)*\.দীর্ঘায়িত :(
ASCII- কেবল

@ এএসসিআইআই-কেবলমাত্র আমি মনে করি যে এই লাইনগুলি বরাবর if i<b then e else if i>b then 0 else+e+1অর্থাত্‍ [+e+1;0;e;e][i>b+(2*i<b)]বা কিছু সংক্ষেপণ করা সম্ভব , এমনকি এমনকি([+e;-1][i>b+(2*i<b)]||e-1)+1
ভেন

(a,b)->(for e,i in a/\.<newline> [+e+1;0;e][(i>b)+2*(i<b)])*\., 54
এএসসিআইআই-

তারপরে স্বাক্ষরটি সরিয়ে নেওয়া যাক: ->(for e,i in it/\.<newline> [+e+1;0;e][(i>&1)+2*(i<&1)])*\.52 এর জন্য
ভেন

বিটিডব্লু আপনি ;স্থান দিয়ে প্রতিস্থাপন করতে পারেন । এছাড়াও ... দেখে মনে হচ্ছে এটি মূলত যতটা নিচে নেমে যাবে এই পদ্ধতির সাথে
ASCII-

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