হেক্সাডেসিমাল এবং বর্ণমালা


45

এই চ্যালেঞ্জের মধ্যে আপনি একটি ইনপুট পাবেন, এটিকে হেক্সাডেসিমালে রূপান্তর করবেন, কয়েকটি পরিবর্তন আনবেন এবং ফলাফল আউটপুট পাবেন।

হেক্সাডেসিমালে এগুলি কেবলমাত্র 16 টি অক্ষর হওয়ায় আপনার কোডটি যতটা সম্ভব সংক্ষিপ্ত হওয়া দরকার।


উদাহরণ

উদাহরণগুলি ফাঁকা রেখার দ্বারা পৃথক করা হয়। প্রথম লাইনটি ইনপুট, দ্বিতীয় লাইনটি ধাপগুলি দেখায়, তৃতীয়টি আউটপুট প্রদর্শন করে

234589
234589 -> 3945D -> 39454 -> 9A1E -> 9115 -> 239B -> 2392 -> 958
958

435234
435234 -> 6A422 -> 61422 -> EFEE -> 5655 -> 1617
1617

153
153 -> 99 -> 99 -> 63
1617

ধাপ

ইনপুট সর্বদা একটি ইতিবাচক পূর্ণসংখ্যার হবে


আউটপুট উত্পন্ন করার জন্য আপনি নিম্নলিখিত পদক্ষেপগুলি অনুসরণ করবেন:

  1. ইনপুটটি হেক্সাডেসিমালে রূপান্তর করুন
  2. বর্ণমালায় তাদের সূচী সহ যে কোনও অক্ষর প্রতিস্থাপন করুন (উদাঃ a -> 1, b -> 2)
  3. ফলটিকে আবার হেক্সাডেসিমালে রূপান্তর করুন
  4. যদি ফলাফলটিতে কোনও অক্ষর থাকে, তবে পদক্ষেপ 2 এ যান

এটি তাই বাইট জেতে সংক্ষিপ্ততম কোড!


27
ন্যায্যতার জন্য +1 "যেহেতু তারা হেক্সাডেসিমালে কেবলমাত্র 16 টি অক্ষর, আপনার কোডটি যতটা সম্ভব সংক্ষিপ্ত হওয়া দরকার" "
বিড়াল

1
একটি পরীক্ষার কেস যা শূন্য অঙ্কের মধ্য দিয়ে যায় (যা আমার বর্তমান পদ্ধতির জন্য গুরুত্বপূর্ণ প্রান্তের কেস):749699 -> B7083 -> 27083 -> 69CB -> 6932 -> 1B14 -> 1214 -> 4BE -> 425 -> 1A9 -> 119 -> 77
মার্টিন এেন্ডার

5
পরীক্ষার কেস 153. পদক্ষেপ 1> 99, পদক্ষেপ 2 -> 99, পদক্ষেপ 3 -> 63, আউটপুট 63. সঠিক?
edc65

হ্যাঁ 153 এর জন্য আমি কোড ফ্লো ব্যাখ্যাটি দেখিনি ...
রোজলুপি

এটির জন্য মূল্য ... শীর্ষ 4 টির মধ্যে 3 জবাব ইনপুট 153 এবং জেলির বর্তমান সংস্করণে ডেনিসের সেগ-ফল্টগুলি ফেরত দেয়। আমি এগিয়ে যাওয়ার সময় পরীক্ষা ছেড়ে যাচ্ছি :) আমরা কি নিশ্চিত যে উদাহরণটি সঠিক?
দানা

উত্তর:


13

জেলি , 18 বাইট

b⁴µ:⁵©+¹%⁵ḅ⁵ß¹®S¤?

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

উত্স কোডের বাইনারি, 18 বাইট সংস্করণে এক্সএক্সডি ডাম্প রয়েছে

0000000: 62 b6 8c 3a b7 85 2b 8e 25 b7 a3 b7 95 8e 88 53 83 3f b..:..+.%......S.?

এবং জেলি দোভাষী এর এই সংস্করণটির সাথে কাজ করে ।

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

b⁴µ:⁵©+¹%⁵ḅ⁵ß¹®S¤?  Define the main link -- Left input: a (number)

b⁴                  Convert from integer to base 16.
  µ                 Start a new, monadic link.
   :⁵               Divide all base 16 digits by 10.
     ©              Save the result in a register.
      +¹            Add the quotients to the base 16 digits.
        %⁵          Take all resulting sums modulo 10.
          ḅ⁵        Convert from base 10 to integer.
              ®S¤   Take the sum of the quotients from the list in the register.
                 ?  If the result is non-zero:
            ß         Recursively call the main link.
             ¹        Else, apply the identity function.

(দশমিক-থেকে-পূর্ণসংখ্যার) শর্টহ্যান্ড হিসাবে কাজ করা উচিত ছিল ḅ⁵, তবে এই পোস্টের সময়ে জেলির সর্বশেষ সংস্করণে একটি বাগ ছিল যা এটি আমাকে ব্যবহার করতে বাধা দিয়েছে।


3
এটা কি....?
জে আতকিন

1
এটি কোন এনকোডিংটি ব্যবহার করে? এটি ইউটিএফ -8, বা আইএসও
-8859 এর

2
পছন্দ করুন জেলি তার নিজস্ব, কাস্টম এনকোডিং ব্যবহার করে। উত্স কোডটি ইউটিএফ -8 বা বাইনারি ফাইল হিসাবে সরবরাহ করা যেতে পারে।
ডেনিস

2
@ টিমউই ফেয়ার যথেষ্ট। আমি উভয় পোস্টে যুক্ত করেছি।
ডেনিস

2
ডেনিসের প্রতিরক্ষায়: যেহেতু জেলি 256 টিরও কম অক্ষর ব্যবহার করে, তাই কেউ জেলিটির একটি কাঁটাচামচকে তুচ্ছভাবে সংজ্ঞায়িত করতে পারে যা কেবল এএনএসআই অক্ষর ব্যবহার করে। পার্থক্যটি হ'ল পাঠ্যতা এবং প্রতিটি ফাংশন কী করে তা মনে রাখার স্বাচ্ছন্দ্য।
অ্যাডম

8

জাভাস্ক্রিপ্ট ES6, 98 92 67 64 বাইট

@ ডাউনওয়েটকে 3 বাইট সংরক্ষণ করা হয়েছে, @ ব্যবহারকারী 81655 এর জন্য আরও 3 টি ধন্যবাদ

পুনরাবৃত্তির জন্য লুপটি খনন করে একটি অনেক বেশি সংক্ষিপ্ত সংস্করণ পাওয়া গেছে:

h=x=>(y=x.toString(16))>(r=y.replace(/\D/g,z=>'0x'+z-9))?h(+r):r

সম্ভবত এই প্রোগ্রামটির সবচেয়ে আকর্ষণীয় অংশটি হ'ল replaceফাংশন:

z=>     // Implicit: z = one of "a", "b", "c", "d", "e", "f"
'0x'+z  // Add '0x' to the beginning of z.
        // If z == "a", this results in "0xa".
-9      // Subtract 9. JavaScript automatically coerces the string to a number,
        // and because the prefix "0x" means "convert from hexadecimal",
        // the "a" is converted to 10, which then becomes 1 because of the subtraction.

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

( এখান থেকে তোলা )

h=x=>(y=x.toString(16))>(r=y.replace(/\D/g,z=>'0x'+z-9))?h(+r):r
<!--                               Try the test suite below!                              --><strong id="bytecount" style="display:inline; font-size:32px; font-family:Helvetica"></strong><strong id="bytediff" style="display:inline; margin-left:10px; font-size:32px; font-family:Helvetica; color:lightgray"></strong><br><br><pre style="margin:0">Code:</pre><textarea id="textbox" style="margin-top:5px; margin-bottom:5px"></textarea><br><pre style="margin:0">Input:</pre><textarea id="inputbox" style="margin-top:5px; margin-bottom:5px"></textarea><br><button id="testbtn">Test!</button><button id="resetbtn">Reset</button><br><p><strong id="origheader" style="font-family:Helvetica; display:none">Original Code Output:</strong><p><div id="origoutput" style="margin-left:15px"></div><p><strong id="newheader" style="font-family:Helvetica; display:none">New Code Output:</strong><p><div id="newoutput" style="margin-left:15px"></div><script type="text/javascript" id="golfsnippet">var bytecount=document.getElementById("bytecount");var bytediff=document.getElementById("bytediff");var textbox=document.getElementById("textbox");var inputbox=document.getElementById("inputbox");var testbtn=document.getElementById("testbtn");var resetbtn=document.getElementById("resetbtn");var origheader=document.getElementById("origheader");var newheader=document.getElementById("newheader");var origoutput=document.getElementById("origoutput");var newoutput=document.getElementById("newoutput");inputbox.value="234589";textbox.style.width=inputbox.style.width=window.innerWidth-50+"px";var _originalCode=null;function getOriginalCode(){if(_originalCode!=null)return _originalCode;var allScripts=document.getElementsByTagName("script");for(var i=0;i<allScripts.length;i++){var script=allScripts[i];if(script.id!="golfsnippet"){originalCode=script.textContent.trim();return originalCode}}}function getNewCode(){return textbox.value.trim()}function getInput(){try{var inputText=inputbox.value.trim();var input=eval("["+inputText+"]");return input}catch(e){return null}}function setTextbox(s){textbox.value=s;onTextboxChange()}function setOutput(output,s){output.innerHTML=s}function addOutput(output,data){output.innerHTML+='<pre style="background-color:'+(data.type=="err"?"lightcoral":"lightgray")+'">'+escape(data.content)+"</pre>"}function getByteCount(s){return(new Blob([s],{encoding:"UTF-8",type:"text/plain;charset=UTF-8"})).size}function onTextboxChange(){var newLength=getByteCount(getNewCode());var oldLength=getByteCount(getOriginalCode());bytecount.innerHTML=newLength+" bytes";var diff=newLength-oldLength;if(diff>0){bytediff.innerHTML="(+"+diff+")";bytediff.style.color="lightcoral"}else if(diff<0){bytediff.innerHTML="("+diff+")";bytediff.style.color="lightgreen"}else{bytediff.innerHTML="("+diff+")";bytediff.style.color="lightgray"}}function onTestBtn(evt){origheader.style.display="inline";newheader.style.display="inline";setOutput(newoutput,"");setOutput(origoutput,"");var input=getInput();if(input===null){addOutput(origoutput,{type:"err",content:"Input is malformed. Using no input."});addOutput(newoutput,{type:"err",content:"Input is malformed. Using no input."});input=[]}doInterpret(getNewCode(),input,function(data){addOutput(newoutput,data)});doInterpret(getOriginalCode(),input,function(data){addOutput(origoutput,data)});evt.stopPropagation();return false}function onResetBtn(evt){setTextbox(getOriginalCode());origheader.style.display="none";newheader.style.display="none";setOutput(origoutput,"");setOutput(newoutput,"")}function escape(s){return s.toString().replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}window.alert=function(){};window.prompt=function(){};function doInterpret(code,input,cb){var workerCode=interpret.toString()+";function stdout(s){ self.postMessage( {'type': 'out', 'content': s} ); }"+" function stderr(s){ self.postMessage( {'type': 'err', 'content': s} ); }"+" function kill(){ self.close(); }"+" self.addEventListener('message', function(msg){ interpret(msg.data.code, msg.data.input); });";var interpreter=new Worker(URL.createObjectURL(new Blob([workerCode])));interpreter.addEventListener("message",function(msg){cb(msg.data)});interpreter.postMessage({"code":code,"input":input});setTimeout(function(){interpreter.terminate()},1E4)}setTimeout(function(){getOriginalCode();textbox.addEventListener("input",onTextboxChange);testbtn.addEventListener("click",onTestBtn);resetbtn.addEventListener("click",onResetBtn);setTextbox(getOriginalCode())},100);function interpret(code,input){window={};alert=function(s){stdout(s)};window.alert=alert;console.log=alert;prompt=function(s){if(input.length<1)stderr("not enough input");else{var nextInput=input[0];input=input.slice(1);return nextInput.toString()}};window.prompt=prompt;(function(){try{var evalResult=eval(code);if(typeof evalResult=="function"){var callResult=evalResult.apply(this,input);if(typeof callResult!="undefined")stdout(callResult)}}catch(e){stderr(e.message)}})()};</script>


এটির জন্য একটি ফাংশন ব্যবহার করতে কয়েক বাইট সংরক্ষণ করব .toString(16): x=>eval("for(x=(j=n=>n.toString(16))(x);/\\D/.test(x);)x=j(+x.replace(/\\D/g,z=>+('0x'+z)-9))")। এটি পুনরাবৃত্তি
ডাউনগোট

@ ডাউনগোট ধন্যবাদ! আমি .replaceস্ট্রিংটি মূল্যায়নের আগে চেষ্টা করতাম , তবে এটি আর দীর্ঘস্থায়ী হয়।
ETH প্রোডাকশনগুলি

এছাড়াও মনে রাখবেন যে আপনি এটিকে বেনামে একটি বেনামে করতে পারেনh=
কনার ও'ব্রায়েন

@ CᴏɴᴏʀO'Bʀɪᴇɴ পরামর্শের জন্য ধন্যবাদ, কিন্তু এটি কার্যকর হবে না, কারণ এটি নিজেই কল করা দরকার।
ETH প্রোডাকশনগুলি

গাহ! পুনরাবৃত্তিটি দেখেনি। আমি এবং বোকা> _ <
কনর ও'ব্রায়েন

6

সিজেম, 21 19 বাইট

r{siGb_{(9%)}%_@#}g

এটি এখানে পরীক্ষা করুন।

ব্যাখ্যা

একটি খুব নেতিবাচক মডিউল ফলাফল বিরল ক্ষেত্রে সহায়ক হচ্ছে। :)

r       e# Read input.
{       e# While the condition on top of the stack is truthy...
  s     e#   Convert to string. This is a no-op in the first iteration, but necessary
        e#   on subsequent iterations.
  i     e#   Convert to integer.
  Gb    e#   Get base-16 digits.
  _{    e#   Copy and map over the copy...
    (   e#   Decrement.
    9%  e#   Modulo 9. If the digit was originally in the range 0 to 9, it will remain
        e#   unchanged because -1 % 9 == -1. If the digit was in 10 to 15, it will become
        e#   0 to 5, respectively.
    )   e#   Increment. Undoes the decrement for unchanged digits and fixes the letter
        e#   digits because A corresponds to 1, not 0.
  }%
  _     e#   Duplicate result.
  @#    e#   Pull up original digits and try to find them in the array. This will be zero,
        e#   i.e. falsy, if they are equal and -1, i.e. truthy, if they are not.
}g

দেখে মনে হচ্ছে অন্য 153 টি ব্যর্থ হতে পারে? এটি বিশিষ্ট বলে মনে হয় যে শীর্ষ 4 টির মধ্যে 3 টির উত্তর একই হবে? cjam.aditsu.net/…
ডানা

4

রুবি, 35 + 1 = 36

কমান্ড-লাইন পতাকা সহ p, চালান

$_='%x'%$_
redo if$_.tr!'a-f','1-6'

ব্যাখ্যা:

-P পতাকাটি একটি লুপ তৈরি করে, ভেরিয়েবলের ইনপুট এবং পরিণামের আউটপুট সংরক্ষণ করে $_'%x'হেক্স রূপান্তর tr!করে এবং ডিজিটের প্রতিস্থাপন করে এবং পরিবর্তন করার মতো কিছু না থাকলে একটি মিথ্যা মান প্রদান করে। নতুন দিয়ে আবার শুরু হয় $_


4

জুলিয়া, 78 74 বাইট

f(x)=(h=hex(x);isdigit(h)?h:f(parse(replace(h,r"[a-z]",c->Int(c[1])-96))))

এটি একটি পুনরাবৃত্ত ফাংশন যা একটি পূর্ণসংখ্যা গ্রহণ করে এবং একটি স্ট্রিং প্রদান করে।

Ungolfed:

function f(x::Integer)
    # Get the hexadecimal representation of x as a string
    h = hex(x)

    # Check whether all characters are digits
    if isdigit(h)
        # Return the hexadecimal representation of the input
        h
    else
        # Replace each letter with its position in the alphabet,
        # parse as an integer, and call f on the result
        f(parse(replace(h, r"[a-z]", c -> Int(c[1]) - 96)))
    end
end

4

এমএটিএল , 23 25 বাইট

দাবি পরিত্যাগী

যদিও এই উত্তরটি লেখার আমি MATL এর একটি বাগ লক্ষ্য dec2baseফাংশন, এটা সংশোধন, এবং একটি মুক্তি নতুন সংস্করণ সংশোধন (সেইসাথে একটি দম্পতি অন্যান্য সঞ্চিত, সম্পর্কহীন পরিবর্তন)

যেহেতু আমি এমন একটি সংস্করণ ব্যবহার করছি যা এই চ্যালেঞ্জের চেয়ে পরে, সুতরাং মেটা সম্পর্কে sensকমত্য অনুসারে এই উত্তরটি জয়ের পক্ষে উপযুক্ত নয়

কোড

i`0:15YAt9X\t10ZQbb=~a]

উদাহরণ

>> matl i`0:15YAt9X\t10ZQbb=~a]
> 234589
958

ব্যাখ্যা

i             % input number
`             % do...while
  0:15YA      % convert number to representation with base defined by symbols 0,...,15
  t9X\        % duplicate vector. Modulus 9 with 0 replaced by 9      
  t10ZQ       % duplicate vector and convert to number using base 10
  bb=~a       % are second- and third-top stack elements different? (If so, next iteration)
]             % end        

আপনি ভাষাটির পুরানো সংস্করণে একটি উত্তর লিখতে পারেন!
lirtosiast

@ থমাসকওয়া সমস্যাটি হ'ল পুরানো সংস্করণে সংকলকটিতে একটি বাগ রয়েছে। আমি এটিকে নতুন সংস্করণে সংশোধন করেছি, যা স্পর্শকাতরভাবে কিছু (সম্পর্কযুক্ত) নতুন বৈশিষ্ট্যগুলি অন্তর্ভুক্ত করেছে
লুইস মেন্ডো

3

ডায়ালগ এপিএল, 37 36 33 বাইট

{∧/9≥X←16⊥⍣¯1⊢⍵:10⊥X⋄∇10(⊣⊥|+≤)X}

ধন্যবাদ আদম এবং ngn পরামর্শের জন্য। আমি এর 16⊥⍣¯1⊢⍵পরিবর্তে রাখছি ⍵⊤⍨⍴⍨16- এটি একটি অতিরিক্ত বাইট, তবে আমাদের 64-বিটের পরিবর্তে নির্বিচার আকারের সংখ্যায় পরিচালনা করতে দেয়।


-2 অধিকার বৈষম্য ফাংশন চয়ন করে:{∧/9≥X←16⊥⍣¯1⊢⍵:10⊥X⋄∇10⊥10|X+9<X}
আদম

1
বা এমনকি খাটো: 10⊥10|X+10≤X-> 10(⊣⊥|+≤)X(টেকনিক্যালি সমতুল্য নয়, কিন্তু হেক্স সংখ্যার জন্য কাজ করে)
ngn

1
16⊥⍣¯1⊢⍵->⍵⊤⍨⍴⍨16
এনজিএন


2

পিএইচপি, 140 126 122 114 112 87 বা 84 বাইট (সহ -r)

এটি আমার প্রথম কোডগল্ফ প্রচেষ্টা হিসাবে এর চারপাশের নিয়মগুলি কীভাবে পুরোপুরি নিশ্চিত নয় তবে কোডটি php -rপ্রয়োজন ছাড়াই চালানো যেতে পারে <?এবং?>

কোড

$b=readline();while($c!=$b)$b=preg_replace('/\D/e','ord($0)-96',$c=dechex($b));echo$c

বিন্যাসকৃত

$b=readline();
while($c!=$b){
  $b=preg_replace('/\D/e','ord($0)-96',$c=dechex($b));
}
echo "$b\n";

বিকল্প কোড (স্টিডিনের পরিবর্তে আরগভি ব্যবহার করে)

for($b=$argv[1];$c!=$b;)$b=preg_replace('/\D/e','ord($0)-96',$c=dechex($b));echo$b

বিন্যাসকৃত

for($b=$argv[1];$c!=$b;) {
  $b=preg_replace('/\D/e','ord($0)-96',$c=dechex($b));
}
echo $b;

নোট

সম্পাদনা 1: আমি intval()পিএইচপি হিসাবে 14 টি অক্ষর সংরক্ষণ করার জন্য একটি কল কেটে দিলাম আনন্দের সাথে সংখ্যার স্ট্রিংগুলিকে সংখ্যা হিসাবে বিবেচনা করবে।
সম্পাদনা 2: আমি \nআউটপুট থেকে সরিয়েছি যা পরীক্ষার পরে আমি অপসারণ করতে ভুলে গিয়েছিলাম এবং মোট 4 টি অক্ষর সংরক্ষণ করতে চূড়ান্ত প্রতিধ্বনি থেকে উদ্ধৃতি চিহ্নগুলি সরিয়েছি।
সম্পাদনা 3: intval()
সম্পাদনা 4- এ শেষ কলটি সরিয়ে ফেলা
: রেজেক্স লাইনটি থেকে উদ্ধৃতি চিহ্নগুলি সরিয়ে 2 বাইট সংরক্ষণ [a-f]করা \Dহয়েছে সম্পাদনা 5: 3 টি অক্ষর সংরক্ষণ করতে পরিবর্তিত হয়েছে , আরও 8 এর জন্য strvalকল সরিয়েছে preg_replace; যুক্ত করা সংস্করণ যা argv[]STDIN এর পরিবর্তে ব্যবহার করে, লুপ টার্মিনেটরে সরানো অবস্থায় স্টেটমেন্টে (ওফ!) আরও 11 টি অক্ষর সাশ্রয় করেছে এবং ডেসেক্স কলটিকে subjectঅংশের মধ্যে নিয়ে গেছেpreg_replaceআরও 3 জন্য, মোট 25 টি তৈরি; একটি বিকল্প সংস্করণ হিসাবে একটি অ স্টিডিন সংস্করণ যুক্ত করেছে যা 3 টি কম অক্ষর ব্যবহার করে। সহায়তার জন্য ধন্যবাদ, ব্ল্যাকহোল


কোড গল্ফ স্বাগতম! যেহেতু ট্যাগ না খালি ফাইলগুলি বৈধ পিএইচপি ফাইল, তাই আমরা সর্বদা পিএইচপিতে ট্যাগগুলি গণনা করি (বা বিকল্পভাবে, আমরা -rবিকল্পটির জন্য দুটি বাইট গণনা করি )। তবে একটি নেতৃত্ব ;সর্বদা একটি নেতৃত্বের চেয়ে কম হয় ?>, তাই এটি ভুলে যাবেন না। যাইহোক, এখানে একটি সংক্ষিপ্ত কোড: for($a=$argv[1];$b!=$a;)$a=preg_replace('#\D#e','ord($0)-96',$b=dechex($a));echo$b;(-29 বাইট)।
ব্ল্যাকহোল

ইনপুট দেওয়া 153উচিত 63, না 99। তবে -rবিনামূল্যে। ( কোডগল্ফ.মেটা.স্ট্যাকেক্সেঞ্জাওনএ /a/2428/55735 দেখুন )
তিতাস

2

আর , 106 103 102 বাইট

ifপরিবর্তে ব্যবহার করে -3 বাইটwhile

-1 বাইট as.doubleপরিবর্তে ব্যবহার করে জিউসেপিকে ধন্যবাদas.integer

a=function(y){x=as.hexmode(as.double(y))
if(grepl("[a-f]",x)){x=chartr("a-f","1-6",x);return(a(x))};x}

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

a(your_integer_here)ফলাফলটি দেখতে টিআইওতে যুক্ত করুন ।

> a(234589)
[1] "958"
> a(435234)
[1] "1617"
> a(99999)
[1] "4908"

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

সম্পাদনা: আমি এর sprint("%x",y)পরিবর্তে ব্যবহারের চেষ্টা করেছি as.hexmode(as.double(y)), তবে as.doubleকোডের কোথাও আমার এখনও ব্যবহার করা দরকার যা 2 বাইট দীর্ঘ ছিল।


as.doubleএর চেয়ে সংক্ষিপ্তas.integer
জিউস্পে

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

2

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

h[Au₂L‡hÐþQ#

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

h              # Convert the (implicit) integer-input to a hexadecimal string
               #  i.e. 234589 → "3945D"
 [             # Start an infinite loop:
  Au           #  Push the uppercase alphabet "ABC...XYZ"
    L         #  Push a list in the range [1,26]
              #  Transliterate: replace all letters with the integers at the same index
               #   i.e. "3945D" → "39454"
               #   i.e. "239B" → "2392"
       h       #  Convert the integer to a hexadecimal string again
               #   i.e. "39454" → "9A1E"
               #   i.e. "2392" → "958"
        Ð      #  Triplicate it
         þ     #  Leave only the digits of the last copy
               #   i.e. "9A1E" → "91"
               #   i.e. "958" → "958"
          Q    #  Check if these digits and the hexadecimal string are equal
               #   i.e. "9A1E" and "91" → 0 (falsey)
               #   i.e. "958" and "958" → 1 (truthy)
           #   #  And if they are: stop the infinite loop
               # (and output the remaining copy from the triplicate implicitly as result)

ÐþQএকই বাইট-কাউন্টের জন্য বিকল্পভাবে D.ï( D: সদৃশ ;: is_int?) হতে পারে ।


1
@ ম্যাজিক অ্যাক্টপাস ইউরান [hÐþQ#Au₂L‡সবসময় দুর্ভাগ্যজনকভাবে কাজ করে না। চ্যালেঞ্জটি প্রথমে একবার হেক্সে রূপান্তরিত করে এবং তারপরে প্রতিটি পুনরাবৃত্তিতে বলে। আমি যদি আমার টেস্ট স্যুটিতে আপনার কোডটি পেস্ট করি তবে প্রথম তিনটি পরীক্ষার কেস সঠিক, তবে শেষ দুটি ব্যর্থ।
কেভিন ক্রুইজসেন

2

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 92 বাইট

n=>{var s=$"{n:x}";for(;(s=$"{s.Aggregate(0,(a,c)=>10*a+c%48):x}").Any(c=>c>57););return s;}

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

কম গল্ফ কোড:

// anonymous function with
// input integer n
// output is a string
n=>{
  // 1) Convert the input to hexadecimal
  var s=$"{n:x}";
  for(;
    (s=$"{
      // 2) replace letters with their index in the alphabet
      s.Aggregate(0,(a,c)=>10*a+c%48)
      // 3) Convert the result back to hexadecimal
      :x}"
    // 4) If the result contains any letters, go to step 2
    ).Any(c=>c>57););
  // If not, output the result
  return s;
}

প্রশ্ন পোস্টের শেষের দিকে অনুসরণ করে, 153 এর ফলাফল 63 63 হতে পারে এবং ৯৯ এর মতো নয় যা আমার মনে হয় কিছুক্ষণ আগে আপনার ফাংশন ফিরে এসেছিল
রোজলুপি

1
@ রোসলুপ - এটি ডাব্লু / এই ১৫৩ কাজ করতে পেরেছি, যদিও এখন আমার সমাধানটি আরও দীর্ঘ হয়েছে :) আমি এটি আরও ছোট করার পক্ষে কাজ করব, তবে আপাতত কমপক্ষে এটি সেই মামলাটি সঠিকভাবে পরিচালনা করছে।
দানা

1

গণিত, 107 বাইট

(b=FromDigits)@NestWhile[b[#/.Thread[10~Range~15->Range@6]]~a~16&,#~(a=IntegerDigits)~16,MemberQ[a_/;a>9]]&

এটিকে গল্ফ করার আরও কোনও উপায় নিয়ে ভাবেন না ...


1

গণিত, 80 বাইট

i=IntegerDigits;f=FromDigits;f[#~i~16//.l_/;Max@l>9:>f[If[#>9,#-9,#]&/@l]~i~16]&

আমি আলেফালফার কাছ থেকে শিখেছি এমন সময়গুলির জন্য এটি একটি ঝরঝরে ট্রিক ব্যবহার করে। //."যতটা সম্ভব প্রায়ই এই প্রতিকল্পন নিয়ম প্রযোজ্য" হয়। তারপরে আমরা একটি প্যাটার্ন ব্যবহার করি, l_/;Max@l>9যা কেবলমাত্র হেক্সাডেসিমাল ডিজিটের তালিকায় 9 এর চেয়ে বেশি সংখ্যাসমূহের সাথে মেলে matches


1

জাপট, 45 40 বাইট

আমার জেএস উত্তরের উপর ভিত্তি করে:

I=_nG -9}H=_=ZsG)f/\D/ ?H$($ÂZr"\\D"I):Z

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

এটি এমন একটি ফাংশন তৈরি করে Hযা এইরকম বলা যেতে পারে:

I=_nG -9}H=_=ZsG)f/\D/ ?H$($ÂZr"\\D"I):Z}
$H(234589)$

বিকল্পভাবে, এখানে একটি সম্পূর্ণ প্রোগ্রাম রয়েছে, এসটিডিআইএন থেকে ইনপুট নিচ্ছে:

I=_nG -9}H=_=ZsG)f/\D/ ?H$($ÂZr"\\D"I):Z}H$(U

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


1

জিএনইউ শেড (ইওল এক্সটেনশন সহ), 44

:
y/ABCDEF/123456/
s/^/printf %X /e
/[A-F]/b

আমি আশা sedসম্ভব হবে y/A-F/1-6/। তবে তা হয় না।


1

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

সামগ্রিকভাবে, এটি বুমেরাংয়ের সমাধানের সাথে বেশ মিল , তবে এটি বিভিন্ন দিক থেকে কয়েকটি পৃথক পদ্ধতির প্রয়োজন।

def d(n):n=hex(int(n))[2:];return n.isdigit()and n or d(str([ord(c)%12for c in n])[1::3])

এটি আমার মূল কোডটির প্রসারিত সংস্করণ:

def d(n):
    n = int(n)                        # Interpret input as a decimal integer.
    n = hex(n)[2:]                    # Convert it to hex, stripping the '0x'.
    if n.isdigit():                   # If every character is a digit...
        return n                      # ...we're done.
    else:                             # Otherwise...
        n = ''.join(c if c < ':' else # ...don't change digits (':' is after
                    chr(ord(c - 48))  # '9'), but do change letters ('1' is 48
                    for c in n)       # characters before 'a').
        return d(n)                   # Then follow the process again.

@ পাচোলিককে 11 বাইট ধন্যবাদ জানানো হয়েছে ( joinএকক ক্রিয়াকলাপের অন্তর্গত জায়গাটি প্রতিস্থাপন করে যা অঙ্ক এবং অক্ষর উভয়ের জন্যই কাজ করে)। joinস্ট্রাইট-স্লাইসিং ট্রিকের পরিবর্তে আরেকটি বাইট ছাঁটাই হয়েছিল যা আমাকে হালকা আগুনের মুহূর্তে আঘাত করেছিল (তবে এটি পাইথন গল্ফিং টিপসে ইতিমধ্যে বিদ্যমান রয়েছে , যদিও পাইথন 2 নির্দিষ্ট করে এমন শিরোনামে))


joinথেকে সংক্ষিপ্ত করা যেতে পারে str(ord(c)%12)for c in n
পাচোলিক

1

জাভা, 201 বাইট

String f(int a){String s=Long.toString(a,16);while(s.matches(".*[a-z].*")){char[]b=s.toCharArray();for(int i=0;i<b.length;i++)if(b[i]>96)b[i]-=48;s=Long.toString(new Long("".valueOf(b)),16);}return s;}

1

জাপট , 21 বাইট

ìG
®+zA
eV ?U:ßVmuA ì

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

বিদ্যমান জাপা উত্তরের চেয়ে উল্লেখযোগ্য উন্নতি। এটি কোনও 153 -> 63মন্তব্যে প্রস্তাবিত কেসটি পরিচালনা করে না , তবে অন্য উত্তরগুলির কোনওটিরই মনে হয় না সুতরাং ওপি স্পষ্ট না করলে আমি এটিকে ছেড়ে দেব।

দশমিক সংখ্যাগুলির তালিকা হিসাবে আউটপুট, 1 বাইটের জন্য দশমিক সংখ্যা আউটপুট এ পরিবর্তন করা যেতে পারে

ব্যাখ্যা:

ìG               #Get a list of base-16 digits, each as a base-10 number
                    e.g. 234589 -> [3,9,4,5,13]

®+zA             #Increment the numbers greater than 10
                    e.g. [3,9,4,5,13] -> [3,9,4,5,14]

eV ?             #If the second step didn't change any digit:
    U            # Output the digits from step 1
     :           #Otherwise
      ß          # Repeat the program with new input:
       V         #  The result of step 2
        muA      #  With each digit modulo 10
            ì    #  Treated as a base-10 number

1

এপিএল (এনএআরএস) 104 চর, 208 বাইট

f←{k←10⊥{⍵≤9:⍵⋄1+10∣⍵}¨q←{(16⍴⍨⌊1+16⍟⍵)⊤⍵}⍵⋄9≥⌈/q:k,0⋄k,1}
t←{⍵≤0:0⋄0=2⊃v←f⍵:↑f↑v⋄{k←f⍵⋄0=2⊃k:↑k⋄∇↑k}⍵}

পরীক্ষা:

  t 153
63
  t 0
0
  t 234589
958
  t 435234
1617
  t ¯123
0

আমি জানি না এটি ঠিক আছে কিনা ... মানসম্পন্ন মানের উত্তরের জন্য এটি যথেষ্ট নয় ...


0

গুরুতরভাবে, 42 বাইট

1╤╝4ª╗,$1WX╛@¿╜@¡;`╜@¿;)╛;(\(+%$`Mεj;)=YWX

হেক্স ডাম্প:

31d1bc34a6bb2c24315758be40a8bd40ad3b60bd40
a83b29be3b285c282b2524604dee6a3b293d595758

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

এর চেয়ে আরও ছোট একটি উপায় থাকতে হবে, তবে আমি এটি পেয়েছি ... (এটি আমি নিজেকে Wপপ্পড করতে চেয়ে দেখি , যেহেতু ;শেষের আগে একটি অধিকার রাখা যখন ছোট হয় তখন আপনি এটির চেয়ে চান না একটি লাগাতে Xপ্রতিটি পর W। এখানে, থাকার Wউঁকি তিন বাইট বাঁচাতে হবে পরিবর্তে পপ।)



0

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

while($n++<2|$b-$a=&$argn)$a=strtr($b=dechex($a),abcdef,123456);echo$a;

পাইপ হিসাবে চালনা করুন-nR বা এটি অনলাইনে চেষ্টা করুন

পিএইচপি 7.1 এবং পরবর্তী কিছু ইনপুটগুলির জন্য একটি সতর্কতা সরবরাহ করে; ঠিক করার -সাথে প্রতিস্থাপন !=
পিএইচপি 7.2 এ অন্য সতর্কতা সরবরাহ করে; করা abcdefকোট ঠিক হবে।

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