বাক্যাংশ গঠনের জন্য উপনামটি প্রতিস্থাপন করুন


9

সি- দিকনির্দেশক দ্বারা অনুপ্রাণিত #define

চ্যালেঞ্জ

কিছু উপন্যাসের সাথে একটি বাক্য প্রদান করা হয়েছে, এবং প্রতিটি উপন্যাসের পাঠ্য সহ একটি অ্যারে দেওয়া হয়েছে। প্রতিটি উপনামকে তার নিজ পাঠ্যের পরিবর্তে প্রাথমিক বাক্যটি আউটপুট দিন।

একটি উপাধি একটি ধারালো দ্বারা সংজ্ঞায়িত হয় #তারপরে অ্যারেতে তার সূচক অনুসারে (সূচকটি শূন্য বা এক থেকে শুরু হতে পারে)। এলিয়াস তার পাঠ্যের ভিতরে অন্য একটি উপনাম ধারণ করতে পারে এবং আপনাকে অবশ্যই সেগুলি সমাধান করতে হবে (সম্ভবত পুনরাবৃত্তভাবে)। আপনি ধরে নিতে পারেন যে উপনামটি কখনও অসীম লুপের মধ্যে চলে না। এলিয়াসের শীর্ষস্থানীয় জিরো থাকবে না ( #02সূচকে উরফ নয় 2, 0পাঠ্যের পরে সূচীতে এটির নাম 2)।

আপনি ধরে নিতে পারেন অ্যারে 20 আইটেম দৈর্ঘ্যে পাস করবে না।

আপনি একটি প্রোগ্রাম লিখতে পারেন, বা একটি ফাংশন বা এমনকি একটি #defineসুন্দর এটা :)

আপনি অন্য একটি ইনপুট-পদ্ধতিও ব্যবহার করতে পারেন যা আপনার ভাষার জন্য আরও উপযুক্ত।

উদাহরণ

phrase: "#0 & #3"
array: [
    "Programming #1",
    "Puzzles",
    "Code",
    "#2 Golf"
]
output: "Programming Puzzles & Code Golf"

ধাপে ধাপে:

0> "#0 & #3"
1> "Programming #1 & #2 Golf"
2> "Programming Puzzles & Code Golf"

যেহেতু এই , বাইট জিতে স্বল্পতম উত্তর!

আর একটি নমুনা

phrase: "#0!"
array: [
    "We are #1",
    "#2",
    "#3",
    "#4 !",
    "graduating"
]
output: "We are graduating !!"

phrase: "##0#1#0#21#3#4"
array: [
    "a",
    "m",
    "z",
    "n",
    "g"
]
output: "#amaz1ng"

phrase: "##1#23"
array: [
    "WEIRD",
    "0 C",
    "AS"
]
output: "WEIRD CAS3"

phrase: "#1#7#6y#4#7#10s#7b#11#0#0#11r#7#0h#6#5#2#5#9#4."
array: [
    "t",
    "#12#3",
    "#11ga#3",
    "#0#10v#11",
    "#0h#10#8g",
    "#7#8",
    "a#8",
    " ",
    "n",
    "o",
    "i",
    "e",
    "P#9s#10"
]
output: "Positive anything is better than negative nothing."

শূন্য থেকে সূচকের সাথে অ্যারে ব্যবহৃত উদাহরণগুলি used


আমরা যদি 1-ইনডেক্সিং বিকল্পটি ব্যবহার করি তবে আমাদের কী 0 টি শীর্ষস্থানীয় 0 জিনিসটি উদ্বেগজনকভাবে #0উপস্থিত হওয়া উচিত তা নিয়ে চিন্তা করতে হবে না ? অথবা #01বৈধ তবে একটি উপাধি নয় (যেমন এটি কেবল যেমন রয়েছে তেমন রেখে দেওয়া হয়)?
FryAmTheEggman

@FryAmTheEggman। #01
সরানো হয়েছে

০-৯-তে অজগর দিয়ে সহজ, 0-19কে হ্রাস করার চেষ্টা করে মন বয়ে গেল: ডি
আন্তি হাপাল

1
একটি সাধারণ সমস্যা বলে মনে হয় এমন এক অবাক করা জটিলতা রয়েছে। দুর্দান্ত প্রশ্ন!
জোশ

উত্তর:


4

জাভাস্ক্রিপ্ট (ES6) 58

পুনরাবৃত্তি ফাংশন

f=(s,h,r=s.replace(/#(1?\d)/g,(_,x)=>h[x]))=>r==s?r:f(r,h)

পরীক্ষা

f=(s,h,r=s.replace(/#(1?\d)/g,(_,x)=>h[x]))=>r==s?r:f(r,h)

// Version without default parameters, same length but using a global
// f=(s,h)=>(r=s.replace(/#(1?\d)/g,(_,x)=>h[x]))==s?r:f(r,h)

console.log=x=>O.textContent+=x+'\n'

;[
  ['##1#23',['WEIRD','0 C','AS']],
  ["#0!",["We are #1","#2","#3","#4 !","graduating"]],
  ["##0#1#0#21#3#4",["a","m","z","n","g"]],
  ["##0#1#0#21#13#4",["a","m","z","","g","","","","","","","","","n"]],
  ["#1#7#6y#4#7#10s#7b#11#0#0#11r#7#0h#6#5#2#5#9#4.",
    ["t","#12#3","#11ga#3","#0#10v#11","#0h#10#8g","#7#8","a#8"," ","n","o","i","e","P#9s#10"]
  ],
  ["#0 & #3",["Programming #1","Puzzles","Code","#2 Golf"]]
].forEach(t=>{
  var a=t[0],b=t[1]
  console.log(a+' ['+b+']\n -> '+f(a,b))
})
<pre id=O></pre>


আমি 9 টিরও বেশি
সরানো হয়েছে

2

গণিত, 74 বাইট

FixedPoint[#~StringReplace~a&,a=0;a=Reverse["#"<>ToString@a++->#&/@#2];#]&

খুব জটিল নয়। এর বেশিরভাগটি কেবল সূচকগুলি তৈরি করতে উত্সর্গীকৃত।


1
@ ওয়াশিংটনগুয়েডস স্থির
লিজিয়নম্যামাল978

2

জুলিয়া, 112 107 66 বাইট

f(s,x)=(r=replace(s,r"#1?\d",m->x[1+parse(m[2:end])]))==s?s:f(r,x)

এটি একটি পুনরাবৃত্ত ফাংশন যা একটি স্ট্রিংকে একটি অ্যারে গ্রহণ করে এবং একটি স্ট্রিং প্রদান করে। এটি 0-ভিত্তিক সূচক ব্যবহার করে।

আমরা নিয়মিত এক্সপ্রেশনটির সমস্ত ম্যাচগুলির সাথে ইনপুট স্ট্রিং গুলি হিসাবে স্ট্রিং আর এর সাথে শুরু করে x#1?\d এর উপাদানটির সাথে মিল রেখে 1 + এর পূর্ণসংখ্যাকে ম্যাচের বাইরে পার্স করে ফেলেছি। এটি যদি s এর সমান হয় , আমরা গুলি ফিরে আসি, অন্যথায় আমরা পুনরাবৃত্তি করি, স্ট্রিং হিসাবে r কে পাশ করে।


1

সি, 269 232

#define f(p,a,l)char*n,o[999],i=0,c,x;for(strcpy(o,p);o[i];)o[i]==35&isdigit(o[i+1])?c=o[i+1]-48,c=isdigit(o[i+2])&c?10*c+o[i+2]-48:c,n=a[c<l?c:c/10],x=strlen(n),memmove(o+i+x,o+i+2+c/10,strlen(o+i)),i=!memmove(o+i,n,x):++i;puts(o);

অনুরোধ হিসাবে, একক #defineসমস্যার সমাধান! সি ম্যাক্রোগগুলি পুনরাবৃত্ত হতে পারে না, সুতরাং সমস্যাটি পুনরাবৃত্তভাবে সমাধান করতে হয়েছিল। ম্যাক্রোটি 3 টি আর্গুমেন্ট নেয়; বাক্যাংশ p, অ্যারে aএবং অ্যারের দৈর্ঘ্য lআমি কেবল আমার অমীমাংসিত দ্রবণ থেকে হোয়াইটস্পেস ছিনিয়ে নিয়েছি; আমি জানি যে আমি আরও কয়েকটি অক্ষর সংরক্ষণ করতে পারি, তবে আমি মনে করি না এটি আমাকে 200 এর নিচে পাবে। এটি অবশ্যই কোনও প্রতিযোগিতামূলক সমাধান হবে না। সমাধান সম্পূর্ণ গল্ফ হয়। নীচে একটি ফাংশন আকারে অবহেলিত সমাধান:

f(char*p,char**a,int l){
  char o[999]={0},i=0;
  strcpy(o,p);
  while(o[i]){
    if(o[i]=='#'&&isdigit(o[i+1])){
      int c = o[i+1]-'0';
      if(isdigit(o[i+2])&&c)
        c=10*c+o[i+2]-'0';
      if(c>=l)
        c/=10;
      char *n=a[c];
      memmove(o+i+strlen(n),o+i+2+c/10,strlen(o+i));
      memmove(o+i,n,strlen(n));
      i=0;
    }else{
      i++;
    }
  }
  puts(o);
}

এবং পরীক্ষার কোড:

void test(char *phrase, char **array, int length) {
  f(phrase, array, length);
}

main() {
  const char *t1[] = {
    "Programming #1","Puzzles","Code","#2 Golf"
  };
  test("#0 & #3", t1, 4);

  const char *t2[] = {
    "We are #1","#2","#3","#4 !","graduating"
  };
  test("#0!", t2, 5);

  const char *t3[] = {
    "a","m","z", "n","g"
  };
  test("##0#1#0#21#3#4", t3, 5);

  const char *t4[] = {
    "WEIRD","0 C","AS"
  };
  test("##1#23", t4, 3);

  const char *t5[] = {
    "t","#12#3","#11ga#3","#0#10v#11","#0h#10#8g","#7#8","a#8"," ","n","o","i","e","P#9s#10"
  };
  test("#1#7#6y#4#7#10s#7b#11#0#0#11r#7#0h#6#5#2#5#9#4.", t5, 13);
}

সম্পাদনা: কিছু গল্ফিং যাদু কাজ করেছে। এটি যতটা সংক্ষিপ্ত এবং অপঠনযোগ্য তা আমি পেতে পারি বলে মনে করি।


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