pb , 83 বাইট
^<b[1]>>>w[B!0]{<w[B!0]{t[B]<b[T]>>}<b[0]<b[0]<[X]>>}w[B=0]{<}t[B]<[X]t[B+T]vb[T/2]
ইনপুট স্ট্রিংয়ে কমপক্ষে 3 টি অক্ষর থাকা অবস্থায় প্রথম এবং শেষটি সরানো হবে। এটি হয় 1 টি অক্ষর (মোছাবিহীন মুদ্রিত হওয়া উচিত) বা 2 (গড় এবং মুদ্রিত হওয়া উচিত)। এটি পরিচালনা করতে, স্ট্রিংয়ের প্রথম এবং শেষ অক্ষরগুলি একসাথে যুক্ত হয় এবং দুটি দ্বারা বিভক্ত হয়। যদি কেবল একটি চরিত্র ছিল (a+a)/2==a
,। দু'জন থাকলে,(a+b)/2
মুদ্রণ করা দরকার যে চরিত্রটি। পিবি পাইথনের অভিব্যক্তি মূল্যায়ন "ধার করে" ( def expression(e): return eval(e, globals())
) তাই এটি স্বয়ংক্রিয়ভাবে মেঝে।
খালি ইনপুট পরিচালনা করতে আমার 5 বাইট খরচ হয়। বিশেষত, <b[1]>
প্রথম লাইনে। এর আগে, যখন আমি "স্ট্রিং" বলেছিলাম, এটি মোট মিথ্যা ছিল। pb এর স্ট্রিং নেই, এতে এমন অক্ষর রয়েছে যা একে অপরের সাথে ঘনিষ্ঠ হয়। "একটি স্ট্রিংয়ের শেষ চরিত্র" সন্ধান করা মানে ব্রাশটি কোনও অক্ষর না হারা পর্যন্ত বাম দিকে সরানো। যখন কোনও ইনপুট সরবরাহ করা হয় না, "কমপক্ষে 3 টি অক্ষর থাকা অবস্থায়" লুপটি সম্পূর্ণ এড়িয়ে যায় এবং এটি শেষ অক্ষরের সন্ধান শুরু করে starts তা ছাড়া <b[1]>
চিরকাল তা দেখতে থাকত keep এই কোডটি 1-এর মান (-1, -1) এর সাথে একটি অক্ষর রাখে বিশেষত যখন ইনপুট খালি থাকে তখন সন্ধান করা যায়। স্ট্রিংয়ের "শেষ চরিত্রটি" সন্ধানের পরে ব্রাশটি ধরে নিয়েছে যে এটি প্রথমটি (0, -1) এ আছে এবং সেখানে সরাসরি চলে যায়, 0 এর মান খুঁজে পাওয়া যায় (1+0)/2
0 পিবিতে,
কিন্তু মনোরেল, এটি এখনও মুদ্রণ! চ্যালেঞ্জ স্পেসিফিকেশন বলে(empty input) => (empty output)
! একটি নাল চরিত্র প্রিন্টিং প্রতারণা করছে না? এছাড়াও, এটি সম্পর্কিত নয়, তবে আপনি স্মার্ট এবং সুদর্শন।
ধন্যবাদ, অনুমানমূলক প্রশ্নকর্তা। এর আগে, যখন আমি "মুদ্রণ" বলেছিলাম, এটি মোট মিথ্যা ছিল। পিবিতে, আপনি সত্যিই মানগুলি মুদ্রণ করেন না, আপনি কেবল সেগুলি ক্যানভাসে রেখেছেন। "আউটপুট করার উপায়" এর পরিবর্তে, ক্যানভাসকে অসীম বড় 2D অ্যারে হিসাবে কল্পনা করা আরও সঠিক। এটি উভয় মাত্রায় নেতিবাচক সূচকগুলিকে মঞ্জুরি দেয় এবং pb তে প্রচুর প্রোগ্রামিং করা আপনি যে ক্যানভাসে চান তা ব্রাশটি সেই অবস্থানটিতে পৌঁছেছে তা নিশ্চিত করার বিষয়ে। যখন প্রোগ্রামটি সম্পাদন শেষ করে, অ-নেতিবাচক এক্স এবং ওয়াই সমন্বয়যুক্ত ক্যানভাসের যে কোনও কিছুই কনসোলের উপযুক্ত স্থানে প্রিন্ট করা হয়। যখন প্রোগ্রামটি শুরু হয়, পুরো ক্যানভাসটি 0 এর মান দিয়ে পূর্ণ হয় an যাতে প্রতিটি অসীম সংখ্যক লাইন মুদ্রণ করতে না হয়, প্রতিটি অনন্ত সংখ্যার নাল বাইট সহ, আউটপুট প্রতিটি লাইন কেবল সর্বশেষ ননজারো অক্ষর পর্যন্ত মুদ্রিত হয় এবং লাইনগুলি কেবল কোনও ননজারো চরিত্রের সাথে শেষ এক পর্যন্ত মুদ্রিত হয়। সুতরাং একটি রাখা0
at (0, 0) এখনও একটি খালি আউটপুট।
Ungolfed:
^<b[1]> # Prevent an infinite loop on empty input
>>w[B!0]{ # While there are at least 3 chars of input:
<w[B!0]{ # Starting at the second character:
t[B]<b[T]>> # Copy all characters one position to the left
# (Effectively erasing the first character)
}
<b[0]<b[0] # Delete both copies of the last character
<[X]>> # Get in place to restart loop
}
w[B=0]{<} # Go to last character of remaining string
t[B]<[X]t[B+T] # Find it plus the first character
vb[T/2] # Divide by 2 and print