বাইনারি থেকে নেব্যবাইনারি রূপান্তর করুন


15

ইনপুট হিসাবে 0এবং 1111111111111111(যেমন একটি 16-বিট স্বাক্ষরবিহীন পূর্ণসংখ্যা) এর মধ্যে অন্তর্ভুক্তভাবে একটি বাইনারি পূর্ণসংখ্যা দেওয়া হয় , একই পূর্ণসংখ্যাকে নেবাবাগরীতে আউটপুট দেয় ।

ইনপুটটি আপনার ভাষার জন্য যে কোনও বিন্যাসে সবচেয়ে সুবিধাজনক হতে পারে; উদাহরণস্বরূপ, যদি প্রোগ্রামটির পক্ষে 16 ডিজিটের সাথে ইনপুট হ্যান্ডেল করা সহজ হয়, যেমন সহজ সরল 0000000000000101নয় 101, আপনি কেবল সেইভাবে ইনপুট গ্রহণ করার জন্য প্রোগ্রামটি লিখতে পারেন।

নমুনা I / O

> 1
1
> 10
110
> 1010
11110
> 110111001111000
11011001110001000
> 1001001
1011001

এখানে আমি একটি নমুনা প্রোগ্রাম লিখেছি যা নেগেটিভ এবং অ-পূর্ণসংখ্যার বেসগুলি সহ বেস রূপান্তরগুলি করে। আপনি এটি আপনার কাজ পরীক্ষা করতে ব্যবহার করতে পারেন।


আরও কিছুটা স্পষ্ট করার জন্য, ইনপুট এবং আউটপুটটি বাইনারি হতে হবে, তাই না? মানে: 0s এবং 1s এর চরিত্রের স্ট্রিং । আমার কাছে স্পষ্ট মনে হচ্ছে তবে একটি উত্তর আমাকে হালকাভাবে সন্দেহ করে তোলে ...
জোয়ানিস

@ এম.জোয়ানিস ইনপুটটি বাইনারি, আউটপুট হ্রাসযুক্ত (যা বাইনারি হিসাবে হুবহু দেখতে পাওয়া যায় - শূন্য এবং একগুলির একটি স্ট্রিং - তবে সংখ্যাটি ব্যাখ্যা করার
পিটার ওলসন

2
লিঙ্কটি নীচে উপস্থিত বলে মনে হচ্ছে, যা আমাদের আজকাল প্রশ্নগুলি স্বয়ংসম্পূর্ণ হওয়া দরকার তার একটি প্রধান কারণ
জো কিং

উত্তর:


6

এপিএল, 21 টি অক্ষর

'01'[-(16/¯2)⊤-2⊥⍎¨⍞]

আমি এর জন্য ডায়ালগ এপিএল ব্যবহার করেছি, ⎕IO0 তে সেট করে, আমাদের সূচি অ্যারেগুলিকে 1 এর পরিবর্তে 0 থেকে শুরু করতে সহায়তা করে।

ডান থেকে বামে ব্যাখ্যা:

  • অক্ষর ভেক্টর হিসাবে আমাদের ব্যবহারকারীর ইনপুট দেয়।
  • ⍎¨পূর্বোক্ত বর্ণগুলির প্রতিটি ( ¨) এ এক্সিকিউট ফাংশন প্রয়োগ করে ( যার ফলে পূর্ণসংখ্যা 1 এবং 0 এর ভেক্টর হয়)।
  • 2⊥ বেস 2 থেকে ভেক্টরকে দশমিক হিসাবে ডিকোড করে।
  • - ফলাফল দশমিক পূর্ণসংখ্যার অবহেলা করে।
  • (16/¯2)⊤দশমিক পূর্ণসংখ্যাকে বেসের মধ্যে এনকোড করে ¯2( encণাত্মক 2)। ( 16/¯2প্রতিলিপি ¯2, 16বার, আমাদের নেতিবাচক সংখ্যা 16 উপার্জন।)
  • - আমাদের সদ্য এনকোডড সংখ্যার প্রতিটি উপাদানকে এড়িয়ে যায় (এর আগে এটি -1 এবং 0 এর সমন্বয়ে থাকে), যাতে আমরা এটি আমাদের অক্ষর ভেক্টরকে সূচক করতে ব্যবহার করতে পারি।
  • '01'[ ... ]'01'অবহেলিত অবহেলিত ভেক্টরের 0 এবং 1 ব্যবহার করে অক্ষর অ্যারে ( ) সূচক করে । এটি তাই আমরা একটি সুন্দর আউটপুট পেতে।

উদাহরণ:

      '01'[-(16/¯2)⊤-2⊥⍎¨⍞]
10111010001
0001101011010001

4

রুবি, 32 31 টি অক্ষর

m=43690
'%b'%(gets.to_i(2)+m^m)

অবহেলা গণনার শর্টকাট ব্যবহার করে ।


ইনপুটটি হার্ড কোডেড নয়। 0xAAAA ইনপুটটি নিচ্ছে না, এর মুখোশটি ইনপুটটিকে রূপান্তরিত করবে। 0xAAAA 101010101010101010 এর সমতুল্য, যা বাইনারিটিকে নেতিবাচক রূপান্তর করতে একটি এক্সওআর অপারেশনে ব্যবহৃত হয় .. ইনপুট নিজেই মূল শব্দটি থেকে আসে gets, যা এসটিডিএন থেকে প্রাপ্ত হয়।
স্টেফানো ডিয়েম বেনাট্টি

0xAAAA পরিবর্তন করে 43690 (যা দশমিক একই সংখ্যা) 1 দ্বারা অক্ষর সংখ্যা হ্রাস করতে ডাব্লুটিএফ যদিও এটি ঘটছে তা বোঝা শক্ত করে তোলে।
স্টেফানো ডিয়েম বেনাট্টি

আহ ঠিক আছে. আমি রুবি ভাল না তাই আমি নিশ্চিত ছিলাম না। এর জন্যে দুঃখিত.
Rɪᴋᴇʀ

3

গল্ফস্ক্রিপ্ট, 34 29 27 টি অক্ষর

n*~]2base{.2%\(-2/.}do;]-1%

একটি সাধারণ স্ট্রেইট-ফরোয়ার্ড পদ্ধতির। এটি বেশ আকর্ষণীয় যে সংক্ষিপ্ততম সংস্করণটি হ'ল এটি প্রথমে সংখ্যায় রূপান্তরিত হয় এবং তারপরে বেস -২ এ ফিরে আসে (কমপক্ষে সংক্ষিপ্ততম সংস্করণটি আমি এখন পর্যন্ত খুঁজে পেতে পারি)। তবে এটি সম্পর্কে সুন্দর জিনিসটি হ'ল এটিতে প্রায় 15% থাকে %

সম্পাদনা 1: বেস 2 এর জন্য আমরা একটি মডুলো অপারেশন সংরক্ষণ করতে পারি এবং উভয় লুপগুলিতে যোগ দিতে পারি।

সম্পাদনা 2: বাইনারি স্ট্রিংকে পূর্ণসংখ্যায় রূপান্তর করতে আমি একটি আরও ছোট কোড পেয়েছি।


3

হাস্কেল, 86 83 বাইট

import Data.Bits
import Data.Digits
c n|m<-0xAAAAAAAA=digits 2$xor(unDigits 2 n+m)m

সি ব্যবহার করে কল করুন এবং তারপরে অঙ্কগুলির জন্য একটি পূর্ণসংখ্য অ্যারে, যেমন

c [1,1]

পিএস: আমি নতুন, আমি কি এটি সঠিকভাবে জমা দিয়েছি?

সম্পাদনা: লাইকোনিকে ধন্যবাদ জানিয়ে কিছু বাইট সংরক্ষণ করা এবং কিছু টাইপও ঠিক করা

EDIT2: বিকল্পভাবে, সি :: স্ট্রিং -> স্ট্রিং:

import Data.Bits
import Data.Digits
c n|m<-0xAAAAAAAA=concatMap show.digits 2$xor(unDigits 2(map(read.(:[]))n)+m)m

114 বাইটের জন্য (তবে আপনি স্ট্রিং দিয়ে এটি কল করেছেন: c "11")


হ্যা তুমি করেছ! সাইটে স্বাগতম! আশা করি আপনি আটকে থাকবেন!
Rɪᴋᴇʀ

পিপিসিজিতে আপনাকে স্বাগতম! আপনি চারপাশে প্রথম বন্ধনী ফেলে দিতে পারেন undigits 2 n, কারণ ফাংশন অ্যাপ্লিকেশনটি এর চেয়ে শক্তিশালী বাঁধে +m। এছাড়াও আপনি বাঁধাই করে কিছু বাইট সংরক্ষণ করতে পারবেন mগার্ড মধ্যে: c n|m<-0xAAAAAAAA= ...
লাইকোনি

2

পাইথন (2.x), 77 টি অক্ষর

(ম্যানুয়ালি বেসটি স্যুইচ করার প্রয়োজনের কারণে অন্যান্য সমাধানগুলির মতো সংক্ষিপ্ত নয় ...) প্রয়োজনীয়তাগুলি পূরণ করতে হবে।

i=input();d=""
while i:i,r=i//-2,i%-2;i+=r<0;d+=`r+[0,2][r<0]`
print d[::-1]

আরও উন্নতির জন্য পরামর্শ স্বাগত!

এটিকে শুরু করার মতো মান সহ এটি খাওয়ান: 0b1001001


2

জাভাস্ক্রিপ্ট, 68 বাইট

function(b){for(r='',n=parseInt(b,2);r=(n&1)+r,n>>=1;n=-n);return r}

ES6 এ 52 বাইট হবে, তবে সেই চ্যালেঞ্জটির পরে-তারিখ রয়েছে:

b=>eval(`for(r='',n=0b${b};r=(n&1)+r,n>>=1;n=-n);r`)

2

জেলি , 4 বাইট, ভাষা পোস্টডেটস চ্যালেঞ্জ

Ḅb-2

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

অঙ্কের তালিকা হিসাবে ইনপুট নেয় এবং আউটপুট উত্পাদন করে।

ব্যাখ্যা

Ḅb-2
Ḅ     Convert binary to integer
 b-2  Convert integer to base -2

এটি স্পেসিফিকেশনের সরাসরি অনুবাদ মাত্র।


এটা কি প্রতিযোগিতা নয়? এই চ্যালেঞ্জটি '11 ... ... থেকে নেই
এখানে

আমি সেটা মিস করছিলাম. আমি হেডারে একটি নোট রাখব।

1

k, 17 বাইট নন-কেপেটিং

ব্যবহার করা কিছু বৈশিষ্ট্য সম্ভবত চ্যালেঞ্জের পরে পোস্ট করে।

1_|2!{_.5+x%-2}\2/

ইনপুটটি 1 এবং 0 এর তালিকা এবং আউটপুটটি 1 এবং 0 এর তালিকাও।

প্রোগ্রাম কাজ উদাহরণ।





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