পিপিসিআই সিনিয়র প্রংক


19

আমরা শীঘ্রই একটি সম্পূর্ণ সাইটে স্নাতক হয়ে উঠছি, এবং স্নাতক হওয়ার আগে কেবল একটি জিনিস বাকি আছে: একটি প্রবীণ প্রঙ্ক টানুন! আমি মনে করি আমাদের ক্লাসিক "জল কাপ দিয়ে একটি হলওয়ে ভরাট করুন" গ্যাগে আলাদা হওয়া উচিত।

চ্যালেঞ্জ

আপনার প্রোগ্রামটি টেক্সটটিতে পড়বে এবং সেই পাঠ্যটি আউটপুট ডাউন পানিতে coveredেকে দেওয়া হবে। একটি উল্টাপাল্ট পানির পানির চেহারা দেখতে পাওয়া যায়: /~\
এই কাপগুলি কেবল ইনপুটটিতে শ্বেত স্পেসে রাখা যেতে পারে এবং কেবল এমনভাবে স্থাপন করা যেতে পারে যাতে কাপের তিনটি অক্ষরই সরাসরি কোনও সাদা-স্থানের অক্ষরের উপরে থাকে (অন্যথায় জল ছড়িয়ে যায় would আউট!)। কাপগুলি অন্য কাপের উপরে স্ট্যাক করা যায় না। কাপগুলি প্রতিটি উপলভ্য খোলার মধ্যে অবশ্যই রাখা উচিত এবং এটি ধরে নেওয়া হয় যে প্রতিটি ইনপুট সাদা জায়গার অসীম ক্ষেত্র দ্বারা বেষ্টিত।

আপনি ধরে নিতে পারেন যে ইনপুটটি ফাঁকা স্থানগুলির সাথে একটি আয়তক্ষেত্রে প্যাড করা হয়েছে।

আমাদের তাড়াতাড়ি দ্রুত এবং কারও নজরে না নিয়ে টানতে হবে, যাতে প্রতিটি ভাষায় খুব কম বাইট জিততে পারে।

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

ইনপুট:

     ____________________________________________
    /   ___    /   ___    /   ______/   ________/
   /   /__/   /   /__/   /   /     /   /_______
  /   _______/   _______/   /     /   //__    /
 /   /      /   /      /   /_____/   /___/   /
/___/      /___/      /_________/___________/

আউটপুট:

     /~\/~\/~\/~\/~\/~\/~\/~\/~\/~\/~\/~\/~\/~\
     ____________________________________________
    /   ___    /   ___    /   ______/   ________/
   /   /__//~\/   /__//~\/   /     /   /_______
  /   _______/   _______/   //~\  /   //__    /
 //~\/      //~\/      //~\/_____//~\/___//~\/
/___/      /___/      /_________/___________/

ইনপুট:

 L
LOL  ROFL:ROFL:LOL:ROFL:ROFL
 L\\        ____I____
    ========    |  |[\
            \___O==___)
            ___I_I__/

আউটপুট:

 L   /~\/~\/~\/~\/~\/~\/~\
LOL  ROFL:ROFL:LOL:ROFL:ROFL
 L\\/~\/~\  ____I____
    ========/~\ |  |[\
            \___O==___)
            ___I_I__/

উত্তর:


10

অক্ষিপট , 41 বাইট

বাইট গণনাটি আইএসও 8859-1 এনকোডিং ধরেছে।

(?<=(.)*)(?=.*¶(?>(?<-1>.)*)\S{3})   
/~\

মনে রাখবেন যে প্রথম লাইনে তিনটি ট্রেলিং স্পেস রয়েছে।

একটি আয়তক্ষেত্রটি প্যাড করতে ইনপুট প্রয়োজন।

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

ব্যাখ্যা

এটি মোটামুটি স্ট্যান্ডার্ড উল্লম্ব মিল:

(?<=(.)*)

এটি সেই বহু অক্ষরকে দলে দলে ম্যাচের আগের চরিত্রগুলি গণনা করে 1

(?=.*¶(?>(?<-1>.)*)\S{3})

এটি পরীক্ষা করে যে পরের লাইনে একই পজিশনে তিনটি ফাঁকা অক্ষর রয়েছে। এটি গ্রুপ থেকে পপিংয়ের মাধ্যমে 1এটি খালি না হওয়া পর্যন্ত (?<-1>.)*এবং পারমাণবিক গোষ্ঠীর সাথে ব্যাকট্র্যাকিং রোধ দ্বারা করা হয় (?>...)

অবশেষে আমরা আসল স্পেসগুলির সাথে মেলে। এগুলি কেবল আক্ষরিক স্ট্রিংয়ের সাথে প্রতিস্থাপিত হয় /~\। সুবিধার্থে, ম্যাচগুলি বাম থেকে ডানে পাওয়া যায় এবং ওভারল্যাপ করতে পারে না।


3

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

a=>(z=a.split`
`,z.unshift(z[0].replace(/./g,' ')),z).map((b,i)=>b.replace(/   /g, (c,j)=>(!z[i+1]||!z[i+1][j+2]||/ /.test(z[i+1].slice(j,j+3))?c:'/~\\'))).join`
`

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


আমি মনে করি এটি এর জন্য ভুল ফলাফল দেয় a test
নীল

1

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

s=>s.replace(/.*\n/,m=>(t=m).replace(/./g,' ')+m).replace(eval(`/   (?=[^]{${t.length-3}}[^ ]{3})/g`),"/~\\")

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

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