প্রথম আপনার সাথে থাকুক


19

সমস্ত চরিত্রের অবস্থানের জন্য মূল কেসটি রেখে, "প্রথম" এর সাথে "ফোর্স" এর সমস্ত উপস্থিতি এবং "প্রথম" এর সমস্ত উপস্থিতি "বল" দিয়ে প্রতিস্থাপন করার জন্য একটি প্রোগ্রাম লিখুন:

"ForcefoRcefOrcE" -> "FirstfiRstfIrsT"
"FirstfiRstfIrsT" -> "ForcefoRcefOrcE"

বাকী স্ট্রিং অবশ্যই অপরিবর্তিত থাকবে এবং সুতরাং আপনার প্রোগ্রামটি দু'বার চালানো আসল স্ট্রিংটি ফিরে আসবে:

"thirst of forces" -> "thirst of firsts" -> "thirst of forces"

আপনার প্রোগ্রামটি যে কোনও প্রাথমিক স্ট্রিংয়ে কাজ করা উচিত। সুতরাং একটি ইঙ্গিত হিসাবে, আপনি মধ্যবর্তী প্রতিনিধিত্ব হিসাবে যাদু চরিত্রগুলি ব্যবহার করা আরও ভাল এড়াবেন, কারণ আপনি যদি তিনটি পাস প্রতিস্থাপন ( "force" -> "zzzzz", "first" -> "force", "zzzzz" -> "first") ব্যবহার করে থাকেন তবে এটি যুক্ত স্ট্রিংগুলিতে ব্যর্থ হবে "zzzzz"

আপনার প্রোগ্রামিং ভাষার (বেশিরভাগ ক্ষেত্রে এটি ইউনিকোড) স্ট্রিংয়ের সংজ্ঞা হিসাবে অনুমোদিত অক্ষরের পুরো পরিসীমা সমর্থন করা উচিত। উদাহরণস্বরূপ, মুদ্রণযোগ্য অক্ষরগুলির জন্য JSON- শৈলীর উপস্থাপনা ব্যবহার করে (+ u + 4 ডিজিট):

"\u0000\u0001\u0002\u0003the Force of the firsT"
                     |
                     V
"\u0000\u0001\u0002\u0003the First of the forcE"

1
আত্তা ছেলে। লোকদের মনে করিয়ে দিন যে ট্যাগটিতে বিজয়ী মানদণ্ড রয়েছে '
ক্রিস্টোফার

1
@ চ্যালেঞ্জার 5 না আমি তাই মনে করি না যেহেতু যদি নেতৃত্ব [Ff]না থাকে তবে আপনাকে অবশ্যই শব্দটি প্রতিস্থাপন করবেন না।
এরিক আউটগলফার

2
প্রথম আপনার সাথে থাকতে পারে। (1 লা মে মন্তব্য করা হয়েছে)
এসওলং ফল

19
এটি কি " চতুর্থ আপনার সাথে থাকতে পারে" হওয়া উচিত নয় ?
wizzwizz4

3
@ mbomb007 "চতুর্থ" এবং "বল" এর একই অক্ষর নেই, এটি একই চরিত্রের কেস রাখার ক্ষেত্রে বেমানান।
Cœur

উত্তর:


6

রেটিনা , 33 বাইট

iT`\OC\E\ocetsiTSI`Ro`first|force

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

সম্পাদনা করুন: সংরক্ষণ করেছে 5 বাইটস যা যা Roকরে তা নির্দেশ করার জন্য @ মার্টিনইেন্ডারকে ধন্যবাদ ।


হ্যাঁ, একবার ওপি আমার মন্তব্যে জবাব দেবে। আপনি প্রথম সেটটি পুনরায় অর্ডার করে কয়েকটি বাইট সংরক্ষণ করতে পারেন যাতে দ্বিতীয়টি হতে পারে Ro
মার্টিন এন্ডার

@ মার্টিনএন্ডার ডকুমেন্টেশনগুলি Rব্যাপ্তিগুলির উপর প্রভাব সম্পর্কে খুব বেশি মনোযোগ দিয়ে আমাকে বিভ্রান্ত করেছে ; উদাহরণস্বরূপ আমি কখনই বুঝতে পারি না যে REএটি আপনি 86420যদি না দেখিয়ে থাকেন তবে তার সমান ।
নীল

আমাকে জানতে দেওয়ার জন্য ধন্যবাদ. আমি ডক্সে আরও পরিষ্কার করার চেষ্টা করব।
মার্টিন এন্ডার

9

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

f=
s=>s.replace(/force|first/gi,s=>s.replace(/./g,c=>s[s.search(c)^1]||c,s="oicsetOICSET"))
<textarea oninput=o.textContent=f(this.value)></textarea><pre id=o>

সম্পাদনা করুন: অপরিবর্তিত লেটার কেসটি অনুকূল করে 5 টি বাইট সংরক্ষণ করা হয়েছে


5

এপিএল (ডায়ালগ) , 61 বাইট

প্রয়োজন ⎕IO←0অনেক সিস্টেমে পূর্বনির্ধারিত। এর পরিবর্তে ইউনিকোড প্রতীক ব্যবহার করে চারটি অক্ষর ছোট হতে পারে ।⎕OPT

(t'force' 'first')⎕R{(m∊⎕A)c¨t⊃⍨~t⍳(c819⌶)⊂m←⍵.Match}⎕OPT 1

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


4

পিএইচপি, 88 বাইট

অনলাইন সংস্করণ

<?=preg_replace_callback("#first|force#i",function($t){return$t[0]^first^force;},$argn);

পিএইচপি, 110 বাইট

<?=preg_replace_callback("#first|force#i",function($t){return strtr($t[0],iIsStToOcCeE,oOcCeEiIsStT);},$argn);

3
আপনার সাথে একটি কয়েক বাইট বাঁচাতে পারে $t[0]^first^forceপরিবর্তে strtr()
ব্যবহারকারী 63956

@ ব্যবহারকারী 63956 শেখার প্রচেষ্টার জন্য আপনাকে ধন্যবাদ
জার্গ হালসারম্যান

4

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

কোড + -pপতাকা 51 বাইট ।

s%first|force%$&=~y/oceOCEistIST/istISToceOCE/r%eig

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

খুব বেশি পাগল কিছুই হচ্ছে না। সংক্ষিপ্ত -সংবেদনশীল ( ) forceএবং এর উপস্থিতিগুলি সন্ধান করুন এবং তারপরে একটিতে অন্যটিতে রূপান্তর করতে অক্ষরকে লিখিতভাবে লিপিবদ্ধ করে।firsts%force|first%%gi


3

সিজেম, 66 বাইট

qY5m*_"force"{f{_eu}3/:z{~?}f%}:K~\"first"K.{[\]:P~@\/\f/P~@\f*\*}

"প্রথম" এবং "ফোর্স" এর প্রতিটি ক্ষেত্রে পরিবর্তনের মধ্য দিয়ে যায় এবং এটিতে বিভক্ত হওয়ার চেষ্টা করে। যদি এটি করতে পারে তবে বিপরীত শব্দগুলির সাথে এটির সাথে আবার যোগ হয়।

সুডোকোড:

input_chars = list(read_all_input()) # CJam: q
power = cartesian_power(2, 5) # CJam: Y4m*_
def case_variations(s): # CJam: {...}:K
    temp0 = [[i, j, upper(j)] for i, j in zip(power, s)] # CJam: f{_eu}3/
    temp1 = map(transpose, temp0) # CJam: :z
    ret = []
    for i in ret:
        for j in i: # CJam: {...}f%
            ret.append(j[1] if j[0] else j[2]) # CJam: ~?
    return ret
force_var = K("force") # CJam: "force"{...}:K~
first_var = K("first") # CJam: \"first"K
for force, first in zip(force_var, first_var): # CJam: .{...}
    current = [force, first] # CJam: [\]:P~
    input_chars = list_split(input_chars, force) # CJam: @\/
    input_chars = [list_split(i, first) for i in input_chars] # CJam: \f/
    input_chars = [list_join(i, force) for i in input_chars] # CJam: P~@\f*
    input_chars = list_split(input_chars, first) # CJam: \*

নিশ্চয় fপরিবর্তন এড়াতে প্রাসঙ্গিক thirstমধ্যে thorceবা divorceমধ্যে divirst?
নিল

@ নীল ট্রু, সম্পাদিত।
ফল এশোলং ফল


3

জাভা 7, 318 310 বাইট

String c(String s){String x=s.toLowerCase();int i=x.indexOf("force")+1,j=x.indexOf("first")+1,t=i>0&j>i?0:j>0?1:0;return i>0|j>0?s.substring(0,t>0?(i=j):i)+(char)(s.charAt(i++)-(t>0?-6:6))+s.charAt(i++)+(char)(s.charAt(i++)+(t>0?-16:16))+(char)(s.charAt(i++)+(t>0?-15:15))+c(s.length()>i?s.substring(i):""):s;}

ঠিক আছে, জাভাতে এটি বেশ শক্ত ছিল ..

ব্যাখ্যা:

String c(String s){                       // Method with String parameter and String return-type
  String x=s.toLowerCase();               //  Temp String as lowercase of the input
  int i=x.indexOf("force")+1,             //  Index of "force" + 1 (becomes 0 if NOT present; >=1 if it is present)
      j=x.indexOf("first")+1,             //  Index of "first" + 1 (becomes 0 if NOT present; >=1 if it is present)
      t=i>0&j>i?0:j>0?1:0;                //  Temp integer: 0 if "force" is found first; 1 if "first" is found first
  return i>0|j>0?                         //  If either "force" or "first" is found:
    s.substring(0,t>0?(i=j):i)            //   Return the substring before that (if any) + ('f' or 'F')
     +(char)(s.charAt(i++)-(t>0?-6:6))    //   + 'i' <-> 'o', or 'I' <-> 'O'
     +s.charAt(i++)                       //   + 'r' or 'R'
     +(char)(s.charAt(i++)+(t>0?-16:16))  //   + 's' <-> 'c', or 'S' <-> 'C'
     +(char)(s.charAt(i++)+(t>0?-15:15))  //   + 't' <-> 'e', or 'T' <-> 'E'
     +c(s.length()>i?s.substring(i):"")   //   + a recursive call for the rest of the input-String (if any)
   :                                      //  Else:
    s;                                    //   Return the input-String
}                                         // End of method

পরীক্ষার কোড:

এখানে চেষ্টা করুন।

class M{
  static String c(String s){String x=s.toLowerCase();int i=x.indexOf("force")+1,j=x.indexOf("first")+1,t=i>0&j>i?0:j>0?1:0;return i>0|j>0?s.substring(0,t>0?(i=j):i)+(char)(s.charAt(i++)-(t>0?-6:6))+s.charAt(i++)+(char)(s.charAt(i++)+(t>0?-16:16))+(char)(s.charAt(i++)+(t>0?-15:15))+c(s.length()>i?s.substring(i):""):s;}

  public static void main(String[] a){
    System.out.println(c("Force"));
    System.out.println(c("First"));
    System.out.println(c("foRce"));
    System.out.println(c("fiRst"));
    System.out.println(c("fOrcE"));
    System.out.println(c("fIrsT"));
    System.out.println(c("\u0000\u0001\u0002\u0003the Force of the firsT"));
    System.out.println(c("May the first be with you"));
    System.out.println(c(c("May the first be with you"))); // 2x
    System.out.println(c("The fIrSt of the First of the fORCE of the FIRST of the FoRCe"));
  }
}

আউটপুট:

First
Force
fiRst
foRce
fIrsT
fOrcE
 ���the First of the forcE
May the force be with you
May the first be with you
The fOrCe of the Force of the fIRST of the FORCE of the FiRSt

1
আমি প্রশংসা করি যে আপনি একটি প্রতিসম উদাহরণ সরবরাহ করেছেন c(c("..."))!
সিউর

3

জেলি , 37 36 বাইট

এর পরিবর্তে 5 দৈর্ঘ্যের টুকরোগুলি হ্রাস করার কোনও উপায় আছে কি?

®‘©ị“Ɓu“¡Ḣƭ»
Œlœṣ¢œṣ€¢j€¢j¢Œu⁸=ŒuT¤¦

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

কিভাবে?

®‘©ị“Ɓu“¡Ḣƭ» - Link 1 helper that fetches the next word to use: no arguments
®            - recall value from register (initially zero)
 ‘           - increment
  ©          - place the result into the register
    “Ɓu“¡Ḣƭ» - literal dictionary compressed string list ["first","force"]
   ị         - index into (1-indexed and modular)
             - so this link first yields "first", then "force", then "first" and so on.

Œlœṣ¢œṣ€¢j€¢j¢Œu⁸=ŒuT¤¦ - Main link: list of characters, S
Œl                      - convert S to lower case
  œṣ                    - split on sublists equal to:
    ¢                   -   call the last link (1) as a nilad ("first")
     œṣ€                - split €ach on sublists equal to:
        ¢               -   call the last link (1) as a nilad ("force")
         j€             - join €ach with:
           ¢            -   call the last link (1) as a nilad ("first")
            j           - join with:
             ¢          -   call the last link (1) as a nilad ("force")
                      ¦ - apply a link to sparse indices:
              Œu        -   convert to upper case
                     ¤  -   nilad followed by link(s) as a nilad:
                ⁸       -     chain's left argument, S
                  Œu    -     convert to upper case
                 =      -     equal to S? (vectorises)
                    T   -     truthy indexes (indexes at which input is upper case)

পাইথ এবং জেলি সমান: ও
লিকি নুন

গল্ফিয়ারের উপায় থাকতে হবে: ডি
জোনাথন অ্যালান

হ্যাঁ, এবং আমি সবেমাত্র এটি পেয়েছি: ডি
লিকি নুন



2

ফ্লেক্স (লেক্সার), 72 বাইট

%%
 #define x(a) yytext[a]^=
(?i:first|force) x(1)6;x(3)16;x(4)17;ECHO;

সংকলন এবং চালানোর জন্য:

flex first.l
gcc lex.yy.c -lfl # -ll on Macs, apparently
./a.out

first.l:3: EOF encountered inside an action(ওহ, কিছুই নয়) এর শেষে একটি নতুন লাইন দরকার)
সিউর

ld: library not found for -lfl(ওহ কিছু মনে করবেন না, কমান্ডটি gcc lex.yy.c -llম্যাকোজে রয়েছে)
সিউর

পরীক্ষিত এবং অনুমোদিত।
সিউর

2

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

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

import re,string as g
def f(s):f="istISTECOeco";l=re.split("(first|force)",s,0,re.IGNORECASE);l[1::2]=[t.translate(g.maketrans(f,f[::-1]))for t in l[1::2]];print"".join(l)

আমি মনে করি এটি এখানে আমি কি করছি তা খুব পরিষ্কার। প্রথম এবং বল (কেস-সংবেদনশীল) এর উদাহরণগুলিতে স্ট্রিংটি বিভক্ত করুন, স্ট্রিং ট্রান্সলেট ব্যবহার করে অনুবাদ করা সংস্করণগুলির সাথে সেই দৃষ্টান্তগুলি প্রতিস্থাপন করুন এবং এটিকে আবার স্ট্রিংয়ে যুক্ত করুন।

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


2

পাইথন 2.7, 173 165 বাইট

কুইন্টোপিয়া দ্বারা 8 টি বাইট সংরক্ষণ করা হয়েছে

এটি একটি স্থূল হয়েছে:

lambda S:`[(t[0],t[0].upper())[t[1]]for t in zip("".join("first".join(s.replace("first","force")for s in S.lower().split("force"))),[l.isupper() for l in S])]`[2::5]

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

ধাপে ধাপে এটি ভঙ্গ:

  1. S.lower().split("force"): স্ট্রিংটি নিন, ছোট হাতের অক্ষরে একীভূত করুন, পৃথক করে পৃথক সাবস্ট্রিংগুলিতে বিভক্ত করুন "force"
  2. s.replace("first","force")for s in <STEP 1>: সমস্ত প্রতিস্থাপন "first" দিয়ে"force"
  3. _`.join("first".join(<STEP 2>)`[2::5]`_: "force"এর সাথে প্রতিস্থাপন করুন"first""force" বর্ণিত সাবস্ট্রিংগুলিকে পুনরায় সমন্বিত করে"first" একক স্ট্রিং মধ্যে এবং পুনরায় যুক্ত (আন্ডারস্কোর টিক পেতে চিহ্ন সংশোধন যোগ করা হয়েছে)
  4. zip(<STEP 3>,[(2,1)[l.isupper()]for l in S]): মূল স্ট্রিংয়ের কেস এনকোডিং সহ প্রতিস্থাপিত বাক্যাংশের প্রতিটি অক্ষর জিপ করুন (ছোট হাতের জন্য 2, বড় হাতের জন্য 1)
  5. _`[(t[0],t[0].upper())[t[1]==1]for t in <STEP 4>]`[2::5]`_: আসল কেসিং পুনরুদ্ধার করুন, তালিকায় স্ট্রিংয়ে রূপান্তর করুন (টিক চিহ্নগুলি সঠিক পেতে আন্ডারস্কোরগুলি যুক্ত করা হয়েছে)

আপনি ট্রু হিসাবে উপরের এনকোড করে 8 টি বাইট সংরক্ষণ করতে পারবেন এবং মিথ্যা হিসাবে নিম্ন: এটিকে অনলাইনে চেষ্টা করুন!
কুইন্টোপিয়া

2

সি (ঝনঝন) , 201 183 226 214 বাইট

কিছু বাগ ছিল ... তবুও বেশ কিছুটা গল্ফ করা দরকার

(সিলিংক্যাটের জন্য 12 টি ধন্যবাদ সংরক্ষণ করা হয়েছে)

char*s,*p,*q;main(i,v)char**v;{puts(s=v[1]);do{p=strcasestr(s,"first");q=strcasestr(s,"force");if(p&&(!q|p<q))p[1]+=6,p[3]-=16,p[4]-=15;else if(q)q[1]-=6,q[3]+=16,q[4]+=15;s=p&&(!q|p<q)?p:q;}while(s++);puts(v[1]);}

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



1

সি # 273 বাইট

string c(string s){var x=s.ToLower();int i=x.IndexOf("force")+1,j=x.IndexOf("first")+1,t=i>0&j>i?0:j>0?1:0;return i>0|j>0?s.Substring(0,t>0?(i=j):i)+(char)(s[i++]-(t>0?-6:6))+s[i++]+(char)(s[i++]+(t>0?-16:16))+(char)(s[i++]+(t>0?-15:15))+c(s.Length>i?s.Substring(i):""):s;}

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

কেভিন ক্রুইজসেনের জাভা উত্তরের প্রত্যক্ষ বন্দর, যখন প্রদত্ত সূচকে একটি স্ট্রিংয়ের সাথে চরটি পাওয়ার কথা আসে তখন সি # জাভা ( s[i++]পরিবর্তে s.charAt(i++)) এর চেয়ে অনেক গল্ফিয়ার হয়


1

জাপট , 41 বাইট

r"first|force"_d"i1o s1c t1e"¸m²®+ZuÃq}'i

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

এটি যদি জপ্টের একটি বুদ্ধিমান ট্রান্সলিট্রেট ফাংশন থাকে তবে তা যথেষ্ট সংক্ষিপ্ত হবে ...

বিকল্প সংস্করণ:

r"first|force"_d"io sc te"¸®¬¸²Ã®+ZuÃq}'i

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


1

সি #, 235 অক্ষর

string a(string s){var l=s.ToLower();int f=l.IndexOf("first"),F=l.IndexOf("force"),m=f<F&f>-1?f:F>-1?F:f;return ++m>0?s.Substring(0,m)+(char)(s[m]^6)+s[m+1]+(char)(s[m+2]^16)+(char)(s[m+3]^17)+(s.Length-m>5?c(s.Substring(m+4)):""):s;}


0

জাভা, 382 বাইট অ-উপযুক্ত

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

String f(String t){String s="";for(String w:t.split(" "))if(w.equalsIgnoreCase("force")|w.equalsIgnoreCase("first"))s+=" "+w.charAt(0)+(char)(w.charAt(1)+(w.charAt(1)=='o'|w.charAt(1)=='O'?-6:6))+w.charAt(2)+(char)(w.charAt(3)+(w.charAt(3)=='c'|w.charAt(3)=='C'?16:-16))+(char)(w.charAt(4)+(w.charAt(4)=='e'|w.charAt(4)=='E'?15:-15));else s+=" "+w;return s.substring(1,s.length());}

3
হুম, এটি কেবল তখনই কাজ করে যদি সমস্ত শব্দ ফাঁক দিয়ে বিভক্ত হয়, তবে কমা, বা অদ্ভুত স্ট্রিংগুলির "The first, force,|first'forced!"কী? এছাড়াও, আপনি আপনার বর্তমান কোডটি কিছুটা গল্ফ করতে পারেন: if(w.equalsIgnoreCase("force")|w.equalsIgnoreCase("first"))-> ,zপরে String s=""এবং z=w.toLowerCase();if(z.equals("force")|z.equals("first"))। এছাড়াও, 'O'হতে পারে 79, 'C'হতে পারে 67এবং 'E'হতেও পারে 69। এবং if elseযদি অন্যটি হয়, তবে এটি একটি বৃহত ত্রিবারির সাথে প্রতিস্থাপন করা যেতে পারে s+=
কেভিন ক্রুইজসেন

আমি নিশ্চিত করি যে এই সমাধানটি যোগ্যতা অর্জন করে না, কারণ এটি উদাহরণস্বরূপ "ফোর্সফোর্স" এ ব্যর্থ হয়।
Cœur

@ সিউর আমি non competentশিরোনামে যুক্ত করেছি
খালেদ.কে।

0

সি # (269 বাইট)

string s(string z){var u=z.ToUpper();var a=new[]{"FIRST","FORCE"};return String.Join("",u.Split(a,StringSplitOptions.None).Aggregate((c,n)=>c+(u.Substring(c.Length,5)==a[0]?a[1]:a[0])+n).Select((c,i)=>Char.IsLower(z[i])?Char.ToLower(c):c));}

তবুও আরেকটি সি # সমাধান, কেবল দ্বিতীয়-ক্ষুদ্রতম কারণ আমি দুটি ভেরিয়েবল ঘোষণা করেছি এবং তাই ল্যাম্বদা সিনট্যাক্স ব্যবহার করতে পারি না। ওহ ভাল, আমি মজা ছিল। :)

ব্যাখ্যা:

  • মূল স্ট্রিং আপশীট করুন, তারপরে "ফোর্স" এবং "FIRST" এ বিভক্ত করুন।

  • ফলাফলগুলিকে একত্রিত করুন এবং প্রতিটি বিভাজনে, পাঁচটি-অক্ষরযুক্ত স্ট্রিংগুলি সন্ধান করুন যা স্ট্রিংয়ের এতদূর দৈর্ঘ্যটি ব্যবহার করে মূল স্ট্রিংটি বিভক্ত করতে ব্যবহৃত হয়েছিল। যদি এটি "বল" হয় তবে এটিকে "প্রথম" করুন এবং তদ্বিপরীত

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