দীর্ঘ সংখ্যা সংক্ষিপ্ত করা হচ্ছে


10

কোড গল্ফিংয়ের সময় দীর্ঘ সংখ্যার সাথে কথা বলার সময়, আপনার কোডের দৈর্ঘ্য নিচে নামা কঠিন হতে পারে, তাই কোনও সংখ্যাকে আরও খাটো ও পরিচালনা করার জন্য আপনার কি কোনও টিপস রয়েছে?

উদাহরণস্বরূপ, নিম্নলিখিত পাইথ কোডগুলি "হ্যালো ওয়ার্ল্ড" মুদ্রণ করে তবে 44 বাইটে এটি অসন্তুষ্টিজনক:

Vcjkj85942000775441864767076 2 7=k+kCiN2)k

তাহলে আমি কীভাবে দীর্ঘ সংখ্যাটি সংক্ষিপ্ত করব 85942000775441864767076,?

উত্তর:


10

এই প্রশ্নের উপযুক্ত সময়। @ আইসাকগ আজই একটি নতুন বৈশিষ্ট্য যুক্ত করেছে, যা এই জাতীয় সংখ্যাগুলিকে হ্রাস করতে পারে।

মূল কৌশলটি হ'ল সংখ্যাটি 256 কে বেসে রূপান্তর করা এবং এটিকে চরগুলিতে রূপান্তর করা। আপনি কোড ব্যবহার করে এটি করতে পারেন ++NsCMjQ256N। তারপরে আপনি ফলাফলটির স্ট্রিং এর সাথে মিশ্রণটি ব্যবহার করতে পারেন Cযা ঠিক বিপরীত হয় (অক্ষরে রূপান্তর করতে এবং ফলাফলটিকে বেস -২66 সংখ্যা হিসাবে ব্যাখ্যা করে) does তাই আপনি যদি 13 অক্ষর পাবেন: C"2ìÙ½}ü¶d"। কিছু চর অরক্ষিত।

তবে লক্ষ্য করুন যে আমি 13 টি CHARS বলেছি, বাইটস নয়। যদি আমি অক্ষরগুলি অনুলিপি করে https://mothereff.in/byte-counter দিয়ে গণনা করি তবে এটিতে 13 টি অক্ষর এবং 18 বাইট লেখা রয়েছে। অক্ষরের অক্ষর এনকোডিংয়ের কারণে এটি ডিফল্টরূপে ইউটিএফ -8 8 এবং ইউটিএফ -8 কেবলমাত্র 2 ^ 7 টি পৃথক 1-বাইট চরিত্রের অনুমতি দেয়। প্রতিটি গৃহস্থালির কাজ cসঙ্গে ord(c) > 127আসলে দুটি পরার ব্যবহার সঞ্চিত পরিবর্তে এক বাইট।

এবং এখানে আসুন এর @ isaacg এর নতুন বৈশিষ্ট্যটি প্লে। তিনি ইউটিএফ -8 থেকে ডিফল্ট কোড-ফর্ম্যাটটি আইসো -8859-1 এ পরিবর্তন করেছেন। iso-8859 শুধুমাত্র 1 বাইট সহ 256 টি অক্ষর উপস্থাপন করতে পারে। সুতরাং এখন আপনি আসলে 13 বাইটিসে পৌঁছাতে পারেন। এটি কেবলমাত্র স্ট্যান্ডার্ড সংকলক দিয়েই সম্ভব , এটি অনলাইন সংকলকটিতে কাজ করে না।

প্রথমে এই স্ক্রিপ্টের ব্যবহার করে হেক্স-মান সংখ্যা রূপান্তর করতে চাই: jdm.[2.Hd"0"jQ256। এটি আপনাকে দেয় 12 32 ec d9 bd 07 7d fc b6 64। এরপরে হেক্স-এডিটর (যেমন লিনাক্সের জন্য হেক্সডিট) ব্যবহার করে আপনার নম্বর কোডগুলিতে এই নম্বরগুলি অনুলিপি করুন।

hexedit বিক্ষোভ

বিজ্ঞপ্তি:

  • স্পষ্টতই আপনি শেষেটি সরিয়ে ফেলুন ", যদি স্ট্রিংটি কোডের শেষ অংশ হয়।
  • এটি কেবল তখনই কাজ করে যদি আপনার সংখ্যার বেজ -২6। উপস্থাপনে কোনও 34(বাইট 22) না থাকে, কারণ এটি "চরটি এবং স্ট্রিংটি শেষ হয়ে যাবে। এস্কেপিং (যদিও 5C 22) কাজ করে।
  • বিটিডব্লিউ, আপনি যখন হেক্স-সম্পাদক দিয়ে একটি ফাইল খুলবেন তখন আপনি সম্ভবত বাইট 0Aবা 0d 0aশেষে দেখতে পাবেন , যা আপনি মুছে ফেলতে পারেন। এটি কেবল রেখার শেষ নির্দেশ করে।

আমাকে আমার মেশিনে অফলাইন দোভাষী রাখতে হবে, তবে এটি দুর্দান্ত, ধন্যবাদ! :)
বিটা ক্ষয়

1
স্ট্রিংটিতে নাল বাইট, মানও অন্তর্ভুক্ত করা যায় না 00। এছাড়াও \, বাইট 5c, এর পরে বাইটের উপর নির্ভর করে অন্য another `এর সাথে পালানোর প্রয়োজন হতে পারে বা নাও হতে পারে।
isaacg
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.