Increment a GUID












26












$begingroup$


Inspired by a recent Daily WTF article...



Write a program or function that takes a GUID (string in the format XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX, where each X represents a hexadecimal digit), and outputs the GUID incremented by one.



Examples



>>> increment_guid('7f128bd4-b0ba-4597-8f35-3a2f2756dfbb')
'7f128bd4-b0ba-4597-8f35-3a2f2756dfbc'
>>> increment_guid('06b86883-f3e7-4f9d-87c5-a047e89a19fa')
'06b86883-f3e7-4f9d-87c5-a047e89a19fb'
>>> increment_guid('89f25f2f-2f7b-4aa6-b9d7-46a98e3cb2cf')
'89f25f2f-2f7b-4aa6-b9d7-46a98e3cb2d0'
>>> increment_guid('8e0f9835-4086-406b-b7a4-532da46963ff')
'8e0f9835-4086-406b-b7a4-532da4696400'
>>> increment_guid('7f128bd4-b0ba-4597-ffff-ffffffffffff')
'7f128bd4-b0ba-4598-0000-000000000000'


Notes




  • Unlike in the linked article, incrementing a GUID that ends in F must “carry” to the previous hex digit. See examples above.

  • You may assume that the input will not be ffffffff-ffff-ffff-ffff-ffffffffffff.

  • For hex digits above 9, you may use either upper (A-F) or lower (a-f) case.

  • Yes, GUIDs may start with a 0.

  • Your output must consist of exactly 32 hex digits and 4 hyphens in the expected format, including any necessary leading 0s.










share|improve this question











$endgroup$








  • 1




    $begingroup$
    Are we supposed to leave the 6 fixed bits in the UUIDv4 intact?
    $endgroup$
    – Filip Haglund
    yesterday






  • 2




    $begingroup$
    @FilipHaglund: No, just treat the GUID as a 128-bit number, where none of the bits have any special meaning. Similarly, GUIDs are assumed to sort in straightforward lexicographical order rather than in the binary order of a Windows GUID struct.
    $endgroup$
    – dan04
    yesterday






  • 3




    $begingroup$
    Suggested test case: 89f25f2f-2f7b-4aa6-b9d7-46a98e3cb29f to ensure that answers can make the transition 9 -> a.
    $endgroup$
    – Kamil Drakari
    yesterday






  • 1




    $begingroup$
    @dana: You may use any data type for which your language's equivalent of C#'s foreach (char ch in theInput) is valid.
    $endgroup$
    – dan04
    yesterday
















26












$begingroup$


Inspired by a recent Daily WTF article...



Write a program or function that takes a GUID (string in the format XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX, where each X represents a hexadecimal digit), and outputs the GUID incremented by one.



Examples



>>> increment_guid('7f128bd4-b0ba-4597-8f35-3a2f2756dfbb')
'7f128bd4-b0ba-4597-8f35-3a2f2756dfbc'
>>> increment_guid('06b86883-f3e7-4f9d-87c5-a047e89a19fa')
'06b86883-f3e7-4f9d-87c5-a047e89a19fb'
>>> increment_guid('89f25f2f-2f7b-4aa6-b9d7-46a98e3cb2cf')
'89f25f2f-2f7b-4aa6-b9d7-46a98e3cb2d0'
>>> increment_guid('8e0f9835-4086-406b-b7a4-532da46963ff')
'8e0f9835-4086-406b-b7a4-532da4696400'
>>> increment_guid('7f128bd4-b0ba-4597-ffff-ffffffffffff')
'7f128bd4-b0ba-4598-0000-000000000000'


Notes




  • Unlike in the linked article, incrementing a GUID that ends in F must “carry” to the previous hex digit. See examples above.

  • You may assume that the input will not be ffffffff-ffff-ffff-ffff-ffffffffffff.

  • For hex digits above 9, you may use either upper (A-F) or lower (a-f) case.

  • Yes, GUIDs may start with a 0.

  • Your output must consist of exactly 32 hex digits and 4 hyphens in the expected format, including any necessary leading 0s.










share|improve this question











$endgroup$








  • 1




    $begingroup$
    Are we supposed to leave the 6 fixed bits in the UUIDv4 intact?
    $endgroup$
    – Filip Haglund
    yesterday






  • 2




    $begingroup$
    @FilipHaglund: No, just treat the GUID as a 128-bit number, where none of the bits have any special meaning. Similarly, GUIDs are assumed to sort in straightforward lexicographical order rather than in the binary order of a Windows GUID struct.
    $endgroup$
    – dan04
    yesterday






  • 3




    $begingroup$
    Suggested test case: 89f25f2f-2f7b-4aa6-b9d7-46a98e3cb29f to ensure that answers can make the transition 9 -> a.
    $endgroup$
    – Kamil Drakari
    yesterday






  • 1




    $begingroup$
    @dana: You may use any data type for which your language's equivalent of C#'s foreach (char ch in theInput) is valid.
    $endgroup$
    – dan04
    yesterday














26












26








26


2



$begingroup$


Inspired by a recent Daily WTF article...



Write a program or function that takes a GUID (string in the format XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX, where each X represents a hexadecimal digit), and outputs the GUID incremented by one.



Examples



>>> increment_guid('7f128bd4-b0ba-4597-8f35-3a2f2756dfbb')
'7f128bd4-b0ba-4597-8f35-3a2f2756dfbc'
>>> increment_guid('06b86883-f3e7-4f9d-87c5-a047e89a19fa')
'06b86883-f3e7-4f9d-87c5-a047e89a19fb'
>>> increment_guid('89f25f2f-2f7b-4aa6-b9d7-46a98e3cb2cf')
'89f25f2f-2f7b-4aa6-b9d7-46a98e3cb2d0'
>>> increment_guid('8e0f9835-4086-406b-b7a4-532da46963ff')
'8e0f9835-4086-406b-b7a4-532da4696400'
>>> increment_guid('7f128bd4-b0ba-4597-ffff-ffffffffffff')
'7f128bd4-b0ba-4598-0000-000000000000'


Notes




  • Unlike in the linked article, incrementing a GUID that ends in F must “carry” to the previous hex digit. See examples above.

  • You may assume that the input will not be ffffffff-ffff-ffff-ffff-ffffffffffff.

  • For hex digits above 9, you may use either upper (A-F) or lower (a-f) case.

  • Yes, GUIDs may start with a 0.

  • Your output must consist of exactly 32 hex digits and 4 hyphens in the expected format, including any necessary leading 0s.










share|improve this question











$endgroup$




Inspired by a recent Daily WTF article...



Write a program or function that takes a GUID (string in the format XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX, where each X represents a hexadecimal digit), and outputs the GUID incremented by one.



Examples



>>> increment_guid('7f128bd4-b0ba-4597-8f35-3a2f2756dfbb')
'7f128bd4-b0ba-4597-8f35-3a2f2756dfbc'
>>> increment_guid('06b86883-f3e7-4f9d-87c5-a047e89a19fa')
'06b86883-f3e7-4f9d-87c5-a047e89a19fb'
>>> increment_guid('89f25f2f-2f7b-4aa6-b9d7-46a98e3cb2cf')
'89f25f2f-2f7b-4aa6-b9d7-46a98e3cb2d0'
>>> increment_guid('8e0f9835-4086-406b-b7a4-532da46963ff')
'8e0f9835-4086-406b-b7a4-532da4696400'
>>> increment_guid('7f128bd4-b0ba-4597-ffff-ffffffffffff')
'7f128bd4-b0ba-4598-0000-000000000000'


Notes




  • Unlike in the linked article, incrementing a GUID that ends in F must “carry” to the previous hex digit. See examples above.

  • You may assume that the input will not be ffffffff-ffff-ffff-ffff-ffffffffffff.

  • For hex digits above 9, you may use either upper (A-F) or lower (a-f) case.

  • Yes, GUIDs may start with a 0.

  • Your output must consist of exactly 32 hex digits and 4 hyphens in the expected format, including any necessary leading 0s.







code-golf






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited yesterday







dan04

















asked 2 days ago









dan04dan04

4,12322135




4,12322135








  • 1




    $begingroup$
    Are we supposed to leave the 6 fixed bits in the UUIDv4 intact?
    $endgroup$
    – Filip Haglund
    yesterday






  • 2




    $begingroup$
    @FilipHaglund: No, just treat the GUID as a 128-bit number, where none of the bits have any special meaning. Similarly, GUIDs are assumed to sort in straightforward lexicographical order rather than in the binary order of a Windows GUID struct.
    $endgroup$
    – dan04
    yesterday






  • 3




    $begingroup$
    Suggested test case: 89f25f2f-2f7b-4aa6-b9d7-46a98e3cb29f to ensure that answers can make the transition 9 -> a.
    $endgroup$
    – Kamil Drakari
    yesterday






  • 1




    $begingroup$
    @dana: You may use any data type for which your language's equivalent of C#'s foreach (char ch in theInput) is valid.
    $endgroup$
    – dan04
    yesterday














  • 1




    $begingroup$
    Are we supposed to leave the 6 fixed bits in the UUIDv4 intact?
    $endgroup$
    – Filip Haglund
    yesterday






  • 2




    $begingroup$
    @FilipHaglund: No, just treat the GUID as a 128-bit number, where none of the bits have any special meaning. Similarly, GUIDs are assumed to sort in straightforward lexicographical order rather than in the binary order of a Windows GUID struct.
    $endgroup$
    – dan04
    yesterday






  • 3




    $begingroup$
    Suggested test case: 89f25f2f-2f7b-4aa6-b9d7-46a98e3cb29f to ensure that answers can make the transition 9 -> a.
    $endgroup$
    – Kamil Drakari
    yesterday






  • 1




    $begingroup$
    @dana: You may use any data type for which your language's equivalent of C#'s foreach (char ch in theInput) is valid.
    $endgroup$
    – dan04
    yesterday








1




1




$begingroup$
Are we supposed to leave the 6 fixed bits in the UUIDv4 intact?
$endgroup$
– Filip Haglund
yesterday




$begingroup$
Are we supposed to leave the 6 fixed bits in the UUIDv4 intact?
$endgroup$
– Filip Haglund
yesterday




2




2




$begingroup$
@FilipHaglund: No, just treat the GUID as a 128-bit number, where none of the bits have any special meaning. Similarly, GUIDs are assumed to sort in straightforward lexicographical order rather than in the binary order of a Windows GUID struct.
$endgroup$
– dan04
yesterday




$begingroup$
@FilipHaglund: No, just treat the GUID as a 128-bit number, where none of the bits have any special meaning. Similarly, GUIDs are assumed to sort in straightforward lexicographical order rather than in the binary order of a Windows GUID struct.
$endgroup$
– dan04
yesterday




3




3




$begingroup$
Suggested test case: 89f25f2f-2f7b-4aa6-b9d7-46a98e3cb29f to ensure that answers can make the transition 9 -> a.
$endgroup$
– Kamil Drakari
yesterday




$begingroup$
Suggested test case: 89f25f2f-2f7b-4aa6-b9d7-46a98e3cb29f to ensure that answers can make the transition 9 -> a.
$endgroup$
– Kamil Drakari
yesterday




1




1




$begingroup$
@dana: You may use any data type for which your language's equivalent of C#'s foreach (char ch in theInput) is valid.
$endgroup$
– dan04
yesterday




$begingroup$
@dana: You may use any data type for which your language's equivalent of C#'s foreach (char ch in theInput) is valid.
$endgroup$
– dan04
yesterday










18 Answers
18






active

oldest

votes


















17












$begingroup$


Python 2, 50




  • 3 bytes saved thanks to @Dennis.


lambda s:UUID(int=UUID(s).int+1)
from uuid import*


Try it online!






share|improve this answer











$endgroup$





















    11












    $begingroup$

    JavaScript (ES6), 85 bytes



    The output string is in lowercase.





    s=>(g=(c,x=+('0x'+s[--n])+!!c)=>1/x?g(x>>4)+(x&15).toString(16):~n?g(c)+'-':'')(n=36)


    Try it online!



    Commented



    s => (                   // s = GUID
    g = ( // g = recursive function taking:
    c, // c = carry from the previous iteration
    x = +('0x' + s[--n]) // x = decimal conversion of the current digit
    + !!c // add the carry
    ) => //
    1 / x ? // if x is numeric:
    g(x >> 4) + // do a recursive call, using the new carry
    (x & 15) // and append the next digit
    .toString(16) // converted back to hexadecimal
    : // else:
    ~n ? // if n is not equal to -1:
    g(c) // do a recursive call, leaving the current carry unchanged
    + '-' // and append a hyphen
    : // else:
    '' // stop recursion
    )(n = 36) // initial call to g with n = 36 and a truthy carry





    share|improve this answer











    $endgroup$





















      5












      $begingroup$


      05AB1E, 17 15 18 bytes



      Saved 2 bytes thanks to Kevin Cruijssen



      '-K1ìH>h¦Ž¦˜S·£'-ý


      Try it online!
      or as a Test Suite



      Explanation



      '-K                  # remove "-" from input
      1ì # prepend a 1 (to preserve leading 0s)
      H # convert from hex to base 10
      > # increment
      h # convert to hex from base 10
      ¦ # remove the extra 1
      Ž¦˜S· # push [8, 4, 4, 4, 12]
      £ # split into parts of these sizes
      '-ý # join on "-"





      share|improve this answer











      $endgroup$













      • $begingroup$
        Dang, you beat me to it.. Had something very similar, but with žKà instead of '-K. Btw, you can save 2 bytes by changing •É]•S3+ to Ž¦˜S·.
        $endgroup$
        – Kevin Cruijssen
        yesterday










      • $begingroup$
        @KevinCruijssen: Thanks! I don't know how many times I've kept forgetting that Ž is a thing now...
        $endgroup$
        – Emigna
        yesterday










      • $begingroup$
        I un-accepted this answer because someone pointed out that it will drop leading 0's. Please fix.
        $endgroup$
        – dan04
        yesterday










      • $begingroup$
        @dan04: Good call! I hadn't thought of that. Should be fixed now :)
        $endgroup$
        – Emigna
        yesterday



















      3












      $begingroup$


      APL (Dyalog Unicode), 46 bytesSBCS





      Anonymous tacit prefix function.



      ⎕CY'dfns'
      (∊1hex 16(|+1⌽=)⍣≡1+@32dec¨)@('-'≠⊢)


      Try it online!



      ⎕CY'dfns'copy the "dfns" library (to get hex and dec)



      ()

       the argument

       differs from

      '-' a dash
      ()@ on the subset consisting of the locations at which the above criterion is true, apply:

      dec¨ convert each hexadecimal character to a decimal number

       …@32at position 32 (the last digit), apply:

        1+ increment

      16()⍣≡ repeatedly apply with left argument 16 until stable:

        = compare (gives mask where the hexadecimal digits are 16)

        1⌽ cyclically rotate one step left (this is the carry bit)

        |+ to that, add the division remainder when divided (by sixteen, thus making all 16 into 0)

      1hex  turn digits into length-one hexadecimal character representations

      ϵnlist (flatten)






      share|improve this answer











      $endgroup$





















        3












        $begingroup$

        Java 11, 152 149 111 108 bytes





        s->{var b=s.getLeastSignificantBits()+1;return new java.util.UUID(s.getMostSignificantBits()+(b==0?1:0),b);}


        -38 bytes thank to @OlivierGrégoire.

        -3 bytes thanks to @ASCII-only.



        Try it online.



        Explanation:



        s->{         // Method with UUID as both parameter and return-type
        var b=s.getLeastSignificantBits()
        // Get the 64 least significant bits of the input-UUID's 128 bits as long
        +1; // And increase it by 1
        return new java.util.UUID(
        // Return a new UUID with:
        s.getMostSignificantBits()
        // The 64 most significant bits of the input-UUID's 128 bits as long
        +(b==0? // And if the 64 least significant bits + 1 are exactly 0:
        1 // Increase the 64 most significant bits by 1 as well
        : // Else:
        0, // Don't change the 64 most significant bits by adding 0
        b);} // And the 64 least significant bits + 1




        Old 149 bytes answer:



        s->{var t=new java.math.BigInteger(s.replace("-",""),16);return(t.add(t.ONE).toString(16)).replaceAll("(.{4})".repeat(5)+"(.*)","$1$2-$3-$4-$5-$6");}


        Try it online.



        Explanation:



        s->{                              // Method with String as both parameter and return-type
        var t=new java.math.BigInteger( // Create a BigInteger
        s.replace("-",""), // Of the input-string with all "-" removed
        16); // Converted from Hexadecimal
        return(t.add(t.ONE) // Add 1
        .toString(16)) // And convert it back to a Hexadecimal String
        .replaceAll("(.{4})".repeat(5)+"(.*)",
        // And split the string into parts of sizes 4,4,4,4,4,rest
        "$1$2-$3-$4-$5-$6");} // And insert "-" after parts of size 8,4,4,4,
        // and return it as result





        share|improve this answer











        $endgroup$









        • 1




          $begingroup$
          111 bytes
          $endgroup$
          – Olivier Grégoire
          yesterday












        • $begingroup$
          @OlivierGrégoire Hadn't thought about using an actual UUID! Nice and shorter alternative. :D
          $endgroup$
          – Kevin Cruijssen
          yesterday






        • 1




          $begingroup$
          109
          $endgroup$
          – ASCII-only
          yesterday










        • $begingroup$
          -1 more with var instead of long
          $endgroup$
          – ASCII-only
          yesterday



















        3












        $begingroup$


        Ruby -pl, 62 57 55 bytes





        $_="%032x"%-~gsub(?-,"").hex
        7.step(22,5){|i|$_[i]+=?-}


        Try it online!






        share|improve this answer











        $endgroup$





















          2












          $begingroup$


          Python 2, 113 112 bytes





          def f(s):a=hex(int(s.replace('-',''),16)+1+2**128);return'-'.join((a[3:11],a[11:15],a[15:19],a[19:23],a[23:-1]))


          Try it online!



          Without imports






          share|improve this answer











          $endgroup$





















            2












            $begingroup$


            Retina 0.8.2, 21 bytes



            T`FfdlL`0dlL`.[-Ff]*$


            Try it online! Link includes test cases. 9 becomes a. Explanation: The regex matches all trailing fs and -s plus one preceding character. The transliteration then cyclically increments those characters as if they were hex digits. Alternate approach, also 21 bytes:



            T`L`l
            T`fo`dl`.[-f]*$


            Try it online! Link includes test cases. Works by lowercasing the input to simplify the transliteration. Would therefore be 15 bytes if it only had to support lowercase. Try it online! Link includes test cases.






            share|improve this answer









            $endgroup$





















              2












              $begingroup$

              MATLAB, 138 bytes





              a=1;Z=a;for r=flip(split(input(''),'-'))'
              q=r{:};z=dec2hex(hex2dec(q)+a,nnz(q));try
              z+q;a=0;catch
              z=~q+48;end
              Z=[z 45 Z];end;disp(Z(1:36))


              Fixed a bug in case a chunk is all zeros. Also golfed off a lot by abusing try/catch. Net result: 0 bytes saved.



              An attempt to 'cheat' by using java.util.UUID failed because the long value returned from java.util.UUID.get[Most/Least]SignificantBits gets converted to a double which incurs a loss of precision. I invite you to take a look at this table and silently utter "...but why?"



              Explanation



              The hex2dec function spits out a double, so it cannot process the entire GUID at once to avoid exceeding flintmax. Instead, we have to process the GUID chunk by chunck, using split. The variable a checks if we need to carry a one, and cheatingly also is the initial increment we add. The condition for carrying over is whether the lengths of the original and incremented strings are no longer equal.



              Original version was just under 160 bytes so I'd like to think this should not be easy to outgolf.






              share|improve this answer











              $endgroup$





















                2












                $begingroup$


                Python 2, 99 bytes





                s='%032x'%-~int(input().replace('-',''),16)
                print'-'.join((s[:8],s[8:12],s[12:16],s[16:20],s[20:]))


                Try it online!



                No uuid.UUID usage.






                share|improve this answer









                $endgroup$





















                  2












                  $begingroup$


                  Python 2, 82 bytes





                  q='f0123456789abcdef--'
                  f=lambda s:[str,f][s[-1]in'f-'](s[:-1])+q[q.find(s[-1])+1]


                  Try it online!



                  No imports or hex conversion.



                  This scans from the back of the string, moving each character along the cycle 0123456789abcdef, with - going to itself. After it hits a symbol other than f or -, it stops scanning leftwards, and just returns the remainder unchanged. This solution isn't specific to the UUID format -- any number of blocks of any number of hex letters would work.



                  The base case of [str,f][s[-1]in'f-'](s[:-1]) is a trick I haven't seen used in a golf before. It terminates the recursion without any if, and, or, or other explicit control flow.



                  Based on the condition [s[-1]in'f-'] of the last character, the code either returns f(s[:-1]) or just s[:-1] unchanged. Since str is the identity on strings, we can select one of the functions [str,f] and apply it to s[:-1]. Note that the recursive call with f is not made if it is not chosen, getting around the common issue problem that Python eagerly evaluates unused options, leading to infinite regress in recursions.






                  share|improve this answer











                  $endgroup$





















                    2












                    $begingroup$


                    C# (Visual C# Interactive Compiler), 77 bytes





                    x=>{for(int i=35,c;(x[i]=(char)((c=x[i--])<48?c:c==57?65:c>69?48:c+1))<49;);}


                    Try it online!



                    -1 byte thanks to @ASCIIOnly!



                    Anonymous function that takes a char as input and outputs by modifying an argument.



                    Input is scanned from right to left and replaced using the following rules.




                    • The - character is ignored and processing continues

                    • The F character is converted to 0 and processing continues

                    • The 9 character is converted to A and processing stops

                    • The characters A-E and 0-8 are incremented by 1 and processing stops






                    share|improve this answer











                    $endgroup$









                    • 2




                      $begingroup$
                      ==70 -> >69
                      $endgroup$
                      – ASCII-only
                      yesterday










                    • $begingroup$
                      Excellent - Thanks :)
                      $endgroup$
                      – dana
                      yesterday



















                    1












                    $begingroup$


                    Perl 6, 65 bytes





                    {(:16(TR/-//)+1).base(16).comb.rotor(8,4,4,4,*)».join.join('-')}


                    Test it






                    share|improve this answer









                    $endgroup$









                    • 1




                      $begingroup$
                      The OP has clarified that leading zeroes must be preserved.
                      $endgroup$
                      – Dennis
                      yesterday










                    • $begingroup$
                      56 bytes with leading zeroes
                      $endgroup$
                      – Jo King
                      yesterday






                    • 1




                      $begingroup$
                      Or 53 bytes by handling stuff more manually
                      $endgroup$
                      – Jo King
                      22 hours ago



















                    1












                    $begingroup$


                    Jelly, 20 bytes



                    -2 (and a bug fix) thanks to Dennis!



                    ØhiⱮṣ0µẎḅ⁴‘ḃ⁴ịØhṁj”-


                    Try it online!






                    share|improve this answer











                    $endgroup$





















                      1












                      $begingroup$


                      Python 3, 50 bytes





                      from uuid import*
                      lambda u:UUID(int=UUID(u).int+1)


                      Try it online!






                      share|improve this answer









                      $endgroup$





















                        0












                        $begingroup$


                        JavaScript (Node.js), 81 bytes





                        s=>s.replace(/.([f-]*)$/,(s,y)=>(('0x'+s[0]|0)+1).toString(16)+y.replace(/f/g,0))


                        Try it online!






                        share|improve this answer









                        $endgroup$





















                          0












                          $begingroup$


                          PowerShell, 126 bytes





                          $a=("{0:X32}" -f (1+[Numerics.BigInteger]::Parse($args[0]-replace"-", 'AllowHexSpecifier')));5..2|%{$a=$a.Insert(4*$_,"-")};$a


                          Try it online!



                          Pretty trivial answer. Just thought I'd get the beloved PowerShell added to the list :)






                          share|improve this answer









                          $endgroup$





















                            0












                            $begingroup$

                            Perl 5, 64 bytes



                            $c=reverse((1+hex s/-//gr)->as_hex);$c=~s/..$//;s/[^-]/chop$c/ge


                            The number of parentheses necessary here makes me sad, but -> binds very tightly, as ->as_hex is the quickest way I can find to get hexadecimal-formatted output.



                            Run with perl -Mbigint -p. Basically, it just converts the number to a bigint hexadecimal, adds one, and then subtitutes the digits of the result back into the original value, leaving dashes untouched.






                            share|improve this answer









                            $endgroup$













                              Your Answer





                              StackExchange.ifUsing("editor", function () {
                              return StackExchange.using("mathjaxEditing", function () {
                              StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
                              StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
                              });
                              });
                              }, "mathjax-editing");

                              StackExchange.ifUsing("editor", function () {
                              StackExchange.using("externalEditor", function () {
                              StackExchange.using("snippets", function () {
                              StackExchange.snippets.init();
                              });
                              });
                              }, "code-snippets");

                              StackExchange.ready(function() {
                              var channelOptions = {
                              tags: "".split(" "),
                              id: "200"
                              };
                              initTagRenderer("".split(" "), "".split(" "), channelOptions);

                              StackExchange.using("externalEditor", function() {
                              // Have to fire editor after snippets, if snippets enabled
                              if (StackExchange.settings.snippets.snippetsEnabled) {
                              StackExchange.using("snippets", function() {
                              createEditor();
                              });
                              }
                              else {
                              createEditor();
                              }
                              });

                              function createEditor() {
                              StackExchange.prepareEditor({
                              heartbeatType: 'answer',
                              autoActivateHeartbeat: false,
                              convertImagesToLinks: false,
                              noModals: true,
                              showLowRepImageUploadWarning: true,
                              reputationToPostImages: null,
                              bindNavPrevention: true,
                              postfix: "",
                              imageUploader: {
                              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
                              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
                              allowUrls: true
                              },
                              onDemand: true,
                              discardSelector: ".discard-answer"
                              ,immediatelyShowMarkdownHelp:true
                              });


                              }
                              });














                              draft saved

                              draft discarded


















                              StackExchange.ready(
                              function () {
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodegolf.stackexchange.com%2fquestions%2f178837%2fincrement-a-guid%23new-answer', 'question_page');
                              }
                              );

                              Post as a guest















                              Required, but never shown

























                              18 Answers
                              18






                              active

                              oldest

                              votes








                              18 Answers
                              18






                              active

                              oldest

                              votes









                              active

                              oldest

                              votes






                              active

                              oldest

                              votes









                              17












                              $begingroup$


                              Python 2, 50




                              • 3 bytes saved thanks to @Dennis.


                              lambda s:UUID(int=UUID(s).int+1)
                              from uuid import*


                              Try it online!






                              share|improve this answer











                              $endgroup$


















                                17












                                $begingroup$


                                Python 2, 50




                                • 3 bytes saved thanks to @Dennis.


                                lambda s:UUID(int=UUID(s).int+1)
                                from uuid import*


                                Try it online!






                                share|improve this answer











                                $endgroup$
















                                  17












                                  17








                                  17





                                  $begingroup$


                                  Python 2, 50




                                  • 3 bytes saved thanks to @Dennis.


                                  lambda s:UUID(int=UUID(s).int+1)
                                  from uuid import*


                                  Try it online!






                                  share|improve this answer











                                  $endgroup$




                                  Python 2, 50




                                  • 3 bytes saved thanks to @Dennis.


                                  lambda s:UUID(int=UUID(s).int+1)
                                  from uuid import*


                                  Try it online!







                                  share|improve this answer














                                  share|improve this answer



                                  share|improve this answer








                                  edited 11 hours ago

























                                  answered 2 days ago









                                  Digital TraumaDigital Trauma

                                  58.8k787222




                                  58.8k787222























                                      11












                                      $begingroup$

                                      JavaScript (ES6), 85 bytes



                                      The output string is in lowercase.





                                      s=>(g=(c,x=+('0x'+s[--n])+!!c)=>1/x?g(x>>4)+(x&15).toString(16):~n?g(c)+'-':'')(n=36)


                                      Try it online!



                                      Commented



                                      s => (                   // s = GUID
                                      g = ( // g = recursive function taking:
                                      c, // c = carry from the previous iteration
                                      x = +('0x' + s[--n]) // x = decimal conversion of the current digit
                                      + !!c // add the carry
                                      ) => //
                                      1 / x ? // if x is numeric:
                                      g(x >> 4) + // do a recursive call, using the new carry
                                      (x & 15) // and append the next digit
                                      .toString(16) // converted back to hexadecimal
                                      : // else:
                                      ~n ? // if n is not equal to -1:
                                      g(c) // do a recursive call, leaving the current carry unchanged
                                      + '-' // and append a hyphen
                                      : // else:
                                      '' // stop recursion
                                      )(n = 36) // initial call to g with n = 36 and a truthy carry





                                      share|improve this answer











                                      $endgroup$


















                                        11












                                        $begingroup$

                                        JavaScript (ES6), 85 bytes



                                        The output string is in lowercase.





                                        s=>(g=(c,x=+('0x'+s[--n])+!!c)=>1/x?g(x>>4)+(x&15).toString(16):~n?g(c)+'-':'')(n=36)


                                        Try it online!



                                        Commented



                                        s => (                   // s = GUID
                                        g = ( // g = recursive function taking:
                                        c, // c = carry from the previous iteration
                                        x = +('0x' + s[--n]) // x = decimal conversion of the current digit
                                        + !!c // add the carry
                                        ) => //
                                        1 / x ? // if x is numeric:
                                        g(x >> 4) + // do a recursive call, using the new carry
                                        (x & 15) // and append the next digit
                                        .toString(16) // converted back to hexadecimal
                                        : // else:
                                        ~n ? // if n is not equal to -1:
                                        g(c) // do a recursive call, leaving the current carry unchanged
                                        + '-' // and append a hyphen
                                        : // else:
                                        '' // stop recursion
                                        )(n = 36) // initial call to g with n = 36 and a truthy carry





                                        share|improve this answer











                                        $endgroup$
















                                          11












                                          11








                                          11





                                          $begingroup$

                                          JavaScript (ES6), 85 bytes



                                          The output string is in lowercase.





                                          s=>(g=(c,x=+('0x'+s[--n])+!!c)=>1/x?g(x>>4)+(x&15).toString(16):~n?g(c)+'-':'')(n=36)


                                          Try it online!



                                          Commented



                                          s => (                   // s = GUID
                                          g = ( // g = recursive function taking:
                                          c, // c = carry from the previous iteration
                                          x = +('0x' + s[--n]) // x = decimal conversion of the current digit
                                          + !!c // add the carry
                                          ) => //
                                          1 / x ? // if x is numeric:
                                          g(x >> 4) + // do a recursive call, using the new carry
                                          (x & 15) // and append the next digit
                                          .toString(16) // converted back to hexadecimal
                                          : // else:
                                          ~n ? // if n is not equal to -1:
                                          g(c) // do a recursive call, leaving the current carry unchanged
                                          + '-' // and append a hyphen
                                          : // else:
                                          '' // stop recursion
                                          )(n = 36) // initial call to g with n = 36 and a truthy carry





                                          share|improve this answer











                                          $endgroup$



                                          JavaScript (ES6), 85 bytes



                                          The output string is in lowercase.





                                          s=>(g=(c,x=+('0x'+s[--n])+!!c)=>1/x?g(x>>4)+(x&15).toString(16):~n?g(c)+'-':'')(n=36)


                                          Try it online!



                                          Commented



                                          s => (                   // s = GUID
                                          g = ( // g = recursive function taking:
                                          c, // c = carry from the previous iteration
                                          x = +('0x' + s[--n]) // x = decimal conversion of the current digit
                                          + !!c // add the carry
                                          ) => //
                                          1 / x ? // if x is numeric:
                                          g(x >> 4) + // do a recursive call, using the new carry
                                          (x & 15) // and append the next digit
                                          .toString(16) // converted back to hexadecimal
                                          : // else:
                                          ~n ? // if n is not equal to -1:
                                          g(c) // do a recursive call, leaving the current carry unchanged
                                          + '-' // and append a hyphen
                                          : // else:
                                          '' // stop recursion
                                          )(n = 36) // initial call to g with n = 36 and a truthy carry






                                          share|improve this answer














                                          share|improve this answer



                                          share|improve this answer








                                          edited yesterday

























                                          answered yesterday









                                          ArnauldArnauld

                                          73.5k689309




                                          73.5k689309























                                              5












                                              $begingroup$


                                              05AB1E, 17 15 18 bytes



                                              Saved 2 bytes thanks to Kevin Cruijssen



                                              '-K1ìH>h¦Ž¦˜S·£'-ý


                                              Try it online!
                                              or as a Test Suite



                                              Explanation



                                              '-K                  # remove "-" from input
                                              1ì # prepend a 1 (to preserve leading 0s)
                                              H # convert from hex to base 10
                                              > # increment
                                              h # convert to hex from base 10
                                              ¦ # remove the extra 1
                                              Ž¦˜S· # push [8, 4, 4, 4, 12]
                                              £ # split into parts of these sizes
                                              '-ý # join on "-"





                                              share|improve this answer











                                              $endgroup$













                                              • $begingroup$
                                                Dang, you beat me to it.. Had something very similar, but with žKà instead of '-K. Btw, you can save 2 bytes by changing •É]•S3+ to Ž¦˜S·.
                                                $endgroup$
                                                – Kevin Cruijssen
                                                yesterday










                                              • $begingroup$
                                                @KevinCruijssen: Thanks! I don't know how many times I've kept forgetting that Ž is a thing now...
                                                $endgroup$
                                                – Emigna
                                                yesterday










                                              • $begingroup$
                                                I un-accepted this answer because someone pointed out that it will drop leading 0's. Please fix.
                                                $endgroup$
                                                – dan04
                                                yesterday










                                              • $begingroup$
                                                @dan04: Good call! I hadn't thought of that. Should be fixed now :)
                                                $endgroup$
                                                – Emigna
                                                yesterday
















                                              5












                                              $begingroup$


                                              05AB1E, 17 15 18 bytes



                                              Saved 2 bytes thanks to Kevin Cruijssen



                                              '-K1ìH>h¦Ž¦˜S·£'-ý


                                              Try it online!
                                              or as a Test Suite



                                              Explanation



                                              '-K                  # remove "-" from input
                                              1ì # prepend a 1 (to preserve leading 0s)
                                              H # convert from hex to base 10
                                              > # increment
                                              h # convert to hex from base 10
                                              ¦ # remove the extra 1
                                              Ž¦˜S· # push [8, 4, 4, 4, 12]
                                              £ # split into parts of these sizes
                                              '-ý # join on "-"





                                              share|improve this answer











                                              $endgroup$













                                              • $begingroup$
                                                Dang, you beat me to it.. Had something very similar, but with žKà instead of '-K. Btw, you can save 2 bytes by changing •É]•S3+ to Ž¦˜S·.
                                                $endgroup$
                                                – Kevin Cruijssen
                                                yesterday










                                              • $begingroup$
                                                @KevinCruijssen: Thanks! I don't know how many times I've kept forgetting that Ž is a thing now...
                                                $endgroup$
                                                – Emigna
                                                yesterday










                                              • $begingroup$
                                                I un-accepted this answer because someone pointed out that it will drop leading 0's. Please fix.
                                                $endgroup$
                                                – dan04
                                                yesterday










                                              • $begingroup$
                                                @dan04: Good call! I hadn't thought of that. Should be fixed now :)
                                                $endgroup$
                                                – Emigna
                                                yesterday














                                              5












                                              5








                                              5





                                              $begingroup$


                                              05AB1E, 17 15 18 bytes



                                              Saved 2 bytes thanks to Kevin Cruijssen



                                              '-K1ìH>h¦Ž¦˜S·£'-ý


                                              Try it online!
                                              or as a Test Suite



                                              Explanation



                                              '-K                  # remove "-" from input
                                              1ì # prepend a 1 (to preserve leading 0s)
                                              H # convert from hex to base 10
                                              > # increment
                                              h # convert to hex from base 10
                                              ¦ # remove the extra 1
                                              Ž¦˜S· # push [8, 4, 4, 4, 12]
                                              £ # split into parts of these sizes
                                              '-ý # join on "-"





                                              share|improve this answer











                                              $endgroup$




                                              05AB1E, 17 15 18 bytes



                                              Saved 2 bytes thanks to Kevin Cruijssen



                                              '-K1ìH>h¦Ž¦˜S·£'-ý


                                              Try it online!
                                              or as a Test Suite



                                              Explanation



                                              '-K                  # remove "-" from input
                                              1ì # prepend a 1 (to preserve leading 0s)
                                              H # convert from hex to base 10
                                              > # increment
                                              h # convert to hex from base 10
                                              ¦ # remove the extra 1
                                              Ž¦˜S· # push [8, 4, 4, 4, 12]
                                              £ # split into parts of these sizes
                                              '-ý # join on "-"






                                              share|improve this answer














                                              share|improve this answer



                                              share|improve this answer








                                              edited yesterday

























                                              answered yesterday









                                              EmignaEmigna

                                              45.7k432139




                                              45.7k432139












                                              • $begingroup$
                                                Dang, you beat me to it.. Had something very similar, but with žKà instead of '-K. Btw, you can save 2 bytes by changing •É]•S3+ to Ž¦˜S·.
                                                $endgroup$
                                                – Kevin Cruijssen
                                                yesterday










                                              • $begingroup$
                                                @KevinCruijssen: Thanks! I don't know how many times I've kept forgetting that Ž is a thing now...
                                                $endgroup$
                                                – Emigna
                                                yesterday










                                              • $begingroup$
                                                I un-accepted this answer because someone pointed out that it will drop leading 0's. Please fix.
                                                $endgroup$
                                                – dan04
                                                yesterday










                                              • $begingroup$
                                                @dan04: Good call! I hadn't thought of that. Should be fixed now :)
                                                $endgroup$
                                                – Emigna
                                                yesterday


















                                              • $begingroup$
                                                Dang, you beat me to it.. Had something very similar, but with žKà instead of '-K. Btw, you can save 2 bytes by changing •É]•S3+ to Ž¦˜S·.
                                                $endgroup$
                                                – Kevin Cruijssen
                                                yesterday










                                              • $begingroup$
                                                @KevinCruijssen: Thanks! I don't know how many times I've kept forgetting that Ž is a thing now...
                                                $endgroup$
                                                – Emigna
                                                yesterday










                                              • $begingroup$
                                                I un-accepted this answer because someone pointed out that it will drop leading 0's. Please fix.
                                                $endgroup$
                                                – dan04
                                                yesterday










                                              • $begingroup$
                                                @dan04: Good call! I hadn't thought of that. Should be fixed now :)
                                                $endgroup$
                                                – Emigna
                                                yesterday
















                                              $begingroup$
                                              Dang, you beat me to it.. Had something very similar, but with žKà instead of '-K. Btw, you can save 2 bytes by changing •É]•S3+ to Ž¦˜S·.
                                              $endgroup$
                                              – Kevin Cruijssen
                                              yesterday




                                              $begingroup$
                                              Dang, you beat me to it.. Had something very similar, but with žKà instead of '-K. Btw, you can save 2 bytes by changing •É]•S3+ to Ž¦˜S·.
                                              $endgroup$
                                              – Kevin Cruijssen
                                              yesterday












                                              $begingroup$
                                              @KevinCruijssen: Thanks! I don't know how many times I've kept forgetting that Ž is a thing now...
                                              $endgroup$
                                              – Emigna
                                              yesterday




                                              $begingroup$
                                              @KevinCruijssen: Thanks! I don't know how many times I've kept forgetting that Ž is a thing now...
                                              $endgroup$
                                              – Emigna
                                              yesterday












                                              $begingroup$
                                              I un-accepted this answer because someone pointed out that it will drop leading 0's. Please fix.
                                              $endgroup$
                                              – dan04
                                              yesterday




                                              $begingroup$
                                              I un-accepted this answer because someone pointed out that it will drop leading 0's. Please fix.
                                              $endgroup$
                                              – dan04
                                              yesterday












                                              $begingroup$
                                              @dan04: Good call! I hadn't thought of that. Should be fixed now :)
                                              $endgroup$
                                              – Emigna
                                              yesterday




                                              $begingroup$
                                              @dan04: Good call! I hadn't thought of that. Should be fixed now :)
                                              $endgroup$
                                              – Emigna
                                              yesterday











                                              3












                                              $begingroup$


                                              APL (Dyalog Unicode), 46 bytesSBCS





                                              Anonymous tacit prefix function.



                                              ⎕CY'dfns'
                                              (∊1hex 16(|+1⌽=)⍣≡1+@32dec¨)@('-'≠⊢)


                                              Try it online!



                                              ⎕CY'dfns'copy the "dfns" library (to get hex and dec)



                                              ()

                                               the argument

                                               differs from

                                              '-' a dash
                                              ()@ on the subset consisting of the locations at which the above criterion is true, apply:

                                              dec¨ convert each hexadecimal character to a decimal number

                                               …@32at position 32 (the last digit), apply:

                                                1+ increment

                                              16()⍣≡ repeatedly apply with left argument 16 until stable:

                                                = compare (gives mask where the hexadecimal digits are 16)

                                                1⌽ cyclically rotate one step left (this is the carry bit)

                                                |+ to that, add the division remainder when divided (by sixteen, thus making all 16 into 0)

                                              1hex  turn digits into length-one hexadecimal character representations

                                              ϵnlist (flatten)






                                              share|improve this answer











                                              $endgroup$


















                                                3












                                                $begingroup$


                                                APL (Dyalog Unicode), 46 bytesSBCS





                                                Anonymous tacit prefix function.



                                                ⎕CY'dfns'
                                                (∊1hex 16(|+1⌽=)⍣≡1+@32dec¨)@('-'≠⊢)


                                                Try it online!



                                                ⎕CY'dfns'copy the "dfns" library (to get hex and dec)



                                                ()

                                                 the argument

                                                 differs from

                                                '-' a dash
                                                ()@ on the subset consisting of the locations at which the above criterion is true, apply:

                                                dec¨ convert each hexadecimal character to a decimal number

                                                 …@32at position 32 (the last digit), apply:

                                                  1+ increment

                                                16()⍣≡ repeatedly apply with left argument 16 until stable:

                                                  = compare (gives mask where the hexadecimal digits are 16)

                                                  1⌽ cyclically rotate one step left (this is the carry bit)

                                                  |+ to that, add the division remainder when divided (by sixteen, thus making all 16 into 0)

                                                1hex  turn digits into length-one hexadecimal character representations

                                                ϵnlist (flatten)






                                                share|improve this answer











                                                $endgroup$
















                                                  3












                                                  3








                                                  3





                                                  $begingroup$


                                                  APL (Dyalog Unicode), 46 bytesSBCS





                                                  Anonymous tacit prefix function.



                                                  ⎕CY'dfns'
                                                  (∊1hex 16(|+1⌽=)⍣≡1+@32dec¨)@('-'≠⊢)


                                                  Try it online!



                                                  ⎕CY'dfns'copy the "dfns" library (to get hex and dec)



                                                  ()

                                                   the argument

                                                   differs from

                                                  '-' a dash
                                                  ()@ on the subset consisting of the locations at which the above criterion is true, apply:

                                                  dec¨ convert each hexadecimal character to a decimal number

                                                   …@32at position 32 (the last digit), apply:

                                                    1+ increment

                                                  16()⍣≡ repeatedly apply with left argument 16 until stable:

                                                    = compare (gives mask where the hexadecimal digits are 16)

                                                    1⌽ cyclically rotate one step left (this is the carry bit)

                                                    |+ to that, add the division remainder when divided (by sixteen, thus making all 16 into 0)

                                                  1hex  turn digits into length-one hexadecimal character representations

                                                  ϵnlist (flatten)






                                                  share|improve this answer











                                                  $endgroup$




                                                  APL (Dyalog Unicode), 46 bytesSBCS





                                                  Anonymous tacit prefix function.



                                                  ⎕CY'dfns'
                                                  (∊1hex 16(|+1⌽=)⍣≡1+@32dec¨)@('-'≠⊢)


                                                  Try it online!



                                                  ⎕CY'dfns'copy the "dfns" library (to get hex and dec)



                                                  ()

                                                   the argument

                                                   differs from

                                                  '-' a dash
                                                  ()@ on the subset consisting of the locations at which the above criterion is true, apply:

                                                  dec¨ convert each hexadecimal character to a decimal number

                                                   …@32at position 32 (the last digit), apply:

                                                    1+ increment

                                                  16()⍣≡ repeatedly apply with left argument 16 until stable:

                                                    = compare (gives mask where the hexadecimal digits are 16)

                                                    1⌽ cyclically rotate one step left (this is the carry bit)

                                                    |+ to that, add the division remainder when divided (by sixteen, thus making all 16 into 0)

                                                  1hex  turn digits into length-one hexadecimal character representations

                                                  ϵnlist (flatten)







                                                  share|improve this answer














                                                  share|improve this answer



                                                  share|improve this answer








                                                  edited yesterday

























                                                  answered yesterday









                                                  AdámAdám

                                                  29.4k271194




                                                  29.4k271194























                                                      3












                                                      $begingroup$

                                                      Java 11, 152 149 111 108 bytes





                                                      s->{var b=s.getLeastSignificantBits()+1;return new java.util.UUID(s.getMostSignificantBits()+(b==0?1:0),b);}


                                                      -38 bytes thank to @OlivierGrégoire.

                                                      -3 bytes thanks to @ASCII-only.



                                                      Try it online.



                                                      Explanation:



                                                      s->{         // Method with UUID as both parameter and return-type
                                                      var b=s.getLeastSignificantBits()
                                                      // Get the 64 least significant bits of the input-UUID's 128 bits as long
                                                      +1; // And increase it by 1
                                                      return new java.util.UUID(
                                                      // Return a new UUID with:
                                                      s.getMostSignificantBits()
                                                      // The 64 most significant bits of the input-UUID's 128 bits as long
                                                      +(b==0? // And if the 64 least significant bits + 1 are exactly 0:
                                                      1 // Increase the 64 most significant bits by 1 as well
                                                      : // Else:
                                                      0, // Don't change the 64 most significant bits by adding 0
                                                      b);} // And the 64 least significant bits + 1




                                                      Old 149 bytes answer:



                                                      s->{var t=new java.math.BigInteger(s.replace("-",""),16);return(t.add(t.ONE).toString(16)).replaceAll("(.{4})".repeat(5)+"(.*)","$1$2-$3-$4-$5-$6");}


                                                      Try it online.



                                                      Explanation:



                                                      s->{                              // Method with String as both parameter and return-type
                                                      var t=new java.math.BigInteger( // Create a BigInteger
                                                      s.replace("-",""), // Of the input-string with all "-" removed
                                                      16); // Converted from Hexadecimal
                                                      return(t.add(t.ONE) // Add 1
                                                      .toString(16)) // And convert it back to a Hexadecimal String
                                                      .replaceAll("(.{4})".repeat(5)+"(.*)",
                                                      // And split the string into parts of sizes 4,4,4,4,4,rest
                                                      "$1$2-$3-$4-$5-$6");} // And insert "-" after parts of size 8,4,4,4,
                                                      // and return it as result





                                                      share|improve this answer











                                                      $endgroup$









                                                      • 1




                                                        $begingroup$
                                                        111 bytes
                                                        $endgroup$
                                                        – Olivier Grégoire
                                                        yesterday












                                                      • $begingroup$
                                                        @OlivierGrégoire Hadn't thought about using an actual UUID! Nice and shorter alternative. :D
                                                        $endgroup$
                                                        – Kevin Cruijssen
                                                        yesterday






                                                      • 1




                                                        $begingroup$
                                                        109
                                                        $endgroup$
                                                        – ASCII-only
                                                        yesterday










                                                      • $begingroup$
                                                        -1 more with var instead of long
                                                        $endgroup$
                                                        – ASCII-only
                                                        yesterday
















                                                      3












                                                      $begingroup$

                                                      Java 11, 152 149 111 108 bytes





                                                      s->{var b=s.getLeastSignificantBits()+1;return new java.util.UUID(s.getMostSignificantBits()+(b==0?1:0),b);}


                                                      -38 bytes thank to @OlivierGrégoire.

                                                      -3 bytes thanks to @ASCII-only.



                                                      Try it online.



                                                      Explanation:



                                                      s->{         // Method with UUID as both parameter and return-type
                                                      var b=s.getLeastSignificantBits()
                                                      // Get the 64 least significant bits of the input-UUID's 128 bits as long
                                                      +1; // And increase it by 1
                                                      return new java.util.UUID(
                                                      // Return a new UUID with:
                                                      s.getMostSignificantBits()
                                                      // The 64 most significant bits of the input-UUID's 128 bits as long
                                                      +(b==0? // And if the 64 least significant bits + 1 are exactly 0:
                                                      1 // Increase the 64 most significant bits by 1 as well
                                                      : // Else:
                                                      0, // Don't change the 64 most significant bits by adding 0
                                                      b);} // And the 64 least significant bits + 1




                                                      Old 149 bytes answer:



                                                      s->{var t=new java.math.BigInteger(s.replace("-",""),16);return(t.add(t.ONE).toString(16)).replaceAll("(.{4})".repeat(5)+"(.*)","$1$2-$3-$4-$5-$6");}


                                                      Try it online.



                                                      Explanation:



                                                      s->{                              // Method with String as both parameter and return-type
                                                      var t=new java.math.BigInteger( // Create a BigInteger
                                                      s.replace("-",""), // Of the input-string with all "-" removed
                                                      16); // Converted from Hexadecimal
                                                      return(t.add(t.ONE) // Add 1
                                                      .toString(16)) // And convert it back to a Hexadecimal String
                                                      .replaceAll("(.{4})".repeat(5)+"(.*)",
                                                      // And split the string into parts of sizes 4,4,4,4,4,rest
                                                      "$1$2-$3-$4-$5-$6");} // And insert "-" after parts of size 8,4,4,4,
                                                      // and return it as result





                                                      share|improve this answer











                                                      $endgroup$









                                                      • 1




                                                        $begingroup$
                                                        111 bytes
                                                        $endgroup$
                                                        – Olivier Grégoire
                                                        yesterday












                                                      • $begingroup$
                                                        @OlivierGrégoire Hadn't thought about using an actual UUID! Nice and shorter alternative. :D
                                                        $endgroup$
                                                        – Kevin Cruijssen
                                                        yesterday






                                                      • 1




                                                        $begingroup$
                                                        109
                                                        $endgroup$
                                                        – ASCII-only
                                                        yesterday










                                                      • $begingroup$
                                                        -1 more with var instead of long
                                                        $endgroup$
                                                        – ASCII-only
                                                        yesterday














                                                      3












                                                      3








                                                      3





                                                      $begingroup$

                                                      Java 11, 152 149 111 108 bytes





                                                      s->{var b=s.getLeastSignificantBits()+1;return new java.util.UUID(s.getMostSignificantBits()+(b==0?1:0),b);}


                                                      -38 bytes thank to @OlivierGrégoire.

                                                      -3 bytes thanks to @ASCII-only.



                                                      Try it online.



                                                      Explanation:



                                                      s->{         // Method with UUID as both parameter and return-type
                                                      var b=s.getLeastSignificantBits()
                                                      // Get the 64 least significant bits of the input-UUID's 128 bits as long
                                                      +1; // And increase it by 1
                                                      return new java.util.UUID(
                                                      // Return a new UUID with:
                                                      s.getMostSignificantBits()
                                                      // The 64 most significant bits of the input-UUID's 128 bits as long
                                                      +(b==0? // And if the 64 least significant bits + 1 are exactly 0:
                                                      1 // Increase the 64 most significant bits by 1 as well
                                                      : // Else:
                                                      0, // Don't change the 64 most significant bits by adding 0
                                                      b);} // And the 64 least significant bits + 1




                                                      Old 149 bytes answer:



                                                      s->{var t=new java.math.BigInteger(s.replace("-",""),16);return(t.add(t.ONE).toString(16)).replaceAll("(.{4})".repeat(5)+"(.*)","$1$2-$3-$4-$5-$6");}


                                                      Try it online.



                                                      Explanation:



                                                      s->{                              // Method with String as both parameter and return-type
                                                      var t=new java.math.BigInteger( // Create a BigInteger
                                                      s.replace("-",""), // Of the input-string with all "-" removed
                                                      16); // Converted from Hexadecimal
                                                      return(t.add(t.ONE) // Add 1
                                                      .toString(16)) // And convert it back to a Hexadecimal String
                                                      .replaceAll("(.{4})".repeat(5)+"(.*)",
                                                      // And split the string into parts of sizes 4,4,4,4,4,rest
                                                      "$1$2-$3-$4-$5-$6");} // And insert "-" after parts of size 8,4,4,4,
                                                      // and return it as result





                                                      share|improve this answer











                                                      $endgroup$



                                                      Java 11, 152 149 111 108 bytes





                                                      s->{var b=s.getLeastSignificantBits()+1;return new java.util.UUID(s.getMostSignificantBits()+(b==0?1:0),b);}


                                                      -38 bytes thank to @OlivierGrégoire.

                                                      -3 bytes thanks to @ASCII-only.



                                                      Try it online.



                                                      Explanation:



                                                      s->{         // Method with UUID as both parameter and return-type
                                                      var b=s.getLeastSignificantBits()
                                                      // Get the 64 least significant bits of the input-UUID's 128 bits as long
                                                      +1; // And increase it by 1
                                                      return new java.util.UUID(
                                                      // Return a new UUID with:
                                                      s.getMostSignificantBits()
                                                      // The 64 most significant bits of the input-UUID's 128 bits as long
                                                      +(b==0? // And if the 64 least significant bits + 1 are exactly 0:
                                                      1 // Increase the 64 most significant bits by 1 as well
                                                      : // Else:
                                                      0, // Don't change the 64 most significant bits by adding 0
                                                      b);} // And the 64 least significant bits + 1




                                                      Old 149 bytes answer:



                                                      s->{var t=new java.math.BigInteger(s.replace("-",""),16);return(t.add(t.ONE).toString(16)).replaceAll("(.{4})".repeat(5)+"(.*)","$1$2-$3-$4-$5-$6");}


                                                      Try it online.



                                                      Explanation:



                                                      s->{                              // Method with String as both parameter and return-type
                                                      var t=new java.math.BigInteger( // Create a BigInteger
                                                      s.replace("-",""), // Of the input-string with all "-" removed
                                                      16); // Converted from Hexadecimal
                                                      return(t.add(t.ONE) // Add 1
                                                      .toString(16)) // And convert it back to a Hexadecimal String
                                                      .replaceAll("(.{4})".repeat(5)+"(.*)",
                                                      // And split the string into parts of sizes 4,4,4,4,4,rest
                                                      "$1$2-$3-$4-$5-$6");} // And insert "-" after parts of size 8,4,4,4,
                                                      // and return it as result






                                                      share|improve this answer














                                                      share|improve this answer



                                                      share|improve this answer








                                                      edited 23 hours ago

























                                                      answered yesterday









                                                      Kevin CruijssenKevin Cruijssen

                                                      36.5k555192




                                                      36.5k555192








                                                      • 1




                                                        $begingroup$
                                                        111 bytes
                                                        $endgroup$
                                                        – Olivier Grégoire
                                                        yesterday












                                                      • $begingroup$
                                                        @OlivierGrégoire Hadn't thought about using an actual UUID! Nice and shorter alternative. :D
                                                        $endgroup$
                                                        – Kevin Cruijssen
                                                        yesterday






                                                      • 1




                                                        $begingroup$
                                                        109
                                                        $endgroup$
                                                        – ASCII-only
                                                        yesterday










                                                      • $begingroup$
                                                        -1 more with var instead of long
                                                        $endgroup$
                                                        – ASCII-only
                                                        yesterday














                                                      • 1




                                                        $begingroup$
                                                        111 bytes
                                                        $endgroup$
                                                        – Olivier Grégoire
                                                        yesterday












                                                      • $begingroup$
                                                        @OlivierGrégoire Hadn't thought about using an actual UUID! Nice and shorter alternative. :D
                                                        $endgroup$
                                                        – Kevin Cruijssen
                                                        yesterday






                                                      • 1




                                                        $begingroup$
                                                        109
                                                        $endgroup$
                                                        – ASCII-only
                                                        yesterday










                                                      • $begingroup$
                                                        -1 more with var instead of long
                                                        $endgroup$
                                                        – ASCII-only
                                                        yesterday








                                                      1




                                                      1




                                                      $begingroup$
                                                      111 bytes
                                                      $endgroup$
                                                      – Olivier Grégoire
                                                      yesterday






                                                      $begingroup$
                                                      111 bytes
                                                      $endgroup$
                                                      – Olivier Grégoire
                                                      yesterday














                                                      $begingroup$
                                                      @OlivierGrégoire Hadn't thought about using an actual UUID! Nice and shorter alternative. :D
                                                      $endgroup$
                                                      – Kevin Cruijssen
                                                      yesterday




                                                      $begingroup$
                                                      @OlivierGrégoire Hadn't thought about using an actual UUID! Nice and shorter alternative. :D
                                                      $endgroup$
                                                      – Kevin Cruijssen
                                                      yesterday




                                                      1




                                                      1




                                                      $begingroup$
                                                      109
                                                      $endgroup$
                                                      – ASCII-only
                                                      yesterday




                                                      $begingroup$
                                                      109
                                                      $endgroup$
                                                      – ASCII-only
                                                      yesterday












                                                      $begingroup$
                                                      -1 more with var instead of long
                                                      $endgroup$
                                                      – ASCII-only
                                                      yesterday




                                                      $begingroup$
                                                      -1 more with var instead of long
                                                      $endgroup$
                                                      – ASCII-only
                                                      yesterday











                                                      3












                                                      $begingroup$


                                                      Ruby -pl, 62 57 55 bytes





                                                      $_="%032x"%-~gsub(?-,"").hex
                                                      7.step(22,5){|i|$_[i]+=?-}


                                                      Try it online!






                                                      share|improve this answer











                                                      $endgroup$


















                                                        3












                                                        $begingroup$


                                                        Ruby -pl, 62 57 55 bytes





                                                        $_="%032x"%-~gsub(?-,"").hex
                                                        7.step(22,5){|i|$_[i]+=?-}


                                                        Try it online!






                                                        share|improve this answer











                                                        $endgroup$
















                                                          3












                                                          3








                                                          3





                                                          $begingroup$


                                                          Ruby -pl, 62 57 55 bytes





                                                          $_="%032x"%-~gsub(?-,"").hex
                                                          7.step(22,5){|i|$_[i]+=?-}


                                                          Try it online!






                                                          share|improve this answer











                                                          $endgroup$




                                                          Ruby -pl, 62 57 55 bytes





                                                          $_="%032x"%-~gsub(?-,"").hex
                                                          7.step(22,5){|i|$_[i]+=?-}


                                                          Try it online!







                                                          share|improve this answer














                                                          share|improve this answer



                                                          share|improve this answer








                                                          edited 22 hours ago

























                                                          answered yesterday









                                                          Kirill L.Kirill L.

                                                          3,8051319




                                                          3,8051319























                                                              2












                                                              $begingroup$


                                                              Python 2, 113 112 bytes





                                                              def f(s):a=hex(int(s.replace('-',''),16)+1+2**128);return'-'.join((a[3:11],a[11:15],a[15:19],a[19:23],a[23:-1]))


                                                              Try it online!



                                                              Without imports






                                                              share|improve this answer











                                                              $endgroup$


















                                                                2












                                                                $begingroup$


                                                                Python 2, 113 112 bytes





                                                                def f(s):a=hex(int(s.replace('-',''),16)+1+2**128);return'-'.join((a[3:11],a[11:15],a[15:19],a[19:23],a[23:-1]))


                                                                Try it online!



                                                                Without imports






                                                                share|improve this answer











                                                                $endgroup$
















                                                                  2












                                                                  2








                                                                  2





                                                                  $begingroup$


                                                                  Python 2, 113 112 bytes





                                                                  def f(s):a=hex(int(s.replace('-',''),16)+1+2**128);return'-'.join((a[3:11],a[11:15],a[15:19],a[19:23],a[23:-1]))


                                                                  Try it online!



                                                                  Without imports






                                                                  share|improve this answer











                                                                  $endgroup$




                                                                  Python 2, 113 112 bytes





                                                                  def f(s):a=hex(int(s.replace('-',''),16)+1+2**128);return'-'.join((a[3:11],a[11:15],a[15:19],a[19:23],a[23:-1]))


                                                                  Try it online!



                                                                  Without imports







                                                                  share|improve this answer














                                                                  share|improve this answer



                                                                  share|improve this answer








                                                                  edited yesterday

























                                                                  answered yesterday









                                                                  TFeldTFeld

                                                                  14.6k21241




                                                                  14.6k21241























                                                                      2












                                                                      $begingroup$


                                                                      Retina 0.8.2, 21 bytes



                                                                      T`FfdlL`0dlL`.[-Ff]*$


                                                                      Try it online! Link includes test cases. 9 becomes a. Explanation: The regex matches all trailing fs and -s plus one preceding character. The transliteration then cyclically increments those characters as if they were hex digits. Alternate approach, also 21 bytes:



                                                                      T`L`l
                                                                      T`fo`dl`.[-f]*$


                                                                      Try it online! Link includes test cases. Works by lowercasing the input to simplify the transliteration. Would therefore be 15 bytes if it only had to support lowercase. Try it online! Link includes test cases.






                                                                      share|improve this answer









                                                                      $endgroup$


















                                                                        2












                                                                        $begingroup$


                                                                        Retina 0.8.2, 21 bytes



                                                                        T`FfdlL`0dlL`.[-Ff]*$


                                                                        Try it online! Link includes test cases. 9 becomes a. Explanation: The regex matches all trailing fs and -s plus one preceding character. The transliteration then cyclically increments those characters as if they were hex digits. Alternate approach, also 21 bytes:



                                                                        T`L`l
                                                                        T`fo`dl`.[-f]*$


                                                                        Try it online! Link includes test cases. Works by lowercasing the input to simplify the transliteration. Would therefore be 15 bytes if it only had to support lowercase. Try it online! Link includes test cases.






                                                                        share|improve this answer









                                                                        $endgroup$
















                                                                          2












                                                                          2








                                                                          2





                                                                          $begingroup$


                                                                          Retina 0.8.2, 21 bytes



                                                                          T`FfdlL`0dlL`.[-Ff]*$


                                                                          Try it online! Link includes test cases. 9 becomes a. Explanation: The regex matches all trailing fs and -s plus one preceding character. The transliteration then cyclically increments those characters as if they were hex digits. Alternate approach, also 21 bytes:



                                                                          T`L`l
                                                                          T`fo`dl`.[-f]*$


                                                                          Try it online! Link includes test cases. Works by lowercasing the input to simplify the transliteration. Would therefore be 15 bytes if it only had to support lowercase. Try it online! Link includes test cases.






                                                                          share|improve this answer









                                                                          $endgroup$




                                                                          Retina 0.8.2, 21 bytes



                                                                          T`FfdlL`0dlL`.[-Ff]*$


                                                                          Try it online! Link includes test cases. 9 becomes a. Explanation: The regex matches all trailing fs and -s plus one preceding character. The transliteration then cyclically increments those characters as if they were hex digits. Alternate approach, also 21 bytes:



                                                                          T`L`l
                                                                          T`fo`dl`.[-f]*$


                                                                          Try it online! Link includes test cases. Works by lowercasing the input to simplify the transliteration. Would therefore be 15 bytes if it only had to support lowercase. Try it online! Link includes test cases.







                                                                          share|improve this answer












                                                                          share|improve this answer



                                                                          share|improve this answer










                                                                          answered yesterday









                                                                          NeilNeil

                                                                          79.9k744177




                                                                          79.9k744177























                                                                              2












                                                                              $begingroup$

                                                                              MATLAB, 138 bytes





                                                                              a=1;Z=a;for r=flip(split(input(''),'-'))'
                                                                              q=r{:};z=dec2hex(hex2dec(q)+a,nnz(q));try
                                                                              z+q;a=0;catch
                                                                              z=~q+48;end
                                                                              Z=[z 45 Z];end;disp(Z(1:36))


                                                                              Fixed a bug in case a chunk is all zeros. Also golfed off a lot by abusing try/catch. Net result: 0 bytes saved.



                                                                              An attempt to 'cheat' by using java.util.UUID failed because the long value returned from java.util.UUID.get[Most/Least]SignificantBits gets converted to a double which incurs a loss of precision. I invite you to take a look at this table and silently utter "...but why?"



                                                                              Explanation



                                                                              The hex2dec function spits out a double, so it cannot process the entire GUID at once to avoid exceeding flintmax. Instead, we have to process the GUID chunk by chunck, using split. The variable a checks if we need to carry a one, and cheatingly also is the initial increment we add. The condition for carrying over is whether the lengths of the original and incremented strings are no longer equal.



                                                                              Original version was just under 160 bytes so I'd like to think this should not be easy to outgolf.






                                                                              share|improve this answer











                                                                              $endgroup$


















                                                                                2












                                                                                $begingroup$

                                                                                MATLAB, 138 bytes





                                                                                a=1;Z=a;for r=flip(split(input(''),'-'))'
                                                                                q=r{:};z=dec2hex(hex2dec(q)+a,nnz(q));try
                                                                                z+q;a=0;catch
                                                                                z=~q+48;end
                                                                                Z=[z 45 Z];end;disp(Z(1:36))


                                                                                Fixed a bug in case a chunk is all zeros. Also golfed off a lot by abusing try/catch. Net result: 0 bytes saved.



                                                                                An attempt to 'cheat' by using java.util.UUID failed because the long value returned from java.util.UUID.get[Most/Least]SignificantBits gets converted to a double which incurs a loss of precision. I invite you to take a look at this table and silently utter "...but why?"



                                                                                Explanation



                                                                                The hex2dec function spits out a double, so it cannot process the entire GUID at once to avoid exceeding flintmax. Instead, we have to process the GUID chunk by chunck, using split. The variable a checks if we need to carry a one, and cheatingly also is the initial increment we add. The condition for carrying over is whether the lengths of the original and incremented strings are no longer equal.



                                                                                Original version was just under 160 bytes so I'd like to think this should not be easy to outgolf.






                                                                                share|improve this answer











                                                                                $endgroup$
















                                                                                  2












                                                                                  2








                                                                                  2





                                                                                  $begingroup$

                                                                                  MATLAB, 138 bytes





                                                                                  a=1;Z=a;for r=flip(split(input(''),'-'))'
                                                                                  q=r{:};z=dec2hex(hex2dec(q)+a,nnz(q));try
                                                                                  z+q;a=0;catch
                                                                                  z=~q+48;end
                                                                                  Z=[z 45 Z];end;disp(Z(1:36))


                                                                                  Fixed a bug in case a chunk is all zeros. Also golfed off a lot by abusing try/catch. Net result: 0 bytes saved.



                                                                                  An attempt to 'cheat' by using java.util.UUID failed because the long value returned from java.util.UUID.get[Most/Least]SignificantBits gets converted to a double which incurs a loss of precision. I invite you to take a look at this table and silently utter "...but why?"



                                                                                  Explanation



                                                                                  The hex2dec function spits out a double, so it cannot process the entire GUID at once to avoid exceeding flintmax. Instead, we have to process the GUID chunk by chunck, using split. The variable a checks if we need to carry a one, and cheatingly also is the initial increment we add. The condition for carrying over is whether the lengths of the original and incremented strings are no longer equal.



                                                                                  Original version was just under 160 bytes so I'd like to think this should not be easy to outgolf.






                                                                                  share|improve this answer











                                                                                  $endgroup$



                                                                                  MATLAB, 138 bytes





                                                                                  a=1;Z=a;for r=flip(split(input(''),'-'))'
                                                                                  q=r{:};z=dec2hex(hex2dec(q)+a,nnz(q));try
                                                                                  z+q;a=0;catch
                                                                                  z=~q+48;end
                                                                                  Z=[z 45 Z];end;disp(Z(1:36))


                                                                                  Fixed a bug in case a chunk is all zeros. Also golfed off a lot by abusing try/catch. Net result: 0 bytes saved.



                                                                                  An attempt to 'cheat' by using java.util.UUID failed because the long value returned from java.util.UUID.get[Most/Least]SignificantBits gets converted to a double which incurs a loss of precision. I invite you to take a look at this table and silently utter "...but why?"



                                                                                  Explanation



                                                                                  The hex2dec function spits out a double, so it cannot process the entire GUID at once to avoid exceeding flintmax. Instead, we have to process the GUID chunk by chunck, using split. The variable a checks if we need to carry a one, and cheatingly also is the initial increment we add. The condition for carrying over is whether the lengths of the original and incremented strings are no longer equal.



                                                                                  Original version was just under 160 bytes so I'd like to think this should not be easy to outgolf.







                                                                                  share|improve this answer














                                                                                  share|improve this answer



                                                                                  share|improve this answer








                                                                                  edited yesterday

























                                                                                  answered yesterday









                                                                                  SanchisesSanchises

                                                                                  5,78212351




                                                                                  5,78212351























                                                                                      2












                                                                                      $begingroup$


                                                                                      Python 2, 99 bytes





                                                                                      s='%032x'%-~int(input().replace('-',''),16)
                                                                                      print'-'.join((s[:8],s[8:12],s[12:16],s[16:20],s[20:]))


                                                                                      Try it online!



                                                                                      No uuid.UUID usage.






                                                                                      share|improve this answer









                                                                                      $endgroup$


















                                                                                        2












                                                                                        $begingroup$


                                                                                        Python 2, 99 bytes





                                                                                        s='%032x'%-~int(input().replace('-',''),16)
                                                                                        print'-'.join((s[:8],s[8:12],s[12:16],s[16:20],s[20:]))


                                                                                        Try it online!



                                                                                        No uuid.UUID usage.






                                                                                        share|improve this answer









                                                                                        $endgroup$
















                                                                                          2












                                                                                          2








                                                                                          2





                                                                                          $begingroup$


                                                                                          Python 2, 99 bytes





                                                                                          s='%032x'%-~int(input().replace('-',''),16)
                                                                                          print'-'.join((s[:8],s[8:12],s[12:16],s[16:20],s[20:]))


                                                                                          Try it online!



                                                                                          No uuid.UUID usage.






                                                                                          share|improve this answer









                                                                                          $endgroup$




                                                                                          Python 2, 99 bytes





                                                                                          s='%032x'%-~int(input().replace('-',''),16)
                                                                                          print'-'.join((s[:8],s[8:12],s[12:16],s[16:20],s[20:]))


                                                                                          Try it online!



                                                                                          No uuid.UUID usage.







                                                                                          share|improve this answer












                                                                                          share|improve this answer



                                                                                          share|improve this answer










                                                                                          answered yesterday









                                                                                          Erik the OutgolferErik the Outgolfer

                                                                                          31.6k429103




                                                                                          31.6k429103























                                                                                              2












                                                                                              $begingroup$


                                                                                              Python 2, 82 bytes





                                                                                              q='f0123456789abcdef--'
                                                                                              f=lambda s:[str,f][s[-1]in'f-'](s[:-1])+q[q.find(s[-1])+1]


                                                                                              Try it online!



                                                                                              No imports or hex conversion.



                                                                                              This scans from the back of the string, moving each character along the cycle 0123456789abcdef, with - going to itself. After it hits a symbol other than f or -, it stops scanning leftwards, and just returns the remainder unchanged. This solution isn't specific to the UUID format -- any number of blocks of any number of hex letters would work.



                                                                                              The base case of [str,f][s[-1]in'f-'](s[:-1]) is a trick I haven't seen used in a golf before. It terminates the recursion without any if, and, or, or other explicit control flow.



                                                                                              Based on the condition [s[-1]in'f-'] of the last character, the code either returns f(s[:-1]) or just s[:-1] unchanged. Since str is the identity on strings, we can select one of the functions [str,f] and apply it to s[:-1]. Note that the recursive call with f is not made if it is not chosen, getting around the common issue problem that Python eagerly evaluates unused options, leading to infinite regress in recursions.






                                                                                              share|improve this answer











                                                                                              $endgroup$


















                                                                                                2












                                                                                                $begingroup$


                                                                                                Python 2, 82 bytes





                                                                                                q='f0123456789abcdef--'
                                                                                                f=lambda s:[str,f][s[-1]in'f-'](s[:-1])+q[q.find(s[-1])+1]


                                                                                                Try it online!



                                                                                                No imports or hex conversion.



                                                                                                This scans from the back of the string, moving each character along the cycle 0123456789abcdef, with - going to itself. After it hits a symbol other than f or -, it stops scanning leftwards, and just returns the remainder unchanged. This solution isn't specific to the UUID format -- any number of blocks of any number of hex letters would work.



                                                                                                The base case of [str,f][s[-1]in'f-'](s[:-1]) is a trick I haven't seen used in a golf before. It terminates the recursion without any if, and, or, or other explicit control flow.



                                                                                                Based on the condition [s[-1]in'f-'] of the last character, the code either returns f(s[:-1]) or just s[:-1] unchanged. Since str is the identity on strings, we can select one of the functions [str,f] and apply it to s[:-1]. Note that the recursive call with f is not made if it is not chosen, getting around the common issue problem that Python eagerly evaluates unused options, leading to infinite regress in recursions.






                                                                                                share|improve this answer











                                                                                                $endgroup$
















                                                                                                  2












                                                                                                  2








                                                                                                  2





                                                                                                  $begingroup$


                                                                                                  Python 2, 82 bytes





                                                                                                  q='f0123456789abcdef--'
                                                                                                  f=lambda s:[str,f][s[-1]in'f-'](s[:-1])+q[q.find(s[-1])+1]


                                                                                                  Try it online!



                                                                                                  No imports or hex conversion.



                                                                                                  This scans from the back of the string, moving each character along the cycle 0123456789abcdef, with - going to itself. After it hits a symbol other than f or -, it stops scanning leftwards, and just returns the remainder unchanged. This solution isn't specific to the UUID format -- any number of blocks of any number of hex letters would work.



                                                                                                  The base case of [str,f][s[-1]in'f-'](s[:-1]) is a trick I haven't seen used in a golf before. It terminates the recursion without any if, and, or, or other explicit control flow.



                                                                                                  Based on the condition [s[-1]in'f-'] of the last character, the code either returns f(s[:-1]) or just s[:-1] unchanged. Since str is the identity on strings, we can select one of the functions [str,f] and apply it to s[:-1]. Note that the recursive call with f is not made if it is not chosen, getting around the common issue problem that Python eagerly evaluates unused options, leading to infinite regress in recursions.






                                                                                                  share|improve this answer











                                                                                                  $endgroup$




                                                                                                  Python 2, 82 bytes





                                                                                                  q='f0123456789abcdef--'
                                                                                                  f=lambda s:[str,f][s[-1]in'f-'](s[:-1])+q[q.find(s[-1])+1]


                                                                                                  Try it online!



                                                                                                  No imports or hex conversion.



                                                                                                  This scans from the back of the string, moving each character along the cycle 0123456789abcdef, with - going to itself. After it hits a symbol other than f or -, it stops scanning leftwards, and just returns the remainder unchanged. This solution isn't specific to the UUID format -- any number of blocks of any number of hex letters would work.



                                                                                                  The base case of [str,f][s[-1]in'f-'](s[:-1]) is a trick I haven't seen used in a golf before. It terminates the recursion without any if, and, or, or other explicit control flow.



                                                                                                  Based on the condition [s[-1]in'f-'] of the last character, the code either returns f(s[:-1]) or just s[:-1] unchanged. Since str is the identity on strings, we can select one of the functions [str,f] and apply it to s[:-1]. Note that the recursive call with f is not made if it is not chosen, getting around the common issue problem that Python eagerly evaluates unused options, leading to infinite regress in recursions.







                                                                                                  share|improve this answer














                                                                                                  share|improve this answer



                                                                                                  share|improve this answer








                                                                                                  edited yesterday

























                                                                                                  answered yesterday









                                                                                                  xnorxnor

                                                                                                  89.9k18185439




                                                                                                  89.9k18185439























                                                                                                      2












                                                                                                      $begingroup$


                                                                                                      C# (Visual C# Interactive Compiler), 77 bytes





                                                                                                      x=>{for(int i=35,c;(x[i]=(char)((c=x[i--])<48?c:c==57?65:c>69?48:c+1))<49;);}


                                                                                                      Try it online!



                                                                                                      -1 byte thanks to @ASCIIOnly!



                                                                                                      Anonymous function that takes a char as input and outputs by modifying an argument.



                                                                                                      Input is scanned from right to left and replaced using the following rules.




                                                                                                      • The - character is ignored and processing continues

                                                                                                      • The F character is converted to 0 and processing continues

                                                                                                      • The 9 character is converted to A and processing stops

                                                                                                      • The characters A-E and 0-8 are incremented by 1 and processing stops






                                                                                                      share|improve this answer











                                                                                                      $endgroup$









                                                                                                      • 2




                                                                                                        $begingroup$
                                                                                                        ==70 -> >69
                                                                                                        $endgroup$
                                                                                                        – ASCII-only
                                                                                                        yesterday










                                                                                                      • $begingroup$
                                                                                                        Excellent - Thanks :)
                                                                                                        $endgroup$
                                                                                                        – dana
                                                                                                        yesterday
















                                                                                                      2












                                                                                                      $begingroup$


                                                                                                      C# (Visual C# Interactive Compiler), 77 bytes





                                                                                                      x=>{for(int i=35,c;(x[i]=(char)((c=x[i--])<48?c:c==57?65:c>69?48:c+1))<49;);}


                                                                                                      Try it online!



                                                                                                      -1 byte thanks to @ASCIIOnly!



                                                                                                      Anonymous function that takes a char as input and outputs by modifying an argument.



                                                                                                      Input is scanned from right to left and replaced using the following rules.




                                                                                                      • The - character is ignored and processing continues

                                                                                                      • The F character is converted to 0 and processing continues

                                                                                                      • The 9 character is converted to A and processing stops

                                                                                                      • The characters A-E and 0-8 are incremented by 1 and processing stops






                                                                                                      share|improve this answer











                                                                                                      $endgroup$









                                                                                                      • 2




                                                                                                        $begingroup$
                                                                                                        ==70 -> >69
                                                                                                        $endgroup$
                                                                                                        – ASCII-only
                                                                                                        yesterday










                                                                                                      • $begingroup$
                                                                                                        Excellent - Thanks :)
                                                                                                        $endgroup$
                                                                                                        – dana
                                                                                                        yesterday














                                                                                                      2












                                                                                                      2








                                                                                                      2





                                                                                                      $begingroup$


                                                                                                      C# (Visual C# Interactive Compiler), 77 bytes





                                                                                                      x=>{for(int i=35,c;(x[i]=(char)((c=x[i--])<48?c:c==57?65:c>69?48:c+1))<49;);}


                                                                                                      Try it online!



                                                                                                      -1 byte thanks to @ASCIIOnly!



                                                                                                      Anonymous function that takes a char as input and outputs by modifying an argument.



                                                                                                      Input is scanned from right to left and replaced using the following rules.




                                                                                                      • The - character is ignored and processing continues

                                                                                                      • The F character is converted to 0 and processing continues

                                                                                                      • The 9 character is converted to A and processing stops

                                                                                                      • The characters A-E and 0-8 are incremented by 1 and processing stops






                                                                                                      share|improve this answer











                                                                                                      $endgroup$




                                                                                                      C# (Visual C# Interactive Compiler), 77 bytes





                                                                                                      x=>{for(int i=35,c;(x[i]=(char)((c=x[i--])<48?c:c==57?65:c>69?48:c+1))<49;);}


                                                                                                      Try it online!



                                                                                                      -1 byte thanks to @ASCIIOnly!



                                                                                                      Anonymous function that takes a char as input and outputs by modifying an argument.



                                                                                                      Input is scanned from right to left and replaced using the following rules.




                                                                                                      • The - character is ignored and processing continues

                                                                                                      • The F character is converted to 0 and processing continues

                                                                                                      • The 9 character is converted to A and processing stops

                                                                                                      • The characters A-E and 0-8 are incremented by 1 and processing stops







                                                                                                      share|improve this answer














                                                                                                      share|improve this answer



                                                                                                      share|improve this answer








                                                                                                      edited yesterday

























                                                                                                      answered yesterday









                                                                                                      danadana

                                                                                                      67145




                                                                                                      67145








                                                                                                      • 2




                                                                                                        $begingroup$
                                                                                                        ==70 -> >69
                                                                                                        $endgroup$
                                                                                                        – ASCII-only
                                                                                                        yesterday










                                                                                                      • $begingroup$
                                                                                                        Excellent - Thanks :)
                                                                                                        $endgroup$
                                                                                                        – dana
                                                                                                        yesterday














                                                                                                      • 2




                                                                                                        $begingroup$
                                                                                                        ==70 -> >69
                                                                                                        $endgroup$
                                                                                                        – ASCII-only
                                                                                                        yesterday










                                                                                                      • $begingroup$
                                                                                                        Excellent - Thanks :)
                                                                                                        $endgroup$
                                                                                                        – dana
                                                                                                        yesterday








                                                                                                      2




                                                                                                      2




                                                                                                      $begingroup$
                                                                                                      ==70 -> >69
                                                                                                      $endgroup$
                                                                                                      – ASCII-only
                                                                                                      yesterday




                                                                                                      $begingroup$
                                                                                                      ==70 -> >69
                                                                                                      $endgroup$
                                                                                                      – ASCII-only
                                                                                                      yesterday












                                                                                                      $begingroup$
                                                                                                      Excellent - Thanks :)
                                                                                                      $endgroup$
                                                                                                      – dana
                                                                                                      yesterday




                                                                                                      $begingroup$
                                                                                                      Excellent - Thanks :)
                                                                                                      $endgroup$
                                                                                                      – dana
                                                                                                      yesterday











                                                                                                      1












                                                                                                      $begingroup$


                                                                                                      Perl 6, 65 bytes





                                                                                                      {(:16(TR/-//)+1).base(16).comb.rotor(8,4,4,4,*)».join.join('-')}


                                                                                                      Test it






                                                                                                      share|improve this answer









                                                                                                      $endgroup$









                                                                                                      • 1




                                                                                                        $begingroup$
                                                                                                        The OP has clarified that leading zeroes must be preserved.
                                                                                                        $endgroup$
                                                                                                        – Dennis
                                                                                                        yesterday










                                                                                                      • $begingroup$
                                                                                                        56 bytes with leading zeroes
                                                                                                        $endgroup$
                                                                                                        – Jo King
                                                                                                        yesterday






                                                                                                      • 1




                                                                                                        $begingroup$
                                                                                                        Or 53 bytes by handling stuff more manually
                                                                                                        $endgroup$
                                                                                                        – Jo King
                                                                                                        22 hours ago
















                                                                                                      1












                                                                                                      $begingroup$


                                                                                                      Perl 6, 65 bytes





                                                                                                      {(:16(TR/-//)+1).base(16).comb.rotor(8,4,4,4,*)».join.join('-')}


                                                                                                      Test it






                                                                                                      share|improve this answer









                                                                                                      $endgroup$









                                                                                                      • 1




                                                                                                        $begingroup$
                                                                                                        The OP has clarified that leading zeroes must be preserved.
                                                                                                        $endgroup$
                                                                                                        – Dennis
                                                                                                        yesterday










                                                                                                      • $begingroup$
                                                                                                        56 bytes with leading zeroes
                                                                                                        $endgroup$
                                                                                                        – Jo King
                                                                                                        yesterday






                                                                                                      • 1




                                                                                                        $begingroup$
                                                                                                        Or 53 bytes by handling stuff more manually
                                                                                                        $endgroup$
                                                                                                        – Jo King
                                                                                                        22 hours ago














                                                                                                      1












                                                                                                      1








                                                                                                      1





                                                                                                      $begingroup$


                                                                                                      Perl 6, 65 bytes





                                                                                                      {(:16(TR/-//)+1).base(16).comb.rotor(8,4,4,4,*)».join.join('-')}


                                                                                                      Test it






                                                                                                      share|improve this answer









                                                                                                      $endgroup$




                                                                                                      Perl 6, 65 bytes





                                                                                                      {(:16(TR/-//)+1).base(16).comb.rotor(8,4,4,4,*)».join.join('-')}


                                                                                                      Test it







                                                                                                      share|improve this answer












                                                                                                      share|improve this answer



                                                                                                      share|improve this answer










                                                                                                      answered 2 days ago









                                                                                                      Brad Gilbert b2gillsBrad Gilbert b2gills

                                                                                                      12.2k11232




                                                                                                      12.2k11232








                                                                                                      • 1




                                                                                                        $begingroup$
                                                                                                        The OP has clarified that leading zeroes must be preserved.
                                                                                                        $endgroup$
                                                                                                        – Dennis
                                                                                                        yesterday










                                                                                                      • $begingroup$
                                                                                                        56 bytes with leading zeroes
                                                                                                        $endgroup$
                                                                                                        – Jo King
                                                                                                        yesterday






                                                                                                      • 1




                                                                                                        $begingroup$
                                                                                                        Or 53 bytes by handling stuff more manually
                                                                                                        $endgroup$
                                                                                                        – Jo King
                                                                                                        22 hours ago














                                                                                                      • 1




                                                                                                        $begingroup$
                                                                                                        The OP has clarified that leading zeroes must be preserved.
                                                                                                        $endgroup$
                                                                                                        – Dennis
                                                                                                        yesterday










                                                                                                      • $begingroup$
                                                                                                        56 bytes with leading zeroes
                                                                                                        $endgroup$
                                                                                                        – Jo King
                                                                                                        yesterday






                                                                                                      • 1




                                                                                                        $begingroup$
                                                                                                        Or 53 bytes by handling stuff more manually
                                                                                                        $endgroup$
                                                                                                        – Jo King
                                                                                                        22 hours ago








                                                                                                      1




                                                                                                      1




                                                                                                      $begingroup$
                                                                                                      The OP has clarified that leading zeroes must be preserved.
                                                                                                      $endgroup$
                                                                                                      – Dennis
                                                                                                      yesterday




                                                                                                      $begingroup$
                                                                                                      The OP has clarified that leading zeroes must be preserved.
                                                                                                      $endgroup$
                                                                                                      – Dennis
                                                                                                      yesterday












                                                                                                      $begingroup$
                                                                                                      56 bytes with leading zeroes
                                                                                                      $endgroup$
                                                                                                      – Jo King
                                                                                                      yesterday




                                                                                                      $begingroup$
                                                                                                      56 bytes with leading zeroes
                                                                                                      $endgroup$
                                                                                                      – Jo King
                                                                                                      yesterday




                                                                                                      1




                                                                                                      1




                                                                                                      $begingroup$
                                                                                                      Or 53 bytes by handling stuff more manually
                                                                                                      $endgroup$
                                                                                                      – Jo King
                                                                                                      22 hours ago




                                                                                                      $begingroup$
                                                                                                      Or 53 bytes by handling stuff more manually
                                                                                                      $endgroup$
                                                                                                      – Jo King
                                                                                                      22 hours ago











                                                                                                      1












                                                                                                      $begingroup$


                                                                                                      Jelly, 20 bytes



                                                                                                      -2 (and a bug fix) thanks to Dennis!



                                                                                                      ØhiⱮṣ0µẎḅ⁴‘ḃ⁴ịØhṁj”-


                                                                                                      Try it online!






                                                                                                      share|improve this answer











                                                                                                      $endgroup$


















                                                                                                        1












                                                                                                        $begingroup$


                                                                                                        Jelly, 20 bytes



                                                                                                        -2 (and a bug fix) thanks to Dennis!



                                                                                                        ØhiⱮṣ0µẎḅ⁴‘ḃ⁴ịØhṁj”-


                                                                                                        Try it online!






                                                                                                        share|improve this answer











                                                                                                        $endgroup$
















                                                                                                          1












                                                                                                          1








                                                                                                          1





                                                                                                          $begingroup$


                                                                                                          Jelly, 20 bytes



                                                                                                          -2 (and a bug fix) thanks to Dennis!



                                                                                                          ØhiⱮṣ0µẎḅ⁴‘ḃ⁴ịØhṁj”-


                                                                                                          Try it online!






                                                                                                          share|improve this answer











                                                                                                          $endgroup$




                                                                                                          Jelly, 20 bytes



                                                                                                          -2 (and a bug fix) thanks to Dennis!



                                                                                                          ØhiⱮṣ0µẎḅ⁴‘ḃ⁴ịØhṁj”-


                                                                                                          Try it online!







                                                                                                          share|improve this answer














                                                                                                          share|improve this answer



                                                                                                          share|improve this answer








                                                                                                          edited 12 hours ago

























                                                                                                          answered yesterday









                                                                                                          Jonathan AllanJonathan Allan

                                                                                                          51.2k534166




                                                                                                          51.2k534166























                                                                                                              1












                                                                                                              $begingroup$


                                                                                                              Python 3, 50 bytes





                                                                                                              from uuid import*
                                                                                                              lambda u:UUID(int=UUID(u).int+1)


                                                                                                              Try it online!






                                                                                                              share|improve this answer









                                                                                                              $endgroup$


















                                                                                                                1












                                                                                                                $begingroup$


                                                                                                                Python 3, 50 bytes





                                                                                                                from uuid import*
                                                                                                                lambda u:UUID(int=UUID(u).int+1)


                                                                                                                Try it online!






                                                                                                                share|improve this answer









                                                                                                                $endgroup$
















                                                                                                                  1












                                                                                                                  1








                                                                                                                  1





                                                                                                                  $begingroup$


                                                                                                                  Python 3, 50 bytes





                                                                                                                  from uuid import*
                                                                                                                  lambda u:UUID(int=UUID(u).int+1)


                                                                                                                  Try it online!






                                                                                                                  share|improve this answer









                                                                                                                  $endgroup$




                                                                                                                  Python 3, 50 bytes





                                                                                                                  from uuid import*
                                                                                                                  lambda u:UUID(int=UUID(u).int+1)


                                                                                                                  Try it online!







                                                                                                                  share|improve this answer












                                                                                                                  share|improve this answer



                                                                                                                  share|improve this answer










                                                                                                                  answered 11 hours ago









                                                                                                                  DraconisDraconis

                                                                                                                  411310




                                                                                                                  411310























                                                                                                                      0












                                                                                                                      $begingroup$


                                                                                                                      JavaScript (Node.js), 81 bytes





                                                                                                                      s=>s.replace(/.([f-]*)$/,(s,y)=>(('0x'+s[0]|0)+1).toString(16)+y.replace(/f/g,0))


                                                                                                                      Try it online!






                                                                                                                      share|improve this answer









                                                                                                                      $endgroup$


















                                                                                                                        0












                                                                                                                        $begingroup$


                                                                                                                        JavaScript (Node.js), 81 bytes





                                                                                                                        s=>s.replace(/.([f-]*)$/,(s,y)=>(('0x'+s[0]|0)+1).toString(16)+y.replace(/f/g,0))


                                                                                                                        Try it online!






                                                                                                                        share|improve this answer









                                                                                                                        $endgroup$
















                                                                                                                          0












                                                                                                                          0








                                                                                                                          0





                                                                                                                          $begingroup$


                                                                                                                          JavaScript (Node.js), 81 bytes





                                                                                                                          s=>s.replace(/.([f-]*)$/,(s,y)=>(('0x'+s[0]|0)+1).toString(16)+y.replace(/f/g,0))


                                                                                                                          Try it online!






                                                                                                                          share|improve this answer









                                                                                                                          $endgroup$




                                                                                                                          JavaScript (Node.js), 81 bytes





                                                                                                                          s=>s.replace(/.([f-]*)$/,(s,y)=>(('0x'+s[0]|0)+1).toString(16)+y.replace(/f/g,0))


                                                                                                                          Try it online!







                                                                                                                          share|improve this answer












                                                                                                                          share|improve this answer



                                                                                                                          share|improve this answer










                                                                                                                          answered yesterday









                                                                                                                          tshtsh

                                                                                                                          8,54511547




                                                                                                                          8,54511547























                                                                                                                              0












                                                                                                                              $begingroup$


                                                                                                                              PowerShell, 126 bytes





                                                                                                                              $a=("{0:X32}" -f (1+[Numerics.BigInteger]::Parse($args[0]-replace"-", 'AllowHexSpecifier')));5..2|%{$a=$a.Insert(4*$_,"-")};$a


                                                                                                                              Try it online!



                                                                                                                              Pretty trivial answer. Just thought I'd get the beloved PowerShell added to the list :)






                                                                                                                              share|improve this answer









                                                                                                                              $endgroup$


















                                                                                                                                0












                                                                                                                                $begingroup$


                                                                                                                                PowerShell, 126 bytes





                                                                                                                                $a=("{0:X32}" -f (1+[Numerics.BigInteger]::Parse($args[0]-replace"-", 'AllowHexSpecifier')));5..2|%{$a=$a.Insert(4*$_,"-")};$a


                                                                                                                                Try it online!



                                                                                                                                Pretty trivial answer. Just thought I'd get the beloved PowerShell added to the list :)






                                                                                                                                share|improve this answer









                                                                                                                                $endgroup$
















                                                                                                                                  0












                                                                                                                                  0








                                                                                                                                  0





                                                                                                                                  $begingroup$


                                                                                                                                  PowerShell, 126 bytes





                                                                                                                                  $a=("{0:X32}" -f (1+[Numerics.BigInteger]::Parse($args[0]-replace"-", 'AllowHexSpecifier')));5..2|%{$a=$a.Insert(4*$_,"-")};$a


                                                                                                                                  Try it online!



                                                                                                                                  Pretty trivial answer. Just thought I'd get the beloved PowerShell added to the list :)






                                                                                                                                  share|improve this answer









                                                                                                                                  $endgroup$




                                                                                                                                  PowerShell, 126 bytes





                                                                                                                                  $a=("{0:X32}" -f (1+[Numerics.BigInteger]::Parse($args[0]-replace"-", 'AllowHexSpecifier')));5..2|%{$a=$a.Insert(4*$_,"-")};$a


                                                                                                                                  Try it online!



                                                                                                                                  Pretty trivial answer. Just thought I'd get the beloved PowerShell added to the list :)







                                                                                                                                  share|improve this answer












                                                                                                                                  share|improve this answer



                                                                                                                                  share|improve this answer










                                                                                                                                  answered 8 hours ago









                                                                                                                                  KGlasierKGlasier

                                                                                                                                  1316




                                                                                                                                  1316























                                                                                                                                      0












                                                                                                                                      $begingroup$

                                                                                                                                      Perl 5, 64 bytes



                                                                                                                                      $c=reverse((1+hex s/-//gr)->as_hex);$c=~s/..$//;s/[^-]/chop$c/ge


                                                                                                                                      The number of parentheses necessary here makes me sad, but -> binds very tightly, as ->as_hex is the quickest way I can find to get hexadecimal-formatted output.



                                                                                                                                      Run with perl -Mbigint -p. Basically, it just converts the number to a bigint hexadecimal, adds one, and then subtitutes the digits of the result back into the original value, leaving dashes untouched.






                                                                                                                                      share|improve this answer









                                                                                                                                      $endgroup$


















                                                                                                                                        0












                                                                                                                                        $begingroup$

                                                                                                                                        Perl 5, 64 bytes



                                                                                                                                        $c=reverse((1+hex s/-//gr)->as_hex);$c=~s/..$//;s/[^-]/chop$c/ge


                                                                                                                                        The number of parentheses necessary here makes me sad, but -> binds very tightly, as ->as_hex is the quickest way I can find to get hexadecimal-formatted output.



                                                                                                                                        Run with perl -Mbigint -p. Basically, it just converts the number to a bigint hexadecimal, adds one, and then subtitutes the digits of the result back into the original value, leaving dashes untouched.






                                                                                                                                        share|improve this answer









                                                                                                                                        $endgroup$
















                                                                                                                                          0












                                                                                                                                          0








                                                                                                                                          0





                                                                                                                                          $begingroup$

                                                                                                                                          Perl 5, 64 bytes



                                                                                                                                          $c=reverse((1+hex s/-//gr)->as_hex);$c=~s/..$//;s/[^-]/chop$c/ge


                                                                                                                                          The number of parentheses necessary here makes me sad, but -> binds very tightly, as ->as_hex is the quickest way I can find to get hexadecimal-formatted output.



                                                                                                                                          Run with perl -Mbigint -p. Basically, it just converts the number to a bigint hexadecimal, adds one, and then subtitutes the digits of the result back into the original value, leaving dashes untouched.






                                                                                                                                          share|improve this answer









                                                                                                                                          $endgroup$



                                                                                                                                          Perl 5, 64 bytes



                                                                                                                                          $c=reverse((1+hex s/-//gr)->as_hex);$c=~s/..$//;s/[^-]/chop$c/ge


                                                                                                                                          The number of parentheses necessary here makes me sad, but -> binds very tightly, as ->as_hex is the quickest way I can find to get hexadecimal-formatted output.



                                                                                                                                          Run with perl -Mbigint -p. Basically, it just converts the number to a bigint hexadecimal, adds one, and then subtitutes the digits of the result back into the original value, leaving dashes untouched.







                                                                                                                                          share|improve this answer












                                                                                                                                          share|improve this answer



                                                                                                                                          share|improve this answer










                                                                                                                                          answered 4 hours ago









                                                                                                                                          Silvio MayoloSilvio Mayolo

                                                                                                                                          1,407917




                                                                                                                                          1,407917






























                                                                                                                                              draft saved

                                                                                                                                              draft discarded




















































                                                                                                                                              If this is an answer to a challenge…




                                                                                                                                              • …Be sure to follow the challenge specification. However, please refrain from exploiting obvious loopholes. Answers abusing any of the standard loopholes are considered invalid. If you think a specification is unclear or underspecified, comment on the question instead.


                                                                                                                                              • …Try to optimize your score. For instance, answers to code-golf challenges should attempt to be as short as possible. You can always include a readable version of the code in addition to the competitive one.
                                                                                                                                                Explanations of your answer make it more interesting to read and are very much encouraged.


                                                                                                                                              • …Include a short header which indicates the language(s) of your code and its score, as defined by the challenge.



                                                                                                                                              More generally…




                                                                                                                                              • …Please make sure to answer the question and provide sufficient detail.


                                                                                                                                              • …Avoid asking for help, clarification or responding to other answers (use comments instead).





                                                                                                                                              draft saved


                                                                                                                                              draft discarded














                                                                                                                                              StackExchange.ready(
                                                                                                                                              function () {
                                                                                                                                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodegolf.stackexchange.com%2fquestions%2f178837%2fincrement-a-guid%23new-answer', 'question_page');
                                                                                                                                              }
                                                                                                                                              );

                                                                                                                                              Post as a guest















                                                                                                                                              Required, but never shown





















































                                                                                                                                              Required, but never shown














                                                                                                                                              Required, but never shown












                                                                                                                                              Required, but never shown







                                                                                                                                              Required, but never shown

































                                                                                                                                              Required, but never shown














                                                                                                                                              Required, but never shown












                                                                                                                                              Required, but never shown







                                                                                                                                              Required, but never shown







                                                                                                                                              Popular posts from this blog

                                                                                                                                              الفوسفات في المغرب

                                                                                                                                              Four equal circles intersect: What is the area of the small shaded portion and its height

                                                                                                                                              جامعة ليفربول