টেলিগ্রাফি গল্ফ: ডায়োড বাউডট কোড


31

পটভূমি

1870 সালে মাইল বাউডট বাউডট কোড আবিষ্কার করেছিলেন , টেলিগ্রাফির জন্য একটি নির্দিষ্ট দৈর্ঘ্যের অক্ষর এনকোডিং। তিনি কেবল পাঁচটি কী দিয়ে ম্যানুয়াল কীবোর্ড থেকে কোডটি প্রবেশের জন্য ডিজাইন করেছিলেন; দু'জন বাম হাতে এবং তিনটি ডানদিকে চালিত:

বাউডট 5-কী কীবোর্ড

অধিকার সূচক, মধ্যম এবং রিং আঙ্গুলের চালনা আমি , দ্বিতীয় এবং তৃতীয় , কি যথাক্রমে এবং বাম সূচক এবং মধ্যম আঙ্গুলের চালনা চতুর্থ এবং । (এখন থেকে আমি তাদের পশ্চিমা আরবি সংখ্যাগুলি, অর্থাৎ 1 এর মধ্য দিয়ে 5 এর মধ্যে ব্যবহার করব )) অক্ষরগুলি দুলা হিসাবে প্রবেশ করানো হয়। উদাহরণস্বরূপ, "সি" অক্ষরটি প্রবেশ করানোর জন্য অপারেটর 1 , 3 এবং 4 চাপবে presকীগুলি একই সাথে, তারপরে একটি ঘোরানো ব্রাশের বাহু প্রতিটি কী অনুক্রমের সাথে পড়ে এবং স্রোত প্রেরণ করে বা কীগুলি হতাশ নয়, কোনও বর্তমান নেই। ফলাফলটি, আধুনিক পরিভাষায়, একটি 5-বিট সর্বনিম্ন-তাত্পর্যপূর্ণ-বিট-প্রথম বাইনারি এনকোডিং, যাতে আমাদের উদাহরণ হিসাবে "সি," এনকোড করা হয় 10110

5 বিট ??

আপনি ভাবছেন যে 5 টি বিট, যা সর্বাধিক 32 টি অনন্য প্রতীক প্রকাশ করতে পারে, সমস্ত ইংরাজির অক্ষর এবং সংখ্যাগুলির পক্ষেও বিরামচিহ্নের কিছু বলতে পারে না। বাউডোটের হাতা আপ করার কৌশল ছিল, যদিও: তার চরিত্র সেটটি আসলে দুটি স্বতন্ত্র সেট: চিঠিপত্র এবং চিত্রসমূহ এবং সেগুলির মধ্যে স্যুইচ করার জন্য তিনি দুটি বিশেষ কোড সংজ্ঞায়িত করেছেন। লেটার শিফট , যা লেটার্স মোডে স্যুইচ করে, 5 টি একা ( 00001) চাপ দিয়ে সক্রিয় করা হয় এবং চিত্র শিফটটি 4 কী ( 00010) দিয়ে সক্রিয় করা হয় ।

চ্যালেঞ্জ

আপনার চ্যালেঞ্জটি এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা বাউডট কোড সংক্রমণকে ডিকোড করে।

একটি বাস্তব ট্রান্সমিশন কিছু সূচনা বিটের সাথে শুরু হবে, এবং প্রতিটি চরিত্রের আগে এবং পরে কিছুটা শুরু এবং স্টপ বিট, তবে আমরা সেগুলি এড়াতে যাচ্ছি এবং প্রতিটি চরিত্রের জন্য 5 টি স্বতন্ত্র বিট সম্পর্কে কেবল চিন্তা করব। ইনপুট এবং আউটপুট ফর্ম্যাটগুলি নীচে আলোচনা করা হয়েছে।

বাউডটের কোড

বাউডট কোডের দুটি ভিন্ন সংস্করণ রয়েছে: কন্টিনেন্টাল এবং ইউকে আমরা যুক্তরাজ্যের সংস্করণটি ব্যবহার করছি, যার মধ্যে বাউডোটের নেটিভ ফরাসী থেকে "É" এর মতো অক্ষর নেই । আমরা যুক্তরাজ্যের সংস্করণে সমস্ত চিহ্নগুলি ছাড়তে যাচ্ছি যা প্রিন্টযোগ্য এএসসিআইআই অক্ষরের মধ্যে নেই। আপনাকে কেবল নীচের টেবিলের অক্ষরগুলিই ডিকোড করতে হবে, এগুলি সমস্তই ছাপার যোগ্য ASCII অক্ষর যা চূড়ান্ত তিনটি নিয়ন্ত্রণ অক্ষর যা সারণীর নীচে ব্যাখ্যা করা হয়েছে except

"এলটিআর" কলাম লেটার মোডে অক্ষরগুলি দেখায় এবং "চিত্র" চিত্র চিত্র মোডের অক্ষরগুলি দেখায়:

        Encoding             Encoding
Ltr Fig  12345       Ltr Fig  12345
--- --- --------     --- --- --------
 A   1   10000        P   +   11111
 B   8   00110        Q   /   10111
 C   9   10110        R   -   00111
 D   0   11110        S       00101
 E   2   01000        T       10101
 F       01110        U   4   10100
 G   7   01010        V   '   11101
 H       11010        W   ?   01101
 I       01100        X       01001
 J   6   10010        Y   3   00100
 K   (   10011        Z   :   11001
 L   =   11011        -   .   10001
 M   )   01011        ER  ER  00011
 N       01111        FS  SP  00010
 O   5   11100        SP  LS  00001
 /       11000

ডান কলামের শেষ তিনটি সারি হ'ল নিয়ন্ত্রণের অক্ষর:

  • ERহয় ক্ষয় । বাউডোটের টেলিগ্রাফি মেশিনগুলি পাঠকের কাছে এই চরিত্রটির জন্য একটি নক্ষত্রের মতো প্রতীক প্রিন্ট করবে যে পূর্ববর্তী চরিত্রটি উপেক্ষা করা উচিত, তবে আমরা পাঠকের কাছে আরও সুন্দর হতে চলেছি এবং প্রকৃতপক্ষে পূর্ববর্তী অক্ষরটি বাদ দিয়ে (মুদ্রণ করব না) । এটি উভয় বর্ণ এবং চিত্র মোডে একই কাজ করে।

  • FSহয় চিত্র শিফট । এটি বর্ণগুলি থেকে চিত্রগুলিতে সেট করা অক্ষরটি স্যুইচ করে। যদি ডিকোডারটি ইতিমধ্যে চিত্র মোডে থাকে তবে এফএসকে একটি স্থান হিসাবে বিবেচনা করা হয় ( SP"Ltr" কলামের এর্গো)। যখন ডিকোডার চিত্র মোডে থাকে তখন এলএস অক্ষর না পাওয়া পর্যন্ত এটি চিত্র মোডে থাকে।

  • LSহ'ল লেটার শিফট । এটি ফিগার থেকে অক্ষরে অক্ষরের সেটটি স্যুইচ করে। ডিকোডারটি ইতিমধ্যে লেটার মোডে থাকলে, এলএসকে একটি স্থান হিসাবে বিবেচনা করা হবে । যখন লেটার মোডে ডিকোডার একটি এফএস অক্ষর না পাওয়া পর্যন্ত লেটার মোডে থাকে।

ডিকোডার সর্বদা লেটার মোডে শুরু হয়।

চিত্র চিত্র, শিফট শিফট এবং স্পেস সহ এখানে একটি উদাহরণ রয়েছে:

01011 10000 00100 00001 00010 10000 11100 00001 10101 11010
  M     A     Y   LS/SP FS/SP   1     5   LS/SP   T     H

এটি বার্তা দেয় MAY 15TH। আপনি দেখতে পাচ্ছেন, প্রথম 00001(লেটার শিফট / স্পেস) অক্ষরটি একটি স্থান হিসাবে কাজ করে, কারণ ডিকোডার ইতিমধ্যে লেটার মোডে রয়েছে। পরবর্তী অক্ষর, 00010(চিত্র শিফট / স্পেস) ডিকোডারটি মুদ্রণের জন্য চিত্র মোডে স্যুইচ করে 15। তারপরে 00001আবার উপস্থিত হয় তবে এবার ডিকোডারটি লেটার মোডে ফিরিয়ে আনার জন্য এটি লেটার শিফট হিসাবে কাজ করে।

আপনার সুবিধার জন্য, এখানে এমন বিন্যাসে অক্ষর রয়েছে যা সম্ভবত সম্পাদকের হজম করা সহজ, কোড অনুসারে সাজানো:

A,1,10000|E,2,01000|/,,11000|Y,3,00100|U,4,10100|I,,01100|O,5,11100|FS,SP,00010|J,6,10010|G,7,01010|H,,11010|B,8,00110|C,9,10110|F,,01110|D,0,11110|SP,LS,00001|-,.,10001|X,,01001|Z,:,11001|S,,00101|T,,10101|W,?,01101|V,',11101|ER,ER,00011|K,(,10011|M,),01011|L,=,11011|R,-,00111|Q,/,10111|N,,01111|P,+,11111

ইনপুট

ইনপুটটি স্ট্রিং, অ্যারে বা বিটের তালিকা হবে কমপক্ষে-উল্লেখযোগ্য-বিট-প্রথম ক্রমে। প্রতিটি অক্ষর 5 বিট একটি পঞ্চক দ্বারা প্রতিনিধিত্ব করা হবে। বিটগুলি যে কোনও যুক্তিসঙ্গত বিন্যাসে হতে পারে, যেমন বাইনারি স্ট্রিং, 0এস এবং 1এসগুলির একটি অ্যারে , একটি স্ট্রিং "0"এবং "1" অক্ষর, একটি একক খুব বড় সংখ্যক, ইত্যাদি যতক্ষণ না এটি সরাসরি সংক্রমণের বিটগুলিতে ম্যাপ করে।

প্রতিটি সংক্রমণে কমপক্ষে একটি মুদ্রণযোগ্য পঞ্চক এবং সর্বাধিক 255 পঞ্চম (মুদ্রণযোগ্য বা অন্যথায়) থাকবে, অর্থাত্ 5-11,275 বিট অন্তর্ভুক্ত।

ইনপুট ধারণ করতে পারে শুধুমাত্র ট্রান্সমিশন বিট, দুই অনুমতি ব্যতিক্রমসহ: বিশিষ্ট বা লম্বা যেকোনো সংখ্যক 0বিট এবং / অথবা, স্ট্রিং ইনপুট জন্য, একটি একক চিহ্ন সম্পর্কে newline সংক্রমণ যোগ করা যেতে পারে। নেতৃস্থানীয় বা পিছনের বিট বা অক্ষর প্রতিটি পঞ্চাঙ্কের আগে বা পরে যুক্ত করা যায় না , অর্থাত আপনি প্রতিটি পঞ্চককে আট বিটে প্যাড করতে পারবেন না (বা প্রতিটি পঞ্চককে একটি অ্যারেতে একক সংখ্যা হিসাবে নিতে পারবেন - যদি না আপনার ভাষায় 5-বিট পূর্ণসংখ্যার টাইপ থাকে) বা পৃথক কোন অতিরিক্ত বিট, যেমন সঙ্গে quintets "01111\n11100"

নোট এবং প্রান্তের কেস

  1. সংক্রমণে উপরের সারণীতে "Ltr" এবং "চিত্র" কলামগুলির মধ্যে কেবল অক্ষর থাকবে। আপনি কখনই উদাহরণস্বরূপ 01110মোডে পাবেন না কারণ এটি "চিত্র" কলাম থেকে অনুপস্থিত।

  2. ধারণা করা হয় যে সংক্রমণ শুরু হওয়ার সময় ডিকোডার সর্বদা লেটার মোডে থাকবে। তবে চিত্রের মোডে তত্ক্ষণাত পরিবর্তন করতে প্রথম অক্ষরটি কোনও এফএস অক্ষর হতে পারে।

  3. ডিকোডারটি যখন লেটার মোডে থাকে তখন এটি একটি এলএস অক্ষর পেতে পারে এবং যখন এটি চিত্র মোডে থাকে এটি কোনও এফএস অক্ষর পেতে পারে। উভয় ইভেন্টে একটি স্পেস অক্ষর মুদ্রিত করতে হবে (আউটপুট দেখুন)।

  4. ER অক্ষর কখনই সংক্রমণে প্রথম চরিত্র হতে পারে না বা এটি তাত্ক্ষণিকভাবে কোনও এলএস, এফএস বা অন্য কোনও ER অনুসরণ করবে না।

  5. একটি এফএস অক্ষর অবিলম্বে একটি এলএস অক্ষর এবং তদ্বিপরীত অনুসরণ করতে পারে।

  6. এলএস বা এফএস চরিত্র দুটিই কোনও সংক্রমণে শেষ চরিত্র হবে না।

  7. /এবং -অক্ষর পারেন পত্র মোড (কোডগুলি গৃহীত হতে পারে 11000এবং 10001যথাক্রমে) অথবা চিত্র মোড ( 10111 এবং 00111)।

আউটপুট

আউটপুট যে কোনও যুক্তিসঙ্গত বিন্যাসে হতে পারে, সবচেয়ে যুক্তিসঙ্গত হচ্ছে ASCII (বা ইউটিএফ -8, যার জন্য উপস্থাপিত সমস্ত অক্ষর ASCII এর মতো)। আপনার আউটপুট অন্য কোনও এনকোডিং বা ফর্ম্যাটে থাকলে দয়া করে আপনার উত্তরে নির্দেশ করুন।

নোট

  • স্পেস ক্যারেক্টার (উপরে 3. দেখুন) একটি ASCII স্পেস (0x20) বা আপনার এনকোডিং এর সমতুল্য হওয়া উচিত, অর্থাত্ স্পেস বারটি চাপলে আপনি কী পাবেন।

জয়লাভ

এটি । বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।

বিধিনিষেধ

  • স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।

  • ট্রেলিং স্পেস এবং / অথবা একটি একক চলন্ত নতুন লাইন অনুমোদিত। শীর্ষস্থানীয় স্থান বা অন্যান্য অক্ষর (যা সংক্রমণের অংশ নয়) অনুমোদিত নয়।

  • আপনি কোনও বিল্ট-ইন বা লাইব্রেরি ফাংশন ব্যবহার করতে পারবেন না যা বাউডট কোডটি ডিকোড করে (বা এর বংশধরগুলির কোনও, যেমন মারে কোড, আইটিএ -১, ইত্যাদি)।

পরীক্ষার মামলা

Input: 001101000010100111101110010101
Output: BAUDOT
Input: 11010010001001100011110111101111100
Output: HELLO
Input: 01011100000010000001000101000011100000011010111010
Output: MAY 15TH
Input: 0001000100010000001000001011101110011100101010010110101010001111100101
Output: 32 FOOTSTEPS
Input: 10110000110101011100111100001111011010000001101110
Output: GOLF
Input: 000100011000001111100000100010110111001100010110010000111111
Output: 8D =( :P
Input: 0000100001000010000100010001111011111011000011100010001
Output (4 leading spaces):     -/=/-


1
দ্রষ্টব্য: আমি পরীক্ষাগুলি হাতে হাতে এনকোড করেছি; যদি কিছু ভুল দেখায় তবে দয়া করে কথা বলুন।
জর্ডান

1
কোড সারণী এবং তার সাথে ডাইজেস্টে কোডটি অক্ষর মোডে এবং চিত্র মোডে 00010তালিকাভুক্ত করা SPহয় FS। বিবরণ অনুসারে, যদি আমরা লেটার মোডে থাকি এবং আমরা কোড 00010পাই তবে আমাদের ফিগার মোডে স্থানান্তরিত হওয়া উচিত, তবে টেবিলের মানগুলি অন্য উপায়ে মনে হয়। এছাড়াও, তদ্বিপরীত জন্য 00001
সোক

3
এই ব্যক্তিটি বেশ জঘন্য স্মার্ট, টেলিগ্রাফিটিতে ব্যবহৃত সংক্ষেপণের বিষয়ে আমি কখনই জানতাম না। ইতিহাস পাঠ মানুষটির জন্য ধন্যবাদ।
ম্যাজিক অক্টোপাস উরন

4
নিবন্ধন করুন প্রাথমিক বিদ্যালয়ের বাইরে বাউদোটের কোনও আনুষ্ঠানিক শিক্ষা ছিল না, তবে তিনি কেবল বাউডট কোড আবিষ্কার করেননি, তিনি একটি মাল্টিপ্লেক্সিং সিস্টেম আবিষ্কার করেছিলেন যা চার অপারেটরকে একই সাথে একটি টেলিগ্রাফ লাইন ব্যবহার করার অনুমতি দেয়। আমি এই 1919 পামফলেটটি পেয়েছি যা তাঁর আবিষ্কারগুলিকে বিশদরূপে
জর্ডান

উত্তর:


6

পাইথ, 98 97 95 93 90 83 80 বাইট

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

00000000: 753f 7133 4a69 4832 5047 2b47 3f3c 334a  u?q3JiH2PG+G?<3J
00000010: 4040 6332 2e22 275a 75ae 5751 fb4e 3cd7  @@c2."'Zu.WQ.N<.
00000020: 02ce 8719 aac1 e0e0 fe1f 09e5 85bc a767  ...............g
00000030: 8e0c 1f47 508a cad1 1acb b26f 951e e5d6  ...GP......o....
00000040: 225a 4a2a 5c20 715a 3d5a 744a 637a 356b  "ZJ*\ qZ=ZtJcz5k

এটি অনলাইনে চেষ্টা করুন। পরীক্ষা স্যুট.

বেশ দীর্ঘ, তবে দেখার টেবিলটি বেশিরভাগ অর্ধেক স্থান নেয় take

117 বাইটের জন্য, এখানে অরক্ষিত ছাড়াই একই জিনিস রয়েছে (যদিও আইএসও -8859-1 দরকার):

u?q3JiH2PG+G?<3J@@c2."'Zu®WQûN<×\x02Î\x87\x19ªÁààþ\x1f\tå\x85¼§g\x8e\x0c\x1fGP\x8aÊÑ\x1a˲o\x95\x1eåÖ"ZJ*\ qZ=ZtJcz5k

বা, 93 বাইটের জন্য, অনুসন্ধান টেবিলে কোনও সংকোচনের সাথে:

u?q3JiH2PG+G?<3J@@c2"OVDPYSBREXGMIWFNA-JKUTCQ/ZHL5'0+3;8-2;7);?;;1.6(4;9/;:;="ZJ*\ qZ=ZtJcz5k

5

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

let f =
    
s=>s.replace(/.{5}/g,s=>(n='0b'+s-1)<2?m-n?(m^=1,''):' ':"? !YSBREXGMIWFNA-JKUTCQ/ZHLOVDP? ?!3 8-2 7) ?  1.6(4 9/ : =5'0+"[n+m*32],m=0).replace(/.!/g,'')

console.log(f("001101000010100111101110010101"));
console.log(f("11010010001001100011110111101111100"));
console.log(f("01011100000010000001000101000011100000011010111010"));
console.log(f("0001000100010000001000001011101110011100101010010110101010001111100101"));
console.log(f("10110000110101011100111100001111011010000001101110"));
console.log(f("000100011000001111100000100010110111001100010110010000111111"));
console.log(f("0000100001000010000100010001111011111011000011100010001"));


5

ব্যাচ, 306 304 বাইট

@echo off
set/pc=
set r=
set d=! !!YSBREXGMIWFNA-JKUTCQ/ZHLOVDP!! !3!8-2!7)!?!!1.6(4!9/!:!=5'0+
set s=2
:l
set/an=(s^&32)+0%c:~,2%%%6*8+0x%c:~2,3%%%14
set c=%c:~5%
if %n%==%s% set/as^^=35&goto l
call set r=%%r%%%%d:~%n%,1%%
if %r:~-1%==! set r=%r:~,-2%&goto l
if not "%c%"=="" goto l
echo %r%

STDIN এ ইনপুট নেয়। যেহেতু ব্যাচের কোনও বাইনারি রূপান্তর নেই, তাই আমাকে অক্টাল এবং হেক্স রূপান্তর ব্যবহার করে এটি জাল করতে হবে।

  • প্রথম দুটি অঙ্ক অষ্টাল থেকে রূপান্তরিত হয় (আমি দশমিক ব্যবহার করতে পারি না কারণ প্রথম সংখ্যাটি হতে পারে 0)। সম্ভাব্য মান হল 00, 01, 10এবং 11। পরেরটির দুটি মান আছে 8এবং 9কিন্তু আমি চাই 2বা 3তাই আমি বাকি মডিউল নিতে 6
  • শেষ তিনটি সংখ্যা হেক্সাডেসিমাল থেকে রূপান্তরিত। অঙ্কগুলি হয় হয় 14বা 252তার পছন্দসই মানের বার হয়, আমি বাকি মডুলো 14( 252=14*18) নিতে পারি ।
  • c কোডেড স্ট্রিং
  • r এখন পর্যন্ত ফলাফল
  • d ডিকোডিং অ্যারে
  • s যে চরিত্রটি শিফট অবস্থা পরিবর্তন করে তার সূচি (শিফট রাষ্ট্রটিকে বিবেচনায় নেওয়া) is
  • nবাইনারি ডিকোড প্লাস বিট 5 s, যা হয় শিফট রাষ্ট্রের সমান হয়, সেক্ষেত্রে শিফট রাষ্ট্রটি টোগল করা হয়, বা পরবর্তী অক্ষরটি (বা মুছতে) সন্ধানের জন্য ডিকোডিং অ্যারেতে সূচকগুলি হয়


2

চিপ , 1069 বাইট

এটি একটি বিগ'ন, তবে লিখতে বেশ মজা লাগছিল।

"1"এর এবং "0"এর এর স্ট্রিং হিসাবে ইনপুট নেয় । (যদিও এটি কেবলমাত্র স্বল্প বিটকে দেখায়))

 AZZZZ,-o.AZZZZ  AZZZZ,o-.AZZZZ
*\\\\\]oo[\/\\\**//\\\]oo[/\\\\*
*\\\\/]oo[\/\\/**//\\/]oo[/\\\/*
*\\\//]oo[\/\//**//\//]oo[/\\//*
*\\\/\]oo[\/\/\**//\/\]oo[/\\/\*
*\\//\]oo[\///\**////\]oo[/\//\*
*\\///]oo[\////**/////]oo[/\///*
*\\/\/]oo[\//\/**///\/]oo[/\/\/*
*\\/\\]oo[\//\\**///\\]oo[/\/\\*
=
        o--------K-----o
      ,oo.   z---+~S  ,oo.
     ,LooR. !ZZZZ'   ,LooR.
    ,LLooRR.        ,LLooRR.
   ,LLLooRRR.      ,LLLooRRR.
  ,LLLLooRRRR.    ,LLLLooRRRR.
 ,LLLLLooRRRRR.  ,LLLLLooRRRRR. ,~Z
,LLLLLLooRRRRRR.,LLLLLLooRRRRRR.>m'
|||||||oo||||||||||||||oo||||||)/Rz.
xxxxxxxxxxxxxxx)xxxxxxxxxxxxxxxx\^-^S
x)x))))))))))))xx)))))))))))))xx\g
xx)xxxxxxxxxxxxxxxxxxxxxxxxxxx))\f
xxxxxx))xxxxxxxxxxxxx)))))))))xx\e
xx)x))x)xxxxx))x)))))xxxxxxx)))x\d
xx))x))xxx)))xxxxx)))xxxx)))xx)x\c
xx)xx)xx))x))x)xx)xx)xx))x))x)xx\b
x)))))))x)xx)xxxx)x)xx)x)xx)xx)x\a
x)x)x))))))x)x))x)))x)))xx))x))x/f
x)x)x))))))x)x)xxx)xxxxxxxx)x)xx/e
xxxxxxxx))xxxxxx))))x)))xxx)x))x/d
xxxxx))xxxxx)x)xxx)xxx))xx))xx)x/c
xxx)xxx)xxxx)x)xxxxxx))xxx))x))x/b
x)xxx)x)x)xx)xxxxx))x)))xx))xxxx/a

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

দ্রষ্টব্য: মুছে ফেলা ASCII ব্যাকস্পেস অক্ষর ( \x08) ব্যবহার করে , যার অর্থ তারা টিআইওতে মজাদার লাগবে, তবে তারা বলবে, এক্সটার্ম ভাল লাগবে।

মৌলিক গঠন

=রেখার উপরে, শীর্ষে, ইনপুট ডিকোডার। এটি ইনপুটটিকে 32 টি পৃথক সিগন্যালের একটিতে রূপান্তরিত করে। এগুলি oউপরের উপরের থেকে নীচেরগুলিতে প্রেরণ করা হয় =

এর ত্রিদলীয় পর্বত L's এবং R' s শুধু কলামকে পৃথক সারি থেকে প্যাটার্ন আবর্তিত। নীচের গ্রিড যা প্রতিটি কলামকে এর আউটপুট অক্ষরে অনুবাদ করে। অজানা সংকেতের জন্য, NUL ( \x00) উত্পাদিত হয়। বিশেষ স্থানান্তরগুলির জন্য, কোনও অক্ষর মুদ্রণের পরিবর্তে ডানদিকে ছোট্ট ব্লবটি মোড পরিবর্তন করে।

দুটি পর্বতের মাঝের তারের মতো গাড়ী প্রতিটি পঞ্চাঙ্কের মধ্যে যে কোনও মুদ্রণ দমন করে। এটি !নিজের জন্য দেখার জন্য একটি স্থানের সাথে প্রতিস্থাপনের চেষ্টা করুন । (ভার্বোস মোডে চালানো -vএখানেও আগ্রহী হতে পারে))

এই মুহুর্তে কীভাবে এটি আরও ছোট করা যায় তা আমি নিশ্চিত নই; এটি এর আকারের জন্য ইতিমধ্যে বেশ ঘন।


0

জিএনইউ সেড, 334 + 1 = 335 বাইট

-rপতাকা জন্য +1 বাইট । STDIN এ ইনপুট নেয়।

পুরানো চ্যালেঞ্জগুলি সন্ধান করে আমি বুঝতে পেরেছিলাম যে এগুলি সেডের সাথে বেশ সহজ এবং অনুশীলনের পক্ষে ভাল। আমি কোনও সংকোচনের চেষ্টা করি নি, তাই অনুসন্ধানের টেবিলটি অর্ধেকেরও বেশি কোড।

s|.*|#@&;01000E211000/%00100Y310100U401100I%11100O500010f 10010J601010G711010H%00110B810110C901110F%00001 l10001-.01001X%11001Z:00101S%10101T%01101W?11101V'00011<<10011K(01011M)11011L=00111R-10111Q/01111N%11111P+10000A111110D0|
:
s/@([01]{5})(.*;.*\1)(..)/\3@\2\3/
t
s/@;.*//
s/#f /@/
s/@ l/#/
s/#(.)./\1#/
s/@.(.)/\1@/
t
s/.<|[#@]//g

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

ব্যাখ্যা

কোডটি দুটি পর্যায়ে কাজ করে: প্রথমত, এটি প্রতিটি বাইনারি অঙ্কের প্রতিটি রান প্রতিস্থাপনের টেবিল থেকে সংশ্লিষ্ট দুটি অক্ষর (অক্ষর এবং চিত্র) এর সাথে প্রতিস্থাপন করে। অনুসন্ধান সারণিটি the… যেখানে a বাইনারি ডিজিট এবং letter এবং 𝐅 যথাক্রমে সংশ্লিষ্ট বর্ণ এবং চিত্র হিসাবে রয়েছে format %অনুপস্থিত অক্ষরগুলির জন্য দাঁড়িয়েছে (এটি নিউলাইন ছাড়া অন্য কোনও চরিত্র হতে পারে)। FS/SPদ্বারা প্রতিনিধিত্ব করা হয় f<space>এবং SP/LSহয় <space>lERদ্বারা প্রতিনিধিত্ব করা হয় <<

তারপর এটি একটি "কার্সার" বর্তমান mode- সংশ্লিষ্ট সঙ্গে প্রতিটি জোড়া মাধ্যমে পদক্ষেপ #চিঠি মোডের জন্য, @ব্যক্তিত্ব মোডের জন্য। #কার্সার যুগল দ্বিতীয় চরিত্র সরিয়ে ফেলবে এবং তারপর পরবর্তী যুগল থেকে এগিয়ে, এবং @প্রথম ও অগ্রগতি সরিয়ে ফেলা হয়। অন্য কথায়, #A1B8হয়ে A#B8এবং তারপর AB#, এবং @A1B8হয়ে 1@B8এবং তারপর 18@। যখন #কার্সার f<space>এটির মুখোমুখি হয় তখন এটি মুছে ফেলা হয় এবং @কার্সারের সাথে নিজেকে প্রতিস্থাপন করে এবং এর বিপরীতে যখন @মুখোমুখি হয় <space>l

যখন কোনও জুড়ি না থেকে যায়, চূড়ান্ত কার্সারটি অনুসরণ করে কোনও অক্ষরও সরিয়ে দেওয়া হবে <

# Setup: Append a lookup table to the line.
# Also prepends "#" and "@" which we'll use as "cursors" later.
s|.*|#@&;01000E211000/%00100Y310100U401100I%11100O500010f 10010J601010G711010H%00110B810110C901110F%00001 l10001-.01001X%11001Z:00101S%10101T%01101W?11101V'00011<<10011K(01011M)11011L=00111R-10111Q/01111N%11111P+10000A111110D0|

# Phase 1
:
  # Using "@" as a "cursor", substitute for each run of 5 binary digits the
  # two corresponding characters from the lookup table.
  s/@([01]{5})(.*;.*\1)(..)/\3@\2\3/
  t   # Loop (branch to `:`) as long as substitutions are made.

s/@;.*//       # Delete the "@" and lookup table

# Phase 2
s/#f /@/       # FS (f ) in letter mode (#); delete and switch to figure mode (@ cursor).
s/@ l/#/       # LS ( l) in figure mode (@); delete and switch to letter mode (# cursor).
s/#(.)./\1#/   # Letter mode; replace pair with first of pair; advance cursor.
s/@.(.)/\1@/   # Figure mode; replace pair with second of pair; advance cursor.
t              # If any substitutions were made, branch (loop) to `:`.

# Teardown
s/.<|[#@]//g   # Delete characters followed by < (ER) and cursor.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.