"0x ব্যবহারকারীর নাম" রূপান্তর করা


25

0xUsernames

মেসেজিং পরিষেবা ব্যবহার করে এমন অনেক লোক রয়েছে যে তারা সমস্ত ব্যবহারকারীর নাম সংরক্ষণের জন্য স্থান ছাড়িয়ে চলেছে! এটি ঠিক করার জন্য, তারা যেখানে সম্ভব সেখানে হেক্সাডেসিমাল হিসাবে ব্যবহারকারীর নাম সংরক্ষণ করতে শুরু করবে।

যদি কোনও ব্যবহারকারীর নামটিতে কেবলমাত্র অক্ষর থাকে 0123456789ABCDEF(কেস সংবেদনশীল), তবে এটি একটি হেক্সাডেসিমালে রূপান্তরিত হতে পারে এবং একটি পূর্ণসংখ্যা হিসাবে সংরক্ষণ করা যেতে পারে। উদাহরণস্বরূপ, ব্যবহারকারীর নামটি হেক্সাডেসিমাল পূর্ণসংখ্যা ba5eba11হিসাবে ব্যাখ্যা করা যায় 0xBA5EBA11

তবে কি 05AB1E? এটি একটি শীর্ষস্থানীয় শূন্য পেয়েছে, যা হারিয়ে যাবে। সুতরাং, যখনই আমরা কোনও ব্যবহারকারীর নাম রূপান্তর করি, আমরা 1এটি পূর্ণসংখ্যা হিসাবে পড়ার আগে একটি পূর্বেই তা নিশ্চিত করি।


চ্যালেঞ্জ

আপনার টাস্কটি এমন একটি প্রোগ্রাম বা ফাংশন লিখতে হবে যা একটি শূন্য খালি ব্যবহারকারীর নামটি স্ট্রিং হিসাবে দেওয়া হয়, 'হেক্সা-সংক্ষেপণ' ব্যবহারকারীর নাম:

  • যদি এটি হেক্সাডেসিমাল পূর্ণসংখ্যা হিসাবে ব্যাখ্যা করা যায়, একটি 1 পূর্বে চাপ দিন, হেক্সাডেসিমাল হিসাবে ব্যাখ্যা করুন এবং তারপরে ফলাফলটি বেস 10 হিসাবে মুদ্রণ করুন
  • অন্যথায়, কেবল স্ট্রিংটি অশোধিত অবস্থায় ফিরিয়ে দিন।

এটি , তাই সংক্ষিপ্ততম সমাধান (বাইটে) জিতে! অন্তর্নির্মিত বেস রূপান্তর ফাংশন অনুমোদিত।


পরীক্ষার মামলা

আপনি ধরে নিতে পারেন যে কোনও ফলাফল প্রাপ্ত পূর্ণসংখ্যাগুলি আপনার ভাষার মানক পূর্ণসংখ্যার ব্যাপ্তির মধ্যে।

বেশিরভাগ মেসেজিং সিস্টেমে ব্যবহারকারীর নাম হিসাবে, ইনপুট স্ট্রিংগুলিতে কেবলমাত্র বর্ণমালা এবং আন্ডারস্কোর থাকবে।

মনে রাখবেন, 1রূপান্তর করার আগে আপনাকে সর্বদা একটি শীর্ষস্থানীয় যুক্ত করা দরকার !

"ba5eba11" -> 7421737489
"05AB1E"   -> 17148702
"dec0de"   -> 31375582
"Beef"     -> 114415    
"da7aba5e" -> 7960443486
"500"      -> 5376

"DENNIS" -> "DENNIS"
"Garth"  -> "Garth"
"A_B_C"  -> "A_B_C"
"0x000"  -> "0x000"

রেফারেন্সের জন্য, আমি এখানে পরীক্ষাগুলির ক্ষেত্রে (অযুগলিত) একটি পাইথন 3 বাস্তবায়ন ব্যবহার করেছি:

import re

def convert_name(name):
    if re.fullmatch('^[0-9A-Fa-f]+$', name):
        return int('1' + name.upper(), base = 16)
    else:
        return name

আহ, দেখেনি। এছাড়াও, যদি কোনও বৃহত্তর পরীক্ষার ক্ষেত্রে আমাদের ভাষার বৃহত্তম সংখ্যার সীমা ছাড়িয়ে সংখ্যার ফলাফল হয়?
ডোরকনবব

2
@ ডুরকনব ভাল ক্যাচ আমি বলব যে ফলস্বরূপ পূর্ণসংখ্যা কখনই আপনার ভাষার মানক পূর্ণসংখ্যার চেয়ে বেশি হবে না। (দয়া করে
এটির

ইনপুটটি কেবল বড়হীন বলে ধরে নেওয়া কি ঠিক হবে?
অ্যাডাম

@ অ্যাডম দুঃখিত, তবে আপনার প্রোগ্রামটি কেস সংবেদনশীল হওয়া উচিত (পরীক্ষার কেস দেখুন)
ফ্লিপট্যাক

উত্তর:


27

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

D1ìH

ব্যাখ্যা

D    Duplicate input
 1ì  Prepend 1
   H Interpret as hexadecimal and implicitly display the value in base 10

যদি ইনপুটটিতে অবৈধ হেক্স অক্ষর থাকে তবে Hকোনও কিছুই চাপবে না তাই স্ট্যাকের শেষ মানটি নকল করা ইনপুট হবে, এ কারণেই অবৈধ ইনপুট ক্ষেত্রে প্রোগ্রামটি তার ইনপুট প্রিন্ট করে।

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


9
বিদ্রূপ এখানে বেশ শক্তিশালী। 05AB1Eএকটি বৈধ ব্যবহারকারীর নাম।
ডেভরিচার

1
এটা ঠিক, তবে নামটি হেক্সাডেসিমাল সংখ্যা হিসাবে বেছে নেওয়া হয়েছিল । অতএব এটি বৈধ :)
অযোগ্য

ভাবছেন কেন আপনি বোকা বানাচ্ছেন? পরিবর্তে use ব্যবহারের উপায়ের কথা ভাবার চেষ্টা করছি ....
ম্যাজিক অক্টোপাস উর্ন

16

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

s=>'0x1'+s-0||s

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

'0x1'+sইনপুটটিকে একটি শোধিত 1উদাহরণস্বরূপ আক্ষরিক হেক্সাডেসিমাল স্ট্রিংয়ে রূপান্তর করে 0x105ab1e। তারপরে -0একটি সংখ্যায় ফলাফল ছড়িয়ে দেয়। জাভাস্ক্রিপ্ট 0xশুরুতে দেখুন এবং সুস্পষ্টভাবে হেক্সাডেসিমাল থেকে রূপান্তর করার চেষ্টা করে; যদি sকোনও অ-হেক্সাডেসিমাল অক্ষর থাকে তবে এটি প্রত্যাবর্তন করে NaN। যেহেতু এটি মিথ্যা হয় (এবং প্রিপেন্ড করা 0হওয়ার কারণে আউটপুট কখনই দেওয়া যায় না 1), তাই হেক্স রূপান্তর ব্যর্থ হলে আমরা ||sফিরে আসতে ব্যবহার করতে পারি s

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

f = s=>'0x1'+s-0||s

for(i of [
  "ba5eba11", "05AB1E", "dec0de", "Beef", "da7aba5e", "500",
  "DENNIS", "Garth", "A_B_C", "0x000"
]) console.log(i + ":", f(i));


2
খুব সুন্দর সমাধান!
Grax32

অন্তর্ভুক্ত
castালাই

10

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

উদ্ধৃত স্ট্রিং হিসাবে ইনপুট নেয়। -২ বাইট রডকে ধন্যবাদ!

a=input()
try:exec'a=0x1'+a
except:1
print a

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

আমি এর চেয়ে আরও কম সংক্ষেপে একটি রেজেক্স ম্যাচ তৈরি করতে পারি না try/except। প্রকৃতপক্ষে, রেজেক্স ভয়াবহ ভার্বোস হিসাবে দেখা গেছে:

import re
lambda n:re.match('^[0-9A-F]+$',n,2)and int('1'+n,16)or n

আপনার কাছে প্রতিস্থাপন করতে পারেন a=int('1'+a,16)সঙ্গে exec'a=0x1'+a(সম্ভবত, পরীক্ষা করার প্রয়োজনীয়তা)
ডান্ডা

আপনি জানেন, আমি ঠিক সঠিকভাবে গল্ফ করা চালিয়ে গেলে আমাদেরও ঠিক একই উত্তর দিতে হবে?
অ্যান্টনি ফাম

ব্যবহারকারীর নামগুলির জন্য কাজ করে না যা প্রসঙ্গে যথাযথ পাইথন হবে "+input()"
হেনরিচ ৫৯৯১

"এবিসি" এর জন্য ব্যর্থ হয়েছে (শেষের দিকে
শ্বেত স্পেসটি

পাইথন 2 এর জন্য এটি ঠিক কীভাবে হয় তা আমি জানি না তবে আমি মনে করি আপনি বন্ধনীগুলি সরিয়ে ফেলতে পারেন()input()
রুডলফ জেলিন


7

পার্ল, 27 বাইট

-1 বাইট ধন্যবাদ_আরদনিউকে ধন্যবাদ ।

26 বাইট কোড + -pপতাকা।

$_=hex"1$_"if!/[^0-9a-f]/i

চূড়ান্ত নিউলাইন ছাড়াই ইনপুট সরবরাহ করুন । সঙ্গে echo -nউদাহরণস্বরূপ:

echo -n 05AB1E | perl -pe '$_=hex"1$_"if!/[^0-9a-f]/i'

ব্যাখ্যা
এটি বেশ সোজা এগিয়ে: /[^0-9a-f]/iযদি ইনপুটটিতে হেক্সাডেসিমাল সংখ্যার অভ্যন্তরে অনুমোদিত কোনও অক্ষর থাকে তবে সত্য। যদি এটি মিথ্যা হয়, $_(যা ইনপুট ধারণ করে) এটি রূপান্তরিত মানতে সেট করা হয় (রূপান্তরটি বিল্টিন দ্বারা সম্পন্ন হয় hex)।
এবং $_স্পষ্টভাবে -pপতাকা মুদ্রণ ধন্যবাদ ।


আপনি $_=hex"1$_"if!/[^0-9a-f]/i
টেরিনারি

@ আর্দ্নিউ হুম, এখন আপনি যে কথাটি বলছেন, সেই তিনকানাটি বেশ ভয়াবহ ছিল ... যাইহোক, ধন্যবাদ!
দাদা


3

ব্যাচ, 33 বাইট

@(cmd/cset/a0x1%1 2>nul)||echo %1

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

একটি স্ট্রিং আর্গুমেন্ট হিসাবে প্রেরণ করা হয়, 1 এটিতে চাপ দেওয়া হয় এবং স্ট্রিংটি স্পষ্টতই দশমিক এবং মুদ্রিত রূপান্তরিত হয়। স্ট্রিংটি বৈধ হেক্সাডেসিমাল না হলে এটি কেবল প্রদর্শিত হয়।

এটা লক্ষনীয় যেহেতু ব্যাচ গণিত ব্যবহারের স্বাক্ষরিত 32-বিট ইন্টিজার সবচেয়ে বড় অনুমতি ব্যবহারকারী নাম হল যে FFFFFFF

cmd /c পরবর্তী কমান্ডটি নেয়, এটি একটি নতুন টার্মিনালে চালায় এবং প্রস্থান করে।

set /a গণিত সম্পাদন করে এবং ফলকটিতে কোনও সঞ্চিত না হলে ফলকে সুস্পষ্টভাবে দশমিক ফলাফল প্রদর্শন করে।

0x1%1 প্রথম আর্গুমেন্টে 1 টি প্রেন্ডেন্ট করার জন্য সেটকে বলছে (সমস্ত ব্যাচের ভেরিয়েবলগুলি স্ট্রিং হওয়ায় এটি সহজ) এবং ইঙ্গিত দেয় যে স্ট্রিংটি হেক্সাডেসিমাল হিসাবে গণ্য করা উচিত।

2>nul একটি অবৈধ হেক্সাডেসিমাল সংখ্যা থেকে প্রাপ্ত কোনও ত্রুটি নিরব করে

||লজিকাল ওআর এবং বাম দিকের কমান্ডটি সফল না হলে ডানদিকে কমান্ডটি সম্পাদন করে। প্রথম বন্ধনীগুলি এই পয়েন্ট ওয়ান কমান্ড পর্যন্ত সবকিছু তৈরি করে।

echo %1 কেবল প্রথম যুক্তি প্রদর্শন করে।


3

কমন লিস্প, 71

(lambda(n)(or(ignore-errors(parse-integer(format()"1~A"n):radix 16))n))

টেস্ট

ফাংশন সংজ্ঞায়িত করুন

CL-USER> (lambda(n)(or(ignore-errors(parse-integer(format()"1~A"n):radix 16))n))
#<FUNCTION (LAMBDA (N)) {10041D213B}>

প্রশ্নের দ্বারা প্রদত্ত প্রত্যাশিত ইনপুটগুলির একটি তালিকা উদ্ধৃত করুন:

CL-USER> '("ba5eba11" -> 7421737489
"05AB1E"   -> 17148702
"dec0de"   -> 31375582
"Beef"     -> 114415    
"da7aba5e" -> 7960443486
"500"      -> 5376

"DENNIS" -> "DENNIS"
"Garth"  -> "Garth"
"A_B_C"  -> "A_B_C"
"0x000"  -> "0x000")
("ba5eba11" -> 7421737489 "05AB1E" -> 17148702 "dec0de" -> 31375582 "Beef" ->
 114415 "da7aba5e" -> 7960443486 "500" -> 5376 "DENNIS" -> "DENNIS" "Garth" ->
 "Garth" "A_B_C" -> "A_B_C" "0x000" -> "0x000")

এটি বিশ্লেষণ করুন এবং ফলাফল সংগ্রহ করুন

CL-USER> (loop for (in _ out) on * by #'cdddr
               collect (list in out (funcall ** in)))
(("ba5eba11" 7421737489 7421737489) ("05AB1E" 17148702 17148702)
 ("dec0de" 31375582 31375582) ("Beef" 114415 114415)
 ("da7aba5e" 7960443486 7960443486) ("500" 5376 5376)
 ("DENNIS" "DENNIS" "DENNIS") ("Garth" "Garth" "Garth")
 ("A_B_C" "A_B_C" "A_B_C") ("0x000" "0x000" "0x000"))

প্রত্যাশিত ফলাফলগুলি প্রকৃতের সাথে মেলে তা পরীক্ষা করে দেখুন:

CL-USER> (every (lambda (x) (equalp (second x) (third x))) *)
T

2

সি, 108 বাইট

i;f(char*s){char*S=malloc(strlen(s)+2);*S=49;strcpy(S+1,s);sscanf(S,"%x%c",&i,&i)<2?printf("%d",i):puts(s);}

এটি এমন একটি ফাংশন যা স্ট্রিংটিকে একটি আর্গুমেন্ট হিসাবে গ্রহণ করে এবং ফলাফলটি STDOUT এ মুদ্রণ করে।

i;                           // declare i as an int
f(char*s){
char*S=malloc(strlen(s)+2);  // allocate space for a new string with 1 more char
*S=49;                       // set the first char to '1' (ASCII 49)
strcpy(S+1,s);               // copy the original string to the remainder
sscanf(S,"%x%c",&i,&i)       // scan a hex integer followed by any char
<2?                          // if less than 2 items were scanned (i.e. the hex
                             // integer made up the entire string),
printf("%d",i)               // output the hex integer
:puts(s);}                   // otherwise, output the original string

অন্তর্নিহিত এর দুর্দান্ত ব্যবহার int:)
ফ্লিপট্যাক

2

জাভাস্ক্রিপ্ট: 46 41 বাইট

s=>/[^\dA-F]/i.test(s)?s:parseInt(1+s,16)

রেজেক্স 2 বাইট ছোট হতে পারে:/[^0-9a-f]/i
গিলজেড

কেস-সংবেদনশীল পতাকা (ধন্যবাদ @ গিলজেড) এবং অপসারণ করে আরও 2 টি বাইট যোগ করে আমি 3 বাইট প্রতিস্থাপন 0-9করে 1 বাইট সংরক্ষণ করেছি , যা প্রয়োজন নেই। পরামর্শের জন্য ধন্যবাদ. \dF=
লুক 16

2

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

hex2bin () ইনপুটটি বৈধ হেক্স স্ট্রিং না হলে মিথ্যা ফিরিয়ে দেয়। এটি হেক্স অ অংকগুলির সন্ধানের জন্য রেজেক্স ব্যবহার করার চেয়ে কম, তবে আমাদের @ অপারেটরের প্রয়োজন কারণ এটি ব্যর্থ হয়ে গেলে নিরব থাকে না।

<?=@hex2bin($s=$argv[1])?hexdec("1$s"):$s;

hex2binঅসম দৈর্ঘ্যের সাথে স্ট্রিং ব্যর্থ হয়। preg_matchযদিও এর চেয়ে কম দুটি বাইট : <?=@hex2bin($s=$argv[1])|@hex2bin($s.a)?hexdec("1$s"):$s;57 বাইটের জন্য।
তিতাস

2

bash, 46 35 31 বাইট

(echo $[0x1$1])2> >(:)||echo $1

একটি স্ক্রিপ্ট হিসাবে সংরক্ষণ করুন, এবং একটি আর্গুমেন্ট হিসাবে ব্যবহারকারীর নাম পাস করুন।


1

পাইথন 2 - 63, 52, 50, 46 বাইট

n=input()
try:n=int("1"+n,16)
except:1
print n

এটি পাইথনের ব্যবহার করে int()যা কোনও উপযুক্ত স্ট্রিংকে তার উপযুক্ত বেসের সাথে বেস 10 এ রূপান্তর করে this এই ক্ষেত্রে, স্ট্রিংটি ইনপুটটির সাথে সংযুক্ত 1 নম্বর। যদি ইনপুটটি অবৈধ থাকে ( 0123456789ABCDEF(কেস-সংবেদনশীল ব্যতীত অন্য কোনও অক্ষর থাকে ), এটি ফিরে আসে ValueError:

n = input()                   # Get input (with quotes)
try:                          # Trying conversion to base 10
    n = int("1"+n,16)        
except:                       # If invalid string for base 36,
    1                         # do nothing to n
print n                       # Print result

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

15 ফ্লাইট সংরক্ষণের জন্য @ ফ্লিপট্যাককে ধন্যবাদ!


স্ট্রিংটি যদি শূন্য দিয়ে শুরু না হয়? আপনার কেবল স্ট্রিংয়ের বাম দিকে একটি যুক্ত করা উচিত যদি এটি একটি শূন্য দিয়ে শুরু হয়।
0WJYxW9FMN

@ ফ্লিপট্যাক ওফস, আমাকে বোকা বানাও।
0WJYxW9FMN

1

রুবি, 47 44 বাইট

p gets=~/^[a-f\d]+\s$/i?('1'+$&).to_i(16):$_

আমি পারে পরিবর্তন করে 3 বাইট অপসারণ putsজন্য p, কিন্তু আমি আউটপুট মত ভুল বিবেচিত হবে যেহেতু এটি শেষে একটি newline হয়েছে মনে হয়।

সম্পাদনা: অনুসরণযোগ্য নতুনলাইনগুলি সাধারণত গৃহীত হিসাবে পরিবর্তিত putsহয়েছে p, ধন্যবাদ @ মেগো।


STDOUT- এ চলমান নিউলাইনগুলি সাধারণত গ্রহণযোগ্য বলে মনে করা হয়।
মেগো

1

জাপট , 11 বাইট

+`0x1{U}`ªU

অনলাইনে চেষ্টা করে দেখুন!

ইটিএইচ প্রডাকশনগুলিতে অনেক ধন্যবাদ!


1
এই বিরল ক্ষেত্রে যেখানে আপনি স্থান :-) পরিত্রাণ পেতে পারেন এক (এছাড়াও, Tio লিঙ্ক প্রোগ্রাম "হ্যালো, ওয়ার্ল্ড!")
ETHproductions

1

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

কোনও অন্তর্নিহিত বৈধতা বা হেক্স-ডিস রূপান্তর ব্যবহার করে না। প্রয়োজন ⎕IO←0অনেক সিস্টেমে পূর্বনির্ধারিত।

{∧/(u1(819⌶)⍵)∊d←⎕D,6↑⎕A:161,du⋄⍵}

Ungolfed:

{
    d  D , 6  A
    u1 (819⌶) 
    ∧/ u  d: 16  1 , d  u
    
}

d ← ⎕D , 6 ↑ ⎕Aডি পেয়ে যায় ডি আইগটস এর পরে এলফ্যাবেটের প্রথম 6 টি উপাদান

u ← 1 (819⌶) ⍵আপনি আপারকেসড (819 ≈ "বিগ") আর্গুমেন্ট পান

∧/ u ∊ d: যদি সমস্ত উপাদান U সদস্য , তারপর:
16 ⊥ 1 , d ⍳ u সূচকের এটি তোমার দর্শন লগ করা মধ্যে , শুরুতে যোগ একটি 1 এবং বেস 16 যেমন মূল্যায়ন

অন্য: (অশোধিত) যুক্তিটি ফিরিয়ে দিন

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

  1. সেট ⎕IOশুন্যতে জন্য একটি প্রতিস্থাপন সংজ্ঞায়িত (নিরাপত্তার কারণে TryAPL নিষিদ্ধ), এবং সেট ⎕PP( পি দ্রণ পি বৃহৎ ফলাফলের জন্য recision) থেকে 10

  2. সমস্ত পরীক্ষার কেস চেষ্টা করে দেখুন


1

জন্য REXX, 49 48 বাইট

signal on syntax
pull a
a=x2d(1||a)
syntax:
say a

signal on syntaxঅনুবাদক বলে লেবেলে ঝাঁপ syntaxযখনই একটি বাক্য গঠন ত্রুটি দেখা দেয়। প্রোগ্রামটি aএকটি শীর্ষস্থানীয় 1 সহ একটি হেক্স-টু-দশমিক রূপান্তরিত সংস্করণ দিয়ে পুনরায় সাইন ইন করার চেষ্টা করে , তবে syntaxযদি এটি ব্যর্থ হয় তবে লেবেলে লাফ দেয় । যদি রূপান্তরটি পাস হয় তবে এটি কেবল লেবেলটিকে উপেক্ষা করে এবং পুনরায় স্বাক্ষর করা ভেরিয়েবলকে আউটপুট করে।


2
আপনি কি দয়া করে আপনার কোডটি ব্যাখ্যা করতে পারেন
অ্যান্থনি ফ্যাম

0

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

param($v)(($h="0x1$v"|iex),$v)[!$h]

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

ব্যাখ্যা

  1. প্যারামিটার নিন ($v )
  2. দ্বি-উপাদান অ্যারে তৈরি করুন যেখানে একই উপাদানটিকে একই সাথে নির্ধারিত করার সময় প্রথম উপাদান ( 0) 0x1$vপাইপযুক্ত Invoke-Expression( iex) তে থাকা স্ট্রিংয়ের ফলাফল $h। যদি রূপান্তর ব্যর্থ হয়,$h যাবে $null
  3. অ্যারের দ্বিতীয় উপাদানটি হ'ল আসল প্যারামিটার।
  4. এর বুলিয়ান -notমান সহ অ্যারেতে সূচক $h। যা আছে $hতা স্পষ্টভাবে রূপান্তরিত হবে [bool]( $nullঅবৈধ রূপান্তরের $falseক্ষেত্রে একটি সফল ধর্মান্তরের ক্ষেত্রে একটি ইতিবাচক পূর্ণ $trueসংখ্যার পরিণত হবে ) যা প্রত্যাখ্যান হওয়ার আগে, যা পরে [int]স্পষ্টতই অ্যারে সূচক দ্বারা রূপান্তরিত হবে []( $trueহবে 1, $falseহবে 0), সুতরাং রূপান্তরটি সফল হলে অ্যারের প্রথম উপাদানটিকে (রূপান্তর ফলাফল) চয়ন করা হয়েছিল এবং রূপান্তরটি ব্যর্থ হলে দ্বিতীয় উপাদানটি নির্বাচিত হয়েছিল।

0

স্কালা, 40 বাইট

s=>try{BigInt("1"+s,16)}catch{case e=>s}

ব্যবহার:

val f:(String=>Any)=s=>try{BigInt("1"+s,16)}catch{case e=>s}
f("ba5eba11") //returns 7421737489

ব্যাখ্যা:

s=>                //define a anonymous function with a parameter called s
  try {              //try...
    BigInt("1"+s,16)   //to contruct a BigInt from "1" prepended to the number, parsing it as base 16
  } catch {          //if the constructor throws an exception
    case e =>          //in case of an execption which we'll call e
      s                  //return s
  }

0

সি #, 58 বাইট

u=>{try{u=Convert.ToInt64("1"+u,16)+"";}catch{}return u;};

পরীক্ষার কেসগুলিতে অসমাপ্ত:

using System;
class Class
{
    public static void Main()
    {
        Func<string, string> convert = 
            u=>
            {
                try
                {
                    u = Convert.ToInt64("1" + u, 16) //Prepends "1" and tries to convert the string to and integer using base 16.
                        + ""; //Appending an empty string converts the integer to a string. Shorter than calling .ToString()
                }
                catch { } //If the conversion fails catch the exception and discard it.
                return u; //Return the result, or the unmodified input if the conversion failed.
            };

        Console.WriteLine(convert("ba5eba11"));
        Console.WriteLine(convert("05AB1E"));
        Console.WriteLine(convert("dec0de"));
        Console.WriteLine(convert("Beef"));
        Console.WriteLine(convert("da7aba5e"));
        Console.WriteLine(convert("500"));
        Console.WriteLine(convert("DENNIS"));
        Console.WriteLine(convert("Garth"));
        Console.WriteLine(convert("A_B_C"));
        Console.WriteLine(convert("0x000"));
        Console.Read();
    }
}

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


0

ডার্ট, 51 বাইট

(s)=>int.parse('1$s',radix:16,onError:(_)=>null)??s

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

ওভারহেড বেশিরভাগই নামযুক্ত প্যারামিটার থেকে আসে ... ওহ ভাল!

কমপক্ষে ডার্ট আপনাকে গতিশীল টাইপ করতে দেয়, আপনি যদি চান: ডি

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