স্ট্রিং অ্যারেগুলি সংকুচিত করছে
আপডেট: এই টিপটিতে বৈশিষ্ট্যযুক্ত সরঞ্জামগুলি আমার জপ দোভাষীতে আবার লেখা, উন্নত ও সংহত করা হয়েছে । সর্বোত্তম ফলাফলের জন্য এটি প্রস্তাবিত হয় যে আপনি নীচের সাথে লিঙ্কযুক্ত যেকোনোটির উপরে সেই সংকোচকারী ব্যবহার করুন। আমার আরও সময় লাগলে আমি আবার এই টিপটিটি আবার দেখতে যাব এবং নতুন সংক্ষেপককে মনে রেখে আবার লিখব।
ভূমিকা
আপনার কোডে যদি স্ট্রিংগুলির একটি অ্যারে থাকে তবে এটি সংকোচন করার সবচেয়ে সুস্পষ্ট উপায় হ'ল পৃথকভাবে প্রতিটি স্ট্রিং চালানোOc
। এই টিপটির উদ্দেশ্যে, আমরা অ্যারের সাথে কাজ করব ["lollipop","marshmallow","nougat","oreo"]
, যা প্রাথমিকভাবে 42 বাইটে ওজন। প্রতিটি স্ট্রিং চালানো Oc
আমাদের দেয়:
[`lo¥ipop`,`Ú\hÚaow`,`Í`,`eo`]
এটি এখন 33 বাইট, একটি ভাল সঞ্চয়।
ধাপ 1
তবে , আমরা আরও ভাল করতে পারি। যদি আমরা অ্যারেটিকে একটি নতুন লাইনের দ্বারা পৃথক স্ট্রিংয়ে যোগ দিই, তবে আমরা বন্ধনী, কমা এবং এক্সট্রেনাস ব্যাকটিক্স থেকে মুক্তি পেতে পারি এবং আমাদের অ্যারে পেতে নিউলাইনে বিভক্ত হয়ে যেতে পারি। আমাদের উদাহরণ অ্যারেটিতে এটি প্রয়োগ করা আমাদের নিম্নলিখিত বিষয়গুলি দেয়:
`lo¥ipop
Ú\hÚaow
Í
eo`·
এখন 26 বাইট নিচে।
ধাপ ২
তবে , আমরা আরও ভাল করতে পারি! আমরা একটি নতুন লাইনের পরিবর্তে স্ট্রিংগুলি সীমিত করতে একটি ছোট হাতের অক্ষর ব্যবহার করতে পারি, যা সংকোচনে অন্তর্ভুক্ত হতে পারে। z
আমাদের কোনও স্ট্রিং ব্যবহার করা হয়নি তাই আসুন এটি বাদ দিন এবং দেখুন কীভাবে আমরা এগিয়ে চলেছি।
`lo¥ipopzÚ\hÚaowzÍzeo`qz
আহ, বাদাম - কোনও উন্নতি নেই; আমাদের বাইট গণনা এক এক করে বেড়েছে! আপনি ব্যবহার করতে পারেন এমন আরও একটি চিঠি থাকতে পারে তবে, আপনার স্ট্রিংয়ের উপর নির্ভর করে চেষ্টা করার জন্য বেশ কয়েকজন থাকতে পারে - আমাদের উদাহরণে 11: আছে b,c,d,f,j,k,q,v,x,y,z
। প্রত্যেকটির চেষ্টা করা অত্যন্ত ক্লান্তিকর হবে, যেখানে এই সহজ সরঞ্জামটি আসে; এটিকে আপনার নতুন লাইনের দ্বারা পৃথক করা স্ট্রিং খাওয়ান এবং এটি প্রতিটি বর্ণের সাথে স্ট্রিংগুলি সীমিত করার চেষ্টা করবে যা সেগুলির কোনওর মধ্যে নেই এবং আউটপুট:
- সংক্ষিপ্ততম সংকুচিত স্ট্রিং,
- ডিলিমিটারটি এটি ব্যবহার করে এবং
- এর দৈর্ঘ্য
এটির মাধ্যমে আমাদের নমুনা স্ট্রিংগুলি চালিত করা b
সর্বোত্তম ফলাফল দেয় তা দেখায় :
`lo¥ipáæqrÚaowbÍÞo`qb
এবং সেখানে আপনার এটি আছে, আমরা কেবল 24 বাইটে নেমে এসেছি।
ধাপ 3
তবে , আমরা আরও ভাল করতে পারি ! যদি আপনার অ্যারে স্ট্রিংয়ের ক্রমটি বিবেচনা না করে তবে সম্ভবত একটি পৃথক ডিলিমিটারের সাথে পৃথক পৃথক ক্রিয়াকলাপ রয়েছে যা আরও খাটো কাজ করতে পারে। যদিও প্রতিটি সম্ভাবনার চেষ্টা করা আরও বেশি ক্লান্তিকর হতে চলেছে। আমাদের 4 টি স্ট্রিং সহ, 24 টি পৃথক ক্রম ব্যবহারের চেষ্টা রয়েছে। প্রতিটি 11 টি চিঠি দিয়ে 264 হয়ে যায়! যে যেখানে আছে এই টুল খেলার মধ্যে আসে। আবার এটিকে আপনার নতুন লাইনের দ্বারা পৃথক স্ট্রিংগুলি খাওয়ান এবং এটি প্রতিটি ক্রমান্বয়ে এবং প্রতিটি বিস্মৃত অক্ষর, আউটপুটিংয়ের প্রতিটি সংমিশ্রণ চেষ্টা করবে:
- সংক্ষিপ্ত সংক্ষেপিত স্ট্রিংয়ের স্ট্রিংগুলির ক্রম,
- সংকুচিত স্ট্রিং,
- যে ডিলিমিটারটি এটি ব্যবহার করে, এবং,
- এর দৈর্ঘ্য
এটির মাধ্যমে আমাদের নমুনা স্ট্রিংগুলি "nougat","oreo","lollipop","marshmallow"
চালিয়ে যাওয়া দেখায় যে b
একটি ডিলিমিটার হিসাবে সেরা ফলাফল দেয়, কেবলমাত্র চূড়ান্ত বাইট গণনা সহ ২৩:
`ÍÞo½o¥ipáæqrÚaow`qb
বোনাস টিপ: পূর্ণসংখ্যার অ্যারে সংক্ষেপণ
আপনি প্রথমে প্রত্যেকটিকে উচ্চতর বেসে রূপান্তর করে পূর্ণসংখ্যার অ্যারেগুলিতে একই নীতি প্রয়োগ করতে পারেন। এই নমুনাটি ব্যবহার করে, 36 বাইট অ্যারে:
[588181,156859,595676,475330,680474]
আমরা প্রথমে এটি 32 বেসগুলিতে একটি অ্যারে রূপান্তর করে এবং পরে প্রথম সংক্ষেপণ প্রোগ্রামের মাধ্যমে এটি চালিয়ে 29 বাইটে পেতে পারি:
`huclt4p5r5ÛÊg62tkogq`qt mnH
বা দ্বিতীয় প্রোগ্রামটি ব্যবহার করে 27 বাইট হিসাবে কম:
`4p5Ïcl5ÛÊg62tkogq`qt mnH
আপনি ইতিমধ্যে অ্যারেতে চালাচ্ছেন এমন কোনও পদ্ধতিতে পূর্ণসংখ্যার রূপান্তরটি স্থানান্তরিত করে আপনি এর উপরে আরও একটি বাইট বা 2 বাঁচাতে সক্ষম হতে পারেন।
মন্তব্য
- 1 বা 2 অতিরিক্ত বাইট
q<letter>(<space>)
ব্যয়গুলি ফ্যাক্ট করতে ভুলবেন না ·
। যদিও, আপনি আপনার ডিলিমিটারের উপর নির্ভর করে বাইট ফিরে পেতে ইউনিকোড শর্টকাটগুলির একটি ব্যবহার করতে সক্ষম হতে পারেন ( qÊ
একইql<space>
, উদাহরণস্বরূপ ) ।
- শেষ সরঞ্জামটি ব্যবহার করার সময় একটি সতর্কতার শব্দ: আপনার যত বেশি স্ট্রিং রয়েছে, তত বেশি ক্রমশক্তি ঘটবে এবং প্রোগ্রামটি ধীরে ধীরে চালিত হবে যতক্ষণ না শেষ পর্যন্ত এটি ক্রপ হয়ে যায়। উপরে বর্ণিত হিসাবে, চেষ্টা করার জন্য আমাদের 4 টি নমুনা স্ট্রিং এবং 11 টি সম্ভাব্য অক্ষর রয়েছে, সেখানে 264 সম্ভাব্য সংমিশ্রণ রয়েছে, একই 11 টি বর্ণের সাহায্যে কেবল স্ট্রিংয়ের সংখ্যা বাড়িয়ে দিন এবং আমাদের ইতিমধ্যে 1320 টি সংমিশ্রণ রয়েছে। (আপনি চাইলে সংযোজনগুলির সংখ্যা গণনা করতে এই সরঞ্জামটি ব্যবহার করতে পারেন)।
ক্রেডিট
- এই টিপটিতে পাওয়া সরঞ্জামগুলি তৈরি করতে অনুপ্রেরণার জন্য অলিভার।
- প্রুফরিডিংয়ের জন্য ইটিএইচ প্রোডাকশনস।