একটি জিইউডি বৃদ্ধি করুন


30

সাম্প্রতিক একটি দৈনিক ডাব্লুটিএফ নিবন্ধ দ্বারা অনুপ্রাণিত ...

এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা একটি জিইউইডি নেয় (বিন্যাসে স্ট্রিং XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXযেখানে প্রতিটি এক্স একটি হেক্সাডেসিমাল ডিজিটকে উপস্থাপন করে) এবং একটি দ্বারা বর্ধিত জিইউডি আউটপুট দেয়।

উদাহরণ

>>> 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('89f25f2f-2f7b-4aa6-b9d7-46a98e3cb29f')
'89f25f2f-2f7b-4aa6-b9d7-46a98e3cb2a0'
>>> increment_guid('8e0f9835-4086-406b-b7a4-532da46963ff')
'8e0f9835-4086-406b-b7a4-532da4696400'
>>> increment_guid('7f128bd4-b0ba-4597-ffff-ffffffffffff')
'7f128bd4-b0ba-4598-0000-000000000000'

নোট

  • লিঙ্কযুক্ত নিবন্ধের বিপরীতে, এফ-এ শেষ হওয়া একটি জিইউইডি বাড়ানো অবশ্যই পূর্বের হেক্স অঙ্কে "বহন" করতে হবে। উপরে উদাহরণ দেখুন।
  • আপনি ধরে নিতে পারেন ইনপুটটি হবে না ffffffff-ffff-ffff-ffff-ffffffffffff
  • 9 এর উপরে হেক্স সংখ্যার জন্য, আপনি উপরের (এএফ) বা নিম্ন (এএফ) কেসটি ব্যবহার করতে পারেন।
  • হ্যাঁ, জিইউডিগুলি একটি দিয়ে শুরু হতে পারে 0
  • আপনার আউটপুট দিয়ে তৈরি হতে হবে ঠিক 32 হেক্স সংখ্যা এবং প্রত্যাশিত বিন্যাসে 4 হাইফেন, যেকোনো প্রয়োজনীয় নেতৃস্থানীয় সহ 0গুলি।
  • আপনাকে জিইউইডির সংস্করণ নম্বর বা অন্যান্য স্থির বিটগুলি সংরক্ষণ করতে হবে না। ধরুন এটি কেবল একটি 128-বিট পূর্ণসংখ্যা যেখানে বিটের কোনওটিরই বিশেষ অর্থ নেই। একইভাবে, জিইউইডিগুলি উইন্ডোজ GUIDস্ট্রাইকটির বাইনারি ক্রমের পরিবর্তে সোজা লিক্সোগ্রাফিকাল ক্রম অনুসারে বাছাই করা হয় ।
  • যদি একটি ফাংশন লেখা, ইনপুট কোনো ক্রম-of- হতে পারে charডাটা টাইপ: string, char[], List<char>, ইত্যাদি

1
আমরা কি ইউইউডিভি 4 অক্ষত 6 টি নির্দিষ্ট বিট রেখে যাব?
ফিলিপ হাগলুন্ড

2
@ ফিলিপ হাগলুন্ড: না, কেবল জিইউইডিকে 128-বিট নম্বর হিসাবে গণ্য করুন, যেখানে কোনও বিটের কোনও বিশেষ অর্থ নেই। একইভাবে, জিইউইডিগুলি উইন্ডোজ GUIDস্ট্রাইকটির বাইনারি ক্রমের পরিবর্তে সোজা লিক্সোগ্রাফিকাল ক্রম অনুসারে বাছাই করা হয় ।
dan04

3
প্রস্তাবিত পরীক্ষার কেস: 89f25f2f-2f7b-4aa6-b9d7-46a98e3cb29fউত্তরগুলি রূপান্তর করতে পারে তা নিশ্চিত করার জন্য 9 -> a
কামিল দ্রাকারী

1
@ ডানা: আপনি এমন কোনও ডেটা টাইপ ব্যবহার করতে পারেন যার জন্য আপনার ভাষার সি # এর সমতুল্য foreach (char ch in theInput)বৈধ।
dan04

উত্তর:


7

05 এ বি 1 , 17 15 18 বাইট

কেভিন ক্রুইজসেনকে 2 বাইট সংরক্ষণ করা হয়েছে

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

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

ব্যাখ্যা

'-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 "-"

ডাং, আপনি আমাকে মারলেন .. এরকম কিছু ছিল তবে তার žKÃপরিবর্তে '-K। BTW, আপনি পরিবর্তন করে 2 বাইট সংরক্ষণ করতে পারবেন •É]•S3+করার Ž¦˜S·
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন: ধন্যবাদ! আমি জানি না আমি কতবার ভুলে Ž
গিয়েছি এটি

আমি এই উত্তরটি অ-স্বীকার করেছি কারণ কেউ উল্লেখ করেছে যে এটি 0 এর শীর্ষস্থানীয় হবে drop ঠিক করুন
dan04

@ ডান04: শুভ কল! আমি এটা ভাবিনি। এখনই ঠিক করা উচিত :)
Emigna


11

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

আউটপুট স্ট্রিং ছোট হাতের অক্ষরে থাকে।

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

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

মন্তব্য

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

5

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

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

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

কোনও আমদানি বা হেক্স রূপান্তর নেই।

এটি স্ট্রিংয়ের পিছন থেকে স্ক্যান করে প্রতিটি চরিত্রকে নিজের দিকে 0123456789abcdefনিয়ে -চলেছে along এটি বাদে fবা অন্য কোনও চিহ্নকে আঘাত করার পরে -, এটি বাম দিকে স্ক্যান করা বন্ধ করে দেয় এবং কেবল বাকীটি অপরিবর্তিত অবস্থায় ফিরিয়ে দেয়। এই সমাধানটি ইউআইডি ফর্ম্যাটের সাথে সুনির্দিষ্ট নয় - যে কোনও সংখ্যক হেক্স বর্ণের ব্লকের কোনও সংখ্যা কাজ করবে।

এর বেস [str,f][s[-1]in'f-'](s[:-1])কেসটি এমন কৌশল যা আমি এর আগে কোনও গল্ফে ব্যবহার করতে দেখিনি। এটা কোনো ছাড়া পুনরাবৃত্তির বন্ধ if, and, or, বা অন্যান্য স্পষ্ট নিয়ন্ত্রণ প্রবাহ।

[s[-1]in'f-']শেষ চরিত্রের শর্তের ভিত্তিতে কোডটি হয় ফেরত দেয় f(s[:-1])বা কেবল s[:-1]অপরিবর্তিত থাকে। যেহেতু strস্ট্রিংগুলিতে পরিচয় তাই আমরা কোনও একটি ফাংশন নির্বাচন করতে [str,f]এবং এটি প্রয়োগ করতে পারি s[:-1]। মনে রাখবেন যে পুনরাবৃত্ত কলটি fযদি এটি নির্বাচিত না হয় তবে তা করা হয় না, সাধারণ সমস্যাটির সমস্যাটি পেয়ে পাইথন অবাক হয়ে অব্যবহৃত বিকল্পগুলি মূল্যায়ণ করে এবং পুনরাবৃত্তিতে অসীম পুনঃস্থাপনের দিকে পরিচালিত করে।


ঠিক আছে, সকালে আমার মস্তিষ্ক আছে।
উজ্জ্বল ডন

3

এপিএল (ডায়ালগ ইউনিকোড) , 46 বাইট এসবিসিএস

বেনামে ট্যাসিট প্রিফিক্স ফাংশন।

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

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

⎕CY'dfns'সি ওপ ওয়াই "ডিএফএনএস" লাইব্রেরি (পেতে hexএবংdec পেতে )

(... )
 যুক্তি
 থেকে পৃথক
'-' একটি ড্যাশ
(... )@ অবস্থানগুলির গঠিত উপসেট উপর যার উপরে নির্ণায়ক সত্য, প্রযোজ্য:
dec¨ একটি দশমিক সংখ্যা প্রতিটি হেক্সাডেসিমেল অক্ষর রূপান্তর
 ... @32 অবস্থান 32 (শেষের ডিজিটটি), প্রযোজ্য:
  1+ বৃদ্ধি
16(... )⍣≡ বারবার সঙ্গে প্রয়োগ বাম যুক্তি 16 স্থিতিশীল না হওয়া পর্যন্ত:
  = তুলনা (মাস্ক যেখানে হেক্সাডেসিমেল সংখ্যা 16 হয় দেয়)
  1⌽ cyclically ঘোরান এক ধাপ অবশিষ্ট আছে (এই বহন বিট হয়)
  |+ , যে যখন বিভক্ত বিভাজন বাকি যোগ করুন (ষোল দ্বারা, এইভাবে সব 16 0 মধ্যে উপার্জন)  পালা দৈর্ঘ্য এক হেক্সাডেসিমেল অক্ষর উপস্থাপনা মধ্যে ডিজিটের ε nlist (চেপ্টা)
1hex


3

জাভা 11, 152 149 111 108 বাইট

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

-38 বাইট @ অলিভিগ্রগ্রোয়ারকে ধন্যবাদ জানায়
-3 ধন্যবাদ বাইট হওয়া ASCII শুধুমাত্র @

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

ব্যাখ্যা:

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

পুরাতন 149 বাইট উত্তর:

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");}

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

ব্যাখ্যা:

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


@ অলিভিয়ারগ্রোওয়ের একটি আসল ইউআইডি ব্যবহার করার কথা ভাবেনি! দুর্দান্ত এবং খাটো বিকল্প। : ডি
কেভিন ক্রুইজসেন


দীর্ঘ পরিবর্তে var সহ আরও 1 টি
ASCII-




2

রেটিনা 0.8.2 , 21 বাইট

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

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। 9হয়ে a। ব্যাখ্যা: রেজেক্স সমস্ত ট্রেলিং fগুলি ও -এর প্লাস ওয়ান পূর্ববর্তী অক্ষরের সাথে মেলে । অনূদিতকরণটি তখন চক্রাকারে সেই চরিত্রগুলিকে বাড়িয়ে তোলে যেন তারা হেক্স সংখ্যা s বিকল্প পদ্ধতির, এছাড়াও 21 বাইট:

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

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। অনুলিখনকে সহজ করার জন্য ইনপুটকে হ্রাস করে কাজ করে। এটি কেবল ছোট হাতের অক্ষর সমর্থন করতে হবে তাই 15 বাইট হতে হবে। এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে।


2

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

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))

কোনও সমস্যা সমস্ত শূন্যের ক্ষেত্রে একটি বাগ ঠিক করা। চেষ্টা / ধরা আপত্তিজনক ব্যবহার করে প্রচুর গল্ফ করেছে। নেট ফলাফল: 0 বাইট সংরক্ষণ করা হয়েছে।

ব্যবহার করে 'প্রতারণা' করার চেষ্টা java.util.UUIDব্যর্থ হয়েছে কারণ এর longথেকে ফিরে আসা মানটি এমন java.util.UUID.get[Most/Least]SignificantBitsরূপান্তরিত হয়ে যায় doubleযা নির্ভুলতার ক্ষতি হতে পারে। আমি আপনাকে এই টেবিলটি একবার দেখার জন্য এবং নিঃশব্দে উচ্চারণ করতে আমন্ত্রণ জানাচ্ছি "... তবে কেন? "

ব্যাখ্যা

hex2decফাংশন থুতু ফেলে একটি আউট double, তাই এটি একবার মাত্রাধিক এড়াতে এ সমগ্র GUID প্রক্রিয়া করতে পারছি না flintmax। পরিবর্তে, আমাদের ব্যবহার করে গুনা দ্বারা জিইউইডি অংশটিকে প্রক্রিয়া করতে হবে split। ভেরিয়েবল aচেক করে যদি আমাদের কোনও বহন করা প্রয়োজন, এবং প্রতারণার সাথে এটিও যোগ করা প্রাথমিক বৃদ্ধি। ভার বহন করার শর্ত হ'ল মূল এবং বর্ধিত স্ট্রিংগুলির দৈর্ঘ্য আর সমান হয় না।

আসল সংস্করণটি 160 বাইটের নিচে ছিল তাই আমি ভাবতে চাই যে এটি আউটগল্ফ করা সহজ নয়।



2

সি # (ভিসুয়াল সি # ইন্টারেক্টিভ কম্পাইলার) , 77 বাইট

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

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

-1 বাইট @ এএসসিআইআইকে ধন্যবাদ!

বেনামে ফাংশন যা একটি আর্গুমেন্ট সংশোধন করেchar[] ইনপুট হিসাবে আউটপুট হিসাবে নেয় ।

ইনপুটটি নীচের নিয়মগুলি ব্যবহার করে ডান থেকে বামে এবং প্রতিস্থাপন করা হয়েছে।

  • -চরিত্র উপেক্ষা করা হয় এবং প্রক্রিয়াকরণ চলতে
  • Fচরিত্র পরিবর্তিত হয় 0এবং প্রক্রিয়াকরণ চলতে
  • 9চরিত্র পরিবর্তিত হয় Aএবং প্রক্রিয়াকরণের স্টপ
  • অক্ষরগুলি A-Eএবং 0-81 দ্বারা বর্ধিত হয় এবং প্রক্রিয়াজাতকরণ বন্ধ হয়


দুর্দান্ত - ধন্যবাদ :)
ডানা

2

পাওয়ারশেল, 101 বাইট

for($p=1;$d=+"$args"[--$i]){$d+=$p*(1-@{45=1;57=-7;70=23;102=55}.$d)
$p*=$d-in45,48
$r=[char]$d+$r}$r

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

কোনও বাহ্যিক গ্রন্থাগার বা হেক্স রূপান্তর নেই। যে কোনও স্ট্রিং দৈর্ঘ্য। লোয়ার কেস এবং আপার কেস অনুমোদিত। এর সাথে ইনপুট স্ট্রিংয়ের মিলও ^[f-]*$অনুমোদিত।

এই স্ক্রিপ্টটি স্ট্রিংয়ের পিছন থেকে স্ক্যান করে এবং হ্যাশট্যাবল থেকে প্রাপ্ত মান দ্বারা প্রতিটি চরকে অন্তর্ভুক্ত করে:

  • -: বৃদ্ধি = 1-1
  • 9: বৃদ্ধি = 1 + 7, ফলাফল =A
  • F: ইনক্রিমেন্ট = 1-23, ফলাফল =0
  • f: বৃদ্ধি = 1-55, ফলাফল =0
  • অন্যান্য অক্ষরের জন্য বৃদ্ধি = 1

এরপরে, স্ক্রিপ্টটি $pবর্তমানের চরটি বাড়ানো হবে কিনা তা নির্ধারণ করতে ব্যবহার করে।

পরীক্ষার স্ক্রিপ্ট:

$f = {

for($p=1;$d=+"$args"[--$i]){$d+=$p*(1-@{45=1;57=-7;70=23;102=55}.$d)
$p*=$d-in45,48
$r=[char]$d+$r}$r

}

@(
    ,('f','0')
    ,('F','0')
    ,('0','1')
    ,('9','A')
    ,('A','B')
    ,('a','b')
    ,('0-f','1-0')
    ,('0-F','1-0')
    ,("7f128bd4-b0ba-4597-8f35-3a2f2756dfbb","7f128bd4-b0ba-4597-8f35-3a2f2756dfbc")
    ,("06b86883-f3e7-4f9d-87c5-a047e89a19f9","06b86883-f3e7-4f9d-87c5-a047e89a19fa")
    ,("89f25f2f-2f7b-4aa6-b9d7-46a98e3cb2cf","89f25f2f-2f7b-4aa6-b9d7-46a98e3cb2d0")
    ,("8e0f9835-4086-406b-b7a4-532da46963ff","8e0f9835-4086-406b-b7a4-532da4696400")
    ,("7f128bd4-b0ba-4597-ffff-ffffffffffff","7f128bd4-b0ba-4598-0000-000000000000")
    ,("89f25f2f-2f7b-4aa6-b9d7-46a98e3cb29f","89f25f2f-2f7b-4aa6-b9d7-46a98e3cb2a0")
    ,("ffffffff-ffff-ffff-ffff-ffffffffffff","00000000-0000-0000-0000-000000000000")
) | % {
    $guid,$expected = $_
    $result = &$f $guid
    "$($result-eq$expected): $result"
}

আউটপুট:

True: 0
True: 0
True: 1
True: A
True: B
True: b
True: 1-0
True: 1-0
True: 7f128bd4-b0ba-4597-8f35-3a2f2756dfbc
True: 06b86883-f3e7-4f9d-87c5-a047e89a19fA
True: 89f25f2f-2f7b-4aa6-b9d7-46a98e3cb2d0
True: 8e0f9835-4086-406b-b7a4-532da4696400
True: 7f128bd4-b0ba-4598-0000-000000000000
True: 89f25f2f-2f7b-4aa6-b9d7-46a98e3cb2A0
True: 00000000-0000-0000-0000-000000000000

1

পার্ল 6 , 65 বাইট

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

এটা পরীক্ষা করো


1
ওপি স্পষ্ট করে দিয়েছে যে নেতৃস্থানীয় শূন্যগুলি অবশ্যই সংরক্ষণ করতে হবে।
ডেনিস

শীর্ষস্থানীয় শূন্যগুলির সাথে 56 বাইট
জো কিং

1
অথবা 53 টি বাইটস স্টাফটি আরও ম্যানুয়ালি হ্যান্ডেল করে
জো কিং




0

পার্ল 5, 64 বাইট

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

এখানে প্রয়োজনীয় বন্ধনীগুলির সংখ্যা আমাকে দু: খিত করে তোলে, তবে ->খুব শক্ত করে বাঁধে, ->as_hexহেক্সাডেসিমাল-ফর্ম্যাটযুক্ত আউটপুট পাওয়ার দ্রুততম উপায় হিসাবে ।

সাথে চালাও perl -Mbigint -p। মূলত, এটি কেবল সংখ্যাটিকে বিগিন্ট হেক্সাডেসিমালে রূপান্তরিত করে, একটি যোগ করে এবং তারপরে ফলাফলগুলির অঙ্কগুলি মূল মান হিসাবে ফিরে যায়, ড্যাশগুলি ছোঁয়া ছাড়িয়ে।


0

মরিচা, 258 বাইট

let x=|s:&str|s.chars().rev().scan(1,|a,c|{let d=c.to_digit(16).unwrap_or(99);match(d,*a){(15,1)=>{*a=1;Some(0)}(0..=14,1)=>{*a = 0;Some(d + 1)}_=> Some(d),}}).collect::<Vec<u32>>().iter().rev().for_each(|d| print!("{}", std::char::from_digit(*d, 16).unwrap_or('-')));

হ্যাঁ এটি দীর্ঘ .. তবে প্রযুক্তিগতভাবে এটি 1 টি অভিব্যক্তির সাথে একমাত্র লাইন? এবং কোনও অভিনব গ্রন্থাগার নেই? এবং এটি কোনও ফাজ ইনপুটটিতে ক্রাশ হবে না? ungolf:

let x=|s:&str|s.chars().rev().scan(1, |a, c| {
            let d = c.to_digit(16).unwrap_or(99);
            match (d, *a) {
                (15, 1) => {*a = 1;Some(0)}
                (0..=14, 1) => {*a = 0;Some(d + 1)}
                _ => Some(d),
            }
        }).collect::<Vec<u32>>().iter().rev()
        .for_each(|d| print!("{}", std::char::from_digit(*d, 16).unwrap_or('-')));

মরিচা খেলার মাঠে চেষ্টা করুন



0

16/32/64-বিট x86 বিধানসভা কোড, 28 বাইট

বাইটস: 83C623FDAC3C2D74FB403C3A7502B0613C677502B03088460173E9C3

কোড:

     add esi, 35       ;point to end of string - 1
     std               ;go backwards
l1:  lodsb             ;fetch a character
     cmp al, '-'
     je  l1            ;skip '-'
     inc eax           ;otherwise increment
     cmp al, '9' + 1
     jne l2            ;branch if not out of numbers
     mov al, 'a'       ;otherwise switch '9'+1 to 'a'
l2:  cmp al, 'f' + 1   ;sets carry if less
     jne l3            ;branch if not out of letters
     mov al, '0'       ;otherwise switch 'f'+1 to '0'
                       ;and carry is clear
l3:  mov [esi + 1], al ;replace character
     jnb l1            ;and loop while carry is clear
     ret

জিএসইউডিকে নির্দেশ করে ইএসআই সহ কল ​​করুন। 16-বিটের জন্য এসআই, বা 64-বিটের (এবং +2 বাইট) জন্য এসএসআই প্রতিস্থাপন করুন Rep


0

সি (ঝনঝন) , 62 বাইট

g(char*i){for(i+=36;(*--i-45?*i+=*i-70?*i-57?1:8:-22:0)<49;);}

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


অপেক্ষা করুন। ছোট হাতের / বড় হাতের চেক কি কোনও দাম দেয় না ???
ASCII-

মানে, এটি বাইকাউন্টের জন্য বিনা ব্যয়ে ছোট এবং বড় হাতের উভয়ই পরিচালনা করতে পারে ?!
ASCII-

আহ ঠিক আছে .. ch-70% 32? : থেকে '0' ... 64 এবং 96 32 এর একাধিক তাই 70-6 এবং 102-6% 32।
আজটেকো

1
আপনাকে উভয়ই হ্যান্ডেল করতে হবে না, তাই 64
ASCII-

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