ব্রেইল- ify একটি স্ট্রিং


22

এবং না, এটি ব্রেইলে অনুবাদ করা ASCII পাঠ্যের কোনও রূপ নয় ।

ইউনিকোডে 2 8 = 256 ব্রেইল নিদর্শন রয়েছে। ('ব্রেইল' বলতে আমার বোঝায় 8-সেল রয়েছে)

ডাব্লু, অপেক্ষা করুন। কতগুলি ASCII অক্ষর ছিল?

2 7 = 128?

ঠিক আছে, আসুন ASCII কে ব্রেইলে পরিণত করা যাক, কারণ না করার কোনও কারণ নেই!


ASCII থেকে ব্রেইলে যাওয়ার পথ

আমরা প্রতিটি কক্ষকে কিছুটা প্রতিনিধিত্ব করতে দেখতে পারি, যা প্রতিটি ঘর 'পাঞ্চ' হয় বা না।

এখন আমরা ASCII চরিত্রের বিটগুলিকে বাইনারি হিসাবে উপস্থাপন করতে প্রতিটি ঘর বরাদ্দ করতে পারি।

(1  )(16 )
(2  )(32 )
(4  )(64 )
(8  )( - )

* ( - )ফাঁকা

এখন আমরা ASCII কে ব্রেইলে রূপান্তর করতে পারি। উদাহরণস্বরূপ, A(65 = 01000001) এর সমান

উদাহরণ

Input -> Output
Braille! -> ⠢⠺⠱⡱⡴⡴⠵⠑
(Upscaled)
.. .o o. o. .. .. o. o.
o. oo .o .o .o .o .o .o
.o .o .o .o oo oo oo ..
.. .. .. o. o. o. .. ..

নিশ্চয় aহয় না (যা আমি মনে করি q)?
নীল

@ নীল চ্যালেঞ্জটি কেবল "চর কোডগুলি +২০২০৪০ চরকে রূপান্তর করে না"। এবং হ্যাঁ, aহয়
এরিক আউটগল্ফার

@ এরিকথ আউটগল্ফার আমি এটি প্রস্তাব দিইনি, তবে এটি কোনওভাবেই ভুল হত, কারণ এতে খোঁচা কোষগুলির সংখ্যাটি ভুল।
নীল

নিল ওহ সুন্দর আমি কেবল পুনরায় গণনা করেছি এবং খুঁজে পেয়েছি আপনি ঠিক বলেছেন।
ম্যাথু রোহ

এমএসবি (উপরের বাম) এর চেয়ে এলএসবি (নীচের ডানদিকে) অব্যবহৃত অবস্থায় রেখে অন্য কারও কাছে কি অদ্ভুত লাগছে?
জুলিয়ান ওল্ফ

উত্তর:


14

সিজেম , 27 26 বাইট

80qf{i2b7Te[4/~\)\@+++2bc}

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

ব্যাখ্যা

ব্রেইল কোড পয়েন্টগুলি খুব সুন্দরভাবে অর্ডার করা হয়েছে যাতে পৃথক বিন্দুগুলি বাইনারি হিসাবে গণনা করতে পারে। তবে কোড পয়েন্টগুলিতে বিটের ক্রমটি আলাদা। আমরা নিম্নলিখিত আদেশ চাই:

04
15
26
37

যেখানে অক্ষরগুলি এই ক্রমে ইউনিকোডে রাখা হয়েছে:

03
14
25
67

(কোন ধরণের অর্থটি উপলব্ধি করে, কারণ historতিহাসিকভাবে, ব্রেইল কেবল প্রথম ছয়টি বিন্দু ব্যবহার করেছিল)) নোট করুন যে আমাদের কোনও 7বিন্দুর দরকার নেই , যেহেতু ইনপুটটি ASCII সীমার মধ্যে থাকা নিশ্চিত। সুতরাং [6 5 4 3 2 1 0]একটি ইনপুট চরিত্রের বিটগুলির একটি তালিকা দেওয়া , আমরা [3 6 5 4 2 1 0]নীচে-বাম বিন্দুটিকে সর্বাধিক উল্লেখযোগ্য অবস্থানে উপস্থাপনকারী বিটটি টানতে এগুলিতে পুনরায় অর্ডার করতে চাই ।

80     e# Push 80... we'll need this later.
q      e# Read all input.
f{     e# Map this block onto each character, putting a copy of the 80
       e# below each character.
  i    e#   Convert the character to its code point.
  2b   e#   Get its binary representation.
  7Te[ e#   Pad it to 7 bits with zeros. We've now got some bit list
       e#   [6 5 4 3 2 1 0].
  4/   e#   Split into chunks of 4: [[6 5 4 3] [2 1 0]]
  ~    e#   Dump them onto the stack: [6 5 4 3] [2 1 0]
  \    e#   Swap them: [2 1 0] [6 5 4 3]
  )    e#   Pull off the last element: [2 1 0] [6 5 4] 3
  \    e#   Swap: [2 1 0] 3 [6 5 4]
  @    e#   Rotate: 3 [6 5 4] [2 1 0]
  ++   e#   Concatenate twice: [3 6 5 4 2 1 0]
       e#   That's the reordering done.
  +    e#   Prepend the 80. That puts it in the 2^7 position of the
       e#   binary digit list, which gives it a value of 10240, which
       e#   is where the Braille characters start.
  2b   e#   Convert the bits back to an integer.
  c    e#   Convert the code point to the corresponding integer.
}%

1
সঙ্গে চালাক কৌশল 80
এরিক আউটগল্ফার

11

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

f=
s=>s.replace(/./g,c=>String.fromCharCode((c=c.charCodeAt())&7|c*8&64|c/2&56|10240))
<input oninput=o.textContent=f(this.value)><pre id=o>


ওহ হ্যাঁ, বাইটটিও সংরক্ষণ করার আগে আমার সম্ভবত 2 দ্বারা ভাগ করা উচিত।
মার্টিন এন্ডার

সম্ভবত jQuery অপব্যবহার ব্যবহার করা যেতে পারে?
ম্যাথু রোহ


5

সিজেম , 27 বাইট

নীল থেকে 1 বাইট চুরি

q{i__8&8*@7&@2/56&++'⠀+}%

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

ব্যাখ্যা

এটি আমার অন্যান্য সিজেএম উত্তরের মতো একই বুনিয়াদী ধারণাটি ব্যবহার করে তবে বিটগুলি পুনরায় অর্ডার করতে বেস রূপান্তর এবং তালিকার কারসাজির পরিবর্তে বিটওয়াইথ গাণিতিক ব্যবহার করে।

q        e# Read all input.
{        e# Map this block over each character...
  i__    e#   Convert the character to its code point and make two copies.
  8&     e#   AND 8. Gives the 4th bit, which we need to move to the 7th place.
  8*     e#   Multiply by 8 to move it up three places.
  @7&    e#   Pull up another copy and take it AND 7. This extracts the three
         e#   least significant bits which shouldn't be moved at all.
  @2/    e#   Pull up the last copy and divide by 2 to shift all bits down
         e#   by one place.
  56&    e#   AND 56. Extracts the three most-significant bits.
  ++     e#   Add all three components back together.
  '⠀+    e#   Add to the empty Braille character which is the offset for all
         e#   the code points and which converts the value to a character.
}%


2

গণিত 100 বাইট

FromCharacterCode[10240+#~Drop~{4}~Prepend~#[[4]]~FromDigits~2&/@ToCharacterCode@#~IntegerDigits~2]&

Ungolfed:

ToCharacterCode["Braille!0"]
PadLeft@IntegerDigits[%,2]
Prepend[Drop[#,{4}],#[[4]]]&/@%
FromDigits[#,2]&/@%
FromCharacterCode[%+10240]

+60 বাইট এর দীর্ঘ ফাংশন নামে আবদ্ধ।


1

জেলি , 21 বাইট

O&€“¬®p‘æ.1,8,.+“'ṁ’Ọ

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

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

O&€“¬®p‘æ.1,8,.+“'ṁ’Ọ  Main link. Argument: s (string)

O                      Ordinal; map all characters to their Unicode code points.
   “¬®p‘               Yield the code points of the enclosed characters in Jelly's
                       code page, i.e., [1, 8, 112].
 &€                    Take the bitwise AND of each code point to the left and the
                       three code points to the right.
          1,8,.        Yield [1, 8, 0.5].
        æ.             Take the dot product of the array to the right and each flat
                       array in the array to the left.
                “'ṁ’   Yield 10240 = 250 × 39 + 239, where 39 and 239 are the
                       indices of ' and ṁ in Jelly's code page.
               +       Add 10240 to all integers to the left.
                    Ọ  Unordinal; convert all code points to their respective 
                       Unicode charcters.



0

চিপ ,62 59 বাইট

h*
 Z~.
z.g+b
>xv<
||sf
Zx^<
Z< |
A/a/D
B/b
C/c
E/d
F/e
G/f

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

আমি সন্দেহ করি যে আমি আরও গল্ফ করতে পারি, ঠিক কীভাবে ...

চিপের বিটগুলির সংগ্রহ হিসাবে ইনপুটটির প্রতিটি বাইটে পড়ে, বর্ণমালার প্রথম আটটি অক্ষর দ্বারা বর্ণিত (বড় হাতের ইনপুট হয়, নিম্ন আউটপুট হয়):

HGFEDCBA

আমাদের কেবলমাত্র ইনপুটটির সেই বিটগুলি তিনটি বাইট আউটপুট ম্যাপ করতে হবে:

11100010 101000hd 10gfecba

কোডের উপরের অর্ধেকটি সমস্ত সিকোয়েন্সিং করছে, এবং প্রথম দুটি বাইট জেনারেট করে, নীচের অর্ধেকটি তৃতীয় বাইট উত্পন্ন করে।

যেহেতু স্পেসিফিকেশনটির জন্য কেবল ASCII এর জন্য 7 বিট পরিচালনা করা প্রয়োজন, আমরা পরীক্ষা করি না H। অষ্টম বিট অন্তর্ভুক্ত করার জন্য, লাইনটি এতে পরিবর্তন B/bকরুন B/b/H

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