একটি সংখ্যা হেক্সাডেসিমালে রূপান্তর করুন


23

চ্যালেঞ্জ

এখানে একটি সহজ।

ইনপুট হিসাবে বেস 10 তে একটি নম্বর দেওয়া হলে একটি ফাংশন বা প্রোগ্রাম লিখুন, এটি হেক্সাডেসিমালে এই সংখ্যার মানটি প্রিন্ট বা মুদ্রণ করবে ।

উদাহরণ

15 -> F
1000 -> 3E8
256 -> 100

বিধি

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

প্রথম সমস্যা, আপনি ছেলেরা উপভোগ আশা করি!
এলোমেলো গাই

5
আউটপুটে নেতৃস্থানীয় শূন্যগুলি অনুমোদিত, যেমন 32 বিট সংখ্যার জন্য 000003E8?
নিমি

ইনপুট কোন সীমা?
লুভজো

1
@ নিমিমি হ্যাঁ, এটি অনুমোদিত।
এলোমেলো গাই

1
মজাদার ঘটনা: সি ++ এর একটি হেক্স বিল্টিন রয়েছে।
ম্যাথু রোহ

উত্তর:


4

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

অবশ্যই এটি চালানো উচিত ⎕IO←0, এটি অনেকগুলি এপিএল সিস্টেমে ডিফল্ট।

(⎕D,⎕A)[16⊥⍣¯1⊢⎕]

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

(⎕D,⎕A)[]ডি আইজিগুলি একটি লিফাবেটে সম্মিলিত, তারপরে সূচিকৃত…

16⊥⍣¯1  ১ Base-বেস-টু-সংখ্যাটির বিপরীত, অর্থাত্ সংখ্যা-থেকে-বেস -১ 16

 আবেদন করা

 সংখ্যা ইনপুট


এটি কি 17 টি চর এবং প্রায় 23 বাইট না?
জুলি পেলেটিয়ার

1
@ জুলিপেল্টিয়ার নং, ডায়ালগ এপিএল নিজস্ব 256 অক্ষরের কোডেপেজ ব্যবহার করে।
অ্যাডম

উহু! জানা ভাল.
জুলি পেলেটিয়ার

14

ট্যুরিং মেশিন কোড, 412 বাইট

যথারীতি, আমি এখানে সংজ্ঞায়িত নিয়ম টেবিল সিনট্যাক্স ব্যবহার করছি আপনি এই সাইটে এটি পরীক্ষা করতে পারেন বা বিকল্পভাবে এই জাভা বাস্তবায়নটি ব্যবহার করে

0 * * l B
B * * l C
C * 0 r D
D * * r E
E * * r A
A _ * l 1
A * * r *
1 0 9 l 1
1 1 0 l 2
1 2 1 l 2
1 3 2 l 2
1 4 3 l 2
1 5 4 l 2
1 6 5 l 2
1 7 6 l 2
1 8 7 l 2
1 9 8 l 2
1 _ * r Y
Y * * * X
X * _ r X
X _ _ * halt
2 * * l 2
2 _ _ l 3
3 * 1 r 4
3 1 2 r 4
3 2 3 r 4
3 3 4 r 4
3 4 5 r 4
3 5 6 r 4
3 6 7 r 4
3 7 8 r 4
3 8 9 r 4
3 9 A r 4
3 A B r 4
3 B C r 4
3 C D r 4
3 D E r 4
3 E F r 4
3 F 0 l 3
4 * * r 4
4 _ _ r A

বেস 16-এ 0 থেকে গণনা করার সময় বেস 10-এ ইনপুট থেকে নীচে গণনা করা হয় zero


এটি সত্যিই দুর্দান্ত, 10*n + 33যেকোন স্বেচ্ছাসেবীর জন্য এটি সম্পূর্ণ করার জন্য নির্দেশনা নেয় n। আমি কোডটি যদিও বুঝতে পারি না।
ম্যাজিক অক্টোপাস উরন

@ ম্যাজিকঅ্যাক্টোপাস ইউরন এটি প্রাথমিকভাবে একটি 0 দিয়ে ইনপুটটির বাম দিকে কোষগুলির একটি নতুন ব্লক তৈরি করে Then হ্রাস চক্র [যা এটি জানায় যে ইনপুট ব্লকটি এখন 0], থামার আগে এটি টেপটি পরিষ্কার করে (সুতরাং কেবল আউটপুট টেপটিতে থাকে)।
সুপারজেডি ২৪

@ ম্যাজিক অ্যাক্টপাস ইউরান এছাড়াও রানটাইমের জন্য আপনার সমীকরণটি ভুল (আমি সঠিক সাধারণ সমীকরণটি কী তা জানি না, কেবল এটি পরিষ্কারভাবে নয়)। উদাহরণস্বরূপ 2 এর ইনপুট দিয়ে এটি ব্যবহার করে দেখুন।
সুপারজেডি ২৪

সম্ভবত না. যদিও উচ্চ মানের জন্য কাছাকাছি বলে মনে হচ্ছে। আমি এটি সম্পর্কে কিছুই জানি না এবং নিদর্শনগুলি দেখার চেষ্টা করছিলাম।
ম্যাজিক অক্টোপাস উরান

9

জাভা, 92 89 বাইট

String x(int v){String z="";for(;v>0;v/=16)z="0123456789ABCDEF".charAt(v%16)+z;return z;}

9

জাভাস্ক্রিপ্ট, 49 43 বাইট।

h=i=>(i?h(i>>4):0)+"0123456789abcdef"[i%16]

ব্যবহারকারী 81655 দ্বারা 6 বাইট সংরক্ষণ করা হয়েছে

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

এটিতে দুটি শীর্ষস্থানীয় জিরো রয়েছে, যা নিয়ম দ্বারা অনুমোদিত।

এখানে শিরোনামহীন একটি সংস্করণ রয়েছে: (47 বাইট)

h=i=>(i>15?h(i>>4):"")+"0123456789abcdef"[i%16]

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

এই উভয়ই আমার পাইথনের উত্তরের মতো একই পদ্ধতির ব্যবহার করে ।


বাইনারি এবং ব্যবহার করুন। i&15দশমিক ছাড়িয়ে স্বয়ংক্রিয়ভাবে পূর্ণসংখ্যায় রূপান্তরিত হবে। প্রয়োজন নেই~~
edc65

আমি 3 বাইট এবং একটি শূন্য শূন্য সংরক্ষণ করেছি:h=i=>i&&h(i>>4)+"0123456789abcdef"[i&15]
নীল

8

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

ri{Gmd_A<70s=+\}h;]W%

1 বাইট বন্ধ করে গল্ফ করার জন্য @ মার্টিনব্যাটনারকে ধন্যবাদ!

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

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

ri                      e# Read an integer from STDIN.
  {             }h      e# Do:
   Gmd                  e#   Push qotient and residue of the division by 16.
      _A<               e#   Check if the residue is less than 10.
         70s            e#   Push "70".
            =           e#   Select the character that corresponds to the Boolean.
             +          e#   Add the character to the digit.
                        e#   This way, 10 -> 'A', etc.
               \        e#   Swap the quotient on top of the stack.
                        e# While the quotient is non-zero, repeat the loop.
                  ;     e# Pop the last quotient.
                   ]W%  e# Reverse the stack.

5
একই বাইট গণনা:ri{Gmd_9>7*sc+\}h;]W%
মার্টিন ইন্ডার

6

পাইথ, 33 26 21 20 বাইট

এটি একটি মজার এক।

sm@+jkUTGi_d2_c_.BQ4

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

ব্যাখ্যা:

                .BQ      Convert input to a binary string, e.g. 26 -> '11010'
             _c_   4     Reverse, chop into chunks of 4, and reverse again. We reverse 
                         because chop gives a shorter last element, and we want a shorter
                         first element: ['1', '0101']
                         Reversing three times is still shorter than using .[d4 to pad the
                         binary string to a multiple of 4 with spaces.
 m                       Map across this list:
         i_d2                Take the value of the reversed string in binary,
  @                          and use it as an index into the string:
   +jkUTG                    '0123456789abcdefghijklmnopqrstuvwxyz'
                             (The alphabet appended to the range 0 to 10)
s                        Concatenate to create the final string.

আপনি একটি ব্যাখ্যা যোগ করতে পারেন?
তানমাথ

অবশ্যই, আপনি কোনটি সম্পর্কে আগ্রহী?
লুক

সবচেয়ে আন্তরিক উত্তর! ;) এতে কিছু আসে যায় না ... যদিও তাদের সবার জন্য ব্যাখ্যা পোস্ট করা ভাল ধারণা
তানমাথ

5

সি (ফাংশন), 51

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

f(n){n>>4?f(n>>4):0;n&=15;n+=n>9?55:48;putchar(n);}

পরীক্ষামূলক চালক:

#include <stdio.h>

f(n){if(n>>4)f(n>>4);n&=15;n+=n<10?48:55;putchar(n);}

int main (int argc, char **argv) {

    f(15);puts("");
    f(1000);puts("");
    f(256);puts("");
    f(0);puts("");

    return 0;
}

5

হাস্কেল, 59 58 43 41 39 বাইট

s="0123456789ABCDEF"
(sequence(s<$s)!!)

ব্যবহারের উদাহরণ: sequence(s<$s)!!) $ 1000-> "00000000000003E8"

এটি 16 হেক্স-ডিজিট পর্যন্ত সমস্ত হেক্সাডেসিমাল সংখ্যার একটি তালিকা তৈরি করে। ভাগ্যক্রমে এটি ক্রমে ঘটে তাই আমরা সহজেই এইটিকে বেছে নিতে পারি n

সম্পাদনা করুন: @ মরিস 2 বাইট আটকান। ধন্যবাদ!


ডেটা তালিকা মোনাড ডো
দেনিথ

@ ডেইনথ: আমি মোনাড থেকে
ফান্টেক্টরে চলেছি

কীভাবেs="0123456789ABCDEF";(sequence(s<$s)!!)
লিন

@ মরিস: দুর্দান্ত!
নিমি

4

ডিসি, 37

?[16~rd0<m]dsmxk[A~r17*+48+Pz0<p]dspx

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


4

পাইথন, 59 58 বাইট

h=lambda i:(i>15 and h(i/16)or'')+"0123456789abcdef"[i%16]

কার্পেট পাইথন দ্বারা 1 বাইট সংরক্ষণ করা হয়েছে

হিসাবে চালান: print h(15)

এটি এখানে পরীক্ষা করুন (Ideone.com)।

ব্যাখ্যা:

h=lambda i:                                                 # Define h as a function that takes two arguments
           (i>15 and h(i/16)or'')                           # Evaluate h(i/16) if i > 15, else, give ''
                                 +"0123456789abcdef"[i%16]  # Append (i%16)'th hexadecimal number.

1
চমৎকার কাজ. এছাড়াও আপনি অন্য একটি বাইট সংরক্ষণ করতে পারেন h=lambda i:(i>15 and h(i/16)or'')+"0123456789abcdef"[i%16]
লজিক নাইট 3

সত্যিই দুর্দান্ত কাজ, আপনি এর মতো আরও দুটি সংরক্ষণ করতে পারেন:h=lambda i:(i>15 and h(i/16)or'')+chr(48+i%16+i%16/10*7)
উইলিয়াম


3

বাশ (ফাংশন), 62

পুনরাবৃত্তি ব্যবহারের পরামর্শ দেওয়ার জন্য @ মান্যাটওয়ার্ককে ধন্যবাদ।

h()(x=({0..9} {A..F})
echo `(($1>15))&&h $[$1/16]`${x[$1%16]})

খুশী হলাম। তবে পুনরাবৃত্তির h(){ x=({0..9} {A..F});echo `(($1>15))&&h $[$1/16]`${x[$1%16]}; }
উপায়টি

1
@ মানাটওয়ার্ক চমৎকার - ধন্যবাদ! কোনও কারণে আমি সাধারণত ব্যাশে পুনরাবৃত্তি চেষ্টা করতে ভুলে যাই, যদিও আমি অন্যান্য উত্তরে এটি ব্যবহার করি using ()পরিবর্তে { ;}ফাংশনটির পরিবর্তে ব্যবহার করা শরীরের আরও বেশি সঞ্চয় করে :)
ডিজিটাল ট্রমা

3

পার্ল 6 ,  53  48 বাইট

{[R~] (0..9,'A'..'F').flat[($_,*div 16...^0)X%16]||0}
{[R~] (0..9,'A'..'F').flat[.polymod(16 xx*)]||0}

এটি মানগুলির একটি ক্রম তৈরি করে যা পূর্ণসংখ্যা বিভক্ত (divফলাফলটি ক্রম থেকে 0বাদ না 0দেওয়া পর্যন্ত এটি ) হয়

$_, * div 16 ...^ 0

এটি তখন অতিক্রম করে (X মডিউল অপারেটর ( %) এর সাহায্যে ব্যবহার ) that ক্রমটি করে16

(  ) X[%] 16

এটি দুটি রেঞ্জের সমন্বিত সমতল তালিকাতে সূচি হিসাবে সেই মানগুলি ব্যবহার করে 0..9 এবং'A'..'Z'

( 0 .. 9, 'A' .. 'Z' ).flat[  ]

অবশেষে এটি সম্মতি জানায় (~ বিপরীত ( R) মেটা অপারেটর ব্যবহার করে তাদের ( ) সম্মিলিত করে

[R[~]] 

যদি এর ফলস্বরূপ একটি মিথ্যা মান হয় (খালি স্ট্রিং), ফিরে আসুন 0

 || 0

ব্যবহার:

# (optional) give it a lexical name for ease of use
my &code = {  }

say <15 1000 256 0>.map: &code;
# (F 3E8 100 0)

say code 10¹⁰⁰;
# 1249AD2594C37CEB0B2784C4CE0BF38ACE408E211A7CAAB24308A82E8F10000000000000000000000000

2

এমএটিএল , 27 বাইট

i`16H#\wt9>?7+]wt]xN$hP48+c

এটি ভাষা / সংকলকের 5.1.0 রিলিজ ব্যবহার করে যা এই চ্যালেঞ্জের চেয়ে আগের is

উদাহরণ

>> matl
 > i`16H#\wt9>?7+]wt]xN$hP48+c
 >
> 1000
3E8

ব্যাখ্যা

i              % input number
`              % do...
  16H#\        % remainder and quotient of division by 16
  w            % move remainder to top of stack
  t9>          % does it exceed 9?
  ?            % if so
    7+         % add 7 (for letter ASCII code)
  ]            % end if
  w            % move quotient back to the top
  t            % duplicate 
]              % ...while (duplicated) quotient is not zero
x              % delete last quotient (zero)
N$h            % create vector of all remainders 
P              % flip vector
48+c           % add 48 and convert to char (will be implicitly displayed)

2

31, 31 অক্ষর / 62 বাইট

↺a=⬯;ï;ï≫4@a=⩥ḊĀⒸª⩥⁽ṁṇ⸩⨝[ï%Ḑ]+a

Try it here (Firefox only).

ঠিক আছে, আমি আরও কিছু জিনিস বের করেছিলাম যা এটি নীচে নেমে গেছে।

ব্যাখ্যা

এটি মূলত @ সুপারজেডি ২২৪ এর ES6 সমাধান হিসাবে একই সমাধান - তবে ভিন্ন কিছু সহ।

দেখুন ⩥ḊĀⒸª⩥⁽ṁṇ⸩⨝? এটি সত্যিই লেখার অভিনব উপায় "0123456789ABCDEF"⩥Ḋ0 থেকে 10 Ⓒª⩥⁽ṁṇ⸩পর্যন্ত একটি পরিসীমা তৈরি করে , 65 থেকে 71 পর্যন্ত একটি পরিসীমা তৈরি করে এবং এএসসিআইআইয়ের একটি স্ট্রিংয়ে রূপান্তর করে, এবংĀ...⨝ দুটি যোগ দেয়। এটি সম্ভবত আমার সমাধানের দুর্দান্ততম অংশ ছিল।

বোনাস অ-প্রতিযোগিতামূলক সংস্করণ, 24 অক্ষর / 45 বাইট

↺;ï;ï≫4@ᵴ=(⩥Ḋ⨝+ᶐ)[ï%Ḑ]+ᵴ

আমি পাইথের মতো একটি বর্ণমালা যুক্ত করার সিদ্ধান্ত নিয়েছি।


2

সেড, 341 বাইট

:
s/\b/_/2
s/[13579]/&;/g
y/123456789/011223344/
s/;0/5/g
s/;1/6/g
s/;2/7/g
s/;3/8/g
s/;4/9/g
s/;_;_;_;_/=/
s/;_;_;__/+/
s/;_;__;_/:/
s/;_;___/>/
s/;__;_;_/</
s/;__;__/?/
s/;___;_/(/
s/;____/*/
s/_;_;_;_/-/
s/_;_;__/^/
s/_;__;_/%/
s/_;___/$/
s/__;_;_/#/
s/__;__/@/
s/___;_/!/
s/____/)/
/[1-9_]/b
y/)!@#$%^-*(?<>:+=/0123456789ABCDEF/
s/^0*//

এটি এই চ্যালেঞ্জের জন্য স্পষ্ট ভাষা নয়, তবে এতে 4000 ডিজিট এবং আপনার সিস্টেমের উপলব্ধ (ভার্চুয়াল) মেমরির সীমাবদ্ধতার মধ্যে (আপনার প্রয়োগের উপর নির্ভর করে) ইনপুট সংখ্যাগুলি সমর্থন করার সুবিধা রয়েছে। আমি প্রায় 0.6 সেকেন্ডের মধ্যে আরএসএ -1024 হেক্সে রূপান্তরিত করেছি, সুতরাং এটি যুক্তিসঙ্গতভাবে ভাল স্কেল করে।

এটি একের পর এক বিভাজন দুটি ব্যবহার করে কাজ করে, প্রতি 4 টি বিটকে হেক্স ডিজিটে বহন করে। আমরা আমাদের আউটপুট উপস্থাপন করতে নন-লেটার অক্ষর ব্যবহার করি, যাতে আমরা সর্বদা দশমিক ইনপুট এবং হেক্স আউটপুটের মধ্যে বহন সংগ্রহ করি এবং একেবারে শেষের দিকে প্রচলিত হেক্সাডেসিমলে রূপান্তর করি।


2

পিএইচপি, 65 66 64 + 1 62 59 বাইট

function h($n){$n&&h($n>>4);echo"0123456789abcdef"[$n&15];}

রিকার্সিভ প্রিন্টিং ফাংশন, একটি নেতৃস্থানীয় শূন্য প্রিন্ট করে ( এটি সরিয়ে দেওয়ার >16আগে সন্নিবেশ করান &&)


প্রোগ্রাম, জন্য 64 বাইট +1 -R(পাইপ হিসাবে চালিত -nR)

for(;$n=&$argn;$n>>=4)$s="0123456789abcdef"[$n&15].$s;echo$s?:0;

পিএইচপি 5.6 বা তার পরে প্রয়োজন (5.5 স্ট্রিং লিটারেল সূচক করতে পারে না)

অথবা

for(;$n=&$argn;$n>>=4)$s=(abcdef[$n%16-10]?:$n%16).$s;echo$s?:0;

পিএইচপি 5.6 বা 7.0 প্রয়োজন (7.1 নেতিবাচক স্ট্রিং সূচকগুলি বোঝে)


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


1
আমি echo+$sইনপুট 0
জার্গ হালসারম্যান

+সাইন প্রথম অক্ষরে আউটপুট কেটে ... তাই ..?:0
টাইটাস

1

জুলিয়া, 55 বাইট

h(n)=(n>15?h(n÷16):"")"0123456789ABCDEF"[(i=n%16+1):i]

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

যদি ইনপুট 15 এর কম হয় তবে মেঝে এটিকে 16 দ্বারা ভাগ করুন এবং পুনরাবৃত্তি করুন, অন্যথায় খালি স্ট্রিংটি নিন। যথাযথভাবে নির্বাচিত হেক্সাডেসিমাল অক্ষরের সম্মুখভাগে এটিকে পরীক্ষা করুন।


1

চিতা , 98 বাইট

পাটিগণিত অপারেটরবিহীন ভাষায় এটি করা সম্ভবত একটি ভুল ছিল।

let h=def (n)(if n.gt(15)h(n.div(16).int!)else "").concat("0123456789abcdef".list!.get(n.mod(16)))

এটি ব্যবহার করুন:

do
  let h = ...
  print(h(15))
end

Ungolfed:

let h = def (n) do
    if n.gt(15) 
        let x = h(n.div(16).int!)
    else 
        let x = ""
    x.concat("0123456789abcdef".list!.get(n.mod(16)))
end


1

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

,`;4ª@%)4ª@\`╬Xε D`@;7ªD+@9<7*+c+`n

হেক্স ডাম্প:

2c603b34a640252934a6405c60ce58ee204460403b37a6442b40393c372a2b632b606e

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

ব্যাখ্যা:

,                                    Get evaluated input
 `          `╬                       Repeat the quoted function until top of stack is 0
  ;4ª@%                              Make a copy of the number mod 16
       )                             Send it to bottom of stack
        4ª@\                         Integer divide the original copy by 16
              X                      Delete the leftover zero. At this point the stack is 
                                     the "digits" of the hex number from LSD to MSD
               ε                     Push empty string
                 D`              `n  Essentially fold the quoted function over the stack.
                   @;                Roll up the next lowest digit, make a copy
                     7ªD+            Add 48
                         @           Bring up the other copy
                          9<         1 if it's at least 10, else 0
                            7*       Multiply with 7. 
                              +      Add. This will shift 58->65 and so on.
                               c     Convert to character.
                                +    Prepend to current string.

নোট করুন যে এর ;7ªD+@9<7*+cসমতুল্য 4ª▀E, যা 8 টি বাইট সাশ্রয় করতে পারে তবে আমি ভেবেছিলাম সম্ভবত কোনও ফাংশন যা বেজ বি অঙ্কগুলিকে স্ট্রিং হিসাবে ঠেলে দেয় তাকে "হেক্সাডেসিমাল বিল্ট-ইন" এর খুব বেশি বিবেচনা করা যেতে পারে।


1

জাভাস্ক্রিপ্ট ES6, 64 58 বাইট

v=>eval('for(z="";v;v>>=4)z="0123456789ABCDEF"[v%16]+z')

By nɟuɐɯɹɐ ן oɯ এবং ব্যবহারকারী 81655 এর জন্য 6 বাইট সংরক্ষণ করা হয়েছে।


1
Eval ব্যবহার করুন:v=>eval('for(z="";v;v=v/16|0)z="0123456789ABCDEF"[v%16]+z')
মামা ফান রোল

1
হ্যাঁ, দীর্ঘ স্ট্রিংয়ের জন্য atob এবং btoa ব্যবহার করে দেখুন।
মামা ফান রোল

@ ן nɟuɐɯɹɐ ן oɯ চেষ্টা করা v=>{for(z="";v>0;v=v/16|0)z=btoa``Ó]·ã»óÐ1``[v%16]+z;return z}(ডাবল টি ल्डস একক টিলিড ) ==> rs৪ অক্ষর, by১ বাইট। এর মূল্য নেই।
বন্ধুরা

1
v=v/16|0লেখার এক জটিল উপায় মাত্র v>>=4
ব্যবহারকারী 81655

1

বেফুঞ্জ -৩৩, 58

&:88+%"0"+:"9"`7*+\8/2/:!#|_#
,_@                       >:#

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

আপনি এটি মাধ্যমে এখানে পদক্ষেপ করতে পারেন । আংশিক ব্যাখ্যা:

&: ইনপুট নিন।

:88+%: বাকি 16 টি মডিউল নিন।

"0"+: এটির ASCII মান 0 যুক্ত করুন।

:"9"`: ফলাফলটি যদি 9 এর ASCII মানের চেয়ে বেশি হয় ...

7*+: এটি একটি চিঠিতে রূপান্তর করতে 7 যুক্ত করুন।

\: ফলস্বরূপ অক্ষরটিকে স্ট্যাকের মধ্যে সংরক্ষণ করুন।

8/2/: ১ round রাউন্ড ডাউন করে ভাগ করুন।

:!#|_: ফলাফলটি 0 হলে লুপ থেকে প্রস্থান করুন।

#: অন্যথায় মডিউল পদক্ষেপে ফিরে যান।

>:#,_@ (চারপাশে মোড়ানো): একবার শেষ হয়ে গেলে, LIFO ক্রমে স্ট্যাক আউটপুট করুন।


1

> <> , 46 + 3 = 49 বাইট

এটি সংক্ষিপ্ত হত যদি> <> এর পূর্ণসংখ্যা বিভাগ থাকত, যা এখন আমাদের মডিউল 1 বিয়োগ করে অনুকরণ করতে হবে তবুও, আমি মনে করি এটি কৌশলগুলির চারপাশে কিছু সুন্দর ঝরঝরে মোড়ানো ব্যবহার করে!

>:?!v:f1+%:a(?v  v
\-%1:,+1f}+"0"<+7<
!?:r/ro;

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

ব্যাখ্যা

প্রথম লুপ

>:?!v:f1+%:a(?v  v
\-%1:,+1f}+"0"<+7<

প্রথম লুপটি ক্লাসিককে হেক্স অ্যালগরিদমে রূপান্তর করে। এটি মডুলো 16 ( :f1+%) করে এবং ফলাফল <10 ( :a(?) হয় কিনা তা পরীক্ষা করে । যদি তা না হয়, 7+তবে ASCII সারণীতে দশমিকগুলি থেকে মূলধন বর্ণমালায় যেতে আমাদের 7 ( ) যুক্ত করতে হবে। অন্যথায়, আমরা 0 ( "0"+) এর জন্য ASCII মান যুক্ত করে এবং অক্ষরটিকে স্ট্যাকের নীচে আউটপুট হিসাবে স্থানান্তরিত করে এগিয়ে যেতে পারি কারণ আমাদের তাদের বিপরীত ক্রমে আউটপুট দিতে হবে। তারপরে শীর্ষ মানটি তার পূর্ণসংখ্যা বিভাগের ফলাফল দ্বারা 16 দ্বারা প্রতিস্থাপিত হয় This এটি a / b - (a / b)% 1 ( f1+,:1%-) গণনা করে অনুকরণ করা হয় । লুপটি শেষ হয়ে গেলে, স্ট্যাকটিতে বিপরীত আউটপুট ক্রম এবং 0 তে হেক্সাডেসিমাল অক্ষর থাকে।

দ্বিতীয় লুপ

!?:r<ro;

দ্বিতীয় লুপটি তালিকাটিকে বিপরীত করে এবং শীর্ষ উপাদানটি 0 হয় কিনা তা পরীক্ষা করে থাকে যদি এটি হয় তবে আমরা জানি যে সমস্ত ননজারো মুদ্রিত ছিল এবং আমাদের শেষ করা উচিত। অন্যথায়, আমরা অক্ষরের আউটপুট এবং পরবর্তী পুনরাবৃত্তির জন্য প্রস্তুত করতে আবার তালিকাটিকে বিপরীত করি। :প্রবেশ দ্বিতীয় লুপ 0 যা কোনো প্রভাব নেই প্রতিলিপি হবে।


0

স্পেসবিএএস - 110 বাইট

1 h$="0123456789ABCDEF",r$=""
2 INPUT d
4 q=INT(d/16),r=d-(q*16),r$=h$(r+1)+r$,d=q
5 IF q>15 THEN 4
6  ?h$(q+1)+r$

এটি উইকিহোতে (২ য় পদ্ধতি) পাওয়া আলগোরিদিম ব্যবহার করে ।

স্পেসবিএজে স্ট্রিংগুলি 1-ভিত্তিক, সুতরাং +1সঠিক উপাদানটি বেছে নেওয়া।



0

রুবি, 40 বাইট

মানটওয়ার্কের উত্তরে অনুপ্রাণিত হয়ে চুরি , তবে এটি আরও খাটো করার জন্য একটি আকর্ষণীয় লুফোল ব্যবহার করে।

h=->n{(n>15?h[n/16]:'')+(n%16).to_s(17)}

0

রেক্সএক্স, 80 78 বাইট

arg n
h=
do while n>0
  h=substr('0123456789ABCDEF',n//16+1,1)h
  n=n%16
  end
say h

0

সি, 48 বাইট

h(x){x/16&&h(x/16);x%=16;putchar(x+=48+x/10*7);}

এটি সম্পূর্ণরূপে আসল নয়, আমি ডিজিটাল ট্রমা আপ করা সংস্করণটি থেকে 5 বাইট কামিয়েছি।


0

এপিএল (এনএআরএস), 34 টি অক্ষর, 68 বাইট

{⍵≤0:,'0'⋄(∇⌊⍵÷16),(1+16∣⍵)⊃⎕D,⎕A}

পরীক্ষা:

  g←{⍵≤0:,'0'⋄(∇⌊⍵÷16),(1+16∣⍵)⊃⎕D,⎕A}
  g 0
0
  g 100
064
  g 1000
03E8
  g 1
01
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.