একটি ম্যাজিক স্পেলচেকার লিখুন


14

গেম ওয়েভিং হ্যান্ডসটি কোথাও একটি কলম এবং কাগজের যাদুতে রয়েছে: জড়ো হওয়া এবং খুব বিস্তৃত রক পেপার কাঁচি। প্রতিটি পালা আপনি প্রতিটি হাতের জন্য আটটি অঙ্গভঙ্গির মধ্যে একটি লিখে রাখুন:

  • wiggled Fingers
  • লাভযুক্ত Palm
  • Sতন্দ্রা
  • WAve
  • Dআইগিট পয়েন্টিং
  • Cভাঁজ
  • StaB
  • Nothing

কিছু গুরুত্বপূর্ণ নিয়ম রয়েছে যা বাকীগুলির চেয়ে বেশি প্রাধান্য পায়:

  • উভয় হাত ইশারা করলে Pআপনি স্বয়ংক্রিয়ভাবে আত্মসমর্পণ করেন । (এটি একটি সরলীকরণ, তবে আমরা তা দিয়ে যাব))
  • একবারে কেবলমাত্র একটি হাত অঙ্গভঙ্গি করতে পারে B

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

আপনার কাজটি হ'ল প্রতিটি হাতের জন্য অঙ্গভঙ্গির একটি তালিকা দেওয়া হয়েছে, বর্তমান বাঁকটিতে কোন বানানটি ফেলে দেওয়া যেতে পারে তা নির্ধারণ করার জন্য। প্রতিটি হাতের জন্য তালিকার শেষ অক্ষরটি বর্তমান মোড়ের জন্য নির্বাচিত অঙ্গভঙ্গি উপস্থাপন করে।

এখানে অঙ্গভঙ্গি ক্রমগুলির তালিকা রয়েছে। আপার কেস লেটারগুলি একটি একক হাত দ্বারা সম্পাদিত অঙ্গভঙ্গিগুলিকে বোঝায়, ছোট হাতের অক্ষরগুলি উভয় হাত দিয়ে সম্পাদিত একটি অঙ্গভঙ্গিকে বোঝায়।

B           Stab
cDPW        Dispel magic               
cSWWS       Summon elemental           
cw          Magic mirror               
DFFDD       Lightning bolt             
DFPW        Cure heavy wounds          
DFW         Cure light wounds          
DPP         Amnesia                    
DSF         Confusion                  
DSFFFc      Disease                    
DWFFd       Blindness                  
DWSSSP      Delayed effect             
DWWFWc      Raise dead                 
DWWFWD      Poison                     
FFF         Paralysis                  
FPSFW       Summon troll               
FSSDD       Fireball                   
P           Shield                     
p           Surrender                  
PDWP        Remove enchantment         
PPws        Invisibility               
PSDD        Charm monster              
PSDF        Charm person
PSFW        Summon ogre
PWPFSSSD    Finger of death
PWPWWc      Haste
SD          Missile
SFW         Summon goblin
SPF         Antispell
SPFPSDW     Permanency
SPPc        Time stop
SSFP        Resist cold
SWD         Fear
SWWc        Fire storm
WDDc        Lightning bolt
WFP         Cause light wounds
WFPSFW      Summon giant
WPFD        Cause heavy wounds
WPP         Counterspell
WSSc        Ice storm
WWFP        Resist heat
WWP         Protection from evil
WWS         Counterspell

হ্যাঁ, Lightning boltএবং Counterspellপ্রতিটি দুটি পৃথক ক্রম আছে।

আপনি কোনও প্রোগ্রাম বা ফাংশন লিখতে পারবেন, যেকোন সুবিধাজনক তালিকা বা স্ট্রিং ফর্ম্যাটে এসটিডিআইএন, কমান্ড-লাইন আর্গুমেন্ট বা ফাংশন আর্গুমেন্টের মাধ্যমে, যতক্ষণ না এটি প্রাক প্রক্রিয়াজাত নয় proces আপনি রিটার্ন মান বা STDOUT এ মুদ্রণের মাধ্যমে জোড়ের জোড় আউটপুট করতে পারেন। আবার, আপনি যে কোনও সুবিধাজনক তালিকা বা স্ট্রিং ফর্ম্যাট ব্যবহার করতে পারেন, যতক্ষণ না আউটপুটটি দ্ব্যর্থহীন।

আপনি ধরে নিতে পারেন যে বাম এবং ডান হাতের ক্রমগুলি একই দৈর্ঘ্যের এবং সেগুলি বৈধ (বিশেষত, Bএকই সাথে দুটি হাত দ্বারা কখনও সম্পাদন করা হবে না)। নোট করুন যে ইনপুটটিতে কেবলমাত্র বড় হাতের অক্ষর থাকবে। উভয় হাতের একই (আপার-কেস) অঙ্গভঙ্গিটি সম্পাদন করা প্রয়োজন তা বোঝাতে কেবল উপরের তালিকায় লোয়ার কেস অক্ষরগুলি ব্যবহৃত হয়।

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

এটি কোড গল্ফ, তাই সংক্ষিপ্ত উত্তরটি (বাইটে) জেতে।

উদাহরণ

প্রতিটি উদাহরণে তিনটি লাইন থাকে: বাম হাতের ক্রম, ডান হাতের ক্রম (উভয় ইনপুট; ডান-সর্বাধিক অঙ্গভঙ্গি সর্বাধিক সাম্প্রতিক এক) এবং সমস্ত সম্ভাব্য বানান সংমিশ্রনের তালিকা (আউটপুট)।

WFP
WWS
[["Cause light wounds","Counterspell"],["Shield","Counterspell"]]

SD
BB
[["Missile","Stab"]]

WWP
WPP
[["Surrender"]]

DFW
CCW
[["Cure light wounds","-"]]

FFW
WWF
[["-","-"]]

DCW
CCW
[["Magic mirror"]]

WFPSFW
PPDDPP
[["Summon goblin","Shield"],["Summon ogre","Shield"],["Summon troll","Shield"],
 ["Summon giant","Shield"],["Summon goblin","Amnesia"],["Summon ogre","Amnesia"],
 ["Summon troll","Amnesia"],["Summon giant","Amnesia"]]

BSWWS
CSWWS
[["Counterspell","Counterspell"]]

CSWWS
CSWWS
[["Counterspell","Counterspell"],["Counterspell","Summon elemental"],
 ["Summon elemental","Counterspell"],["Summon elemental","Summon elemental"]]

PWPWWC
BBSPPC
[["Haste"],["Time stop"]]

@ দ্য বেস্টওন "বিশেষত, বি কখনও একই সাথে দুই হাত দ্বারা সঞ্চালিত হবে না"
মার্টিন এন্ডার

উত্তর:


3

সিজেম, 987 931 925 663 বাইট

qN/:Q;"Üãã0Ш¬Áó:-/ð1$½Ï¶¶òu´dóá3äÑì?´ì>³3cïCà×M×âÀCÒû¬u?xO,ÆFv)pÙû!¼ eÖUÈRÙnÂo/µ¾H¼RÎÚç¡ñ>z"32f-222bCb" BcDPWSwFdps"f=S/"[zõs¢@>2¯f¥sy<éSGÆÄbÚØÜ}}¤ºÅd¸(EWfa¤éõbfXpÀS7éÛM¼å© Ñæ¶a«I³þ>ÙÜ¡/¦$lâ µãÆØ¢§&á¼óÀwÏU¤ôYðçQòÔR#pÓzP×°~ï]v«viÚY¶¨¯`|o(Nê@æGÏ]ÌÉþMNÒÀ2yÌgÊ]Ê4Ê|BÃKWãIowIQ£Í-,_¥÷¶ºK-;Kr ÕtVæWï÷¦?+ÜÌÜó˯çp2Mvmc!hàtc»¬}sIæTÌÂ&ë6º²>Nº¯¦F¤½{ÜOSµ¸Ñ'|`²P³íD¿Z.c¢ Ò¿ñÅ¢MRöDk?à§iõ;­¡k'çTÑñ"31f-225b26b97f+:c"j"Ser'z/{(eu\+}%]z_{{~SaQX={_QV=W):W=={_el+m*}{m*:s}?}/:s{S+2$S+#)1$"-":D?@@}%-2<}%1:V(:X(:W;\}2*m*{z_,1>{)__~=\Da&,!={a+}{;}?$W>}*~}%_&_,({[D_]a-}*_{{`D&,!},}:A~,{A}*_["Surrender"_]a:S&,{;S}*p

নোট করুন যে এটিতে ASCII কোডের 32 থেকে 255 এর সমস্ত ASCII অক্ষর রয়েছে। কিছু অক্ষর এসই দ্বারা এড়িয়ে যেতে পারে, তাই উপরের লিঙ্ক থেকে কোড অনুলিপি করা আরও ভাল

এই উপরের কোডটি নিম্নলিখিত 925 বাইট সমাধানের একটি বেস রূপান্তরিত সংস্করণ:

qN/:Q;
"B|Stab|cDPW|Dispel magic|cSWWS|Summon elemental|cw|Magic mirror|DFFDD|Lightning bolt|DFPW|Cure heavy wounds|DFW|Cure light wounds|DPP|Amnesia|DSF|Confusion|DSFFFc|Disease|DWFFd|Blindness|DWSSSP|Delayed effect|DWWFWc|Raise dead|DWWFWD|Poison|FFF|Paralysis|FPSFW|Summon troll|FSSDD|Fireball|P|Shield|p|""Surrender":R"|PDWP|Remove enchantment|PPws|Invisibility|PSDD|Charm monster|PSDF|Charm person|PSFW|Summon ogre|PWPFSSSD|Finger of death|PWPWWc|Haste|SD|Missile|SFW|Summon goblin|SPF|Antispell|SPFPSDW|Permanency|SPPc|Time stop|SSFP|Resist cold|SWD|Fear|SWWc|Fire storm|WDDc|Lightning bolt|WFP|Cause light wounds|WFPSFW|Summon giant|WPFD|Cause heavy wounds|WPP|Counterspell|WSSc|Ice storm|WWFP|Resist heat|WWP|Protection from evil|WWS|Counterspell"]s'|/2/_
{{~SaQX={_QV=W):W=={_el+m*}{m*:s}?}/:s{S+2$S+#)1$"-":D?@@}%-2<}%1:V(:X(:W;\}2*
m*{z_,1>{)__~=\Da&,!={a+}{;}?$W>}*~}%_&
_,({[D_]a-}*_{{`D&,!},}:A~,{A}*
_[R_]a:S&,{;S}*p

নিউলাইনগুলি কেবল প্রদর্শনের জন্য। এটি অনেক গল্ফ করা যেতে পারে , তবে কমপক্ষে আমি সমস্ত পরীক্ষার কেস পাস করার জন্য পেয়েছি -_-।

এটি প্রত্যাশার চেয়ে বেশি সময় নিয়েছে।

আপডেট 1 - কোড অংশটি কিছুটা গল্ফ করেছিল। এখনও আরও জন্য সুযোগ। স্ট্রিং অংশটি গল্ফ / বেস রূপান্তরিত হতে পারে তবে আমি এখন থেকে বিরত থাকব কারণ অন্য সমস্ত উত্তর সেগুলি করছে না।

আপডেট 2 - কোডটি গল্ফ করছে, এখন স্ট্রিংটি সংকোচনের সময়।

আপডেট 3 - বেসটি কোডের আকারটি 663 বাইটে হ্রাস করার জন্য স্ট্রিংকে রূপান্তরিত করে (এটি 640 বাইটে হ্রাস করা যেতে পারে, তবে সেখানে 0 থেকে 31 এএসসিআইআই কোড অক্ষরও রয়েছে, যার সাথে ডিল করা সত্যিই কঠিন এবং আমি কেবল তাদের কাছে থাকব যখন আমি আবার মারব)।

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


4

পাইথন 2, 685

fদুটি স্ট্রিং গ্রহণ করে একটি ফাংশন সংজ্ঞায়িত করে। Surrenderখেলোয়াড় আত্মসমর্পণ করলে রিটার্ন মান হ'ল স্ট্রিং ; অন্যথায়, স্ট্রিং (যা দ্বি-হাতের বানানকে নির্দেশ করে) নিয়ে গঠিত একটি সেট এবং দৈর্ঘ্য -2 টিপলস স্ট্রিং (প্রতিটি হাতের জন্য পৃথক স্পেল নির্দেশ করে)।

বেস 64 এনকোডেড উত্স:

I2VuY29kaW5nOkxhdGluCmV4ZWMiIiJ42mVTTWvjMBC951foJntxy+61iwtNjLqFLJhqQYeQg2KPbYEsBUlOGtrub98Zp6Efe7Lm6c2H3jyvy9Y0KVuWXCa940VT1arklYl7sGzUvWkQk0pJJEzj6B0DCyO4pC0vKiGqquRr0w/JGdeznbeJYKqxmgKwAfThxI5+cm2kiwtuKeUdr+uS340OotEYSYEs77opGu8wVlJKJFRg9QlaBl0HXHK1UUoobF97E4knBObVOmh7igarilpSv7exU/AWRxZS0sjCBNhpArCwHAzYFo+VwugRRn9cMAauGbRL9FS8mZNWgw4jw2IxQZhBcQH3EOYZPrX0fVwwhFSNTeXc1PUQmO9YCzpccrwg8LeJ0Vjkfczs/c4aLCdr7HDn0rwOO8fYFXk1hFE7nPGEoBTz2PjoxBpPL5Gki1wwjVMqulzpKX4VXX3WpzeaXorDVhf+5+UpWtIKA3z82zhKfeiMbMonCevgE64It8e64EcGBzOz5ZcC+eK+tHrctZrZIhTrm+f1Jm47H1hkxrE1Mx2z14DtjyZcclm8nvYodJbn2rUMt5eFzV+zLctIn8ulD1zz2xmiSoYqBY3KZxZcFvM8f10sz65vjqg/eZyNJgRMJO8J0cw/XDDoCGQyIdqSL3EdLfozvtkOKY8aObRJck59jCV/cAcTzc5Yk07z3hXxfmm0C62uxuCPGYHF5Pe0I7olIxIQRhSoqpr//yZ0P6IPzYWWL3CeK75ooWNdhrrlN015T4dimb/cZ6GwePgZIE3BbZqX5+ypOOUkxRNJcWauUSbWMkJPZ5TSzujr1XPWFm3+bRasyW+/568F2iQE3AQaf7uxm6sfKHs4f3jNt/9cMNXTZmIiIiIuZGVjb2RlKCd6aXAnKQ==

উত্সটি সেই ফর্মের exec "eu352909HE%#NTHQh".decode('zip')যা নিম্নলিখিত কোডটি কার্যকর করে:

L=dict(B='Stab',cDPW='Dispel magic',cSWWS='Summon elemental',DFFDD='Lightning bolt',DFPW='Cure heavy wounds',DFW='Cure light wounds',DPP='Amnesia',DSF='Confusion',DWSSSP='Delayed effect',DWWFWD='Poison',FFF='Paralysis',FPSFW='Summon troll',FSSDD='Fireball',P='Shield',PDWP='Remove enchantment',PSDD='Charm monster',PSDF='Charm person',PSFW='Summon ogre',PWPFSSSD='Finger of death',SD='Missile',SFW='Summon goblin',SPF='Antispell',SPFPSDW='Permanency',SSFP='Resist cold',SWD='Fear',WFP='Cause light wounds',WFPSFW='Summon giant',WPFD='Cause heavy wounds',WPP='Counterspell',WWFP='Resist heat',WWP='Protection from evil',WWS='Counterspell')
G=lambda l,r,L:{L[s]for s in L if l.endswith(s.upper())and all(r[~i]==s[~i].upper()or'a'>s[~i]for i in range(len(s)))}
B=dict(cw='Magic mirror',DSFFFc='Disease',DWFFd='Blindness',DWWFWc='Raise dead',PPws='Invisibility',PWPWWc='Haste',SPPc='Time stop',SWWc='Fire storm',WDDc='Lightning bolt',WSSc='Ice storm')
d='-'
def f(l,r):c=G(l,r,B)|G(r,l,B);return[c|{(x,y)for x in G(l,r,L)or d for y in G(r,l,L)or d}-{(d,d)*(len(c)>0)},'Surrender'][l[-1]==r[-1]=='P']

নিবন্ধন করুন
feersum

আহা, সেটগুলি পরিষ্কার করার জন্য পরিষ্কার ব্যবহার :)
FryAmTheEggman

2

জাভা, 1565 1388

সাথে কল java M %leftString %rightStringSurrenderপ্লেয়ার আত্মসমর্পণ করলে ফলাফলগুলি । অন্যথায় এই ফর্ম স্ট্রিং আউটপুট bothHandSpell;oneHandSpell,oneHandSpell;...। দ্রষ্টব্য, এটি বরং জটিল সমস্যার জন্য একটি ওয়ান লাইনারের সমাধান। :)

class M{String[]a="B,cDPW,cSWWS,DFFDD,DFPW,DFW,DPP,DSF,DWSSSP,DWWFWD,FFF,FPSFW,FSSDD,P,PDWP,PSDD,PSDF,PSFW,PWPFSSSD,SD,SFW,SPF,SPFPSDW,SSFP,SWD,WFP,WFPSFW,WPFD,WPP,WWFP,WWP,WWS,-".split(","),b="Stab,Dispel Magic,Summon elemental,Lightning bolt,Cure heavy wounds,Cure light wounds,Amnesia,Confusion,Delayed effect,Poison,Paralysis,Summon troll,Fireball,Shield,Remove enchantment,Charm monster,Charm person,Summon ogre,Finger of death,Missile,Summon goblin,Antispell,Permanency,Resist cold,Fear,Cause light wounds,Summon Giant,Cause heavy wounds,Counterspell,Resist heat,Protection from evil,Counterspell,-".split(","),c="cw,DSFFFc,DWFFd,DWWFWc,PPws,PWPWWc,SPPc,SWWc,WDDc,WSSc".split(",");public static void main(String[]a){System.out.println(new M().s(a[0],a[1]));}int e,f,g,h,i,j,k,l,m,n;String s(String o,String p){if(m(o,p,"p")>0)return"Surrender";String q="";f=e=0;for(;f<10;f++)q+=(m(o,p,c[f])|m(p,o,c[f]))>0?"Magic mirror,Disease,Blindness,Raise dead,Invisibility,Haste,Time stop,Fire storm,Lightning Bolt,Ice storm".split(",")[f*(e=1)]+";":"";for(f=0;f<33-e;f++)for(g=f<1?1:0,h=0;g<32-h&m(o,p,a[f])>0;)q+=m(p,o,a[++g*(e=1)])>0?b[f]+","+b[g*(h=1)]+";":"";return q;}int m(String o,String p,String r){k=n=0;if(r=="-")n=1;if((i=o.length())<(j=r.length()))return n;for(;k<j;)n|=((o.charAt(l=i-j+k)|32)!=((m=r.charAt(k++))|32)|((m|32)==m&(p.charAt(l)|32)!=(m|32)))?2:0;return n==2?0:1;}}

ইন্ডেন্টযুক্ত:

class M{

    String[]a="B,cDPW,cSWWS,DFFDD,DFPW,DFW,DPP,DSF,DWSSSP,DWWFWD,FFF,FPSFW,FSSDD,P,PDWP,PSDD,PSDF,PSFW,PWPFSSSD,SD,SFW,SPF,SPFPSDW,SSFP,SWD,WFP,WFPSFW,WPFD,WPP,WWFP,WWP,WWS,-".split(","),b="Stab,Dispel Magic,Summon elemental,Lightning bolt,Cure heavy wounds,Cure light wounds,Amnesia,Confusion,Delayed effect,Poison,Paralysis,Summon troll,Fireball,Shield,Remove enchantment,Charm monster,Charm person,Summon ogre,Finger of death,Missile,Summon goblin,Antispell,Permanency,Resist cold,Fear,Cause light wounds,Summon Giant,Cause heavy wounds,Counterspell,Resist heat,Protection from evil,Counterspell,-".split(","),c="cw,DSFFFc,DWFFd,DWWFWc,PPws,PWPWWc,SPPc,SWWc,WDDc,WSSc".split(",");

    public static void main(String[]a){
        System.out.println(new M().s(a[0],a[1]));
    }

    int e,f,g,h,i,j,k,l,m,n;

    String s(String o,String p){
        if(m(o,p,"p")>0)
            return"Surrender";
        String q="";
        f=e=0;
        for(;f<10;f++)
            q+=(m(o,p,c[f])|m(p,o,c[f]))>0?"Magic mirror,Disease,Blindness,Raise dead,Invisibility,Haste,Time stop,Fire storm,Lightning Bolt,Ice storm".split(",")[f*(e=1)]+";":"";
        for(f=0;f<33-e;f++)
            for(g=f<1?1:0,h=0;g<32-h&m(o,p,a[f])>0;)
                q+=m(p,o,a[++g*(e=1)])>0?b[f]+","+b[g*(h=1)]+";":"";
        return q;
    }

    int m(String o,String p,String r){
        k=n=0;
        if(r=="-")
            n=1;
        if((i=o.length())<(j=r.length()))
            return n;
        for(;k<j;)
            n|=((o.charAt(l=i-j+k)|32)!=((m=r.charAt(k++))|32)|((m|32)==m&(p.charAt(l)|32)!=(m|32)))?2:0;
        return n==2?0:1;
    }

}

সম্পাদনা করুন: কম কোড সহ স্ট্রিং অ্যারে তৈরি করার জন্য পিটারের পরামর্শ ব্যবহার করা হয়েছে।

এটি উন্নত করার জন্য কোনও ইঙ্গিত প্রশংসা করা হবে।


এই সাধারণ কৌশলটি আপনার কয়েকশ অক্ষর সংরক্ষণ করবে।
পিটার টেলর

1

জাভাস্ক্রিপ্ট (ES6), 1070 941

বেস 64 এনকোডযুক্ত:

Zj0obCxyKT0+e3k9WyItIl0sRD1bXSxSPVtdLEw9W10sZD17fSxidG9hKGBK1pvQHQOKyl6XWZqCJzRwM9bRK6aaifV6V6Z6e1qXRxJZZLQxqCJzWaKuuivRzDQuKCG2eKeDVuiW3QMUUMPQK6t7WF5q/LXCi6d2zQMU9bQK6t7WWKCG3XCi6d2zQMVbQCad6yJrQM8/QKid+6yKifQKIXQOKx5qx7QKIUUVzQGWKd2d6yzQNYUV3QN6VrJ53V5995y3QNZJJI/RFqKx7V15p3QKZYVZzQ+iKyifQNZYVYPQ9qtqXFysis0FFF0Summon1troll0FPSFW0Fireball0FSSDD0Shield0P0Surrender0p0Remove1enchantment0PDWP0Invisibility0PPws0Charm1monster0PSDD0Charm1person0PSDF0Summon1ogre0PSFW0Finger1of1death0PWPFSSSD0Haste0PWPWWc0Missile0SD0Summon1goblin0SFW0Antispell0SPF0Permanency0SPFPSDW0Time1stop0SPPc0Resist1cold0SSFP0Fear0SWD0Fire1storm0SWWc0Lightning1bolt0WDCs0Cause1light1wounds0WFP0Summon1giant0WFPSFW0Cause1heavy1xcKLp3bNFjxQ9AqLp7Xq7KXpZdFjz9CHHtbLaK5tFkknNEXrIrLdYXmrdFlhT9D66LXnLYqJ9X66JtXr4pdFlj9AqLp7Xq7KXpZdFlkmApLnJlcGxhY2UoLzEvZywiICIpLnNwbGl0KDApLmV2ZXJ5KCh2LHgsYSk9PmRbeCUyfHxhW3grMV1dPXYpO2s9KGgsbyxHKT0+KG49ZFtzXSxxPWgubWF0Y2gocysiJCIsImkiKSkmJlsuLi5zXS5ldmVyeSgoYyxpKT0+ISh3PWMubWF0Y2goIlthLXpdIikpfHxoW2o9aStoLnNlYXJjaChxKV09PW9bal0pJiYodz9+fkQuaW5kZXhPZihuKT9EOltdOkcpLnB1c2gobik7Zm9yKHMgaW4gZCl7ayhsLHIsTCk7ayhyLGwsUik7aWYoRD09ZFsicCJdKXJldHVybiBEfVI9Ui0xP3k6UjtMPUwtMT95Okw7cmV0dXJuIEQtMXx8UiE9TD9MLnNvbWUocz0+Ui5zb21lKHQ9PiFELnB1c2goW3MsdF0pKSl8fEQ6RH0=

আপনি এটি eval(atob("Zj0obCxyK..."))ফায়ারফক্স কনসোল করে চালাচ্ছেন ।

গল্ফযুক্ত কোড (স্ট্যাক এক্সচেঞ্জ দ্বারা সমর্থিত অক্ষরগুলি অন্তর্ভুক্ত থাকতে পারে):

f=(l,r)=>{y=["-"],D=[],R=[],L=[],d={},btoa(`JÖÐÊ^Y'4p3ÖÑ+¦õzW¦z{ZGYd´1¨"sY¢®º+ÑÌ4.(!¶x§VèÝPÃÐ+«{X^jüµÂ§vÍõ´
êÞÖX Ýp¢éݳ@Å[@&ë"k@Ï?@¨û¬ô
!t+jÇ´
!EÍ)Ýë,Ð5ÝzV²yÝ^}÷·@ÖI$Ñ¢±í]y§t
eYÍ¢+(@ÖXUÐö«j\\¬Í]ºi¨[k¢Ytô[Ab­æÚ]I ÃÑ(bzWt?D®®·§uêô§D^ÞÕéÜ©íéíÐðÖ?B'¾+"n)b·-?4
«Y¨Ë^¯CÒ=ªæÖ«²ô= ÅÑ+¦õ¢
ÞÐô[Ab«Öõuæ­CÖ<TH=jË^ÐõYg42+,W´H=ºi¨X(nX§Ñ!VÐ   íÊ^]<]z¹éÜËDô[Dâíl¶tHóÜѬËur]Ñ$?A^j½X=·µ²Ú+DYÍm)àÕº%·E
ÍjëÖX Ýp¢éݳE?D®j'ÖÝô[@ºÇµæ¯Ë\\(ºwlÑcÅ@¨º{^®Ê^]<ýqíl¶æÑdsD^²+-Ö·Eý®^rبWë¢m^¾)tYcô
§µêì¥éeÑe`).replace(/1/g," ").split(0).every((v,x,a)=>d[x%2||a[x+1]]=v);k=(h,o,G)=>(n=d[s],q=h.match(s+"$","i"))&&[...s].every((c,i)=>!(w=c.match("[a-z]"))||h[j=i+h.search(q)]==o[j])&&(w?~~D.indexOf(n)?D:[]:G).push(n);for(s in d){k(l,r,L);k(r,l,R);if(D==d["p"])return D}R=R-1?y:R;L=L-1?y:L;return D-1||R!=L?L.some(s=>R.some(t=>!D.push([s,t])))||D:D}

যেহেতু বানান অভিধানে কেবল অক্ষর থাকে, আমরা এটি একটি বেস 64-এনকোড স্ট্রিং হিসাবে বিবেচনা করতে পারি এবং সংখ্যাগুলি পৃথককারী এবং স্পেস হিসাবে ব্যবহার করতে পারি। আমি বেস 64-এর মতো স্ট্রিংটিকে বাইনারি স্ট্রিংয়ে "ডিকোড করেছি", যা মূলটির আকার 3/4।

হালকা শৃঙ্খলাবদ্ধ:

f=(l,r)=>{

// y - default array
// D,R,L - result arrays for Doublehanded, Right and Left
// d - dictionary mapping of spell combos to spell names
y=["-"],D=[],R=[],L=[],d={},

// split string on `0` and replace `1`s with spaces, to populate `d`
btoa(`<UGLY BINARY STRING>`).replace(/1/g," ").split(0).every((v,x,a)=>d[x%2||a[x+1]]=v);

// given a main hand, off hand, and result array to populate,
// decide if current combo `s` applies
k=(h,o,G)=>
    (n=d[s],q=h.match(s+"$","i")) // does `s` match the end of `h`, case insensitive?
    &&
    [...s].every((c,i)=>
        !(w=c.match("[a-z]")) ||     // is every letter of `s` not lowercase
        h[j=i+h.search(q)]==o[j]  // or (if lowercase), a match between the hands?
    )
    &&
    (w?                    // if the last letter so `s` was lowercase
        ~~D.indexOf(n)?    //   if D doesn't already have this spell
                       D   //      add it to D
                      :    //   else
                       []  //      add it to a throwaway array
      :G).push(n);         // else, add it to this hand's result array

for(s in d){
    k(l,r,L);    // test this spell against each hand
    k(r,l,R);
    if(D==d["p"]) return D  // if the doublehanded result is "Surrender"
                            // return immediately
}

R=R-1?y:R;   // replace empty arrays with ["-"]
L=L-1?y:L;   // (`[]-1` is -1, which is truthy, while ["foo"]-1 is `NaN`, falsy)

return D-1||R!=L         // if D is empty, or R and L not both empty, 
                ?        //   add all pairwise R/L combos to D and return D
                 L.some(s=>R.some(t=>!D.push([s,t])))
                                                     ||D
                :D      //    otherwise, just return D

}

আমি বিশেষ করে পছন্দ করি এমন একটি গল্ফটি খালি অ্যারে দিয়ে পরীক্ষা করা array - 1

  • একটি খালি অ্যারে সত্যবাদী মান উত্পন্ন করবে: [] - 1 => "" - 1 => 0 - 1 => -1 (truthy)
  • একটি ভরাট অ্যারে একটি মিথ্যা মান উত্পন্ন করবে: ["foo"] - 1 => "foo" - 1 => NaN (falsey)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.