ASCII পাঠ্যটিকে ব্রেইলে অনুবাদ করুন


19

এমন একটি প্রোগ্রাম লিখুন যা ASCII পাঠ্যটিকে ব্রেইল আউটপুটে অনুবাদ করে । প্রয়োজনীয়তা:

  • স্ট্যান্ডিন, কমান্ড লাইন বা অন্য কোনও বহিরাগত ইনপুট উত্স থেকে ইনপুট আসতে পারে।
  • আউটপুট ব্রেইল হিসাবে স্বীকৃত হওয়া উচিত, আউটপুট ফর্ম আপনার উপর নির্ভর করে। উদাহরণ oএকটি উত্থিত বিন্দুর .জন্য এবং একটি উত্থাপিত বিন্দুর জন্য। পাঠ্য প্যাটার্ন উপস্থাপনা যেমন 1-3-4গ্রহণযোগ্য নয়। দীর্ঘ লাইন মোড়ানো প্রয়োজন হয় না।
  • ন্যূনতম সমাধানের জন্য কেবলমাত্র 26 টি বর্ণমালা অক্ষর এবং স্থান প্রয়োজন। আপনার সমাধান দ্বারা সমর্থিত সমস্ত ইনপুট অক্ষর উপেক্ষা করা উচিত।

স্কোরিং হ'ল উত্স কোডের অক্ষরের সংখ্যা দ্বারা। জরিমানা এবং বোনাসগুলি হ'ল:

  • ইউনিকোড ব্রেইল অক্ষরগুলি আউটপুট হিসাবে ব্যবহারের জন্য +50 জরিমানা ।
  • মূলধন, সংখ্যা এবং বিরামচিহ্ন সমর্থন করার জন্য -50 বোনাস।
  • ইংরেজী (গ্রেড -২) ব্রেইল থেকে লিগ্যাচার এবং এক-বর্ণের সংকোচনের পক্ষে সমর্থন করার জন্য -200 বোনাস । (একে একে পৃথক চ্যালেঞ্জ হিসাবে তৈরি করবে, কারণ এটি একেবারেই আলাদা সমস্যা)

নমুনা প্রার্থনা এবং আউটপুট (সর্বনিম্ন সমাধান):

$ braille Hello world
o .  o .  o .  o .  o .  . .  . o  o .  o .  o .  o o
o o  . o  o .  o .  . o  . .  o o  . o  o o  o .  . o
. .  . .  o .  o .  o .  . .  . o  o .  o .  o .  . .

"সাহসী প্রচেষ্টা" সংজ্ঞায়িত করুন। এছাড়াও, লাইন মোড়ানো প্রয়োজন?
জন ডিভোরাক

@ জনডভোরাক: ধন্যবাদ, আপডেট হওয়া প্রশ্ন।
গ্রেগ হিউগিল

1
@ গ্রেগ হিউগিল আপনি কি বড় বড় রাজধানী, সংখ্যা এবং বিরামচিহ্ন অন্তর্ভুক্ত করার জন্য বোনাস তৈরি করতে পারেন? বর্তমানে এটি 26 + 10 + 12 = 48 অতিরিক্ত অক্ষর, কোনও বোনাসের বেশি নয় (যদি আপনি ব্রেইল ডেটা সংকোচন না করেন)
qwr

1
আপনি অক্ষরের পরিবর্তে বাইটগুলি গণনা করতে পারেন এবং জরিমানাটি সরিয়ে ফেলতে পারেন, ব্যয়টি প্রায় একই (@ ডিজিটালট্রামার প্রথম সমাধানটি 85 বাইট)। সম্পাদনা: আমি ঠিক বুঝতে পেরেছি যে এপিএলের মতো ভাষাগুলিকে শাস্তি দেওয়া হবে। এটা আপনার উপর নির্ভর করছে.
nyuszika7h

1
ম্যান ... ইউনিকোড চরগুলির জন্য জরিমানা এটিকে আকর্ষণীয় করে তুলতে যথেষ্ট বড় নয়। আমি দেখতে চেয়েছিলাম লোকেরা কীভাবে ব্রেইল সেটটি এনকোড করতে চলেছে।
অলমো

উত্তর:


6

পাইথন, 162

l=map((" a c,bif/e d:hjg'k m;lsp o n!rtq%12s. w -u x v   z y"%'').find,raw_input().lower())
for i in 1,4,16:print'  '.join('.o.o    ..oo'[(n&i*3)/i::4]for n in l)

বর্তমানে ছোট হাতের অক্ষর এবং কিছু বিরামচিহ্ন সমর্থন করে তবে এটি এখনও চলছে।

উদাহরণ:

$ python braille.py
Hello, world!
o .  o .  o .  o .  o .  . .  . .  . o  o .  o .  o .  o o  . .
o o  . o  o .  o .  . o  o .  . .  o o  . o  o o  o .  . o  o o
. .  . .  o .  o .  o .  . .  . .  . o  o .  o .  o .  . .  o .

6

পাইথন - 90 75 + 50 = 125

লোয়ার কেস লেটার ব্যবহার করুন।

for l in input():
 a=ord(l)-96
 if a<0:a=0
 print("⠀⠁⠃⠉⠙⠑⠋⠛⠓⠊⠚⠅⠇⠍⠝⠕⠏⠟⠗⠎⠞⠥⠧⠺⠭⠽⠵"[a],end="")

ওয়ান-লাইনার (ɐɔıʇǝɥʇউসকে ধন্যবাদ)

for l in input():print("⠀⠁⠃⠉⠙⠑⠋⠛⠓⠊⠚⠅⠇⠍⠝⠕⠏⠟⠗⠎⠞⠥⠧⠺⠭⠽⠵"[max(0,ord(l)-96)],end="")

1
কেন এটি ওয়ান-লাইনার তৈরি করবেন না? for l in input():print("⠀⠁⠃⠉⠙⠑⠋⠛⠓⠊⠚⠅⠇⠍⠝⠕⠏⠟⠗⠎⠞⠥⠧⠺⠭⠽⠵"[max(0,ord(l)-96)],end="")75 টি অক্ষর।
ɐɔıʇǝɥʇuʎs

@ ɐɔıʇǝɥʇuʎs বাহ, আমি maxকৌশলটি ভুলে গেছি । আপনাকে ধন্যবাদ
Qwr

সমস্ত অক্ষরের অক্ষরের জন্য কেবল ফাঁকা রেখে আপনি একটি চর সংরক্ষণ করতে পারেন:for l in input():print((" "*97+"⠁⠃⠉⠙⠑⠋⠛⠓⠊⠚⠅⠇⠍⠝⠕⠏⠟⠗⠎⠞⠥⠧⠺⠭⠽⠵")[ord(l)],end="")
xnor

3

সি, 269

#define C char
#define O*p++=(*t&1)*65+46;*t>>=1;
main(int c,C**v){C b[99]={1,5,3,11,9,7,15,13,6,14},o[99],*q=o,*p=v[1],*t;while(c=*p++)*q++=c=='w'?46:c>='a'&&c<='z'?c-='a'+(c>'w'),b[c%10]|(c>9)*16|(c>19)*32:0;for(c=3;c;c--){p=b;for(t=o;t<q;t++){O;O*p++=32;}puts(b);}}

এই প্রয়োগের জন্য এটির যুক্তি, যদি এটিতে ফাঁকা স্থান থাকে, অবশ্যই উদ্ধৃত করতে হবে:

# braille "hello world"

3

বিবিসি বেসিক 103 ASCII অক্ষর বা 92 টোকেন

A$="HXIKJY[ZQShxikjy{zqsl|Wmon"FORK=1TO26A=ASC(MID$(A$,K))VDU23,K+96,A AND9;0,A/2AND9;0,A/4AND9;:NEXT

সম্ভবত ওপি কী উদ্দেশ্য করে তা পুরোপুরি নয়, এটি ছোট হাতের অক্ষরের জন্য ফন্টটিকে নতুনভাবে সংজ্ঞায়িত করে। VDU 23,n,a,b,c,d,e,f,g,hআটটি বাইট সমন্বয়ে অক্ষর এনগুলিতে একটি 8x8 বিটম্যাপ নির্ধারণ করে। কমাটির পরিবর্তে সেমিকোলনের সাথে প্যারামিটার অনুসরণ করা একে দু-বাইট লিটল এন্ডিয়ান সংখ্যা হিসাবে বিবেচনা করে।

অক্ষরগুলির জন্য ব্রেইল নিদর্শন aমাধ্যমে zএকটি $ সংরক্ষিত হয়, নিম্নলিখিত বিট প্যাটার্ন অনুযায়ী। এটি 9 = বাইনারি 1001এবং রাইটশিফ্ট সহ মুখোশগুলি দ্বারা বের করা হয় (2 এবং 4 দ্বারা বিভাগ স্ট্যান্ডার্ড বিবিসি বেসিক হিসাবে কোনও শিফট অপারেটর হিসাবে ব্যবহৃত হয় না))

 8 1
16 2
32 4

অবহেলিত কোড

A$="HXIKJY[ZQShxikjy{zqsl|Wmon"
FORK=1TO26
  A=ASC(MID$(A$,K))
  VDU23,K+96,A AND9;0,A/2AND9;0,A/4AND9;
NEXT

ব্যবহারের উদাহরণ

এটি স্পষ্টতার জন্য স্ক্রিন মোড 6 এ সম্পন্ন করা হয়েছে (আপনি কমান্ড লাইন এমুলেটরটি খোলার সাথে সাথে MODE6 টাইপ করুন))

আসলে, কোডটি চালানোর পরে, কোনও ছোট হাতের অক্ষর (কীবোর্ড ইনপুট সহ) ব্রেইলে উপস্থিত হয় appear

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

Http://bbcbasic.co.uk/bbcwin/bbcwin.html এ এমুলেটর ।

আমার এই একই উত্তরটিও দেখুন: /codegolf//a/28869/15599


2

বাশ + কোর্টিলস

সর্বনিম্ন সমাধান - কেবলমাত্র ছোট, 83 (33 টি ইউনিকোড চর +50 পেনাল্টি):

tr a-z ⠁⠃⠉⠙⠑⠋⠛⠓⠊⠚⠅⠇⠍⠝⠕⠏⠟⠗⠎⠞⠥⠧⠭⠽⠵⠺

মূলধন, সংখ্যা এবং বিরামচিহ্ন, 120 (120 ইউনিকোড অক্ষর + 50 জরিমানা - 50 বোনাস):

a=⠁⠃⠉⠙⠑⠋⠛⠓⠊⠚⠅⠇⠍⠝⠕⠏⠟⠗⠎⠞⠥⠧⠭⠽⠵⠺
sed 's/\([0-9]\)/⠼&/g;s/\([A-Z]\)/⠠&/g'|tr ",;':\-⎖.!“?”()/a-zA-Z1-90" ⠂⠆⠄⠒⠤⠨⠲⠖⠦⠦⠴⠶⠶⠌$a$a$a

উদাহরণ আউটপুট:

$ echo {A..Z} {a..z} {0..9} ".,;:" | ./braille.sh 
⠠⠁ ⠠⠃ ⠠⠉ ⠠⠙ ⠠⠑ ⠠⠋ ⠠⠛ ⠠⠓ ⠠⠊ ⠠⠚ ⠠⠅ ⠠⠇ ⠠⠍ ⠠⠝ ⠠⠕ ⠠⠏ ⠠⠟ ⠠⠗ ⠠⠎ ⠠⠞ ⠠⠥ ⠠⠧ ⠠⠭ ⠠⠽ ⠠⠵ ⠠⠺ ⠁ ⠃ ⠉ ⠙ ⠑ ⠋ ⠛ ⠓ ⠊ ⠚ ⠅ ⠇ ⠍ ⠝ ⠕ ⠏ ⠟ ⠗ ⠎ ⠞ ⠥ ⠧ ⠭ ⠽ ⠵ ⠺ ⠼⠚ ⠼⠁ ⠼⠃ ⠼⠉ ⠼⠙ ⠼⠑ ⠼⠋ ⠼⠛ ⠼⠓ ⠼⠊ ⠲⠂⠆⠒
$ 

1

পিএইচপি, 331

<?php $d=split("/",gzinflate(base64_decode("NYzBDQBACIM26o3G/r+LRf2QYAOZe4SCLKgU7A9lEWVOzrQVrAiwghWhLKLMyZlawTTGMIYxPg==")));$d[-65]="......";$i=str_split(preg_replace("/[^a-z ]/","",trim(fgets(STDIN))));$o=["","",""];$S="substr";foreach($i as $c){$v=ord($c)-97;for($x=0;$x<3;$x++)$o[$x].=$S($d[$v],$x*2,2)." ";}echo join($o,"\n");

আপাতত কোনও বোনাস নেই।


2
আমি মনে করি কোড-গল্ফে একটি সংক্ষিপ্ত খোলার ট্যাগ ব্যবহার করা ঠিক আছে , যাতে আপনি 4 টি অক্ষর সংরক্ষণ করার <?পরিবর্তে ব্যবহার করতে পারেন <?php[SPACE]
nyuszika7h

1

জাভাস্ক্রিপ্ট - 286

w=prompt().split('');for(i=0;i<w.length;i++){z=w[i];o="o",p=".";b=[1,5,3,11,9,7,15,13,6,14];e=[c="",1,3];g=z.charCodeAt(0)-97;if(g>22)g--;f=e[g/10|0];d=b[g%10];if(g==22){d=14;f=2;}c+=d&1?o:p;c+=d&2?o:p;c+="\n";c+=d&4?o:p;c+=d&8?o:p;c+="\n";c+=f&1?o:p;c+=f&2?"o\n":".\n";console.log(c);}

প্রথম প্রচেষ্টা. কোনও বোনাস নেই।


2
আপনি এটিকে 279-এ কমিয়ে আনতে পারবেনw=prompt().split("");for(i=0;i<w.length;i++)z=w[i],o="o",p=".",b=[1,5,3,11,9,7,15,13,6,14],e=[c="",1,3],g=z.charCodeAt(0)-97,22<g&&g--,f=e[g/10|0],d=b[g%10],22==g&&(d=14,f=2),c+=d&1?o:p,c+=d&2?o:p,c+="\n",c+=d&4?o:p,c+=d&8?o:p,c+="\n",c+=f&1?o:p,c+=f&2?"o\n":".\n",console.log(c)
ওয়েলওয়েস্ট

1
সেই পদ্ধতির কথাটি মনে রাখতে হবে, লুপের জন্য দুর্দান্ত দীর্ঘ একক বিবৃতি :)
ম্যাট

1

সিজেম - 51

q{i32%"@`hptdx|lX\bjrvfz~nZ^ck]swg"=i2b1>2/}%zSf*N*

এটি http://cjam.aditsu.net/ এ চেষ্টা করুন

উদাহরণ ইনপুট:

braille is strange

উদাহরণ আউটপুট:

10 10 10 01 10 10 10 00 01 01 00 01 01 10 10 11 11 10 
10 11 00 10 10 10 01 00 10 10 00 10 11 11 00 01 11 01 
00 10 00 00 10 10 00 00 00 10 00 10 10 10 00 10 00 00 

এটি কেবল ছোট অক্ষর এবং স্থান সমর্থন করে supports অন্যান্য অক্ষর সমর্থিত অক্ষরগুলিতে ম্যাপ করা হয় (বিশেষত বড় হাতের অক্ষরে ছোট হাতের অক্ষরে)।

ব্যাখ্যা:

ব্রেইল অক্ষরগুলি একটি উত্থিত বিন্দুর জন্য 1 এবং একটি অ-উত্থিত বিন্দুর জন্য 0, বাম থেকে ডান এবং উপরে থেকে নীচে ব্যবহার করে এনকোড করা হয়। এটি 6 বেস -2 ডিজিট দেয়; শীর্ষস্থানীয় শূন্যগুলি বাদ দেওয়া থেকে বাঁচতে একটি 1 প্রস্তুত করা হয়, তারপরে সংখ্যাটি বেস 10 এর পরে সম্পর্কিত ASCII চরিত্রটিতে রূপান্তরিত হয়।
উদাহরণ: t -> ⠞ -> 01/11/10 -> 1011110 -> 94 -> ^ ^

প্রোগ্রামটি প্রতিটি অক্ষরকে বিট জোড়া (যেমন [[0 1][1 1][1 0]]) বিট জোড়ের ম্যাট্রিক্স প্রাপ্তির ট্রিপলে রূপান্তরিত করে । ম্যাট্রিক্সটি পরে স্থানান্তরিত হয় এবং বিভাজকগুলি যুক্ত করা হয় (সারিগুলির মধ্যে ফাঁকা স্থান, সারিগুলির মধ্যে নতুন লাইন)।

qএকটি স্ট্রিং = অক্ষরের অ্যারেতে ইনপুটটি পড়া
{…}%প্রতিটি অক্ষরের জন্য ব্লক প্রযোজ্য
i32%ASCII কোড মোড 32 (স্পেস-> 0, a-> 1, বি-> 2, z-> 26)
"@`hptdx|lX\bjrvfz~nZ^ck]swg"স্ট্রিং যা ব্রেইল অক্ষর যুক্ত থাকে আগে
=বর্ণিত হিসাবে এনকোডযুক্ত স্ট্রিং থেকে সংশ্লিষ্ট এনকোডযুক্ত ব্রেইল অক্ষরটি
i2bASCII কোড পায় তারপরে বেস 2 তে রূপান্তরিত হয় (7 অঙ্কের একটি অ্যারে প্রাপ্ত)
1>শীর্ষস্থানীয় 1 ডিজিটকে
2/অ্যারেটি বিভক্ত করে (3) জোড়া
zম্যাট্রিক্সের
Sf*সাথে প্রতিটি সারিতে যোগদান করে স্পেসগুলি
N*নতুন লাইনের সাথে সারিগুলিতে যোগদান করে


0

সি, 249 244

#define B?111:46
#define P(a,b)printf("%c%c ",a B,b B):
a,i;main(int c,char**v){for(char*p;p=v[1],a<3;puts(""),++a)while(i=*p++)i==32?P(0,0)i/97&122/i?c=(i+=(i==119)*17-97-(i>119))%10,a?a^1?P(i/10%3,i/20)P(c>4|c==1,c/3&&c%3-2)P(c<8,5*c/8%2)0;}

ইনপুট হ'ল কমান্ড-লাইন আর্গুমেন্ট, যা স্ট্রিংয়ের মধ্যে ফাঁকা স্থান উপস্থিত থাকলে পালাতে বা উদ্ধৃত হওয়া আবশ্যক। সমর্থিত অক্ষরগুলি হ'ল ছোট হাতের অক্ষর এবং স্থান। অসমর্থিত অক্ষরগুলি নিঃশব্দে বাদ দেওয়া হয়।

সম্পাদনা: একটি শর্ত সহজ করে 5 বাইট শেভ করা


0

পার্ল, 195 + 2-50 = 147

এটি ইউনিকোডের উপর নির্ভর না করে মূলধন, সংখ্যা এবং বিরামচিহ্ন পরিচালনা করে (195 বাইট + 2 বাইট (জন্য -pl) - 50 বোনাস)

~s/([A-Z])/|$1/g,~s/(\d)/#$1/g,tr/1-90/a-ij/;for$i(1,2,4){map{for$j(1,8){$s.=index(" a,b'k;l^cif/msp_e:h*o!r_djg_ntq|_?_-u(v_____x____._)z\"___w_#y",l$
"}$_=$s

ইন্ডেন্টেশন সহ:

~s/([A-Z])/|$1/g,
~s/(\d)/#$1/g,
tr/1-90/a-ij/;
for$i(1,2,4){
  map{
    for$j(1,8){
     $s.=index(" a,b'k;l^cif/msp_e:h*o!r_djg_ntq|_?_-u(v_____x____._)z\"___w_#y",lc($_))&$j*$i?o:_
    }
   $s.=_
  }split//;
  $s.="
"}
$_=$s

নমুনা আউটপুট

perl -pl brail.pl
Hello, 99!
___o__o__o__o__o_________o__o__o__o____
___oo__o_o__o___o_o______o_o___o_o__oo_
_o_______o__o__o________oo____oo____o__

0

জাভাস্ক্রিপ্ট ES6 - 282 309 297 283 270 - 50 = 232 259 233 220 বাইট

এই খাটো হতে পারে, কিন্তু বড় হাতের অক্ষরে চেক আঘাত

f=_=>{z='toLowerCase';k=(a,b)=>a%b>~-b/2?1:0;t=(a,b)=>k(a,b)+`${k(a,b/2)} `;b=c=d='';for(v of _){v==v[z]()?0:(b+=0,c+=0,v=v[z](d+=1));$=` ,'-";9015283467@./+^_>#i[s!jwt)a*kue:ozb<lvh\\r(c%mxd?nyf$p&g]q=`.search(v);b+=t($,64);c+=t($,16);d+=t($,4)}alert(`${b}
${c}
${d}`)}

সম্পাদনা করুন: আমাকে দুটি বাইট বাঁচানোর জন্য mbomb007 এর জন্য ধন্যবাদ - দুর্ভাগ্যক্রমে, আমি দেখতে পেয়েছি যে পূর্বের গল্ফিংয়ের সামান্য কিছুতেই সবকিছু নষ্ট হয়ে গেছে, তাই আমাকে আবার 27 টি অক্ষর যুক্ত করতে হয়েছিল।

সম্পাদনা করুন: ফাঁকা স্থান সরিয়ে 12 বাইট সংরক্ষণ করা হয়েছে।

সম্পাদনা: অনুধাবন করা হয়েছে এটি অক্ষর হিসাবে আউটপুট নির্বোধ, এবং বেশ কয়েকটি বাইট সংরক্ষণ করা। আমি কে = (এ, বি) => এ% (২ * বি)> বি -1? 1: 0 কে = (এ, বি) => a% বি> b-বি / কে অদলবদল করে কয়েকটি অক্ষরও সংরক্ষণ করেছি 2 1: 0।


সম্ভবত এটি string.toLowerCaseএকটি ভেরিয়েবল বরাদ্দ করা খাটো হতে চাই ?
mbomb007

সংখ্যা দুটি অক্ষর হতে হবে (উদা। 3 = ⠼⠉): সংখ্যা উপসর্গ (⠼) এবং সিফার সমতুল্য অক্ষরে রূপান্তরিত হয় (3 = সি = ⠉)। 1-9-->a-iএবং0-->j
আদম

আমি বিভিন্ন চার্ট দেখেছি - আমি যা চেক করেছি তার ক্ষেত্রে এটি ছিল না।
মার্কাস দির

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