বিবি-বাইনারি রূপান্তর করুন


25

বিবি-বাইনারি হ'ল উচ্চারণ মজাদার মনে হয় এমন বর্ণগুলিতে সংখ্যার প্রতিনিধিত্ব করার জন্য ববি ল্যাপিন্টের উদ্ভাবিত একটি সংখ্যাসূচক সিস্টেম ।

আপনার কাজ হ'ল দশমিক সংখ্যাগুলিকে বিবি-বাইনারি রূপান্তর করা!

রূপান্তর

একটি সংখ্যা বেস 16 (হেক্সাডেসিমাল) এ রূপান্তরিত হয় এবং প্রতিটি অক্ষর তার বিবি-বাইনারি নাম দ্বারা প্রতিস্থাপিত হয়:

0 = HO
1 = HA
2 = HE
3 = HI
4 = BO
5 = BA
6 = BE
7 = BI
8 = KO
9 = KA
A = KE
B = KI
C = DO
D = DA
E = DE
F = DI

আসুন Nএকটি ধনাত্মক পূর্ণসংখ্যা (1 -> 2 ^ 31-1 এর মধ্যে)। হেক্সাডেসিমাল উপস্থাপনার প্রতিটি চরিত্রের জন্য N, তার অনুসারে বিবি-বাইনারি জুটি (উপরের টেবিলটিতে সমস্ত জোড়া রয়েছে) দ্বারা অক্ষরটি প্রতিস্থাপন করুন।

উদাহরণ

  • N = 156
  • H= (হেক্সাডেসিমালের উপস্থাপনা N) -> 9 সি
  • 9 -> কেএ, সি -> ডিও করুন

সুতরাং আউটপুট KADO হয়।

ইনপুট আউটপুট

আপনি একটি ইতিবাচক 32-বিট পূর্ণসংখ্যা পাবেন Nযা আপনাকে বিবি-বাইনারিতে রূপান্তর করতে হবে।

আপনি যে কোনও সুবিধাজনক ফর্ম্যাটে (রিটার্ন, প্রিন্ট, ইত্যাদি ...) করতে পারেন, তবে জোড়াটি সংযুক্ত করতে হবে ! সুতরাং KA DOঠিক হবে না, কিন্তু KADOহবে।

ছোট এবং বড় হাতের উভয়ই অনুমোদিত।

বিধি

  • কোনও ফাঁক নেই।
  • এটি কোড-গল্ফ, তাই সংক্ষিপ্ততম কোডটি জয়ী।

Testcases

2048 -> KOHOHO
156 -> KADO
10000 -> HEBIHAHO
12 -> DO

অনুমানটি বলে মনে হচ্ছে যে ইনপুটটি এক বিভাগে অ-নেতিবাচক এবং অন্য ক্ষেত্রে ইতিবাচক হবে - আপনি দয়া করে কোনটি উদ্দেশ্য করে তা স্পষ্ট করে বলতে পারেন?
Sp3000

@ Sp3000 ধনাত্মক উদ্দেশ্য। আমি এটি সম্পাদনা করব, ধন্যবাদ!
Yytsi

আপনার অনুমানটি এখনও 0 -> 2 ^ 31-1 এর মধ্যে বলে , তবে 0 ইতিবাচক নয় (ইংরাজীতে)।
ডেনিস

@ ডেনিস আমি 0টিকে ইতিবাচক হিসাবে বিবেচনা করেছি। আমি এটি সম্পাদনা করব। উল্লেখ করার জন্য ধন্যবাদ!
ইয়তসি

@ টুকুএক্সএক্স 0 হ'ল ধনাত্মক এবং অ-নেতিবাচক মধ্যে পার্থক্য।
মনিকা পুনরায়

উত্তর:


10

05 এ বি 1 ই , 20 18 16 বাইট

hv…ÂkdžM¨ÁâyHèJ

ব্যাখ্যা

h                     # convert input to hex
 v                    # for each
  …Âkd               # string of the possible first Bibi-binary letters
       žM¨Á           # string of the possible second Bibi-binary letters
           â          # cartesian product to produce list of Bibi-binary pairs
            yH        # convert hex char to base 10
              è       # use this to index into the list
               J      # join

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

আদনানকে ধন্যবাদ 2 বাইট সংরক্ষণ করা


…Âkdএর সংকোচিত সংস্করণ "hbkd"
আদনান

এছাড়াও, এটি সম্ভব কিনা তাও আমি নিশ্চিত নই তবে Hএকটি হেক্সাডেসিমাল সংখ্যাটি বেস 10 এ রূপান্তর করি
অ্যাডনান

11

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

f=lambda n:(n>15and f(n/16)or"")+"HBKD"[n/4%4]+"OAEI"[n%4]

একটি পুনরাবৃত্তি সমাধান। আইডিয়নে চেষ্টা করে দেখুন


2
f=lambda n:n*'_'and f(n/16)+"HBKD"[n/4%4]+"OAEI"[n%4]5 বাইট সঞ্চয়
ডেনিস

আমি আমার মন্তব্য মুছে ফেলেছি। ওপি স্পষ্ট হয়েছে এবং ইনপুট 0 অবৈধ।
ডেনিস

4

পাইথন 2, 81 76 বাইট

lambda n:''.join('HBKD'[int(x,16)/4]+'OAEI'[int(x,16)%4]for x in hex(n)[2:])

বিবি-অঙ্কগুলিতে নিদর্শনগুলির উপর ভিত্তি করে প্রতিটি হেক্স ডিজিটকে উপস্থাপন করতে বিবি-সংখ্যা নির্বাচন করে।


4

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

f=n=>n?f(n>>4)+'HBKD'[n/4&3]+'OAEI'[n&3]:''

10 টি বাইট সংরক্ষণ করা হয়েছে (আর n = 0 এর জন্য সমর্থন নেই)

ডেমো

var f=n=>n?f(n>>4)+'HBKD'[n/4&3]+'OAEI'[n&3]:''

console.log(f(2048));   // -> KOHOHO
console.log(f(156));    // -> KADO
console.log(f(10000));  // -> HEBIHAHO
console.log(f(12));     // -> DO


আপনি কি এখনই সংক্ষিপ্ত করতে পারবেন যে শূন্যের আর কোনও প্রয়োজন নেই?
নীল

3

পাইথ, 28 বাইট

L+?>b15y/b16k@*"HBKD""OAEI"b

একটি ফাংশন সংজ্ঞা দেয় y। মূলত আমার পাইথনের উত্তরের মতো একই অ্যালগরিদম ।

ব্যাখ্যা:

L                            # Define a function, y, with an argument, b.
  ?>b15                      # If b > 15, then:
       y/b16                 # Call y with b / 16, else:
            k                # The empty string.
 +                           # Append with
              *"HBKD""OAEI"  # The Cartesian product of "HBKD" and "OAEI". Gives all the letter pairs in order
             @             b # Get the b'th number from that list. Because @ in Pyth is modular, we don't need to take b % 16.

এখানে চেষ্টা করুন! (শেষে অতিরিক্ত দুটি অক্ষর কেবলমাত্র ফাংশনটি কল করার জন্য)


3

জেলি , 17 বাইট

b⁴d4ị"€“BKDH“AEIO

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

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

b⁴d4ị"€“BKDH“AEIO  Main link. Argument: n

b⁴                 Convert n to base 16.
  d4               Divmod 4; map each base-16 digit k to [k / 4, k % 4].
       “BKDH“AEIO  Yield ["BKDH", "AEIO"].
      €            For each quotient-remainder pair [q, r]:
    ị"               Yield "BKDH"[q] and "AEIO"[r] (1-based indexing).

3

রুবি, 55 51 বাইট

একটি পুনরাবৃত্তি বেনামে ফাংশন:

f=->i{(i>15?f[i/16]:'')+'HBKD'[i%16/4]+'OAEI'[i%4]}

এটির সাথে উদাহরণস্বরূপ কল করুন f[156]এবং এটি ফিরে আসবে"KADO"


3

জে, 35 33 বাইট

[:,(,/'HBKD',"0/'OAEI'){~16#.inv]

পূর্ণসংখ্যা [0, 16) এর জন্য বিবি-বাইনারি মানগুলির সারণি তৈরি করে, তারপরে ইনপুট রূপান্তর করে n কে বেস 16 সংখ্যার তালিকায় এবং প্রতিটি হেক্স ডিজিটের জন্য সংশ্লিষ্ট বিবি-বাইনারি নাম নির্বাচন করে।

@ রেন্ডোমাকে ধন্যবাদ 2 বাইট সংরক্ষণ করা হয়েছে।

ব্যবহার

   ,/'HBKD',"0/'OAEI'
HO
HA
HE
HI
BO
BA
BE
BI
KO
KA
KE
KI
DO
DA
DE
DI

এই অংশটি প্রতিটি হেক্স ডিজিটের বিবি-বাইনারি নামের জন্য 16 x 2 টি বর্ণচিহ্ন তৈরি করে।

   f =: [:,(,/'HBKD',."0 1'OAEI'){~16#.inv]
   f 156
KADO
   f 2048
KOHOHO

ব্যাখ্যা

,/'HBKD',"0/'OAEI'
  'HBKD'    'OAEI'  Constant char arrays
        ,"0/        Form the table of joining each char with the other
,/                  Join the rows of that table

[:,(,/'HBKD',."0 1'OAEI'){~16#.inv]  Input: n
                                  ]  Identity function, get n
                           16#.inv   Performs the inverse of converting an array of
                                     hex digits meaning it converts a value to a list of
                                     hex digits
   (,/'HBKD',."0 1'OAEI')            Create the bibi-binary names of each hex digit
                         {~          For each hex digit, select its bibi-binary name
[:,                                  Join the names to form a single string and return

'HBKDOAEI'{~[:(+0 4$~$)4#.inv]
ফ্রাউনফ্রোগ

3

পার্ল, 52 51 বাইট

এর জন্য +1 অন্তর্ভুক্ত -p

STDIN এ নম্বরটি দিয়ে চালান

bibi.pl <<< 156

bibi.pl:

#!/usr/bin/perl -p
1while$\=(<{H,B,K,D}{O,A,E,I}>)[$_%16].$\,$_>>=4}{

3

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

@ টিটাসের অবদান আপনাকে ধন্যবাদ

for($n=$argv[1];$n;$n>>=4)$r=HBKD[$n/4&3].OAEI[$n&3].$r;echo$r;

72 বাইট শূন্যের সাথেও কাজ করে

do$r=OAEIHBKD[$t*4+($n=&$argv[1])%4].$r;while(($t=!$t)|$n=$n>>2);echo$r;

76 বাইট বিকল্প সংস্করণ

for($i=2*strlen(dechex($n=$argv[1]));$i;)echo HBKDOAEI[$i%2*4+$n/4**--$i%4];

এটি ব্যবহার করে দেখুন:for($n=$argv[1];$n;$n>>=2)$r=HBKDOAEI[$n%4+4*$t=!$t].$r;echo$r;
টাইটাস

1
এছাড়াও: আপনি আপনার প্রথম সংস্করণ থেকে কোঁকড়ানো গল্ফ ভুলে গেছেন।
তিতাস

for($n=$argv[1];$n;$n>>=4)$r=HBKD[$n/4&3].OAEI[$n&3].$r;echo$r;এছাড়াও by৩ বাইট বা আরনৌল্ডসের একটি বন্দর 61১ এর জন্য উত্তর:function f($n){return$n?f($n>>4).HBKD[$n/4&3].OAEI[$n&3]:'';}
টাইটাস

@ টিটাস আপনার প্রথম সংস্করণটি 1 বা 16 এর ইনপুট দ্বারা সঠিকভাবে কাজ করে না ice সুন্দর আমি বুঝতে পারি নি যে শূন্যটি ইনপুট হিসাবে আর অনুমোদিত নয়
জার্গ হ্যালসারম্যান

হ্যাঁ, ঠিক খেয়াল এটি Hপ্রথম জায়গায় মুদ্রণ করতে পারে না। দ্বিতীয়টি নিন।
তিতাস

2

রুবি, 85 83 বাইট

->x{x.to_s(16).chars.map{|d|"HOHAHEHIBOBABEBIKOKAKEKIDODADEDI"[2*d.to_i(16),2]}*''}

স্ট্রিংটি এনকোড না করে কেবল একটি দ্রুত এবং সহজ সমাধান।


2

পাইথ, 21 বাইট

sm@*"HBKD""OAEI"djQ16

একটি প্রোগ্রাম যা STDIN থেকে কোনও পূর্ণসংখ্যার ইনপুট নেয় এবং ফলাফলটি মুদ্রণ করে।

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

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

sm@*"HBKD""OAEI"djQ16  Program. Input: Q
                 jQ16  Yield decimal digits of the base-16 representation of Q as a list
    "HBKD"              Possible first letters
          "OAEI"        Possible second letters
   *                    Cartesian product of those two strings
  @                     Index into the above
 m              d      Map that across the digits list
s                      Concatenate
                       Implicitly print

2

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

$a=HBKDOAEI;$h=dechex($argv[1]);while($h{$i}!=''|$c=hexdec($h{$i++}))echo$a{$c/4}.$a{4+$c%4};

এটি মূলত কোঁকড়া ধনুর্বন্ধনী উপর সংরক্ষণ করতে যখন বিবৃতিতে ইন্টিগ্রেটেড হেক্সাডেসিমাল ফাংশন এবং সামান্য কৌশল অবলম্বন করে।


2

জাভা, 224 বাইট

class N{public static void main(String[]a){String x="0HO1HA2HE3HI4BO5BA6BE7BI8KO9KAaKEbKIcDOdDAeDEfDI";for(int c:Long.toHexString(Long.valueOf(a[0])).toCharArray()){c=x.indexOf(c)+1;System.out.print(x.substring(c++,++c));}}}

লং টাইপের কিছু লুক টেবিল ট্র্যাকারির ব্যবহারটি পূর্ণসংখ্যার তুলনায় কয়েক বাইট ছাঁটাই করা ছিল


2

সিজোম , 20 বাইট

qiGb"HBKD""OAEI"m*f=

এটি অনলাইন চেষ্টা করুন!(লাইনফিড-বিচ্ছিন্ন পরীক্ষার স্যুট হিসাবে))

ব্যাখ্যা

qi      e# Read input and convert to integer.
Gb      e# Get hexadecimal digits.
"HBKD"  e# Push this string.
"OAEI"  e# Push this string.
m*      e# Cartesian product, yields ["HO" "HA" "HE" "HI" "BO" ... "DE" "DI"].
f=      e# For each digit, select the corresponding syllable.

2

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

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

∊(,'HBKD'∘.,'OAEI')[16⊥⍣¯1⊢⎕]

তালিকাভুক্তি (সম্পূর্ণ সমতল করা)

(...

, রাভেলড

'HBKD'∘.,'OAEI' সংক্ষিপ্ত টেবিল (যেমন সমস্ত কম্বো)

)[ সূচক দ্বারা ...

16⊥⍣¯1 বেস -16 থেকে বেস 10 (যেমন বেস -10 থেকে বেস 16) উপস্থাপনের বিপরীত

এর

সংখ্যার ইনপুট

]

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


1

লুয়া, 196 বাইট

function(n)s=""t={"H","B","K","D"}p={"O","A","E","I"}while n>0 do s=n%4 ..s n=math.floor(n/4)end s=("0"):rep(#s%2)..s o=nil return s:gsub(".",function(s)o=not o return o and t[s+1]or p[s+1]end)end

লুয়া এই ধরণের কোনও কাজের জন্য বিরক্তিকর, কারণ এটি ডিফল্ট হিসাবে একটি হেক্স বা বাইনারি রূপান্তর পদ্ধতি ধারণ করে না। বেশিরভাগ মাংস এটিকে বেস 4 এ রূপান্তর করে চলেছে তার পরে আমরা যদি 0 ব্যবহার করার প্রয়োজন হয় s=("0"):rep(#s%2)তবে আমাদের জিএসব ব্যবহার করে সমস্ত ডেজেটগুলি তাদের বিআইবিআই সমমর্যাদায় প্রতিস্থাপন করে।


0

চিপ , 174 বাইট

 z---.
!+ZZZ^~s
Axxx])~-vv/c
Ex]xx' ,x]/b
Bxxx])~^}~/d
Fx]xx'g*-}^a
Cxx])v]--/c
G]xx'>x~v/d
Dxx])x+-]/a
H]xx'`}--/b
 )x)-----'
Axx].zv~S
Bxx]+^'
Cxx]<
Dxx]<
E]v-'
F]<
G]<
H]'

এটি অনলাইন চেষ্টা করুন!টিআইওতে একটি ব্যাশ মোড়ক অন্তর্ভুক্ত রয়েছে যা একটি পূর্ণসংখ্যার স্ট্রিংটিকে আসল 32-বিট পূর্ণসংখ্যার মানকে রূপান্তর করে।

বাইনারি উপাত্তের সাথে সম্পর্কিত অক্ষরের উপরের অর্ধেকটি মুদ্রণ করে, নীচের অর্ধেকটি শনাক্ত হয়ে যায় যে আমরা আকর্ষণীয় ডেটাতে পৌঁছে গেছি (অন্য কথায়, আমরা নেতৃস্থানীয় শূন্যগুলি এড়িয়ে চলেছি all সমস্ত নেতৃস্থানীয় শূন্যগুলি মুদ্রণ করতে, দ্বিতীয় লাইনটি সরিয়ে ফেলুন যা দিয়ে শুরু হয় Aএবং নীচে.

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