বেসিক ল্যাটিন চরিত্রের নাম


23

আসুন ফিরে আসুন বেসিকগুলিতে!

  • আপনার কোড, একটি সম্পূর্ণ প্রোগ্রাম বা ফাংশন, অবশ্যই একটি মুদ্রণযোগ্য বেসিক ল্যাটিন অক্ষরের অফিসিয়াল ইউনিকোড নামটিকে সংশ্লিষ্ট চরিত্রে রূপান্তর করতে হবে। উদাহরণস্বরূপ, ইনপুটটির জন্য LOW LINEআপনার কোডটি আউটপুট দিতে হবে _
  • আপনাকে কেবল ইনপুট হিসাবে একটি একক অক্ষরের নাম নিতে হবে।
  • আপনি বিল্ট-ইন বা অন্য কোনও প্রাইসিসিস্টিং ফাংশন বা লাইব্রেরি ব্যবহার করতে পারবেন না, যা ইউনিকোডের চরিত্রের নামের সাথে সম্পর্কিত কোনও যুক্তি সরবরাহ করে (যেমন পাইথন unicodedata, জাভা Character.getNameএবং আরও অনেক কিছু।)
  • এই নামের একটি ছাড়াও ইনপুট দেওয়ার জন্য, কোনও আচরণই গ্রহণযোগ্য।

এটি কোড গল্ফ: বাইট জেতে সংক্ষিপ্ততম কোড।

কোনও অস্পষ্টতা এড়াতে, আমরা ব্যবহার করব এমন অফিশিয়াল চরিত্রের নামগুলির পুরো সেটটি ( এই প্রশ্ন থেকে নেওয়া ):

     SPACE
!    EXCLAMATION MARK
"    QUOTATION MARK
#    NUMBER SIGN
$    DOLLAR SIGN
%    PERCENT SIGN
&    AMPERSAND
'    APOSTROPHE
(    LEFT PARENTHESIS
)    RIGHT PARENTHESIS
*    ASTERISK
+    PLUS SIGN
,    COMMA
-    HYPHEN-MINUS
.    FULL STOP
/    SOLIDUS
0    DIGIT ZERO
1    DIGIT ONE
2    DIGIT TWO
3    DIGIT THREE
4    DIGIT FOUR
5    DIGIT FIVE
6    DIGIT SIX
7    DIGIT SEVEN
8    DIGIT EIGHT
9    DIGIT NINE
:    COLON
;    SEMICOLON
<    LESS-THAN SIGN
=    EQUALS SIGN
>    GREATER-THAN SIGN
?    QUESTION MARK
@    COMMERCIAL AT
A    LATIN CAPITAL LETTER A
B    LATIN CAPITAL LETTER B
C    LATIN CAPITAL LETTER C
D    LATIN CAPITAL LETTER D
E    LATIN CAPITAL LETTER E
F    LATIN CAPITAL LETTER F
G    LATIN CAPITAL LETTER G
H    LATIN CAPITAL LETTER H
I    LATIN CAPITAL LETTER I
J    LATIN CAPITAL LETTER J
K    LATIN CAPITAL LETTER K
L    LATIN CAPITAL LETTER L
M    LATIN CAPITAL LETTER M
N    LATIN CAPITAL LETTER N
O    LATIN CAPITAL LETTER O
P    LATIN CAPITAL LETTER P
Q    LATIN CAPITAL LETTER Q
R    LATIN CAPITAL LETTER R
S    LATIN CAPITAL LETTER S
T    LATIN CAPITAL LETTER T
U    LATIN CAPITAL LETTER U
V    LATIN CAPITAL LETTER V
W    LATIN CAPITAL LETTER W
X    LATIN CAPITAL LETTER X
Y    LATIN CAPITAL LETTER Y
Z    LATIN CAPITAL LETTER Z
[    LEFT SQUARE BRACKET
\    REVERSE SOLIDUS
]    RIGHT SQUARE BRACKET
^    CIRCUMFLEX ACCENT
_    LOW LINE
`    GRAVE ACCENT
a    LATIN SMALL LETTER A
b    LATIN SMALL LETTER B
c    LATIN SMALL LETTER C
d    LATIN SMALL LETTER D
e    LATIN SMALL LETTER E
f    LATIN SMALL LETTER F
g    LATIN SMALL LETTER G
h    LATIN SMALL LETTER H
i    LATIN SMALL LETTER I
j    LATIN SMALL LETTER J
k    LATIN SMALL LETTER K
l    LATIN SMALL LETTER L
m    LATIN SMALL LETTER M
n    LATIN SMALL LETTER N
o    LATIN SMALL LETTER O
p    LATIN SMALL LETTER P
q    LATIN SMALL LETTER Q
r    LATIN SMALL LETTER R
s    LATIN SMALL LETTER S
t    LATIN SMALL LETTER T
u    LATIN SMALL LETTER U
v    LATIN SMALL LETTER V
w    LATIN SMALL LETTER W
x    LATIN SMALL LETTER X
y    LATIN SMALL LETTER Y
z    LATIN SMALL LETTER Z
{    LEFT CURLY BRACKET
|    VERTICAL LINE
}    RIGHT CURLY BRACKET
~    TILDE

2
প্রোগ্রামটির জন্য কেবল একটি চরিত্রের নাম পরিচালনা করা দরকার? উদাহরণস্বরূপ, COLON COLONআউটপুট ::, বা অবধারিত আচরণ করা উচিত ?
কেভিন ডব্লিউ।

স্পষ্ট করতে সম্পাদিত।
লুক 16

কেন String.fromCharCodeনিষিদ্ধ?
সুপারজেডি ২৪

উফফফফ, ফাংশনটি কী করে তা আমি ভুল বুঝেছি।
লুক 16

আমরা কীভাবে অবৈধ ইনপুট হ্যান্ডেল করব CLON?
edc65

উত্তর:


25

আইএ -32 মেশিন কোড, 161 160 122 বাইট

কোডের হেক্সডাম্প:

33 c0 6b c0 59 0f b6 11 03 c2 b2 71 f6 f2 c1 e8
08 41 80 79 01 00 75 ea e8 39 00 00 00 08 2c 5e
4a bd a3 cd c5 90 09 46 04 06 14 40 3e 3d 5b 23
60 5e 3f 2d 31 32 29 25 2e 3c 7e 36 39 34 33 30
21 2f 26 7d 7c 2c 3b 7b 2a 37 5d 22 35 20 3a 28
5c 27 2b 38 5f 24 5a 3c 34 74 17 3c 1a 74 16 33
c9 86 c4 0f a3 0a 14 00 41 fe cc 75 f6 8a 44 02
0e c3 8a 01 c3 8a 01 04 20 c3

এই কোডটিতে কিছু হ্যাশিং ব্যবহার করা হয়েছে। কিছু প্রাণবন্ত অনুসন্ধানের মাধ্যমে আমি জানতে পেরেছি যে ইনপুট স্ট্রিংয়ের বাইটগুলিতে নিম্নলিখিত হ্যাশ ফাংশনটি প্রয়োগ করা যেতে পারে:

int x = 0;
while (s[1])
{
    x = (x * 89 + *s) % 113;
    ++s;
}

এটি x89 দ্বারা গুণিত হয়, পরবর্তী বাইট যুক্ত করে (ASCII-কোড), এবং একটি অবশিষ্ট মডেল 113 নেয় It এটি শেষ ব্যতীত ইনপুট স্ট্রিংয়ের সমস্ত বাইটে এটি করে, উদাহরণস্বরূপ LATIN CAPITAL LETTER Aএবং LATIN CAPITAL LETTER Xএকই হ্যাশ কোডটি দিন।

এই হ্যাশ ফাংশনটির কোনও সংঘর্ষ নেই এবং আউটপুট 0 ... 113 এর মধ্যে রয়েছে (আসলে, ভাগ্যক্রমে, পরিসীমাটি আরও সংকীর্ণ: 3 ... 108)।

সমস্ত প্রাসঙ্গিক স্ট্রিংয়ের হ্যাশ মানগুলি সেই স্থানটি পুরোপুরি পূরণ করে না, তাই আমি হ্যাশ টেবিলটি সংকোচনের জন্য এটি ব্যবহার করার সিদ্ধান্ত নিয়েছি। আমি একটি "স্কিপ" টেবিল (112 বিটস) যুক্ত করেছি, যার মধ্যে 0 টি রয়েছে যদি হ্যাশ টেবিলের সংশ্লিষ্ট স্থানটি খালি থাকে এবং অন্যথায় 1 টি। এই টেবিলটি একটি হ্যাশ মানকে একটি "সংকুচিত" সূচকে রূপান্তর করে, যা ঘন LUT সম্বোধনের জন্য ব্যবহার করা যেতে পারে।

স্ট্রিংগুলি LATIN CAPITAL LETTERএবং LATIN SMALL LETTERহ্যাশ কোডগুলি 52 এবং 26 দেয়; তারা পৃথকভাবে পরিচালিত হয়। এটির জন্য এখানে একটি সি কোড রয়েছে:

char find(const char* s)
{
    int hash = 0;
    while (s[1])
    {
        hash = (hash * 89 + *s) % 113;
        ++s;
    }

    if (hash == 52)
        return *s;
    if (hash == 26)
        return *s + 32;

    int result_idx = 0;
    int bit = 0;
    uint32_t skip[] = {0x4a5e2c08, 0xc5cda3bd, 0x04460990, 0x1406};
    do {
        if (skip[bit / 32] & (1 << bit % 32))
            ++result_idx;
        ++bit;
    } while (--hash);

    return "@>=[#`^?-12)%.<~69430!/&}|,;{*7]\"5 :(\\'+8_$"[result_idx];
}

সম্পর্কিত সমাবেশ ভাষা কোড (এমএস ভিজ্যুয়াল স্টুডিও ইনলাইন-এসেম্বলি সিনট্যাক্স):

_declspec(naked) char _fastcall find(char* s)
{
    _asm {
        xor eax, eax;
    mycalc:
        imul eax, eax, 89;
        movzx edx, [ecx];
        add eax, edx;
        mov dl, 113;
        div dl;
        shr eax, 8;
        inc ecx;
        cmp byte ptr [ecx + 1], 0;
        jne mycalc;

        call mycont;
        // skip table
        _asm _emit 0x08 _asm _emit 0x2c _asm _emit 0x5e _asm _emit 0x4a;
        _asm _emit 0xbd _asm _emit 0xa3 _asm _emit 0xcd _asm _emit 0xc5;
        _asm _emit 0x90 _asm _emit 0x09 _asm _emit 0x46 _asm _emit 0x04;
        _asm _emit 0x06 _asm _emit 0x14;
        // char table
        _asm _emit '@' _asm _emit '>' _asm _emit '=' _asm _emit '[';
        _asm _emit '#' _asm _emit '`' _asm _emit '^' _asm _emit '?';
        _asm _emit '-' _asm _emit '1' _asm _emit '2' _asm _emit ')';
        _asm _emit '%' _asm _emit '.' _asm _emit '<' _asm _emit '~';
        _asm _emit '6' _asm _emit '9' _asm _emit '4' _asm _emit '3';
        _asm _emit '0' _asm _emit '!' _asm _emit '/' _asm _emit '&';
        _asm _emit '}' _asm _emit '|' _asm _emit ',' _asm _emit ';';
        _asm _emit '{' _asm _emit '*' _asm _emit '7' _asm _emit ']';
        _asm _emit '"' _asm _emit '5' _asm _emit ' ' _asm _emit ':';
        _asm _emit '(' _asm _emit '\\' _asm _emit '\'' _asm _emit '+';
        _asm _emit '8' _asm _emit '_' _asm _emit '$';

    mycont:
        pop edx;
        cmp al, 52;
        je capital_letter;
        cmp al, 26;
        je small_letter;

        xor ecx, ecx;
        xchg al, ah;
    decode_hash_table:
        bt [edx], ecx;
        adc al, 0;
        inc ecx;
        dec ah;
        jnz decode_hash_table;

        mov al, [edx + eax + 14];
        ret;

    capital_letter:
        mov al, [ecx];
        ret;

    small_letter:
        mov al, [ecx];
        add al, 32;
        ret;
    }
}

কিছু উল্লেখযোগ্য বাস্তবায়ন বিশদ:

  • CALLকোডটিতে একটি পয়েন্টার পেতে এটি একটি নির্দেশনা ব্যবহার করে, যেখানে হার্ড-কোডেড টেবিল থাকে। -৪-বিট মোডে এটি ripপরিবর্তে রেজিস্টারটি ব্যবহার করতে পারে ।
  • এটি ব্যবহার করে BTSkip টেবিল অ্যাক্সেস করতে নির্দেশ
  • এটা তোলে মাত্র 3 রেজিস্টার ব্যবহার কাজ করতে পরিচালনা করে eax, ecx, edx, clobbered যাবে - তাই সংরক্ষণ করুন এবং রেজিস্টার পুনঃস্থাপন কোন প্রয়োজন নেই
  • হ্যাশ টেবিলটি ডিকোড করার সময় এটি ব্যবহার করে alএবং ahসাবধানতার সাথে, যাতে ডান জায়গায় ah0 থেকে কমে যায় এবং পুরো eaxরেজিস্টারটি LUT সূচক হিসাবে ব্যবহার করা যায়

18

জাভাস্ক্রিপ্ট ES6, 228 236 247 257 267 274 287

দ্রষ্টব্য: 7 টি অক্ষর সংরক্ষণ করা হয়েছে THX @ ev3 কম্যান্ডার

নোট 2: 7 টি প্রধান সম্পাদনার পরে জ্যাপ্টের চেয়ে ভাল ,

n=>n<'L'?"XC!DO$MP&OS'SK*N--FU.ZE0TW2HR3OU4FI5IX6EI8NI9EM;LS=R->IA@MF^AV`MM,NE1EN7LO:".replace(/(..)./g,(c,s)=>~n.search(s)?n=c[2]:0)&&n:'~  / ;  |?"\\ ) }]_+ #% < ( {['[(n<'Q')*13+n.length-(n>'T')-4]||n[21]||n[19].toLowerCase()

পরীক্ষা করার জন্য স্নিপেট চালান

F=n=>
  n<'L'?"XC!DO$MP&OS'SK*N--FU.ZE0TW2HR3OU4FI5IX6EI8NI9EM;LS=R->IA@MF^AV`MM,NE1EN7LO:"
  .replace(/(..)./g,(c,s)=>~n.search(s)?n=c[2]:0)&&n:
  '~  / ;  |?"\\ ) }]_+ #% < ( {['[(n<'Q')*13+n.length-(n>'T')-4]
  ||n[21]||n[19].toLowerCase()

//TEST
console.log=x=>O.innerHTML+=x+'\n'
;[
['&','AMPERSAND'],
['\'','APOSTROPHE'],
['*','ASTERISK'],
['^','CIRCUMFLEX ACCENT'],
[':','COLON'],
[',','COMMA'],
['@','COMMERCIAL AT'],
['8','DIGIT EIGHT'],
['5','DIGIT FIVE'],
['4','DIGIT FOUR'],
['9','DIGIT NINE'],
['1','DIGIT ONE'],
['7','DIGIT SEVEN'],
['6','DIGIT SIX'],
['3','DIGIT THREE'],
['2','DIGIT TWO'],
['0','DIGIT ZERO'],
['$','DOLLAR SIGN'],
['=','EQUALS SIGN'],
['!','EXCLAMATION MARK'],
['.','FULL STOP'],
['`','GRAVE ACCENT'],
['>','GREATER-THAN SIGN'],
['-','HYPHEN-MINUS'],
['A','LATIN CAPITAL LETTER A'],
['B','LATIN CAPITAL LETTER B'],
['C','LATIN CAPITAL LETTER C'],
['D','LATIN CAPITAL LETTER D'],
['E','LATIN CAPITAL LETTER E'],
['F','LATIN CAPITAL LETTER F'],
['G','LATIN CAPITAL LETTER G'],
['H','LATIN CAPITAL LETTER H'],
['I','LATIN CAPITAL LETTER I'],
['J','LATIN CAPITAL LETTER J'],
['K','LATIN CAPITAL LETTER K'],
['L','LATIN CAPITAL LETTER L'],
['M','LATIN CAPITAL LETTER M'],
['N','LATIN CAPITAL LETTER N'],
['O','LATIN CAPITAL LETTER O'],
['P','LATIN CAPITAL LETTER P'],
['Q','LATIN CAPITAL LETTER Q'],
['R','LATIN CAPITAL LETTER R'],
['S','LATIN CAPITAL LETTER S'],
['T','LATIN CAPITAL LETTER T'],
['U','LATIN CAPITAL LETTER U'],
['V','LATIN CAPITAL LETTER V'],
['W','LATIN CAPITAL LETTER W'],
['X','LATIN CAPITAL LETTER X'],
['Y','LATIN CAPITAL LETTER Y'],
['Z','LATIN CAPITAL LETTER Z'],
['a','LATIN SMALL LETTER A'],
['b','LATIN SMALL LETTER B'],
['c','LATIN SMALL LETTER C'],
['d','LATIN SMALL LETTER D'],
['e','LATIN SMALL LETTER E'],
['f','LATIN SMALL LETTER F'],
['g','LATIN SMALL LETTER G'],
['h','LATIN SMALL LETTER H'],
['i','LATIN SMALL LETTER I'],
['j','LATIN SMALL LETTER J'],
['k','LATIN SMALL LETTER K'],
['l','LATIN SMALL LETTER L'],
['m','LATIN SMALL LETTER M'],
['n','LATIN SMALL LETTER N'],
['o','LATIN SMALL LETTER O'],
['p','LATIN SMALL LETTER P'],
['q','LATIN SMALL LETTER Q'],
['r','LATIN SMALL LETTER R'],
['s','LATIN SMALL LETTER S'],
['t','LATIN SMALL LETTER T'],
['u','LATIN SMALL LETTER U'],
['v','LATIN SMALL LETTER V'],
['w','LATIN SMALL LETTER W'],
['x','LATIN SMALL LETTER X'],
['y','LATIN SMALL LETTER Y'],
['z','LATIN SMALL LETTER Z'],
['{','LEFT CURLY BRACKET'],
['(','LEFT PARENTHESIS'],
['[','LEFT SQUARE BRACKET'],
['<','LESS-THAN SIGN'],
['_','LOW LINE'],
['#','NUMBER SIGN'],
['%','PERCENT SIGN'],
['+','PLUS SIGN'],
['?','QUESTION MARK'],
['"','QUOTATION MARK'],
['\\','REVERSE SOLIDUS'],
['}','RIGHT CURLY BRACKET'],
[')','RIGHT PARENTHESIS'],
[']','RIGHT SQUARE BRACKET'],
[';','SEMICOLON'],
['/','SOLIDUS'],
[' ','SPACE'],
['~','TILDE'],
['|','VERTICAL LINE'],
].forEach(t=>{
  var r=F(t[1]),ok=r==t[0]
  //if (!ok) // uncomment to see just errors
  console.log(r+' ('+t[0]+') '+t[1]+(ok?' OK':' ERROR'))
})
console.log('DONE')
<pre id=O></pre>


5
ঠিক কিভাবে? সাবাশ.
সুপারজেডি ২৪

প্রকৃতপক্ষে, বর্ণমালা ছাড়াও "এলএ" দিয়ে আর কোনও
গৃহনির্মাণ নেই

@ ev3 কম্যান্ডার হ্যাঁ, তবে এখানে আমি ল্যাট, আরআইজি এবং এলইএফ পরিচালনা করি এবং 2 টি অক্ষর খুব কম বলে মনে হয়, বাম এবং কম ছিল
edc65

ওহ। আমি স্নিগ্ধ হয়েছি এবং আরআইজি / লেফ অংশটি দেখিনি।
ev3commander

@ ev3 কমেন্ডার দ্বিতীয় ভাবা আপনার একটি বিষয় আছে! আমি কম এবং বাম পরিচালনা পরিচালনা করতে এবং 4 বাইট সংরক্ষণ করতে পারি। Thx
edc65

10

জাপট , 230 বাইট

V=U¯2;Ug21 ªU<'R©Ug19 v ªV¥"DI"©`ze¿twâ¿¿¿¿e¿i`u bUs6,8)/2ªUf"GN" ©"<>+=$#%"g`¤grp¤qºnupe`u bV /2 ªUf"T " ©"[]\{}()"g"QSUCAP"bUg6) ªUf" M" ©"!\"?"g"COE"bUg2) ªV¥"CO"©",:@"g"ANE"bUg4) ª" &'*-./\\;~^`_|"g`spaµp¿豢¿Èögrlove`u bV /2

প্রত্যেকে ¿একটি অপ্রিনিতযোগ্য ইউনিকোড চর প্রতিনিধিত্ব করে। এটি অনলাইন চেষ্টা করুন!

Ungolfed:

V=Us0,2;Ug21 ||U<'R&&Ug19 v ||V=="DI"&&"zeontwthfofisiseeini"u bUs6,8)/2||Uf"GN" &&"<>+=$#%"g"legrpleqdonupe"u bV /2 ||Uf"T " &&"[]\{}()"g"QSUCAP"bUg6) ||Uf" M" &&"!\"?"g"COE"bUg2) ||V=="CO"&&",:@"g"ANE"bUg4) ||" &'*-./\\;~^`_|"g"spamapashyfusoreseticigrlove"u bV /2

এটা সত্যিই মজা ছিল। আমি চরিত্রের নামগুলি কয়েকটি বড় অংশে বিভক্ত করেছি:

0. প্রথম দুটি অক্ষর নিন

V=Us0,2;Vএর প্রথম দুটি বর্ণের ক্ষেত্রে পরিবর্তনশীল সেট করেUইনপুট স্ট্রিংয়ের । এটি পরে কাজে আসবে।

1. মূলধন

এটি সবচেয়ে সহজ: মূল অক্ষরগুলি কেবলমাত্র 21 পজিশনে একটি অক্ষর রয়েছে যা সবগুলি সঠিক অক্ষর এবং ক্ষেত্রে হয়। সুতরাং,Ug21 যথেষ্ট।

2. ছোট হাতের অক্ষর

আরেকটি মোটামুটি সহজ; শুধুমাত্র অন্য নাম অবস্থান 19 এ একটি অক্ষর রয়েছে RIGHT SQUARE BRACKET, তাই আমরা পরীক্ষা নাম আগে আসে Rসঙ্গে U<'R, তারপর যদি এটা (হয় &&), আমরা 19 গৃহস্থালির কাজ নিতে Ug19এবং এটির সাথে ছোট হাতের অক্ষরে নিক্ষেপv

3. সংখ্যা

এই নামগুলি সমস্ত দিয়ে শুরু হয় DI(এবং সৌভাগ্যক্রমে, অন্য কেউ নয়), সুতরাং যদি V=="DI"আমরা এটি একটি সংখ্যায় পরিণত করতে পারি। কয়েকটি অঙ্কের নামের প্রথম অক্ষর একই তবে প্রথম দুটি অক্ষরই যথেষ্ট। এগুলিকে এক স্ট্রিংয়ের সাথে সংযুক্ত করে আমরা পাই ZEONTWTHFOFISISEEINI। এখন আমরা কেবলমাত্র bঅঙ্কের নামের সাথে প্রথম দুটি অক্ষরের সূচক নিতে এবং দুটি দিয়ে Us6,8)ভাগ করতে পারি।

4। SIGN

এর মধ্যে সাতটি নাম রয়েছে SIGN:

<    LESS-THAN SIGN
>    GREATER-THAN SIGN
+    PLUS SIGN
=    EQUALS SIGN
$    DOLLAR SIGN
#    NUMBER SIGN
%    PERCENT SIGN

প্রথমে আমরা পরীক্ষা করে দেখি যে এটিতে শব্দটি রয়েছে SIGN। দেখা যাচ্ছে GNযে যথেষ্ট; নামের Uf"GN"সমস্ত দৃষ্টান্ত ফেরত দেয় GN, nullএটিতে যদি 0 টি দৃষ্টান্ত থাকে এবং এইভাবে এড়িয়ে যায়।

এখন, অঙ্কগুলির মতো একই কৌশলটি ব্যবহার করে, আমরা প্রথম দুটি বর্ণকে একটি স্ট্রিংয়ে একত্রিত করি LEGRPLEQDONUPE, তারপরে সূচকটি নিয়ে যাই এবং দুটি দ্বারা বিভক্ত হয়। এটি একটি সংখ্যার ফলাফল দেয় 0-6, যা আমরা স্ট্রিং থেকে সংশ্লিষ্ট চরিত্রটি নিতে ব্যবহার করতে পারি <>+=$#%

5। MARK

এতে তিনটি অক্ষর রয়েছে MARK:

!    EXCLAMATION MARK
"    QUOTATION MARK
?    QUESTION MARK

এখানে আমরা একই কৌশল ব্যবহার করি SIGN Mএই তিনটি অন্যদের থেকে আলাদা করার পক্ষে যথেষ্ট। প্রতীকটিতে অনুবাদ করতে, এবার একটি অক্ষর পরীক্ষা করা যথেষ্ট: পজিশনে থাকা অক্ষরটি তিনটি অক্ষরের জন্যই আলাদা। এর অর্থ সঠিক চরিত্রটি বেছে নেওয়ার সময় আমাদের দুটি দ্বারা ভাগ করতে হবে না।

6। LEFT/RIGHT

এই গ্রুপ বন্ধনী এবং বন্ধনী রয়েছে, []{}()। এটা সত্যিই উভয় ক্যাপচার জটিল করা হবে LEFTএবং RIGHT, কিন্তু সৌভাগ্যবশত, তারা সব স্ট্রিং ধারণ । আমরা যেমনটি করেছি তেমনি একই কৌশল দ্বারা এটি পরীক্ষা করি SIGN। প্রতীক হিসাবে অনুবাদ করতেMARK , একটি বর্ণ পরীক্ষা করা যথেষ্ট; position অবস্থানে থাকা চরিত্রটি ছয়টির জন্যই অনন্য।

7। CO

বাকি অক্ষরগুলি বেশ অনন্য, তবে যথেষ্ট অনন্য নয়। ওরা তিনজন দিয়ে শুরু CO: COMMA, COLON, এবং COMMERCIAL AT। আমরা ঠিক একই কৌশল ব্যবহার হিসাবে আমরা বন্ধনী করেছিল, অবস্থান 4 চরিত্র উপর ভিত্তি করে সঠিক প্রতীক নির্বাচন ( A, N, অথবা E)।

8. অন্য সব

এখন, প্রথম দুটি অক্ষর প্রতিটি নামের জন্য আলাদা different আমরা তাদের সমস্তকে একটি বড় স্ট্রিংয়ের সাথে একত্রিত করিSPAMAPASHYFUSORESETICIGRLOVE এবং প্রতিটি জোড়কে এর সাথে সম্পর্কিত চরটিতে ম্যাপ করি  &'*-./\;~^`_|

9. চূড়ান্ত পদক্ষেপ

প্রতিটি অংশ খালি স্ট্রিং দেয় বা nullএটি সঠিক না হলে, তাই আমরা সেগুলি বাম থেকে ডানে ডানদিকে যুক্ত করতে পারি ||। দ্য||অপারেটর বাম যুক্তি যদি এটা truthy থাকুন এবং সরাসরি যুক্তি অন্যথায় ফেরৎ। জাপ্টেরও অন্তর্নিহিত আউটপুট রয়েছে, ফলে ফলাফল যাই হোক না কেন, এটি স্বয়ংক্রিয়ভাবে আউটপুট বাক্সে প্রেরণ করা হবে।

প্রশ্ন, মন্তব্য এবং পরামর্শ স্বাগত!


দুর্দান্ত উত্তর এবং দুর্দান্ত ব্যাখ্যা। তবে আপনি ব্যাখ্যায় হ্যান্ডলিং বা মার্ক (!? ") উল্লেখ করতে ভুলে গেছেন
21

@ এডসি 65 উফ, ধন্যবাদ! আমি MARKঅক্ষরের একটি বিভাগে যুক্ত করেছি ।
ইটিএইচ প্রোডাকশনস

7
spamapashyfusoreseticigrlove= বরফ বালিকা প্রেম পুনরুদ্ধার করার জন্য একটি ছদ্মবেশ স্প্যাম করুন ... +1
অ্যাডমবর্কবার্ক

না, এটি এখনও গল্ফড।
ব্ল্যাকলাইট জ্বলন্ত

3

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

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

print chr(u"""ǶŀȎdȊÏöǖIhȏƜǓDZǠƣƚdžƩC+ĶÅĠěóƋŎªƱijůŰűŪūŬŭŶŷŸŹŲųŴŵžſƀƁźŻżŽƆƇƈŖÐŗǀǼǿǾǹǸǻǺȅȄȇȆȁȀȃȂǭǬǯǮǩǨǫǪǵǴǷNȌ~B""".index(unichr(hash(raw_input())%535))+32)

3

জাভাস্ক্রিপ্ট, 501 499 469 465 451 430 বাইট

a=prompt();c="5SACEgEARKeQARKbNIGNbDIGNcPIGN9AANDaAPHEgLSIShRSIS8AISK9PIGN5CMMAcHNUS9FTOP7SDUSaDERO9DONE9DTWObDREEaDOURaDIVE9DSIXbDVENbDGHTaDINE5CLON9SLONeLIGNbEIGNhGIGNdQARKdC ATjLKETfRDUSkRKEThCENT8LINEcGENTiLKETdVINEjRKET5TLDE".match(/.{5}/g).indexOf(a.length.toString(36)+a[0]+a.slice(-3));if(c>=33)c+=26;if(c>=65)c+=26;alert(a.length==20&&a[0]=="L"?a.slice(-1).toLowerCase():a.length>21?a.slice(-1):String.fromCharCode(32+c))

ব্যাখ্যা:

যে দীর্ঘ স্ট্রিং একটি সংকুচিত তালিকা। a.length.toString(36)+a[0]+a.slice(-3)নির্ধারণ করে কীভাবে, যদি আদৌ হয় তবে তালিকায় স্ট্রিংটি উপস্থাপন করা হবে। এছাড়াও, চিঠির জন্য বিশেষ যুক্তি। (স্ট্রিং সহ, a[0]এটির জন্য একটি অন্তর্নির্মিত শর্টহ্যান্ড a.charAt(0))


আপনি যদি এর সাথে প্রতিস্থাপন _করেন তবে আপনি +তালিকায় বেস 64-সংকোচনের করতে পারেন।
ইটিএইচ প্রোডাকশনস

@Ethproductions বেস 64 জিনিসকে আরও দীর্ঘ করে তোলে , খাটো নয়।
ব্ল্যাকলাইট জ্বলজ্বল

@ETHproductions নেই জাভাস্ক্রিপ্ট আছে করুন Base64-?
সুপারজেডি ২৪

@ সুপারজেডি ২২৪ হ্যাঁ এটি করে তবে ব্ল্যাকলাইট সঠিক না হলে যদি বেস 64৪ একটি সংখ্যার প্রতিস্থাপন না করে যা নিম্ন বেসে, বিশেষত বাইনারিতে প্রকাশ করা যেতে পারে।
বিবাহেরত্ম

আপনি ব্যবহার করতে পারেন btoa("abc")25% দ্বারা (যতদিন এটি বৈধ বেস-64 টেক্সট, যার ফলে এটি প্রতিস্থাপন পরে হতে হবে কম্প্রেস টেক্সট _সঙ্গে -) তারপর, atob("compressed stuff")আপনার প্রকৃত কোডে।
ইটিএইচ প্রডাকশনগুলি

1

পাওয়ারশেল, 603 547 464 বাইট

$a=-split$args
$b=switch -W($a[0]){
"LEFT"{switch -w($a[1]){"C*"{"{"}"P*"{"("}"S*"{"["}}}
"RI*"{switch -w($a[1]){"C*"{"}"}"P*"{")"}"S*"{"]"}}}
"LA*"{("$($a[3])".ToLower(),$a[3])[$a[1]-like"C*"]}
"DI*"{@{ONE=1;TWO=2;THREE=3;FOUR=4;FIVE=5;SIX=6;SEVEN=7;EIGHT=8;NINE=9;ZERO="0"}[$a[1]]}
"COMME*"{"@"}
"APO*"{"'"}
}
$c='COM,LES<GRA`GRE>QUE?QUO"COL:REV\LOW_EXC!EQU=DOL$AMP&AST*PER%PLU+SEM;SOL/SPA CIR^HYP-FUL.NUM#TIL~VER|'
($b,$c[$c.IndexOf($a[0][0..2]-join'')+3])[!$b]

( LineFeedএকই বাইট হিসাবে গণনা করা ;, তাই আমি পাঠ্যতার জন্য ব্রেকগুলি ছেড়ে দেব)

1 সম্পাদনা করুন - অনেকগুলি উপাদান স্যুইচ স্টেটমেন্টের বাইরে নিয়ে গেছে এবং এর পরিবর্তে লুকআপের জন্য একটি হ্যাশ টেবিল তৈরি করেছে।

2 সম্পাদনা করুন - ওহ হ্যাঁ ... একটি স্ট্রিংয়ের সাথে সূচীকরণ, এটাই উপায় ...

মূলত ইনপুটটি নেয়, এটি স্পেসে বিভক্ত switchকরে তোলে এবং বোকা লোকগুলিকে ফিল্টার করার জন্য প্রথম শব্দে একটি ওয়াইল্ডকার্ড করে। যে ফলাফল সেট করে $b। যদি $bঅস্তিত্ব না থাকে তবে স্ট্রিংটি $cপ্রথম শব্দের প্রথম তিনটি বর্ণের মূল্যায়ন হয়ে যায় এবং সাথে সাথে নিম্নলিখিত অক্ষরটিকে আউটপুট করে দেয়, অন্যথায় আমরা আউটপুট$b

কিছু কৌশলতে LATIN CAPITAL LETTER Rদুটি শব্দটি কিনা তার উপর ভিত্তি করে কোন সূচকে কোনও অ্যারেতে অন্তর্ভুক্ত করা হয় CAPITALএবং এটি বড় হাতের অক্ষর / ছোট হাতের অক্ষরকে আউটপুট দেয়। অন্যান্য "ট্রিক" DIGITহ্যাশ টেবিলের সাথে সূচি রেখে এস। মনে রাখবেন যে এখানে একই সূচি-ইন-এ-স্ট্রিং ট্রিকটি সংক্ষিপ্ত নয় (এটি আসলে এক বাইট দ্বারা দীর্ঘতর)।


তোমাকে আবার মারছি।
সুপারজেডি ২৪

1

জাভাস্ক্রিপ্ট, 416 411 389 বাইট

l=(E)=>{return E=E.replace(/LA.*N|BR.*T|SIGN|MARK| |TION/g,"").replace(/(.).*(.{3})/,"$1$2"),E.match("CER")?E[3]:E.match("SER")?E[3].toLowerCase():(a="SACE EAMA!QOTA\"NBER#DLAR$PENT%AAND&APHE'AISK*PLUS+CMMA,HNUS-FTOP.SDUS/CLON:SLON;LHAN<EALS=GHAN>QUES?CLAT@RDUS\\CENT^LINE_GENT`VINE|LSIS(RSIS)LARE[RARE]LRLY{RRLY}TLDE~DERO0DONE1DTWO2DREE3DOUR4DIVE5DSIX6DVEN7DGHT8DINE9",a[a.indexOf(E)+4])}

এটি আরও পঠনযোগ্য ফর্ম্যাট (ব্যাখ্যাটি পরে আসবে):

function l(k){
    k=k.replace(/LA.*N|BR.*T|SIGN|MARK| |TION/g,'').replace(/(.).*(.{3})/,'$1$2')
    if(k.match('CER')) return k[3];
    if(k.match('SER')) return k[3].toLowerCase();
    a="SACE EAMA!QOTA\"NBER#DLAR$PENT%AAND&APHE'AISK*PLUS+CMMA,HNUS-FTOP.SDUS/CLON:SLON;LHAN<EALS=GHAN>QUES?CLAT@RDUS\\CENT^LINE_GENT`VINE|LSIS(RSIS)LARE[RARE]LRLY{RRLY}TLDE~DERO0DONE1DTWO2DREE3DOUR4DIVE5DSIX6DVEN7DGHT8DINE9"
    return a[a.indexOf(k)+4];
}

কী এবং মানের স্ট্রিংগুলির সংমিশ্রণ থেকে বিয়োগ 5 বাইট।

ব্যাখ্যা: প্রথম লাইনে নিয়মিত প্রকাশগুলি অনন্য 4 অক্ষর কীগুলিতে ইনপুটগুলিকে হ্রাস করে। নোট করুন যে অনন্যতা কেবলমাত্র চ্যালেঞ্জে নির্দিষ্ট নামের নির্দিষ্ট সেটগুলির জন্য গ্যারান্টিযুক্ত এবং ডুপ্লিকেটগুলি সাধারণ ইংরেজির জন্য খুব সাধারণ হবে! এমনকি এই চ্যালেঞ্জের জন্যও আমাকে একটি অনন্য সেট পেতে ব্রাকেট এবং সাইন এর মতো সাধারণ শব্দগুলি সরিয়ে ফেলতে হয়েছিল।

চরিত্রটি ফিরিয়ে আনতে, আমি এটি পরীক্ষা করে পরীক্ষা করে দেখি যে এটি ল্যাটিন চরিত্রটি "এসইআর" এবং "সেরি" স্ট্রিংগুলির জন্য পরীক্ষা করে আছে এবং সার্ভারের জন্য ছোট হাতের অক্ষরে ইনপুটটির শেষ অক্ষরটি ফিরিয়ে দেয়।

অন্য সব কিছুর জন্য, আমি একটি স্ট্রিং উল্লেখ করি যা 4 টি অক্ষরের কীগুলি সহ সমস্তটি সঠিক অক্ষর অনুসরণ করে। আমি তারপরে অক্ষরটি টানতে এবং ফিরিয়ে আনতে সূচিপত্র এবং সাবস্ট্রিং অক্ষর সূচকগুলি ব্যবহার করি ।

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


1

পাইথন 3, 148 বাইট

lambda s:chr(83-b'gfhtg\32}urgx_}3qeo|e~cwu~S~q~I,vqG\34jc}d*9~~_L|p~~~~~JJy'[sum(b'  !" *1! "2;D$# ! # !!( '[ord(c)%25]-32for c in s[:-1])]+ord(s[-1]))

আপনার দেখার সুবিধার জন্য, আমি দুটি অ প্রিন্টযোগ্য বাইটগুলি অষ্টাল এস্কেপ কোডগুলির সাথে প্রতিস্থাপন করেছি \32 এবং\34 ; 148 বাইট ফাংশন পেতে এটি পূর্বাবস্থায় ফেরান।

আমি এই হ্যাশটির কিছু অংশ জিপিআইপিএফ দিয়ে গণনা করি ।


0

পার্ল 6 ,  348   242 বাইট

{
  /NI/??9!!chr 32+
  '0A40W00SV0M20LR0O20IJ0LH0WH0YS0H20ID0A50P10IH0F70K10HF0I30LL0JX0JF0HX0LU0LE0JF0AJ0IX0RK0M40XF0QR0PD15Z16016116216316416516616716816916A16B16C16D16E16F16G16H16I16J16K16L16M16N16O1140V313F0XS0FU0N712A12B12C12D12E12F12G12H12I12J12K12L12M12N12O12P12Q12R12S12T12U12V12W12X12Y12Z0ZA0PU11L0AA'
  .comb(3).map({:36($_)}).first(:k,[+] .ords)
} # 348

{chr 32+"\x95ǐǠŬšƉĘŗȌȴĎĽ\x96ŖŁöģěĈśŊčĂĹŔĸ¤ĦƱŮȃƿƍʶʷʸʹʺʻʼʽʾʿˀˁ˂˃˄˅ˆˇˈˉˊʠʡʢʣʤɝǚʅǥâĿʇʈʉʊʋʌʍʎʏʐʑʒʓʔʕʖʗʘʙʚʛɱɲɳɴɵțųɃ\x9b".ords.first: :k,[+] .ords.map(*%43)}
{
  chr 32+
  "\x95ǐǠŬšƉĘŗȌȴĎĽ\x96ŖŁöģěĈśŊčĂĹŔĸ¤ĦƱŮȃƿƍʶʷʸʹʺʻʼʽʾʿˀˁ˂˃˄˅ˆˇˈˉˊʠʡʢʣʤɝǚʅǥâĿʇʈʉʊʋʌʍʎʏʐʑʒʓʔʕʖʗʘʙʚʛɱɲɳɴɵțųɃ\x9b"
  .ords.first: :k,[+] .ords.map(*%43)
}

ব্যবহার:

my &code = {...}

# testing
my $test = [~] (' '..'~')».uniname».&code;
my $comparison = [~] ' '..'~';
say $test eq $comparison; # True

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