डीकोड अशुद्ध ब्रेल


21
⢣⠃⢎⠆⣇⡇⡯⡂⠈⡏⢰⢵⢐⡭⢸⠪⡀⢸⢐⡭⠀⢹⠁⢎⠆⢸⣱⢸⡃⢎⠰⡱⢸⣱⢸⡃⠈⡏⢸⡃⡱⡁⢹⠁⢸⡀⡇⡗⢅⢸⡃⠈⡏⢸⢼⢸⢐⡭⠀

⣇⢸⡃⢹⠁⢹⠁⣟⢸⢕⢐⡭⠀⡮⡆⡯⡂⣟⠀⡯⠰⡱⢸⣸⢸⢕⠀⣏⡆⢎⠆⢹⠁⣪⠅⢸⢼⢸⠰⣩⢸⢼⠀⡮⡆⡗⢼⢸⣱⠀⢎⠆⡯⠀⢇⠇⡮⡆⡯⡂⡇⡮⡆⣟⡆⣇⢸⡃⠸⡰⡸⢸⢸⣱⠈⡏⢸⢼⠀

⢎⠆⡗⢼⢸⡃⢸⡃⡗⠔⡇⡯⠂⢹⠁⢣⠃⠸⡸⢸⡃⡯⡂⢹⠁⡇⢎⢰⢵⢸⡀⢸⡀⡇⡗⢼⢸⡃⢐⡭⢸⡃⡯⠂⡮⡆⡯⡂⡮⡆⢹⠁⣟⢐⡭⠀⢎⢸⢼⢰⢵⢸⢕⢰⢵⠰⡁⢹⠁⣟⢸⢕⢐⡭⠀

⡮⡆⢐⡭⢸⠕⢰⢵⠰⡁⣟⠀⡇⣪⠅⢈⣝⢸⡃⡯⡂⢎⠆⠸⡰⡸⢸⢸⣱⠈⡏⢸⢼⠀

⣪⠅⢎⠆⢸⠈⡏⠀⣇⠰⡱⠰⡱⢸⠪⡀⣪⠅⢸⡀⡇⡗⢅⢸⡃⠸⡰⡸⠰⡱⢸⢕⢸⣱⢐⡭⠀⡮⡆⡯⡂⣟⠀⣪⠅⣟⢸⠕⢰⢵⢸⢕⢰⢵⠈⡏⢸⡃⣏⡆⢸⣳⠘⡜⠀⢹⠁⢇⢆⠇⢎⠆⢸⡀⡇⡗⢼⢸⡃⣪⠅

⡇⡗⢼⢸⠕⢸⣸⠈⡏⠀⡇⣪⠅⢰⢵⠀⣪⠅⢹⠁⡯⡂⡇⡗⢼⠰⣩⠀⢎⠰⡱⢸⠢⡇⢹⠁⡮⡆⡇⡗⢼⢸⢸⠢⡇⢎⡅⢸⠅⡮⡆⣇⡇⡱⡁⢸⣳⢸⢕⢰⢵⢸⢸⡀⣇⢸⡃⠰⡱⢸⠅

⢎⠆⡗⢼⢸⡀⢣⠃⢸⡃⡗⢼⠰⣩⢸⡀⡇⣪⠅⡧⡇⢸⣸⢸⠕⢸⠕⢸⡃⡯⡂⢎⢰⢵⢐⡭⢸⡃⢸⡀⣟⠈⡏⠈⡏⢸⡃⡯⡂⣪⠅⢰⢵⢸⠢⡇⣏⡆⢐⡭⢸⠕⢰⢵⠰⡁⣟⢐⡭⠀

⡮⡆⣟⡆⢎⢸⣱⢸⡃⡯⠰⣩⢸⢼⢸⢀⠇⡗⢅⢸⡀⡗⠔⡇⡗⢼⠰⡱⢸⠕⠰⣩⡆⡯⡂⣪⠅⢹⠁⣇⡇⢇⠇⢇⢆⠇⡱⡁⢣⠃⣩⡃

⢎⠆⣇⡇⢹⠁⡯⠂⣇⡇⢹⠁⢸⠢⢺⢰⢵⠘⡜⠀⣟⡆⣟⠀⣇⡇⡯⠂⡯⠂⣟⢸⢕⠀⢎⠆⡯⡂⢸⡀⢎⠆⢇⢆⠇⣟⢸⢕⠰⡁⡮⡆⣪⠅⣟⠀

⣪⠅⡧⡇⢎⠆⡯⡂⢹⠁⣟⢐⡭⠈⡏⠀⢇⢆⠇⡇⡗⢼⢐⡭⠀

⡗⢼⠰⡱⠀⣇⠰⡱⠰⡱⢸⠕⢸⢼⠰⡱⢸⡀⣟⢐⡭⠀

उपरोक्त का ASCII संस्करण

⡯⡂⣟⢸⡀⡮⡆⢹⠁⣟⢸⣱⠀

ब्रेल पात्रों के बारे में

एक ब्रेल वर्ण 4 डॉट्स के 4 आयत को पैक करता है, जिसे बूलियन मैट्रिक्स के रूप में देखा जा सकता है।

ऐसे सभी मेट्रिसेस का संघटन 4 बाई 2 * एन बुलियन मैट्रिक्स है, जहां n इनपुट स्ट्रिंग की लंबाई है।

आपको उनमें किसी भी डॉट्स के बिना ऊर्ध्वाधर लाइनों की तलाश करनी चाहिए, और प्रत्येक वर्ण के लिए बड़े मैट्रिक्स को छोटे मैट्रिक्स में विभाजित करने के लिए विभाजक के रूप में उपयोग करना चाहिए।

फिर, उन्हें अंग्रेजी वर्णमाला या रिक्त स्थान के अक्षरों में बदलने के लिए पैटर्न देखें। ध्यान दें कि विभाजकों (ऊर्ध्वाधर खाली रेखाओं) को हटाने के बाद, एक स्थान 4 बाय 0 मैट्रिक्स है।

नीचे ASCII में वर्णमाला का विवरण दिया गया है:

A   | B   | C  | D   | E  | F  | G   | H   | I | J  | K    | L  | M     | N    | O   | P   | Q    | R   | S   | T   | U   | V   | W     | X   | Y   | Z
----+-----+----+-----+----+----+-----+-----+---+----+------+----+-------+------+-----+-----+------+-----+-----+-----+-----+-----+-------+-----+-----+----
.#. | ##. | .# | ##. | ## | ## | .## | #.# | # | .# | #.#. | #. | #...# | #..# | .#. | ##. | .##. | ##. | .## | ### | #.# | #.# | #...# | #.# | #.# | ###
#.# | ### | #. | #.# | ## | #. | #.. | #.# | # | .# | ##.. | #. | ##.## | ##.# | #.# | #.# | #..# | #.# | #.. | .#. | #.# | #.# | #.#.# | .#. | #.# | ..#
### | #.# | #. | #.# | #. | ## | #.# | ### | # | .# | #.#. | #. | #.#.# | #.## | #.# | ##. | #.## | ##. | .## | .#. | #.# | #.# | #.#.# | .#. | .#. | .#.
#.# | ### | .# | ### | ## | #. | .## | #.# | # | #. | #..# | ## | #...# | #..# | .#. | #.. | .### | #.# | ##. | .#. | ### | .#. | .#.#. | #.# | .#. | ###

विशिष्टता

  • इनपुट यूनिकोड कोड बिंदुओं का एक क्रम है U + 2800..U + 28FF में आपकी भाषा में सामान्य स्ट्रिंग प्रकार (जैसे चार सरणी, चार अंक) का प्रतिनिधित्व किया गया है जो किसी भी लोकप्रिय एन्कोडिंग समर्थित (UTF-8, UCS-2) में है। , आदि)।

  • आउटपुट में ट्रेलिंग स्पेस ठीक हैं।


संपादित करें: उन लोगों के लिए क्षमा याचना, जिनके ब्राउज़र डॉट्स को गलत बताते हैं, यह इस तरह दिखना चाहिए (छवि): छद्म-ब्रेल


5
आपका कार्य इस तरह से पाठ को डिकोड करना है / अक्षर चार डॉट्स ऊँचे और चर चौड़ाई के हैं / एक खाली वर्टिकल लाइन वर्णों को अलग करती है / एक स्थान शून्य चौड़ाई है / इसलिए ऐसा लगता है जैसे शब्द दो लाइनों से अलग हो गए हैं / इनपुट एक स्ट्रिंग युक्त अशुद्ध ब्रेल है / केवल अंग्रेजी अपरकेस अक्षर और रिक्त स्थान / abcdefghijklmnopqrstuvwxyz / आउटपुट ऊपरी या
निचला

जवाबों:


14

पायथन 3 , 181 179 171 167 161 159 बाइट्स

बीओएम के बिना यूटीएफ -16 लिटिल-एंडियन बाइट्स द्वारा इनपुट। सबसे पहले बिट शिफ्ट का उपयोग करते हुए कॉलम में विघटित करें, खाली कॉलम से विभाजित करें, फिर उन्हें लुकअप टेबल में रखें।

-2 बाइट्स ngn के लिए धन्यवाद ।
-5 बाइट्स मिस्टर एक्सकोडर की बदौलत

lambda h,j=''.join:j(' ZAQV;JWP;MBOS;YRKCGXDF;ILHUENT'[int('0'+i,27)%544%135%32]for i in j(chr(64|i&7|i>>3&8)+chr(64|i>>3&7|i>>4&8)for i in h[::2]).split('@'))

इसे ऑनलाइन आज़माएं!


अजगर शिकायत नहीं करेगा अगर आप के बीच की जगह को हटा दें 39और if; यदि आप इसे-और-या
ngn

175 बाइट्स के i and int(i,27)%15472%39or 0साथ की जगह int(i or'0')%15472%39--- यह ऑनलाइन की कोशिश करो!
श्री Xcoder

और ''.joinएक चर को निर्दिष्ट करके 174 बाइट्स --- इसे ऑनलाइन आज़माएं!
श्री एक्सकोडर

11

जावास्क्रिप्ट (ईएस 6), 148 146 143 बाइट्स

@Ngn को 1 बाइट धन्यवाद दिया गया

s=>[...s].map(c=>g((k=c.charCodeAt()/8)&8|k*8&7)&g(k&7|k/2&8),o=x='',g=n=>x=n?x*27+n:(o+=' DZQGYWXNHJ.CSTIO.AFB.LPVE..KUMR'[x%854%89%35],n))&&o

परीक्षण के मामलों


g((k=c.charCodeAt())&7|k/8&8)&g(k/8&7|k/16&8)->g((k=c.charCodeAt()/8)&8|k*8&7)&g(k&7|k/2&8)
ngn

@ngn धन्यवाद :) एक और लंबित अनुकूलन के साथ विलय।
अरनौलड

क्या मैं पूछ सकता हूँ, तुम शानदार कैसे आए x%854%89%35? क्या आपने कई अलग-अलग यादृच्छिक मोडुली आज़माए?
ngn

@ngn मैंने m0 <1000 , m1 <m0 , m2 <m1 (वास्तव में कुछ अन्य अनुकूलन के साथ, लेकिन यह विचार है) की कोशिश की है। और जिस कारक के द्वारा x को गुणा किया जाता है: [4,6,8,9,10,11,12] और [15 ... 31] । वर्तमान में कुछ अन्य तरीकों की कोशिश कर रहा है।
अरनौलद

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.