সেড, 367 (উত্স কোড বাইট) + 532 (উত্স কোডের ম্যাচস্টিকের পরিমাণ) = 899
s/[^0-9a-jln-suxyz]//Ig;/^$/{s/.*/0/;b};s/.+/&; %1ir %%7lnu %%%4cfhjoy %%%%235bdegpqsxz %%%%%069a %%%%%%8/;:1;s/([^% ])(.+ (%+)[^ ]*\1)/%\3 \2/I;/ ;/!b1;s/;.+//;s/^/,;/;:2;s/(;[^%]*)(%+)/\2\1/;:3;s/,%{10}/%,/;s/^%/,&/;/%{10}/b3;/;.*%/b2;:4;s/,[;,]/,0,/;/,[;,]/b4;s/%{9}/9/g;s/%{8}/8/g;s/%{7}/7/g;s/%{6}/6/g;s/%{5}/5/g;s/%%%%/4/g;s/%%%/3/g;s/%%/2/g;s/%/1/g;s/[^0-9]//g
অনলাইনে চেষ্টা করুন
মাল্টি-লাইন সংস্করণ:
s/[^0-9a-jln-suxyz]//Ig
/^$/{s/.*/0/;b}
s/.+/&; %1ir %%7lnu %%%4cfhjoy %%%%235bdegpqsxz %%%%%069a %%%%%%8/
:1
s/([^% ])(.+ (%+)[^ ]*\1)/%\3 \2/I
/ ;/!b1
s/;.+//
s/^/,;/
:2
s/(;[^%]*)(%+)/\2\1/
:3
s/,%{10}/%,/
s/^%/,&/
/%{10}/b3
/;.*%/b2
:4
s/,[;,]/,0,/
/,[;,]/b4
s/%{9}/9/g
s/%{8}/8/g
s/%{7}/7/g
s/%{6}/6/g
s/%{5}/5/g
s/%%%%/4/g
s/%%%/3/g
s/%%/2/g
s/%/1/g
s/[^0-9]//g
ব্যাখ্যা:
উপরের স্ক্রিপ্টটি স্ট্যান্ডার্ড ইনপুট লাইনটি রেখায় পড়বে (প্যাটার্ন স্পেসে - সাধারণ "শেড ওয়ে") এবং, প্রতিটি লাইনের জন্য, এই লাইনের সমস্ত ম্যাচস্টিক-উপস্থাপনযোগ্য অক্ষর উপস্থাপনের জন্য প্রয়োজনীয় ম্যাচস্টিকের পরিমাণকে আউটপুট করে দেয়। ইনপুট প্রতিটি লাইন জন্য গণনা নিম্নলিখিত হিসাবে ঘটবে:
s/[^0-9a-jln-suxyz]//Ig
প্রথমে, আমরা প্রতিটি চরিত্রকে মুছে ফেলি যার জন্য আমাদের প্যাটার্ন স্পেস থেকে সম্পর্কিত ম্যাচস্টিক উপস্থাপনা (প্রশ্নের উপর দেওয়া হিসাবে) নেই। এটি হল, আমরা প্রতিটি অক্ষর মুছে ফেলি যা "0" থেকে "9" পর্যন্ত নয়, "ক" থেকে "জ", "এন" থেকে "এস", "এল", "আপনি", "x", "y" বা "জেড"। বড় হাতের অক্ষর এবং ছোট হাতের অক্ষর একই আচরণ করা হয়।
/^$/{s/.*/0/;b}
যদি আমরা একটি খালি প্যাটার্ন স্পেস দিয়ে শেষ করি, আমরা 0 টি মুদ্রণ করি (স্বয়ংক্রিয়ভাবে একটি নতুন লাইন অনুসরণ করা হয়, যেমন সেড সবসময় করে থাকে যতক্ষণ না আপনি এটিতে একটি বিশেষ পতাকা প্রেরণ না করে), স্ক্রিপ্টের সমস্ত উত্তরোত্তর লাইনগুলি এড়িয়ে যান এবং পরবর্তী "সেড চক্র" এ যান ( অর্থাত্, ইনপুটটির পরবর্তী লাইনটি পড়ুন এবং প্রথম কমান্ড থেকে পুনরায় প্রক্রিয়াজাতকরণের জন্য ইনপুটটির আর কোনও লাইন না পাওয়া পর্যন্ত পুনরাবৃত্তি করুন।
s/.+/&; %1ir %%7lnu %%%4cfhjoy %%%%235bdegpqsxz %%%%%069a %%%%%%8/
অন্যথায়, যদি প্যাটার্নের স্থানটি খালি না থাকে, তবে আমরা এখন এটি একটি দুটি সেমিকোলন দ্বারা পৃথক দুটি "উপ-স্পেসে" বিভক্ত করব: প্রথমে ইনপুট স্পেস আসে , যা প্রাথমিকভাবে সমস্ত অক্ষর দ্বারা গঠিত হয়েছিল যা প্যাটার্ন স্পেস থেকে পরে সরানো হয়নি were লাইন 1 কার্যকর করা; এর পরে আসে সেমিকোলন এবং এর পরে মানচিত্রের স্থান ।
মানচিত্রের স্থানটি আমাদের জানায় যে প্রতিটি প্রাসঙ্গিক বর্ণানুক্রমিক চরিত্র উপস্থাপনের জন্য 1 এর পাশে কতটি ম্যাচস্টিক প্রয়োজন। যদি আমরা জানতে চাই যে মানচিত্রের জায়গার মধ্যে যে কোনও বর্ণানুক্রমিক চরিত্রের প্রতিনিধিত্ব করতে কতটি ম্যাচস্টিক প্রয়োজনীয়, আমরা সেই অক্ষরের বাম দিকে মিলিত% 'র প্রথম ক্রমটি সন্ধান করি এবং উত্তরটি% এর সংখ্যায় হবে যে ক্রমটি আরও 1। উদাহরণস্বরূপ, "বি" উপস্থাপনের জন্য প্রয়োজনীয় ম্যাচস্টিকগুলির সংখ্যা 4 + 1 = 5; একটি "y", 3 + 1 = 4 উপস্থাপন করতে, একটি "4", 3 + 1 = 4 উপস্থাপন করতে; ইত্যাদি।
:1
s/([^% ])(.+ (%+)[^ ]*\1)/%\3 \2/I
/ ;/!b1
এটি একটি লুপ। এখন আমরা ইনপুট স্পেসের প্রতিটি অক্ষরকে% এর (সম্পূর্ণ) অনুক্রম দ্বারা প্রতিস্থাপন করব যার সংখ্যাটি সেই চরিত্রটি উপস্থাপন করার জন্য প্রয়োজনীয় পরিমাণের ম্যাচস্টিকগুলি নির্দেশ করে এবং একটি ক্রোস স্পেস অক্ষর দ্বারা সেই ক্রমটি অনুসরণ করবে (আবার, বড় হাতের অক্ষর এবং ছোট হাতের অক্ষরগুলি হ'ল একই চিকিত্সা দেওয়া)। লুপটি শেষ হওয়া উচিত কিনা তা নির্ধারণের মানদণ্ডটি প্যাটার্ন স্পেসে সেমিকোলনের তাত্ক্ষণিক বামে একটি সাদা স্থানের অক্ষর রয়েছে কিনা তা পরীক্ষা করে দেখার জন্য: যদি এই শর্তটি ধরে থাকে তবে আমরা লুপটি বন্ধ করে পরবর্তী লাইনে চালিয়ে যাব।
s/;.+//
s/^/,;/
এই দুটি রেখাটি সেমিকোলন এবং তার পরে সমস্ত কিছু নিদর্শন স্থান থেকে সরিয়ে দেয় এবং তারপরে প্যাটার্ন স্পেসের শুরুতে একটি কমা এবং একটি সেমিকোলন প্রবেশ করান। আমাদের এখন প্যাটার্ন স্পেসটি আবার দুটি নতুন উপ-স্পেসে বিভক্ত হয়েছে: সেমিকোলনের আগে অ্যানালগ ফলাফল স্থান এবং তার পরে অ্যানালগ ইনপুট স্পেস ।
অ্যানালগ ইনপুট স্পেসটি কেবলমাত্র আমরা আগে "ইনপুট স্পেস" বলেছিলাম তবে এটি অন্যরকম আকারে রয়েছে: এটিতে এখন%% এর ক্রম সাদা স্থান দ্বারা পৃথক করা রয়েছে। অ্যানালগ ইনপুট স্পেসে এই জাতীয়% এর মোট সংখ্যা প্রাথমিক ইনপুট চরিত্রের স্ট্রিং উপস্থাপনের জন্য প্রয়োজনীয় ম্যাচস্টিকগুলির একই সংখ্যা, অর্থাত্ সেই সংখ্যাটি ফলাফল। তবে আমাদের অবশ্যই সেই ফলাফলটি দশমিক চিহ্ন হিসাবে মুদ্রণ করতে হবে, শতাংশ চিহ্নের ক্রম হিসাবে নয়। অ্যানালগ ফলাফল স্থানের উদ্দেশ্য হ'ল ফলাফলের প্রতিটি অঙ্কের অ্যানালগ উপস্থাপনা রাখা হয় যখন আমরা সেই ফলাফলকে এনালগ ইনপুট স্পেসে একের পর এক% এর যথাযথ অনুক্রমকে সংমিশ্রণ করে অঙ্ক করি। পরবর্তী লুপটি যোগফলটি সম্পাদন করে:
:2
s/(;[^%]*)(%+)/\2\1/
:3
s/,%{10}/%,/
s/^%/,&/
/%{10}/b3
/;.*%/b2
প্রথমে, লেবেল 2 এর পরে , আমরা অ্যানালগ ফলাফলের স্থানটিতে অ্যানালগ ইনপুট স্থান থেকে অর্ধিকোলনের পরে% এর পরের সামঞ্জস্যপূর্ণ অনুক্রমকে সেমিকোলনের তাত্ক্ষণিক বামে স্থানান্তরিত করি;
এরপরে, আমরা একটি উপ-লুপ (লেবেল 3 ) এ প্রবেশ করি যা নিম্নলিখিত গণনাগুলি সম্পাদন করে:
অ্যানালগ ফলাফলের স্থানে কমা দেওয়ার পরে যদি দশ% এর একটি যথাযথ অনুক্রম থাকে তবে আমরা সেই% 'গুলি সরিয়ে এবং একক% অবিলম্বে কমাটির বাম দিকে রাখি। এটিকে সহজভাবে বলতে গেলে, এটি সূচিত করে যে ফলাফলের দশমিক একটি স্থানে 9 টিরও বেশি ইউনিট অর্জিত হয়েছে, তাই আমরা 10 দশককে দশমিক স্থান থেকে দূরে নিয়ে যাই এবং পরবর্তী দশমিক জায়গায় 1 ইউনিট যুক্ত করি;
যদি কোনও "%" প্যাটার্ন স্পেসের প্রথম অক্ষর হয় তবে আমরা এর ঠিক আগেই একটি নতুন কমা সন্নিবেশ করলাম। এটি ইঙ্গিত করে যে সমষ্টিটি এমন একটি মূল্যে পৌঁছেছে যার দশমিক প্রতিনিধিত্বের পূর্বের মানের তুলনায় বামে আরও দশমিক একটি স্থান রয়েছে;
যদি এখনও অ্যানালগ ফলাফলের স্থানে দশ% এর কোনও সুসংগত অনুক্রম থাকে তবে আমরা 3 লেবেলটিতে ফিরে যাই এবং এই প্রক্রিয়াটি পুনরাবৃত্তি করি। অন্যথায়, আমরা এই উপ-লুপটি থেকে প্রস্থান করব এবং পরবর্তী লাইনে প্রবেশ করব।
এখন, যদি অ্যানালগ ইনপুট স্পেসে এখনও কোনও "%" থাকে (অর্থাত্ সেমিকোলনের পরে), এর অর্থ হ'ল মোট যোগফলটিতে এখনও কিছু সংখ্যক ম্যাচস্টিক যুক্ত হতে পারে - সুতরাং আমরা লেবেল 2 এ ফিরে যাই ।
যোগফলটি সম্পূর্ণ হয়ে গেলে, আমরা কোডের চূড়ান্ত লুপটিতে প্রবেশ করি:
:4
s/,[;,]/,0,/
/,[;,]/b4
এখানে, আমরা বাম দিকে কমা দ্বারা এবং প্রতিটি সেমিকোলন বা ডানদিকে কমা দ্বারা গঠিত প্রতিটি অক্ষর পরীক্ষা করি। আমরা এই জাতীয় অক্ষরের সমস্ত জোড়া দুটি কমাতে "0" দ্বারা প্রতিস্থাপন করি।
s/%{9}/9/g
s/%{8}/8/g
s/%{7}/7/g
s/%{6}/6/g
s/%{5}/5/g
s/%%%%/4/g
s/%%%/3/g
s/%%/2/g
s/%/1/g
উপরের কোডের টুকরোটি বেশ সহজ: আমরা এনালগ ফলাফলের জায়গাতে% s এর প্রতিটি মিলিত অনুক্রমকে দশমিক অঙ্কের অক্ষর দ্বারা প্রতিস্থাপন করি যা প্রতিটি নির্দিষ্ট অনুক্রমের% 'এর সংখ্যার সাথে মিলে যায়।
s/[^0-9]//g
পরিশেষে, আমরা প্রতিটি অ-অঙ্কের অক্ষরকে প্যাটার্ন স্পেস থেকে সরিয়ে ফেলি এবং যা অবশেষ থাকে তা পরিচিত দশমিক স্বীকৃতির চূড়ান্ত ফলাফল। সেই মানটি স্ট্যান্ডার্ড আউটপুটে মুদ্রিত হয় এবং পরবর্তী কোনও সেড চক্র শুরু হয়, যদি প্রক্রিয়া করার জন্য আরও কোনও ইনপুট লাইন থাকে।
|_\n|_
(ছোট হাতেরt
) হিসাবে লেখা হয়