স্ট্রিং টু বাইনারি


19

এটি একটি কোড গল্ফ চ্যালেঞ্জ। শিরোনামের মতোই, এসকিআই অক্ষরের একটি স্ট্রিং বাইনারি রূপান্তর করতে একটি প্রোগ্রাম লিখুন।

উদাহরণ স্বরূপ:

"Hello World!" মধ্যে পরিণত করা উচিত 1001000 1100101 1101100 1101100 1101111 100000 1010111 1101111 1110010 1101100 1100100 100001

দ্রষ্টব্য: আমি একটি পাইথ বাস্তবায়নে বিশেষভাবে আগ্রহী।


1
আমরা বিপরীত জিজ্ঞাসা করেছি: কোডগল্ফ.স্ট্যাকেক্সেঞ্জার
প্রশ্নস

1
আমি লক্ষ্য করেছি। কেন আমি এই প্রশ্নটি জিজ্ঞাসা করেছি তার একটি বীজগাথা রয়েছে। আমি আমার বন্ধুকে প্রোগ্রামিং শিখতে উত্সাহিত করেছি এবং তিনি গত গ্রীষ্মে একটি জাভা ক্লাস নিয়েছিলেন যেখানে প্রতিটি শিক্ষার্থীকে একটি প্রকল্প বেছে নিতে হয়েছিল। তিনি আমাকে বলেছিলেন যে তিনি পাঠ্যটি বাইনারি-তে অনুবাদ করতে চেয়েছিলেন, যা আমি তখন (তার হতাশার জন্য) পাইথন 3-এ 1 লাইনে (খুব দীর্ঘ লাইন) দিয়েছিলাম। আমি এটি অবিশ্বাস্য মনে করি যে তার প্রকল্পের ধারণাটি 8 টি বাইটে নিস্তৃত হতে পারে।
এরিকমার্কমার্টিন

1
এটি দুর্দান্ত, ভাগ করে নেওয়ার জন্য ধন্যবাদ! আমি এর মতো সহজ প্রশ্ন পছন্দ করি কারণ এটি আরও বেশি লোককে অংশগ্রহণের সুযোগ দেয় এবং উত্তরের আকারে প্রচুর সামগ্রী তৈরি করে।
hmatt1

1
এটি কি এএসসিআইআই হতে হবে? অর্থাত্, যদি কোনও প্রযুক্তি ASCII সামঞ্জস্য না করে তবে ফলাফলগুলি কী তা প্রতিফলিত করতে পারে?
শান বেবারস

1
আমরা কি ASCII প্রিন্টেবল 32-127 ধরে নিতে পারি? যদি তা হয় তবে বাইনারি স্ট্রিংগুলি বাম শূন্য-প্যাডিং সহ 7 টি চর হতে পারে?
640KB

উত্তর:



13

পাইথন 3, 41 বাইট

print(*[bin(ord(x))[2:]for x in input()])

কেএসএফটি-র উত্তরটির মতো , তবে আমি ভেবেছিলাম যে আমি এটি উল্লেখ করব, raw_input -> inputএছাড়াও পাইথন 3-এর স্প্ল্যাটের কারণে এখানেও একটি সুবিধা রয়েছে print


8

পাইথ, 10 বাইট

jdmjkjCd2z

পাইথন ম্যাপিং এবং ব্যাখ্যা:

j           # join(                               "Join by space"
 d          #      d,                             "this space"
 m          #      Pmap(lambda d:                 "Map characters of input string"
  j         #                    join(            "Join by empty string"
   k        #                        k,           "this empty string"
    j       #                        join(        "This is not a join, but a base conversion"
     C      #                             Pchr(   "Convert the character to ASCII"
      d     #                                  d  "this character"
            #                                 ),
     2      #                             2       "Convert to base 2"
            #                            )
            #                        ),
  z         #           z)))                      "mapping over the input string"

ইনপুট হল স্ট্রিং যা উদ্ধৃতি ব্যতীত রূপান্তরিত হওয়া দরকার।

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


10
আসাদেফঘজলক্ললও কি বৈধ পাইথ প্রোগ্রাম? এটার কাজ কি?
flawr

@ ফ্লোয়ার চেষ্টা করে কোন ক্ষতি? ;)
অপ্টিমাইজার

2
@ ফ্লাওয়ার এটি অজগর Psum(d).append(Pfilter(lambda T:gte(head(join(Plen(k),Plen()))))), হুই d = '' এবং কে = '' এর সাথে সংকলন করে । সুতরাং না, এটি মোটেও বৈধ নয়।
isaacg

12
@ এরিকমার্ক 26 আপনার ঘর বা অফিসের চারপাশে নজর দিন এবং আপনার কীবোর্ডের মধ্যে যা আবিষ্কার করতে পারেন তা ভেঙে দেখুন এবং এটি ব্যাখ্যা করে কিনা। এটি কী করে তা বের করুন এবং তারপরে পরবর্তী বস্তুর সাথে পুনরাবৃত্তি করুন। আপনার রান আউট হয়ে গেলে, বিভিন্ন আবর্তনের চেষ্টা করুন।
গ্লোবাই

2
@ এরিকমার্ক 26 আমি মনে করি পাইথকে ব্যবহার করার সর্বোত্তম উপায় হ'ল কিছু সাধারণ পাইথন প্রোগ্রাম গ্রহণ করা এবং সেগুলিকে পাইথের মধ্যে অনুবাদ করা।
isaacg

4

পাইথন 3 - 43 বাইট


print(*map("{:b}".format,input().encode()))

খুব স্বল্পতম নয়, তবে একটি আকর্ষণীয় পদ্ধতির আইএমও। এর অতিরিক্ত সুবিধা রয়েছে যে যদি উল্লেখযোগ্য বিটের সংখ্যা পরিবর্তিত হয়, EG Hi!, জিরো সহ প্যাডিং তুচ্ছ (2 টি আরও বেশি বাইট, 9 এর বিপরীতে .zfill(8)):

print(*map("{:08b}".format,input().encode()))

3

পাইথন - 52

print" ".join([bin(ord(i))[2:]for i in raw_input()])

আমি এটি পাইথ অনুবাদ করার কাজ করব। অন্য কেউ ইতিমধ্যে একটি পাইথ উত্তর দিয়েছেন।

আপনি যদি এটি পুরো প্রোগ্রাম হিসাবে বা আই / ও ফর্ম্যাট সম্পর্কে সন্ধান না করেন এবং পাইথন 3 ব্যবহার করেন তবে আপনি এটি 23 বাইটে এটি করতে পারেন:

[bin(ord(i))for i in x]

x ইনপুট হয়।

আমি জানি এটি গণনা করা হয়নি কারণ চ্যালেঞ্জ পোস্ট হওয়ার আগে দোভাষীকে প্রকাশ করা হয়নি, তবে এখানে এটি কেএসএফটিগল্ফে রয়েছে:

oan

3

রুবি, 34 28 24 বাইট

$<.bytes{|c|$><<"%b "%c}

STDIN এর মাধ্যমে ইনপুট নেয়। 6 বাইট সংরক্ষণ করেছেন আশেলির জন্য এবং আরও 4 টি ব্রিটিশকে ধন্যবাদ।


6 দিয়ে ট্রিম করুন$<.each_byte{|c|$><<"%b "%c}
এশেলি

String#bytesপরিবর্তে ব্যবহার করে আপনি আরও কিছু অক্ষর শেভ করতে পারেন String#each_byte। ব্লক ফর্মটি
অবচয়

ওব, সুন্দর ধন্যবাদ!
মার্টিন ইন্ডার


2

মতলব

এটি একটি বেনামে ফাংশন

f=@(x) dec2bin(char(x))

ব্যবহার হয় f('Hello World')

বিকল্পভাবে, যদি কর্মক্ষেত্রের xস্ট্রিং হিসাবে সংজ্ঞায়িত করা হয় Hello World!, তবে ঠিক dec2bin(char(x))কাজ করবে।


আমি এটি কীভাবে স্কোর করব সে সম্পর্কে আমি নিশ্চিত নই কারণ আমি কীভাবে ইনপুট পেতে পারি তা নিশ্চিত নই। কোন মন্তব্য?
ডেভিড

কেন char? আমি মনে করি আপনি বোঝাতে চেয়েছেনdec2bin(x)-'0'
লুইস মেন্ডো

কারণ আমি যে চালাক না!
ডেভিড

আমার বক্তব্যটি: char(x)যখন xইতিমধ্যে একটি স্ট্রিং থাকে তখন কিছুই করে না। সুতরাং কিছু স্থান বাঁচাতে আপনি এটি সরাতে পারেন। অন্যদিকে, ফলাফলটি dec2binএকটি স্ট্রিং, এবং আমি মনে করি আউটপুটটি সংখ্যা হওয়া উচিত
লুইস মেন্ডো

আমি বুঝতে পেরেছি, এবং আপনি অবশ্যই ঠিক বলেছেন। মতলব কখনও কখনও কখনও ডেটা টাইপগুলি ভুলে যাওয়া সহজ করে তোলে।
ডেভিড

2

জে - 9

1":#:3&u:

কোডটির দৈর্ঘ্য দ্বিগুণ না করে কীভাবে এক সারি এই পদ্ধতিতে তৈরি করা যায় তা আমার ধারণা নেই, আমাকে জে গুরু বলতে হবে :)

1":#:3&u:'Hello world!'
1001000
1100101
1101100
1101100
1101111
0100000
1110111
1101111
1110010
1101100
1100100
0100001

2
আপনি ".শুরুতে যোগ করতে পারেন । এটি আপনার ফলাফলকে মূল্যায়ন করে তাই এটি এক লাইনে থাকবে এবং ফাঁক দিয়ে পৃথক হবে। এমনকি খাটো base2 সংখ্যায় base10 সংখ্যার তৈরি করা: 10#.#:3&u:
এলোমেলো

2

জাভা - 148 বাইট

public class sToB{public static void main(String[] a){for(int i=0;i<a[0].length();i++){System.out.print(Integer.toString(a[0].charAt(i) ,2)+" ");}}}

পূর্ণ ফাইল অন্তর্ভুক্ত করতে সম্পাদিত


2
আমি মনে করি ওপি একটি স্নিপেট নয়, একটি সম্পূর্ণ প্রোগ্রাম চায়। আরও, এটি আরও অনেক গল্ফ করা যেতে পারে, methinks।
রডল্ফো ডায়াস

এটি সম্পূর্ণ প্রোগ্রাম, যদি আপনি এটি একটি প্রধান শ্রেণিতে রাখেন তবে এটি চলবে। ভাল গল্ফিং হিসাবে হিসাবে, সম্ভবত কিন্তু আমি কিভাবে স্পট করতে পারে না।
ব্রায়ান দেবনে 13

1
পুরো প্রোগ্রামটিতে মূল শ্রেণিও অন্তর্ভুক্ত রয়েছে।
রোডলফো ডায়াস

কোনও ইনপুটটি ascii হওয়ার for(char c:a[0].toCharArray()){পরেও for(byte b:a[0].getBytes()){ইনপুটটি সংক্ষিপ্ত হতে পারে, এমনকী একটি নন-
ইউটিউফ

1
আপনি এ থেকে মুক্তি পেতে পারেন publicএবং আরও বাইট জয়ের জন্য প্রোগ্রামের নামটি একটি একক চরকে সংক্ষিপ্ত করতে পারেন। আরও, (String[]a)আপনাকে অন্য বাইট উপার্জন করে সংকলকটি পুরোপুরি গ্রহণ করে।
রোডল্ফো ডায়াস

2

জাভাস্ক্রিপ্ট ES6, 63 65 বাইট

alert([for(c of prompt())c.charCodeAt().toString(2)].join(' '))

এটি বরং দীর্ঘ, জাভাস্ক্রিপ্টের দীর্ঘ ফাংশন নামগুলির জন্য ধন্যবাদ। নীচের স্ট্যাক স্নিপেটটি মোটামুটি ES5 সমতুল্য, তাই এটি যে কোনও ব্রাউজারে চালানো যেতে পারে। গল্ফিং উন্নতির জন্য edc65 ধন্যবাদ।

alert(prompt().split('').map(function(e){return e.charCodeAt().toString(2)}).join(' '))


1
[for of][...].mapস্ট্রিংগুলিতে বৈশিষ্ট্যগুলি গণনা করার চেয়ে সামান্য কম :alert([for(c of prompt())c.charCodeAt().toString(2)].join(' '))
edc65

আপনি প্রতিস্থাপন দুটি বাইট বন্ধ গলফ পারেন .join(' ')সঙ্গে .join` ` । আপনি prompt/alert
রামেন শেফ

2

স্কালা - 59 - 55 বাইট

readLine().map(x=>print(x.toByte.toInt.toBinaryString))

সাধারণত, মানচিত্রটি ব্যবহার না করেই পূর্বের ব্যবহার করা উচিত।


2

8088 মেশিন কোড, আইবিএম পিসি ডস, 33 ৩১ বাইট *

তালিকা:

D1 EE           SHR  SI, 1          ; point SI to DOS PSP (80H)
AD              LODSW               ; load input string length into AL, SI to 82H 
8A C8           MOV  CL, AL         ; set up loop counter 
49              DEC  CX             ; remove leading space/slash from char count 
            LOOP_CHAR: 
B3 08           MOV  BL, 8          ; loop 8 bits 
AC              LODSB               ; load next char 
            LOOP_BIT: 
D0 C0           ROL  AL, 1          ; high-order bit into low-order bit 
B4 0E           MOV  AH, 0EH        ; BIOS display character function 
50              PUSH AX             ; save AH/AL 
24 01           AND  AL, 1          ; mask all but low-order bit 
04 30           ADD  AL, '0'        ; convert to ASCII 
CD 10           INT  10H            ; write char to display 
58              POP  AX             ; restore AH/AL 
4B              DEC  BX             ; decrement bit counter 
75 F1           JNZ  LOOP_BIT       ; loop next bit      
B0 20           MOV  AL, ' '        ; display a space 
CD 10           INT  10H            ; write space to display 
E2 E8           LOOP LOOP_CHAR      ; loop next char 
C3              RET                 ; return to DOS 

সম্পূর্ণ পিসি ডস এক্সিকিউটেবল সিওএম ফাইল, ইনপুটটি কমান্ড লাইনের মাধ্যমে হয়।

শীর্ষস্থানীয় শূন্যগুলি সহ:

এখানে চিত্র বর্ণনা লিখুন

ASCBIN.COM ডাউনলোড এবং পরীক্ষা করুন

বা 39 জ্যোতির্মীত জিরো ব্যতীত:

এখানে চিত্র বর্ণনা লিখুন

ASCBIN2.COM ডাউনলোড এবং পরীক্ষা করুন

* যেহেতু নেতৃত্বের জিরোগুলি অনুমোদিত কিনা তা আমার কাছে স্পষ্টভাবে পরিষ্কার ছিল না, তাই উভয়ভাবেই সংস্করণ পোস্ট করছি।


2

এমআইটিএস আলটায়ার 8800 , 0 বাইট

ইনপুট স্ট্রিং মেমরি ঠিকানায় #0000H( অনুমোদিত )। সামনের প্যানেল আই / ও লাইটের মাধ্যমে বাইনারি আউটপুট D7-D0

উদাহরণস্বরূপ, করুন RESET, তারপরে EXAMINEপ্রথম বাইটটি দেখুন, তারপরে EXAMINE NEXTবাকী অংশগুলি দেখার জন্য পুনরাবৃত্তি করুন ।

"H" = 01 001 000:

এখানে চিত্র বর্ণনা লিখুন

"e" = 01 100 101:

এখানে চিত্র বর্ণনা লিখুন

"l" = 01 101 100:

এখানে চিত্র বর্ণনা লিখুন

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

অ-প্রতিদ্বন্দ্বী, অবশ্যই। :)


1

হাস্কেল, 65

m s=tail$do c<-s;' ':do j<-[6,5..0];show$mod(fromEnum c`div`2^j)2

তালিকা মোনাড ভারী ব্যবহার। এটি তালিকা বোধগম্যতে রূপান্তর করা যায়নি কারণ শেষ বিবৃতিগুলি একটি ছিল না return


1

সি ++ - 119 বাইট

স্মৃতি ফ্রি হচ্ছে? ওটা কী?

#include<cstdio>
#include<cstdlib>
int main(int c,char**v){for(*v=new char[9];c=*(v[1]++);printf("%s ",itoa(c,*v,2)));}

(এমএসভিসি সতর্কতার সাথে কোডটি সংকলন করে)


1
সি সংস্করণ, খাটোmain(int c,char**v){char x[9];for(;c=*(v[1]++);printf("%s ",itoa(c,x,2)));}
n̴̖̋h̷͉̃ã̷͉h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳





1

কমোডোর ভিআইসি -20 / সি 64/128 এবং থি 64 মনি, 101 টোকেনাইজড বেসিক বাইট

কমোডোর বেসিক কীওয়ার্ডের সংক্ষিপ্তসারগুলি ব্যবহার করে এখানে অস্পষ্ট তালিকা রয়েছে:

 0dEfnb(x)=sG(xaNb):inputa$:fOi=1tolen(a$):b=64:c$=mI(a$,i,1):fOj=0to6
 1?rI(str$(fnb(aS(c$))),1);:b=b/2:nEj:?" ";:nE

বিশ্লেষণের উদ্দেশ্যে এখানে অপ্রচলিত প্রতীকী তালিকা:

 0 def fn b(x)=sgn(x and b)
 1 input a$
 2 for i=1 to len(a$)
 3 let b=64
 4 let c$=mid$(a$,i,1)
 5 for j=0 to 6
 6 print right$(str$(fn b(asc(c$))),1);
 7 let b=b/2
 8 next j
 9 print " ";
10 next i

fn bলাইনের শূন্যে ঘোষিত ফাংশনটি এমন একটি সংখ্যক প্যারামিটার গ্রহণ করে xযার ANDমান দিয়ে এড করা হয় b; এসজিএন এর পরে বা রূপান্তর x and bকরতে ব্যবহৃত হয় ।10

লাইন ওয়ানটি ভেরিয়েবলের স্ট্রিং ইনপুট গ্রহণ করে a$এবং লুপটি শুরু হয় (এর সাথে চিহ্নিত i) এর ইনপুটটির দৈর্ঘ্য পর্যন্ত। bbit ষ্ঠ থেকে ০ র্থ বিট পর্যন্ত প্রতিটি বিটকে উপস্থাপন করে। c$স্ট্রিংয়ের প্রতিটি অক্ষরকে অবস্থানে নিয়ে যায় i

লাইন 5 প্রতিটি বিট অবস্থান পরীক্ষা করার জন্য লুপটি শুরু করে; right$কমোডোর বেসিক একটি সংখ্যা প্রদর্শন করে, আউটপুটটিকে fn bস্ট্রিংয়ে রূপান্তর করে যখন স্বয়ংক্রিয়-বিন্যাসের সমস্যাটি সরাতে লাইন in-এ ব্যবহৃত হয় ; asc(c$)দশমিক মান হিসাবে বর্তমান অক্ষরটিকে তার ascii কোডে রূপান্তর করে।

লাইন 7 পরবর্তী বিট মান উপস্থাপন করে। লুপটি jকোনও স্থান মুদ্রণের আগে শেষ হয়, তারপরে শেষ লুপটি iশেষ হয়।

C64 converting PETSCII to Binary


1

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

alert(prompt().split('').map(c=>c.charCodeAt(0).toString(2))).join(' ')

পিপিসিজিতে আপনাকে স্বাগতম! আপনাকে .split('')খালি স্ট্রিংয়ে বিভক্ত করতে হবে; .split()সক্রিয় "abc"মধ্যে ["abc"]
ডেনিস

1

ফোর্থ (গফার্থ) , 45 বাইট

: f 0 do dup i + c@ 2 base ! . decimal loop ;

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

কোড ব্যাখ্যা

: f           \ start a new word definition
  0 do        \ start a loop from 0 to string length - 1
    dup i +   \ duplicate the address and add the loop index to get addr of current character
    c@        \ get the character at that address
    2 base !  \ set the base to binary
    .         \ print the ascii value (in binary)
    decimal   \ set the base back to decimal
  loop        \ end the loop
;             \ end the word definition




0

স্টাটা 158

আমি বেশিরভাগের চেয়ে আলাদা পদ্ধতির ব্যবহার করেছি। _প্রেরণ () প্রম্পট (di _r (r) এ সংক্ষিপ্ত) প্রেরণার মাধ্যমে পড়ুন। টেক্সট মোডে b নামে একটি ফাইলটিতে স্ট্রিং লিখুন। বাইনারি মোডে খ খুলুন এবং প্রতিটি অক্ষর বাইট হিসাবে পড়ুন এবং বাইনারি রূপান্তর করুন। প্রযুক্তিগতভাবে বি ফাইলটি শেষের দিকে বন্ধ করা উচিত, তবে এটি একটি বৈধ প্রোগ্রাম এবং এটি ব্যতীত সফলভাবে চালিত হয়।

di _r(r)
file open a using "b",w
file w a "$r"
file close a
file open a using "b",b r
file r a %1bu t
while r(eof)==0 {
loc q=t
inbase 2 `q'
file r a %1bu t
}

0

গোলং - 68

আমি যেতে নতুন এবং আমি এখানে এই ভাষাতে অক্ষর গণনা করার নিয়মের বিষয়ে নিশ্চিত নই।

আমদানি (11 বাইট):

import"fmt"

ফাংশন (55 বাইট):

func c(s string){for _,r:=range s{fmt.Printf("%b ",r)}}

আপনি এটি এখানে চালাতে পারেন ।


0

সি # কখনও এই ধরণের প্রশ্ন জিততে পারে না তবে এখানে এনকোডিং ছাড়াই সম্পূর্ণ চেষ্টা করা হবে। :)

সি # - 84

Console.Write(String.Join(" ",Console.ReadLine().Select(x=>Convert.ToString(x,2))));

এটি ল্যাম্বডা ফাংশনটি ব্যবহার করে আরও সংক্ষিপ্ত করা যেতে পারে, যেমন: x=>String.Join(" ",x.Select(y=>Convert.ToString(y,2)));তবে মনে রাখবেন যে, .Select()এই সংক্ষিপ্ত উত্তর এবং আপনার মূল উত্তর উভয়ই ব্যবহারের কারণে 18 টি বাইট অন্তর্ভুক্ত করা দরকার using System.Linq;যদি না আপনি নির্দিষ্ট করেন যে এটি ভিজ্যুয়াল সি # ইন্টারেক্টিভ কমপ্লেয়ার ব্যবহার করছে , যা ডিফল্টরূপে System.Linq আমদানি করে
স্কিডেদেব

ইন্টারেক্টিভ
সংকলক

0

কোবরা - 64

ল্যাম্বদা হিসাবে:

do(s='')=(for c as int in s get Convert.toString(c,2)).join(' ')
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.