সুরের সময়কালের ভিত্তিতে মোর্স কোডটি অনুবাদ করুন


36

লক্ষ্য

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

আন্তর্জাতিক মোর্স কোড

সুনির্দিষ্ট

  • বিট স্ট্রিম বিটগুলি অন / অফ বিট পুনরাবৃত্তির দৈর্ঘ্যের ভিত্তিতে বিশ্লেষণ করা হয়।
    • 1 অন বিট একটি বিন্দু
    • 3 বিট একটি ড্যাশ হয়
    • 1 বিট ডট এবং ড্যাশগুলি সীমিত করে
    • 3 অফ বিট অক্ষর সীমাবদ্ধ
    • 7 টি বিট শব্দ সীমানা (স্থান)
  • ইনপুটটি স্ট্রিং বা অ্যারে হতে পারে। ইনপুটটিতে আপনার পছন্দের মাত্র দুটি অনন্য অক্ষর / মান অনুমোদিত। (উদাঃ 0/1, সত্য / মিথ্যা, কমা / স্থান)
  • আউটপুট একটি স্ট্রিং দেয় বা স্ট্যান্ডার্ড আউটপুটে মুদ্রিত হয়।

উদাহরণ

Input:    101010100010001011101010001011101010001110111011100000001011101110001110111011100010111010001011101010001110101
Analysis: \--H--/   E   \---L---/   \---L---/   \----O----/\-- --/\---W---/   \----O----/   \--R--/   \---L---/   \--D--/
Output:   HELLO WORLD

অনুমিতি

  • স্ট্রিমটি সর্বদা শুরু হয় এবং একটি বিট দিয়ে শেষ হয়।
  • কোনও শীর্ষস্থানীয় বা পিছনের শ্বেতস্থান নেই।
  • ইনপুট সর্বদা বৈধ।
  • সমস্ত অক্ষর (কেস-সংবেদনশীল) এবং অঙ্কগুলি সমর্থিত।

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

101010100010001011101010001011101010001110111011100000001011101110001110111011100010111010001011101010001110101
HELLO WORLD

10100000001011100011101110000000101110000000101011101000101000101010001010101
I AM A FISH

1010111011101110001110111011101110111000101110111011101110001110111010101
2017

101010001110111011100010101
SOS

স্কোরিং

এটি কোড গল্ফ। পরের সপ্তাহে এই সময়ের মধ্যে সর্বনিম্ন বাইট-কাউন্ট কোডটি জয়ী।


আউটপুটে কি পেছনের সাদা স্থান থাকতে পারে?
ব্রায়ান জে

উত্তর:


9

এপিএল (ডায়ালগ) , 65 62 60 57 বাইট

-3 এনএনজি ধন্যবাদ।

Tacit উপসর্গ ফাংশন।

CY'dfns'
morse'/|[-.]+'S'&'∘(⊃∘'/. -'¨6|'1+|(00)+'S 1)

এটি অনলাইন চেষ্টা করুন! f←টিআইওর বাইট গণনা ধরে রাখার সময় শিরোনাম এবং পাদচরণ কেবল ইনপুট থেকে ফাংশনটি কল করার অনুমতি দেয়। একটি সাধারণ এপিএল সেশনে (টিআইওর ইনপুট ক্ষেত্রের সাথে সম্পর্কিত), এটির প্রয়োজন হবে না

⎕CY'dfns' অপ Y dfns কর্মস্থান (গ্রন্থাগার)

() এই
'1+|(00)+'⎕S 1 স্বতন্ত্র ফাংশনটি প্রয়োগ করুন: পিসিআরই এস এরচ 1-রান এবং সমান দৈর্ঘ্য 0-রান এবং রিটার্ন ম্যাচের দৈর্ঘ্য
6| বিভাগের বাকি যখন
⊃∘'/. -'¨ প্রতিটি ম্যাচের দৈর্ঘ্যের জন্য 6 দ্বারা বিভক্ত হয় , এই স্ট্রিং থেকে সংশ্লিষ্ট চরিত্রটি বেছে নিন
'/|[-.]+'⎕S'&'∘ PCRE এস এরচ স্ল্যাশ এবং ড্যাশ / ডট -আর চালান এবং
morse মোর্স কোড থেকে নিয়মিত পাঠ্যে অনুবাদ করুন return


5
বাহ, কখনই জানতেন না ডায়ালগের মোর্স কোডের জন্য একটি অন্তর্নির্মিত ব্যবস্থা রয়েছে।
জাকারি

@ জ্যাচারý ডিএফএনএসে অনেকগুলি, অনেকগুলি বিল্টইন রয়েছে।
এরিক দি আউটগল্ফার

@ জ্যাচারý সর্বদা ডিএফএনএস পরীক্ষা করুন !
অ্যাডম

আপনি একটি পুরানো সংস্করণ লিঙ্ক করছেন।
এরিক দ্য আউটগল্ফার

একটি বিএফ ফাংশন ...> _ <, বাহ।
জাকারি

8

পাইথন 2 , 142 135 বাইট

lambda s:''.join(' E-T----Z-Q---RSWU--2FH-V980NIMA--1CBYX-6--GDOK534PLJ-7'[int('0'+l.replace('111','3'),16)%57]for l in s.split('000'))

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

ব্যাখ্যা:

স্ট্রিংগুলিকে অক্ষরে বিভক্ত করে 000( 0এভাবে স্থানটির অর্থ হয়)

এর 111সাথে প্রত্যেককে প্রতিস্থাপন করে 3এবং বেস 16 এ রূপান্তর করে।

তারপরে প্রতিটি সংখ্যা মোডেড হয় 57, যা একটি পরিসর দেয় 0..54যা বর্তমান চরিত্রের সূচক index


পূর্ববর্তী সংস্করণ যা বেস 3 তে রূপান্তরিত হয়েছে:

পাইথন 2 , 273 252 247 বাইট

lambda s:''.join(chr(dict(zip([0,242,161,134,125,122,121,202,229,238,241]+[2]*7+[5,67,70,22,1,43,25,40,4,53,23,49,8,7,26,52,77,16,13,2,14,41,17,68,71,76],[32]+range(48,91)))[int('0'+l.replace('111','2').replace('0',''),3)])for l in s.split('000'))

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

পূর্ববর্তী সংস্করণ যা বাইনারি রূপান্তরিত:

পাইথন 2 , 282 261 256 বাইট

lambda s:''.join(chr(dict(zip([0,489335,96119,22391,5495,1367,341,1877,7637,30581,122333]+[2]*7+[23,469,1885,117,1,349,477,85,5,6007,471,373,119,29,1911,1501,7639,93,21,7,87,343,375,1879,7543,1909],[32]+range(48,91)))[int('0'+l,2)])for l in s.split('000'))

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


5

রুবি , 123 বাইট

->s{s.split(/0000?/).map{|r|r[0]?"YE9_0IZTO_BHKU58V_GR_SFA__1_4NP_60X_____C__D_ML7WQ3__2__J"[r.to_i(2)%253%132%74]:" "}*""}

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

অক্ষরের সীমাতে ইনপুট স্ট্রিংটি বিভক্ত করুন। 3 বা 4 অফ বিট ব্যবহার করুন যাতে স্পেসগুলি খালি স্ট্রিংয়ে রূপান্তরিত হয়। প্রতিটি চরিত্রের বেস 2 মান নিন এবং 3 ধারাবাহিক বিভাগগুলিতে মডুলো ব্যবহার করে একটি যুক্তিসঙ্গত পরিসীমা (60 টিরও কম মানের) এনে দিন।


খুব সুন্দরভাবে সম্পন্ন হয়েছে।
মনিকা iamnotmaynard

2
আমি নিশ্চিত যে এটি সমস্ত ক্ষেত্রে কাজ করে কিনা তা নিশ্চিত নই, তবে আপনি যদি 0?রেজিপেক্স থেকে সরিয়ে থাকেন তবে এটি এখনও চারটি পরীক্ষার ক্ষেত্রে কাজ করে।
জর্ডান

4

পাইথন , 175 168 বাইট

s=lambda t,f=''.join:f('; TEMNAIOGKDWRUS;;QZYCXBJP;L;FVH09;8;;;7;;;;;;;61;;;;;;;2;;;3;45'[int('1'+f('0'if j[1:]else j for j in i.split('0')),2)]for i in t.split('000'))

প্রথমে স্ট্রিংটিকে 0 (ড্যাশ) / 1 (ডট) স্ট্রিংয়ের তালিকায় রূপান্তর করুন, একটি উপসর্গ যুক্ত করুন 1(শীর্ষস্থানীয় শূন্যগুলি রোধ করতে এবং হোয়াইটস্পেসের সাথে ডিল করতে), তারপর বাইনারিতে রূপান্তর করুন।

যেহেতু প্রতিটি কোডের দৈর্ঘ্য 5-এর বেশি নয়, ফলাফল 0 থেকে 63 অবধি এবং স্ট্রিংয়ে তালিকাভুক্ত হতে পারে।


1
আমি স্বাধীনভাবে মূলত একই সমাধান পেয়েছি তবে 169 বাইট:lambda s:''.join("_ TEMNAIOGKDWRUS__QZYCXBJP_L_FVH09_8___7_______61_______2___3_45"[int('1'+filter(int,l).replace('2','0'),2)]for l in s.replace('111','2').split('000'))
অ্যালেক্স ভার্গা

অ্যালেক্স ভার্গা পাইথন 2 এর দুর্দান্ত ব্যবহার filter!
কোলেরা সু

3

জেলি , 67 62 বাইট

ṣ0L€«2ḅ2“>.&" þ/7;=¥çı¿¢×ÆФ怌©¦Çß÷µ¬£®Ñ½ðȷñ‘iịØB;⁶¤
œṣ0ẋ3¤Ç€

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


অপেক্ষা করুন, লিঙ্ক নম্বর মোড়ানো প্রায়?
জাকারি

@ জাচার ý হ্যাঁ এটি আছে, লাইন-লিঙ্কগুলিতে মডুলার সূচক রয়েছে।
এরিক দ্য আউটগল্ফার

3

ভিজ্যুয়াল বেসিক। নেট (। নেট কোর) , 252 বাইট

-7 বাইটস @ রিসার্চকে ধন্যবাদ

Function A(i)
For Each w In i.Split({"0000000"},0)
For Each l In w.Split({"000"},0)
Dim c=0
For Each p In l.Split("0")
c=c*2+1+p.Length\2
Next
A &="!ETIANMSURWDKGOHVF!L!PJBXCYZQ!!54!3!!!2!!!!!!!16!!!!!!!7!!!8!90"(c)
Next
A+=" "
Next
End Function

একটি ফাংশন যা 1গুলি এবং 0এর একটি স্ট্রিং নেয় এবং একটি স্ট্রিং প্রদান করে। (প্রকৃতপক্ষে, কেবলমাত্র এর 0জন্য OFFএকটি কঠিন প্রয়োজন Any OFFযা কিছু নয় তা অনুমান করা হয় ON)।

স্ট্রিং আক্ষরিক হ'ল অ্যারে আকারে বাইনারি হ্যাপ হিসাবে মোর্স কোড সেটআপ। VB.NET আপনাকে অক্ষরের অ্যারে হিসাবে স্ট্রিংগুলি সূচী করতে দেয়। \বিভাগ পূর্ণসংখ্যা, এর জন্য বাম সাব গাদা গ্রহণ 1বা জন্য সঠিক সাব গাদা 111

আমি !যখন ফাঁকা জায়গার কোনও মূল্য নেই তখন খালি হিসাবে ব্যবহার করেছি । সূচকগুলি সঠিকভাবে প্যাড করা দরকার।

ভিবি.এনইটি আপনাকে ফাংশন নামের (এই ক্ষেত্রে, A) একটি মান নির্ধারণ করে ফিরে আসতে দেয় । &আউটপুট স্ট্রিংটি তৈরি করতে আমি কেবল পুনরায় পুনরুক্তি করে স্ট্রিং কন্ডকেটেশনগুলি ( ) করি। প্রথমবারের মতো আমাকে ব্যবহার করা দরকার &কারণ ব্যবহারের +ফলে একটি অগ্রণী নাল চর পড়ে যায় তবে অন্য যে কোনও সময় আমি ব্যবহার করতে পারি +যা &স্ট্রিংয়ের মতোই আচরণ করে ।

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


1
আপনি ব্যবহার করে "!ETIANMSURWDKGOHVF!L!PJBXCYZQ!!5473!!8290!!!!!16", এবং তারপরে ইনডেক্সিং করে 7 বাইট সংরক্ষণ M(c-c\48*22)করতে পারেন এবং তারপরে আপনি আরও 4 টি এমনকি এমনকি ব্যবহার না করে M, কেবল স্ট্রিং আক্ষরিক ইনলাইন ব্যবহার করে সংরক্ষণ করতে পারেন ।
পুনরাবৃত্তি

@ রিসার্সিভ আমি 4 টি বাইট ট্রিক বুঝতে পারি, সহায়তার জন্য ধন্যবাদ! আপনি যেভাবে সূচকটি পরিবর্তন করছেন তা বুঝতে আমার সমস্যা হচ্ছে। আমি যদি স্ট্রিংটিকে আক্ষরিক প্রতিস্থাপন করি এবং তারপরে ব্যবহার M(c-c\48*22)করি তবে আমি 2017 কেসটির বাইরে সীমা ছাড়িয়ে যাব। আমি মনে করি ভিবি একই বিভাগে বিভাগ এবং গুণকে করবে; আমি কি একটি প্রথম বন্ধনী মিস করছি?
ব্রায়ান জে

আপনি অগ্রাধিকার সম্পর্কে ঠিক। c\48*22হয় হয় 0বা হয় 22। স্ট্রিংয়ের শেষে "ভাঁজ" করে আরও ছোট cকরার জন্য এটি শর্তসাপেক্ষে 22 টি বিয়োগ করার একটি উপায় M। যদি এটি আপনার পক্ষে কাজ করে না, আপনি সর্বদা A &=(" ")আরও 2 বাইটের জন্য প্যারেন্সগুলি সরাতে পারেন । :)
পুনরাবৃত্তি

এবং তারপর আপনি পরিবর্তন করতে পারেন &=থেকে +=, এবং অন্য দুই শূণ্যস্থান মুছে ফেলুন।
পুনরাবৃত্তিমূলক

@ রিসার্সিভ ওহ, দুহ! অনেক অতিরিক্ত প্যারেন। প্লাসে পরিবর্তনের সমস্যাটি তখন আমার স্ট্রিংয়ের শুরুতে আমার কাছে একটি অগ্রণী নাল অক্ষর। যদিও এটি কোনও বড় বিষয় নয়।
ব্রায়ান জে

3

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

s=>s.split`000`.map(e=>'  ETIANMSURWDKGOHVF L PJBXCYZQ'[c=+`0b${1+e.replace(/0?(111|1)/g,d=>+(d>1))}`]||'473168290 5'[c%11]).join``


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

আপনি যদি বিন্দুগুলিকে 0s এবং ড্যাশগুলিকে 1 সেটে এবং 1 টির সাথে উপসর্গ পরিবর্তন করেন তবে আপনি বাইনারি সংখ্যা পাবেন যা দশমিক হিসাবে রূপান্তরিত হওয়ার পরে আপনি:

  1. চিঠিগুলি: 2 - 18, 20 এবং 22 - 29.
    এগুলিকে ইনডেক্স করে সঠিক অক্ষরে রূপান্তর করা যায় ' ETIANMSURWDKGOHVF L PJBXCYZQ'
  2. নম্বরগুলি: 32, 33, 35, 39, 47, 48, 56, 60, 62, এবং 63.
    আমরা যদি এই সংখ্যাগুলি মডুলাস 11 গ্রহণ করি তবে আমরা 0 - 8 এবং 10 নম্বর পাই যা সঠিক সংখ্যায় রূপান্তর করা যাবে ইনডেক্সিং '473168290 5'

প্রোগ্রামটি অক্ষরগুলিতে বিভক্ত হয়, তারপরে প্রতিটি অক্ষরকে বিন্দু এবং ড্যাশগুলিতে রূপান্তর করে, যা উপরের নিয়মের ভিত্তিতে উপযুক্ত আউটপুটে রূপান্তরিত হয়।


পরীক্ষার কেস:


3

পাইথন 2 , 127 বাইট

lambda s:''.join("IVMB  T  K 9LZF 1HWO3 GUS4 8 7A  E QR 26   NJX    Y0P 5D  C"[(int('0'+l)^2162146)%59]for l in s.split('000'))

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

বিটওয়াইজ জোর এবং একটি দীর্ঘতর রেফারেন্স স্ট্রিংয়ের বিনিময়ে প্রতিস্থাপনটি সরিয়ে এবং বেস 10 এ কাজ করে টিফেল্ডের সমাধানটি বন্ধ করে দেওয়া ।


2

পিএইচপি, 321 284 বাইট

@Ovs কে ধন্যবাদ 37 বাইট সংরক্ষণ করা হয়েছে

$a=array_flip([242,161,134,125,122,121,202,229,238,241,5,67,70,22,1,43,25,40,4,53,23,49,8,7,26,52,77,16,13,2,14,41,17,68,71,76]);foreach(split('0000000',$argv[1])as$w){foreach(split('000',$w)as$m){echo($v=$a[base_convert(str_replace([111,0],[2,],$m),3,10)])>9?chr($v+55):$v;}echo' ';}  

পূর্ববর্তী সংস্করণ (321 বাইট)

$a=array_flip([22222,12222,11222,11122,11112,11111,21111,22111,22211,22221,12,2111,2121,211,1,1121,221,1111,11,1222,212,1211,22,21,222,1221,2212,121,111,2,112,1112,122,2112,2122,2211]);foreach(split('0000000',$argv[1])as$w){foreach(split('000',$w)as$m){echo($v=$a[str_replace([111,0],[2,],$m)])>9?chr($v+55):$v;}echo' ';}

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

অবরুদ্ধ সংস্করণ:

$a=array_flip(
// Building an array $a with every Morse letter representation (1=dot, 2=dash) and flip it
               [22222,12222,11222,11122,11112,
                // 01234
                11111,21111,22111,22211,22221,
                // 56789
                12,2111,2121,211,1,1121,221,
                // ABCDEFG
                1111,11,1222,212,1211,22,
                // HIJKLM
                21,222,1221,2212,121,111,2,
                // NOPQRST
                112,1112,122,2112,2122,2211]);
                // UVWXYZ
foreach (split('0000000', $argv[1]) as $w){
// for each word (separate with 7 consecutive zeroes)
    foreach (split('000',$w) as $m){
    // for each letter (separate with 3 consecutive zeroes)
        echo ($v = $a[str_replace([111,0],[2,],$m)]) > 9
        // Replace '111' with '2' and '0' with nothing and find $v, the corresponding entry in the array $a
            ? chr($v+55)
            // If > 9th element, then letter => echo the ASCII code equal to $v+55
            : $v;
            // Else echo $v
    }
    echo ' ';
    // Echo a space
}

2

জাভা (ওপেনজেডিকে 8) , 370 বাইট

s->{String r="";for(String t:s.split("0000000")){for(String u:t.split("000"))for(int x[]={1,7,5,21,29,23,87,93,119,85,117,341,375,343,373,471,477,349,469,1877,1367,1909,1879,1501,1911,1885,7637,5495,7543,7639,6007,30581,22391,122333,96119,489335},i=x.length;i-->0;)if(u.equals(Long.toString(x[i],2)))r+="ETISNAURMHD5WVLKGFB64ZXPOC73YQJ82910".charAt(i);r+=" ";}return r;}

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

  • 3 বাইট সংরক্ষিত হয়েছে @ জুটনার্গের জন্য ধন্যবাদ।

1
Integer.toString (x [i], 2) এর পরিবর্তে Long.toString (x [i], 2) ব্যবহার করে কিছু শেভ করতে পারেন
জিউটার্নগ

2

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

-rপতাকা জন্য +1 বাইট ।

s/000/;/g
s/111/_/g
s/0//g
s/$/;:51111141111_3111__211___i1____6_11117__1118___119____10_____H1111V111_F11_1L1_11P1__1J1___B_111X_11_C_1_1Y_1__Z__11Q__1_S111U11_R1_1W1__D_11K_1_N__1G__1O___I11A1_M__E1T_/
:
s/([1_]+);(.*([^1_])\1)/\3\2/
t
y/i/1/
s/;/ /g
s/:.*//g

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

ব্যাখ্যা

এটি একটি খুব বেসিক লুক টেবিল সমাধান।

প্রথম তিনটি লাইন ইনপুটটিকে রূপান্তর করে তাই ড্যাশগুলি _এস এবং বিন্দুগুলি 1এস। প্রথমে 000গুলি এর সাথে প্রতিস্থাপন করা হয় ;, সুতরাং অক্ষর দ্বারা ;শব্দ এবং শব্দ দ্বারা পৃথক করা হয় ;;0। তার পরে 111গুলি দ্বারা প্রতিস্থাপন করা হবে _এবং সমস্ত 0গুলি বর্জন করা হবে এবং 1গুলি বিন্দুর জন্য রেখে যাবে ।

s/000/;/g
s/111/_/g
s/0//g

পরবর্তী লাইনটি সারণী সংযোজন করে। এটি এমন একটি রূপ নিয়েছে cmcmcm...যেখানে cএকটি চরিত্র এবং mএটি প্রতিনিধিত্বকারী _1গুলি এর ক্রম । iছদ্মবেশ জন্য 1টেবিলে প্রতিস্থাপিত হয় । যেহেতু সেডগুলিতে নিয়মিত প্রকাশগুলি সর্বদা লোভী, তাই সারণিটি দীর্ঘতম থেকে সংক্ষিপ্ত কোডে সাজানো হয় (উদাহরণস্বরূপ পরিবর্তে 1_ম্যাচগুলি )।A1_i1____

s/$/;:51111141111_3111__211___i1____6_11117__1118___119____10_____H1111V111_F11_1L1_11P1__1J1___B_111X_11_C_1_1Y_1__Z__11Q__1_S111U11_R1_1W1__D_11K_1_N__1G__1O___I11A1_M__E1T_/

এর পরে, একটি লুপে, _s এবং 1s এর প্রতিটি ক্রম (এবং পরবর্তী ;)টি যথাযথ অক্ষর দ্বারা প্রতিস্থাপন করা হবে:

:
s/([1_]+);(.*([^1_])\1)/\3\2/
t

পরিশেষে, ক্লিনআপ: iগুলি গুলি এস এর সাথে প্রতিস্থাপন করা হবে 1, বাকি ;গুলি ফাঁকা স্থান রয়েছে, এবং সারণী মুছে ফেলা হবে:

y/i/1/
s/;/ /g
s/:.*//g


1

জাভাস্ক্রিপ্ট (ES6), 104 102 101 99 বাইট

s=>s.split`000`.map(n=>" _T__9VEFO0K7MX_CGS__LU1RYIJ845__Z_B_D6QP_3__AHNW2"[n*1741%8360%51]).join``

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

কিভাবে?

বাইনারি থেকে দশমিক খরচ বাইটে রূপান্তর করার কারণে আমরা একটি হ্যাশ ফাংশন ব্যবহার করি যা বেস 10 এ ব্যাখ্যা করা বাইনারি ব্লকে সরাসরি কাজ করে।

উদাহরণ

dot dash dot dot = 101110101
101110101 * 1741 = 176032685841
176032685841 % 8360 = 3081
3081 % 51 = 21

--> The 21st character in the lookup table is 'L' (0-indexed).

আমি এই এক-পদক্ষেপ পদ্ধতির খুব পছন্দ করি। সংক্ষিপ্ত পর্যায়ে ফাংশন সহ আপনি এই 37 টি আউটপুট 50 মাপের নিখুঁত হ্যাশের সাথে ফিট করার জন্য কত বড় অনুসন্ধান করেছিলেন?
জয়প্রিচ

n*p%m0%m11পি<100001<মি0<100001<মি1<100

1

রেটিনা , 144 138 130 103 বাইট

T`d`@#
^|@@@

 @?#
E
{T`L#@`R6_BI_Z5S1C_GD8__\L\HNF3P__7_`\w@#
T`589B-INPRSZ#@`490XYKT2\OVAMJWUQ_`\w##

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। ব্যাখ্যা:

T`d`@#

বাইনারি অঙ্কগুলি অন্যান্য অক্ষরগুলিতে পরিবর্তন করুন কারণ 0 এবং 1 বৈধ আউটপুট।

^|@@@
 

প্রতিটি অক্ষরের আগে একটি স্থান এবং শব্দের মধ্যে দুটি ফাঁকা স্থান সন্নিবেশ করান।

 @?#
E

ধরে নিন যে সমস্ত অক্ষর এস।

{T`L#@`R6_BI_Z5S1C_GD8__\L\HNF3P__7_`\w@#

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

T`589B-INPRSZ#@`490XYKT2\OVAMJWUQ_`\w##

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




0

ES6 , 268 বাইট

মোর্সের একটি বেস 36 টি উপস্থাপনা থেকে সূচি পজিশনে ম্যাপিংয়ের পরে ASCII এনকোডিং ব্যবহার করে। আমার সেরা গল্ফের দিন নয়, তবে এটি কেবল 15 মিনিট সময় নেয়।

s=>s.split('00000').map(w=>String.fromCharCode.apply({},w.split('000').map(c=>"ahkn,225z,h9z,48n,11z,9h,1g5,5w5,nlh,2me5,,,,,,,,n,d1,1gd,39,1,9p,d9,2d,5,4mv,d3,ad,3b,t,1h3,15p,5w7,2l,l,7,2f,9j,af,1g7,1h1".split(',').indexOf(parseInt(c,2).toString(36))+48))).join(' ')

পড়া সহজ (কিন্ডা):

s=>
s
.split('00000')
.map(w=>
	String.fromCharCode.apply({},
		w.split('000')
			.map(c=>
				"ahkn,225z,h9z,48n,11z,9h,1g5,5w5,nlh,2me5,,,,,,,,n,d1,1gd,39,1,9p,d9,2d,5,4mv,d3,ad,3b,t,1h3,15p,5w7,2l,l,7,2f,9j,af,1g7,1h1"
				.split(',')
				.indexOf(
					parseInt(c,2).toString(36)
				)+48)
			)
	).join(' ')


0

ওল্ফ্রাম ভাষা (গণিত) , ২৮৮ বাইট )

কোনও ফাইল থেকে বাইনারি হিসাবে ডেটা পড়ার কথা ভেবেছিলেন তবে এটি ব্যাখ্যা করা শক্ত হয়ে যায়। বেস 36 টি দক্ষতার সাথে ডেটা সংরক্ষণ করার জন্য একটি ভাল সমঝোতার উপায় বলে মনে হয়েছিল।

ইনপুট হিসাবে 0 এবং 1 এর স্ট্রিং নেয়। 7 টি শূন্য রানের সাথে শুরু করে, তারপর 3 রানের সাহায্যে শুরু হওয়া একটি সিরিজ প্রতিস্থাপন করে, তারপরে সবচেয়ে দীর্ঘতম বাইনারি অক্ষরগুলি সংক্ষিপ্ততম দিকে নামায়। প্রতিস্থাপনের আদেশ গুরুত্বপূর্ণ।

StringReplace[#,Thread@Rule[Join[{"0000000","000"},#~FromDigits~36~IntegerString~2&/@StringSplit@"ahkn 2me5 225z nlh h9z 5w7 5w5 5tj 4mv 48n 1h3 1h1 1gd 1g7 1g5 15p 11z d9 d3 d1 af ad 9p 9j 9h 3b 39 2l 2f 2d t n l 7 5 1"],Insert[Characters@" 09182Q7YJ3OZCX6P4GKBWLFV5MDRUHNASTIE","",2]]]&

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


অপেক্ষা করুন, ম্যাথামেটিকায় বিল্ট-ইন কোনও মুরস কোড নেই?
জাকারি

এখনো পর্যন্ত না! আমি চেক করেছি.
কেলি লোডার

0

পার্ল 5 , 195 বাইট

194 বাইট কোড +1 এর জন্য -p

%h=map{$_,(A..Z,0..9)[$i++]}unpack"S26I2S7I","\xd5]u]\xddUw\xd7uww\xdd\xd7]WWwWwuwwwwwWwWUU\xd5uw\xdd\xdd";s/0{7}/ /g;s/(\d+?)(000|\b)/$h{oct"0b$1"}/ge

আমি কেবল একটি স্ট্যান্ডার্ড প্যাকযুক্ত বাইনারি স্ট্রিং দিয়ে এই কাজটি করতে পারি না, উচ্চতর বাইট চরগুলি এড়াতে হয়েছিল অন্যথায় আমি 171 এ থাকতাম, যদি কেউ জানে যে আমি কী মিস করেছি, বা কেন এটি ভঙ্গ হচ্ছে দুর্দান্ত !

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

ব্যাখ্যা

বাইনারি স্ট্রিংটি এমন সংখ্যার একটি packএড তালিকা যা মোর্স অক্ষরগুলির সাথে সম্পর্কিত ( 101011101- ইত্যাদির 349জন্য F) এবং এটি রেঞ্জগুলির সাথে জিপ করা হয় এবং লুকিং A..Z,0..9হিসাবে ব্যবহৃত হয়। s///এক্সপ্রেশন সাত সব রানে প্রতিস্থাপন 0স্থান সঙ্গে গুলি এবং তারপর ডিজিটের সব রানে তিন দিয়ে পৃথক 0s অথবা শব্দ গণ্ডি \bথেকে তাদের সংশ্লিষ্ট কী দিয়ে %hহ্যাশ।

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