টেক্সট ইনভার্টার: টেক্সট রিভার্স এবং অক্ষর তাৎক্ষণিকভাবে উল্টানো
তাৎক্ষণিকভাবে যেকোনো স্ট্রিংকে রিভার্স করার জন্য বিনামূল্যের অনলাইন টেক্সট ইনভার্টার টুল। অক্ষর উল্টানো, পালিন্দ্রোম পরীক্ষা করুন এবং পিছনের দিকের টেক্সট তৈরি করুন। ইউনিকোড, ইমোজি এবং সমস্ত ভাষায় কাজ করে।
টেক্সট ইনভার্টার টুল
নিচে যেকোনো টেক্সট লিখুন বা পেস্ট করুন যাতে তাৎক্ষণিকভাবে অক্ষরের ক্রম বিপরীত হয়ে যায়। টাইপ করার সাথে সাথে ফলাফল দেখুন।
ডকুমেন্টেশন
একটি টেক্সট ইনভার্টার টুল কী?
একটি টেক্সট ইনভার্টার (যাকে রিভার্স টেক্সট টুল ও বলা হয়) আপনার টেক্সটের অক্ষরগুলির ক্রম উল্টে দেয়—"Hello World" কে "dlroW olleH" এ পরিবর্তন করে। আপনি এটি পালিন্দ্রোম পরীক্ষা থেকে শুরু করে ডিজাইন কাজের জন্য মিরর টেক্সট তৈরি করা পর্যন্ত বিভিন্ন ক্ষেত্রে অবাক করা সহ ব্যবহার করতে পারবেন।
টুলটি রিয়েল-টাইমে কাজ করে: আপনার টেক্সট পেস্ট বা টাইপ করুন, এবং তাৎক্ষণিকভাবে এটি উল্টে যাবে। টেক্সট ইনভার্শন আকর্ষণীয় কারণ এটি ধারণাগতভাবে খুবই সহজ (শুধুমাত্র বিপরীত দিকে পড়া), তবে এটি প্রোগ্রামিং, এনক্রিপশন এবং টেক্সট বিশ্লেষণে কিছু গুরুত্বপূর্ণ প্রয়োগ করে।
এই ব্যাপারটি হল—আমি দেখেছি ডেভেলপাররা ডিবাগিংয়ের জন্য, ডিজাইনাররা ভিজ্যুয়াল প্রভাবের জন্য, এবং শিক্ষকরা স্ট্রিং ম্যানিপুলেশন শেখাতে টেক্সট রিভার্সাল ব্যবহার করে। একটি সাধারণ পরিস্থিতি হল যখন আপনি পালিন্দ্রোম সনাক্তকরণ অ্যালগরিদমের সাথে কাজ করছেন এবং পরীক্ষার ক্ষেত্রগুলির সাথে আপনার যুক্তি দ্রুত যাচাই করতে চান।
টেক্সট ইনভার্টার কীভাবে ব্যবহার করবেন
এই রিভার্স টেক্সট টুল ব্যবহার করতে তিনটি সহজ ধাপ রয়েছে:
- আপনার টেক্সট লিখুন ইনপুট ক্ষেত্রে—সরাসরি টাইপ করুন অথবা ক্লিপবোর্ড থেকে পেস্ট করুন
- জাদুর দৃশ্য দেখুন যেমন ইনভার্টেড টেক্সট তৎক্ষণাৎ নিচে প্রদর্শিত হয় (কোনো ক্লিক করার প্রয়োজন নেই)
- ফলাফল কপি করুন কপি বাটনটি ব্যবহার করে একটি ক্লিকে
টুলটি রিয়েল-টাইমে সব কিছু প্রক্রিয়া করে, যার অর্থ আপনি পরীক্ষা করতে পারেন এবং টাইপ করার সাথে সাথে ফলাফল দেখতে পারেন। যেকোনো অক্ষর সেটের সাথে কাজ করে—ইংরেজি, ইমোজি, বিশেষ চিহ্ন, এমনকি জাপানি বা আরবি ভাষার ইউনিকোড অক্ষরও।
টেক্সট উল্টানোর সূত্র এবং অ্যালগরিদম
এখানে কীভাবে টেক্সট ইনভার্শন গাণিতিকভাবে কাজ করে। দৈর্ঘ্যের স্ট্রিংয়ের জন্য যার অক্ষর , উল্টানো স্ট্রিং হবে:
ব্যবহারিকভাবে, প্রোগ্রামাররা এটি তিনটি মূল পদ্ধতিতে বাস্তবায়ন করে:
- অ্যারে উল্টানো: স্ট্রিংটিকে অক্ষরে ভাগ করুন, অ্যারেটি উল্টান, তারপর আবার যোগ করুন। সবচেয়ে সরল এবং পঠনীয়।
- দ্বি-পয়েন্টার কৌশল: দুই প্রান্ত থেকে শুরু করে, অক্ষরগুলি মাঝের দিকে যাওয়ার সময় বিনিময় করুন। মেমরি-দক্ষ যখন আপনি সরাসরি পরিবর্তন করতে পারেন।
- স্ট্যাক-ভিত্তিক পদ্ধতি: অক্ষরগুলিকে একটি স্ট্যাকে (LIFO কাঠামো) পুশ করুন, তারপর সেগুলিকে পপ করুন। এটি স্বাভাবিকভাবে ক্রম উল্টায়—এবং এটি ডেটা কাঠামোর জন্য একটি দুর্দান্ত শিক্ষামূলক উদাহরণ।
কর্মক্ষমতার বৈশিষ্ট্য: টেক্সট ইনভার্শন সময় জটিলতায় চলে (রৈখিক) কারণ প্রতিটি অক্ষর সঠিক একবার প্রক্রিয়া করা হয়। স্পেস জটিলতাও কারণ আপনাকে উল্টানো স্ট্রিংটি সংরক্ষণ করতে হবে। বেশিরভাগ ব্যবহারিক ক্ষেত্রে কয়েক মেগাবাইটের নিচে, কর্মক্ষমতা তাৎক্ষণিক।
একটি বিষয় লক্ষ্য করার যোগ্য—যদি আপনি বিশাল টেক্সট ফাইল (যেমন লগ বা ডেটাসেট) উল্টাচ্ছেন, তাহলে এক সাথে সব কিছু মেমরিতে লোড করা এড়াতে স্ট্রিমিং পদ্ধতিগুলি বিবেচনা করা উচিত।
ধাপে-ধাপে টেক্সট রিভার্সাল প্রক্রিয়া
আসুন আপনাকে ঠিক ভাবে বুঝিয়ে দেই কীভাবে রিভার্সাল অ্যালগরিদম আপনার টেক্সটটি প্রক্রিয়া করে:
- একটি খালি ফলাফল কন্টেইনার দিয়ে শুরু করুন
- ইনপুটের শেষ অক্ষর থেকে পড়ুন, পিছনের দিকে এগিয়ে
- প্রত্যেক অক্ষরটিকে ফলাফলে যোগ করুন
- প্রথম অক্ষরে পৌঁছে গেলে থেমে যান
- সম্পূর্ণ রিভার্সড স্ট্রিংটি ফেরত দিন
ব্যবহারিক উদাহরণ "Hello, World!" এর সাথে:
1ইনপুট: "Hello, World!"
2ধাপ ১: খালি ফলাফল শুরু: ""
3ধাপ ২: শেষ অক্ষর "!" নিন → ফলাফল = "!"
4ধাপ ৩: "d" নিন → ফলাফল = "!d"
5ধাপ ৪: "l" নিন → ফলাফল = "!dl"
6ধাপ ৫: প্রত্যেক অক্ষরের জন্য চালিয়ে যান...
7চূড়ান্ত আউটপুট: "!dlroW ,olleH"
8অ্যালগরিদমটি সমস্ত অক্ষরকে একইভাবে বিবেচনা করে—যেটি অক্ষর, সংখ্যা, বিরাম চিহ্ন, স্পেস, বা ইমোজি হোক। সবকিছুই রিভার্সড আউটপুটে সংরক্ষিত হয়। এই ধারাবাহিক পরিচালনাই কারণ এটি বিভিন্ন ভাষা এবং অক্ষর সেটের মধ্যে নির্ভরযোগ্যভাবে কাজ করে।
আপনার জানা উচিত কিছু সীমা অবস্থা
টেক্সট রিভার্সের সাথে কাজ করার সময়, আপনি কয়েকটি আকর্ষণীয় সীমা অবস্থা পাবেন:
খালি স্ট্রিংস: খালি স্ট্রিংকে রিভার্স করলে আপনি পাবেন... একটি খালি স্ট্রিং। বুঝেছেন, তাই না? রিভার্স করার মতো কিছু নেই।
একটি অক্ষর: "A" কে রিভার্স করলে আপনি পাবেন "A"। এটি নিজেই তার নিজের রিভার্স, যেমন সমস্ত একক অক্ষর।
ইউনিকোড এবং ইমোজি: এখানেই জিনিসগুলো আকর্ষণীয় হয়ে ওঠে। অ্যালগরিদমটি ইমোজি, জাপানি অক্ষর, আরবি লিপি এবং অন্যান্য নন-লাটিন টেক্সটসহ ইউনিকোডকে সঠিকভাবে পরিচালনা করে। "こんにちは 🌍" দিয়ে পরীক্ষা করে দেখুন এবং আপনি দেখবেন এটি সঠিকভাবে কাজ করে।
হোয়াইটস্পেস এবং বিশেষ অক্ষর: স্পেস, ট্যাব, নতুন লাইন, বিরাম চিহ্ন—সবকিছুই যথাযথভাবে রিভার্স হয়। "Hello World" (৩টি স্পেসের সাথে) হয়ে যায় "dlroW olleH" (এখনও ৩টি স্পেস)।
খুব দীর্ঘ টেক্সট: অত্যন্ত বড় ইনপুটের জন্য (মেগাবাইটের পরিমাণ টেক্সট ভাবুন), আপনি উপলব্ধ মেমোরি দ্বারা সীমাবদ্ধ। বেশিরভাগ আধুনিক সিস্টেম কয়েক মেগাবাইট পর্যন্ত সহজে পরিচালনা করে, কিন্তু যদি আপনি গিগাবাইট আকারের ফাইল প্রসেস করছেন, তাহলে আপনার সম্পূর্ণ মেমোরিতে লোড করার পরিবর্তে একটি স্ট্রিমিং সমাধান প্রয়োজন হবে।
একটি জিনিস যা আমি লক্ষ্য করেছি: কম্বাইনিং অক্ষর এবং গ্রাফেম ক্লাস্টার কখনও কখনও অপ্রত্যাশিতভাবে আচরণ করতে পারে। উদাহরণস্বরূপ, ত্বকের টোন পরিবর্তনকারী ইমোজিগুলি কৌশলগতভাবে একাধিক ইউনিকোড কোড পয়েন্ট। বেশিরভাগ বাস্তবায়ন এটিকে সঠিকভাবে পরিচালনা করে, কিন্তু আপনি যদি জটিল ইউনিকোডের সাথে কাজ করছেন তবে আপনার নির্দিষ্ট ব্যবহার ক্ষেত্রের সাথে পরীক্ষা করা উচিত।
টেক্সট রিভার্সালের বাস্তব ব্যবহার ক্ষেত্রসমূহ
আপনি হয়তো অবাক হবেন যে টেক্সট ইনভার্শন কতবার ব্যবহৃত হয়। এখানে কিছু পরিস্থিতি রয়েছে যেখানে আমি এটি ব্যবহৃত দেখেছি:
প্রোগ্রামিং এবং ডেভেলপমেন্ট
পালিন্দ্রোম পরীক্ষা: যখন আপনার দরকার হয় যে একটি শব্দ সম্মুখ এবং পশ্চাৎ একই রকম পড়া যায় কিনা, তখন আপনি এটিকে উল্টে দেখেন এবং তুলনা করেন। ধরুন "racecar" → "racecar" (মিলে যায় = পালিন্দ্রোম)।
স্ট্রিং অ্যালগরিদম অনুশীলন: টেক্সট রিভার্সাল একটি ক্লাসিক কোডিং ইন্টারভিউ সমস্যা যা আপনার স্ট্রিং ম্যানিপুলেশন এবং মৌলিক ডেটা স্ট্রাকচার বোঝার পরীক্ষা করে।
স্ট্যাক বাস্তবায়ন ডেমো: টেক্সট রিভার্সাল LIFO (লাস্ট-ইন-ফার্স্ট-আউট) আচরণ শেখানোর জন্য একটি নিখুঁত উদাহরণ যেহেতু একটি স্ট্যাক স্বাভাবিকভাবে অর্ডার উল্টে দেয়।
ক্রিপ্টোগ্রাফি এবং নিরাপত্তা
মৌলিক এনকোডিং: নিজে নিজে নিরাপদ নয়, তবে টেক্সট রিভার্সাল কখনও কখনও বহু-ধাপের এনকোডিং স্কিমের একটি স্তর হিসাবে ব্যবহৃত হয়। এটি আসল এনক্রিপশন অপেক্ষা বেশি অস্পষ্টতার দিকে লক্ষ্য করে।
চ্যালেঞ্জ-প্রতিক্রিয়া সিস্টেম: কিছু প্রমাণীকরণ সিস্টেম তাদের যাচাইকরণ প্রক্রিয়ার অংশ হিসাবে উল্টে দেওয়া স্ট্রিং ব্যবহার করে।
সৃজনশীল এবং শিক্ষামূলক প্রয়োগ
শব্দ খেলা এবং পাজল: চ্যালেঞ্জ তৈরি করুন যেখানে খেলোয়াড়রা উল্টে দেওয়া শব্দ সনাক্ত করে বা বার্তা ডিকোড করে। এস্কেপ রুম এবং পাজল অ্যাপে জনপ্রিয়।
মিরর লেখা প্রভাব: ডিজাইনাররা প্রতিফলন অন্তর্ভুক্ত করে লোগো, শিল্পীয় প্রভাব বা দৃশ্যগত ডিজাইনের জন্য উল্টে দেওয়া টেক্সট ব্যবহার করে।
শিক্ষা সরঞ্জাম: যখন শুরুর ব্যবহারকারীদের স্ট্রিং ম্যানিপুলেশন ব্যাখ্যা করা হয়, টেক্সট রিভার্সাল পর্যাপ্ত সহজ যাতে বোঝা যায় কিন্তু পুনরাবৃত্তি এবং অ্যারে হ্যান্ডলিংয়ের গুরুত্বপূর্ণ ধারণাগুলি প্রদর্শন করা যায়।
টেক্সট বিশ্লেষণ
ভাষাতাত্ত্বিক গবেষণা: ভাষার নমুনা অধ্যয়নকারী গবেষকরা কখনও কখনও টেক্সটকে সম্মুখ এবং পশ্চাৎ বিশ্লেষণ করে গঠনগত বৈশিষ্ট্য সনাক্ত করে।
প্যাটার্ন সনাক্তকরণ: টেক্সটে সমতল যাচাই করা বা বড় ডেটাসেটে অন্তর্নিহিত উল্টে দেওয়া ক্রমগুলি খুঁজে বের করা।
টেক্সট রিভার্সালের বিভিন্ন প্রকার
অক্ষর-বাই-অক্ষর ইনভার্শন আপনার একমাত্র বিকল্প নয়। আপনি যা অর্জন করতে চাচ্ছেন তার উপর নির্ভর করে, এই বিকল্পগুলি আরও ভাল কাজ করতে পারে:
শব্দ রিভার্সাল: প্রত্যেক শব্দকে অক্ষত রেখে তাদের ক্রম উল্টে দিন। ভাষা শেখা এবং কিছু টেক্সট প্রসেসিং কাজে দরকারী।
- উদাহরণ: "Hello World" → "World Hello"
বাক্য রিভার্সাল: বাক্যের ক্রম উল্টে দিন যেখানে প্রত্যেক বাক্যের মধ্যে শব্দ ক্রম অপরিবর্তিত থাকে।
- উদাহরণ: "Hello World. How are you?" → "How are you? Hello World."
নির্বাচিত রিভার্সাল: আপনার মাপকাঠিতে শুধুমাত্র নির্দিষ্ট অংশ উল্টে দিন—হয়তো শুধুমাত্র স্বরবর্ণ, বা ৫ অক্ষরের বেশি দীর্ঘ শব্দ। শব্দ পাজল বা প্যাটার্ন বিশ্লেষণের জন্য দুর্দান্ত।
- উদাহরণ: "Hello World" এ শুধুমাত্র স্বরবর্ণ উল্টে দিলে → "Hollo Werld"
ধ্বনিগত রিভার্সাল: ভাষাতাত্ত্বিক গবেষণায় ব্যবহৃত, এটি অক্ষরের পরিবর্তে ধ্বনিগুলি উল্টে দেয়। প্রথমে ধ্বনিগত প্রতিলিপি প্রয়োজন।
বিট-স্তরের রিভার্সাল: অক্ষরের বাইনারি প্রতিনিধিত্বকে উল্টে দেয়। আপনি এটি কিছু ক্রিপ্টোগ্রাফিক অপারেশন এবং নিম্ন-স্তরের ডেটা ম্যানিপুলেশনে দেখতে পাবেন।
টেক্সট রিভার্সালের ইতিহাস
টেক্সট রিভার্সাল আপনি যা ভাবতে পারেন তার চেয়ে অনেক আগে থেকেই বিদ্যমান—প্রাচীন লেখার সিস্টেম থেকে আধুনিক কম্পিউটিংয়ের মধ্যে।
প্রাচীন লেখা এবং মিরর টেক্সট
কম্পিউটার আসার অনেক আগে থেকেই প্রাচীন সভ্যতাগুলি দিকনির্দেশমূলক লেখার সাথে পরীক্ষা করে দেখেছে। গ্রীক এবং মিশরীয়রা কখনও কখনও "বৌস্ট্রোফেডন" শৈলী ব্যবহার করত, যেখানে লাইনগুলি পালটে পালটে দিক পরিবর্তন করত—বাম থেকে ডান, তারপর ডান থেকে বাম, যেন একটি ষাঁড় মাঠ চাষ করছে (যা "বৌস্ট্রোফেডন" অর্থ করে)।
লিওনার্দো দা ভিঞ্চি তার নোটবুকগুলিকে মিরর লেখায় পূরণ করেছিলেন, যেখানে টেক্সটটি বিপরীত দিকে দেখায়। ইতিহাসবিদরা বিতর্ক করেন যে এটি গোপনীয়তার জন্য ছিল, কিংবা তিনি বাম হাতি ছিলেন এবং এটি বেশি আরামদায়ক ছিল, অথবা সরল ভাবে কালি ছড়ানো রোধ করার জন্য। যাই হোক, তার নোটবুকগুলি প্রমাণ করে যে টেক্সট রিভার্সাল শতাব্দী ধরে একটি এনকোডিং কৌশল হিসাবে ব্যবহৃত হয়েছে।
কম্পিউটিংয়ের যুগ
১৯৫০-৬০ এর দশকে কম্পিউটার আসার সাথে, স্ট্রিং ম্যানিপুলেশন একটি মৌলিক প্রোগ্রামিং অনুশীলন হয়ে উঠল। টেক্সট রিভার্সাল সেই ক্লাসিক সমস্যাগুলির মধ্যে ছিল যা প্রতিটি প্রোগ্রামার শিখত, সাজানো এবং অনুসন্ধানের পাশাপাশি।
যা এটিকে বিশেষভাবে আকর্ষণীয় করেছিল: স্ট্যাক ডেটা স্ট্রাকচারের বিকাশ স্বাভাবিকভাবে টেক্সট রিভার্সালের সাথে যুক্ত ছিল। একটি স্ট্যাকের LIFO (লাস্ট-ইন-ফার্স্ট-আউট) আচরণ স্বয়ংক্রিয়ভাবে অর্ডার উল্টে দেয়—"HELLO" অক্ষর দ্বারা অক্ষর স্ট্যাকে ঠেলুন, তাদের বের করে নিন, এবং আপনি পাবেন "OLLEH"। এই সুন্দর সম্পর্কটি টেক্সট রিভার্সালকে ডেটা স্ট্রাকচার শেখানোর জন্য একটি গুরুত্বপূর্ণ উদাহরণ বানিয়ে তুলেছিল।
আধুনিক প্রয়োগ
আজ, আপনি টেক্সট রিভার্সাল অ্যালগরিদমগুলিকে পেছনের পর্দার আড়ালে পাবেন:
- কম্পাইলার এবং পার্সার: সিনট্যাক্স বিশ্লেষণ এবং অভিব্যক্তি মূল্যায়নে ব্যবহৃত
- স্ট্রিং মিলের অ্যালগরিদম: বয়ের-মুর অ্যালগরিদমের মতো যা প্যাটার্নগুলিকে ডান থেকে বাম পর্যন্ত প্রক্রিয়া করে
- ক্রিপ্টোগ্রাফি: আরো জটিল এনক্রিপশন স্কিমের নির্মাণ ব্লক হিসাবে
- প্রাকৃতিক ভাষা প্রক্রিয়াকরণ: ভাষাগত প্যাটার্ন বিশ্লেষণ, পালিন্দ্রোম সনাক্তকরণ, এবং টেক্সট কাঠামো অধ্যয়ন
অ্যালগরিদমের সরলতা (এটি প্রথমে শেখা হয়) এবং এর ব্যবহারিক ব্যবহারিতা নিশ্চিত করে যে এটি তার প্রথম বাস্তবায়নের দশক পর পর্যন্ত প্রাসঙ্গিক থাকবে।
কোড উদাহরণ: বিভিন্ন ভাষায় টেক্সট বিপরীত করা
এখানে জনপ্রিয় প্রোগ্রামিং ভাষাগুলিতে টেক্সট বিপরীত করার পদ্ধতি দেওয়া হল। প্রতিটি উদাহরণ মূল অ্যালগরিদম এবং ব্যবহারিক প্রয়োগ দেখায়:
1' টেক্সট ইনভার্শনের জন্য Excel VBA ফাংশন
2Function InvertText(inputText As String) As String
3 Dim i As Integer
4 Dim result As String
5
6 result = ""
7 For i = Len(inputText) To 1 Step -1
8 result = result & Mid(inputText, i, 1)
9 Next i
10
11 InvertText = result
12End Function
13' সেলে ব্যবহার:
14' =InvertText("Hello, World!")
151def invert_text(input_text):
2 """স্ট্রিংয়ের অক্ষরগুলির ক্রম বিপরীত করুন।"""
3 return input_text[::-1]
4
5## উদাহরণ ব্যবহার:
6
7python original_text = "হ্যালো, বিশ্ব!" inverted_text = invert_text(original_text) print(f"মূল: {original_text}") print(f"উল্টানো: {inverted_text}")
ইউনিকোড অক্ষরগুলি হ্যান্ডেল করা
unicode_text = "こんにちは世界! 🌍" inverted_unicode = invert_text(unicode_text) print(f"মূল ইউনিকোড: {unicode_text}") print(f"উল্টানো ইউনিকোড: {inverted_unicode}")
1
2javascript function invertText(inputText) { return inputText.split('').reverse().join(''); }
// উদাহরণ ব্যবহার:
const originalText = "হ্যালো, বিশ্ব!";
const invertedText = invertText(originalText);
console.log(মূল: ${originalText});
console.log(উল্টানো: ${invertedText});
// খালি স্ট্রিংগুলি হ্যান্ডেল করা
console.log(খালি স্ট্রিং উল্টানো: "${invertText("")}");
// ইউনিকোড হ্যান্ডেল করা
const unicodeText = "こんにちは世界! 🌍";
console.log(মূল ইউনিকোড: ${unicodeText});
console.log(উল্টানো ইউনিকোড: ${invertText(unicodeText)});
1
2java public class TextInverter { public static String invertText(String inputText) { return new StringBuilder(inputText).reverse().toString(); }
public static void main(String[] args) {
String originalText = "হ্যালো, বিশ্ব!";
String invertedText = invertText(originalText);
System.out.println("মূল: " + originalText);
System.out.println("উল্টানো: " + invertedText);
// ইউনিকোড অক্ষরগুলি হ্যান্ডেল করা
String unicodeText = "こんにちは世界! 🌍";
String invertedUnicode = invertText(unicodeText);
System.out.println("মূল ইউনিকোড: " + unicodeText);
System.out.println("উল্টানো ইউনিকোড: " + invertedUnicode);
}
}
1
2r invert_text <- function(input_text) {
অক্ষর ভেক্টরে রূপান্তর, উল্টে দিন এবং সংযুক্ত করুন
paste(rev(strsplit(input_text, "")[[1]]), collapse = "") }
উদাহরণ ব্যবহার
original_text <- "হ্যালো, বিশ্ব!" inverted_text <- invert_text(original_text) cat("মূল:", original_text, "\n") cat("উল্টানো:", inverted_text, "\n")
1
2matlab function invertedText = invertText(inputText) % একটি স্ট্রিংয়ের অক্ষরগুলির ক্রম উল্টে দেওয়ার জন্য ফাংশন invertedText = inputText(end:-1:1); end
% উদাহরণ ব্যবহার originalText = 'হ্যালো, বিশ্ব!'; invertedText = invertText(originalText); fprintf('মূল: %s\n', originalText); fprintf('উল্টানো: %s\n', invertedText);
1
2cpp
#include
std::string invertText(const std::string& inputText) { std::string result = inputText; std::reverse(result.begin(), result.end()); return result; }
int main() { std::string originalText = "হ্যালো, বিশ্ব!"; std::string invertedText = invertText(originalText);
std::cout << "মূল: " << originalText << std::endl;
std::cout << "উল্টানো: " << invertedText << std::endl;
// খালি স্ট্রিংগুলি হ্যান্ডেল করা
std::cout << "খালি স্ট্রিং উল্টানো: \"" << invertText("") << "\"" << std::endl;
return 0;
}
1
2ruby def invert_text(input_text) input_text.reverse end
উদাহরণ ব্যবহার
original_text = "হ্যালো, বিশ্ব!" inverted_text = invert_text(original_text) puts "মূল: #{original_text}" puts "উল্টানো: #{inverted_text}"
ইউনিকোড অক্ষরগুলি হ্যান্ডেল করা
unicode_text = "こんにちは世界! 🌍" inverted_unicode = invert_text(unicode_text) puts "মূল ইউনিকোড: #{unicode_text}" puts "উল্টানো ইউনিকোড: #{inverted_unicode}"
1
2php
1
2rust fn invert_text(input_text: &str) -> String { input_text.chars().rev().collect() }
fn main() { let original_text = "হ্যালো, বিশ্ব!"; let inverted_text = invert_text(original_text);
println!("মূল: {}", original_text);
println!("উল্টানো: {}", inverted_text);
// ইউনিকোড অক্ষরগুলি হ্যান্ডেল করা
let unicode_text = "こんにちは世界! 🌍";
let inverted_unicode = invert_text(unicode_text);
println!("মূল ইউনিকোড: {}", unicode_text);
println!("উল্টানো ইউনিকোড: {}", inverted_unicode);
}
1
2csharp using System;
class TextInverter { public static string InvertText(string inputText) { char[] charArray = inputText.ToCharArray(); Array.Reverse(charArray); return new string(charArray); }
static void Main()
{
string originalText = "হ্যালো, বিশ্ব!";
string invertedText = InvertText(originalText);
Console.WriteLine($"মূল: {originalText}");
Console.WriteLine($"উল্টানো: {invertedText}");
// খালি স্ট্রিংগুলি হ্যান্ডেল করা
Console.WriteLine($"খালি স্ট্রিং উল্টানো: \"{InvertText("")}\"");
// ইউনিকোড অক্ষরগুলি হ্যান্ডেল করা
string unicodeText = "こんにちは世界! 🌍";
string invertedUnicode = InvertText(unicodeText);
Console.WriteLine($"মূল ইউনিকোড: {unicodeText}");
Console.WriteLine($"উল্টানো ইউনিকোড: {invertedUnicode}");
}
}
1
2go package main
import ( "fmt" )
func invertText(inputText string) string { runes := []rune(inputText) for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 { runes[i], runes[j] = runes[j], runes[i] } return string(runes) }
func main() { originalText := "হ্যালো, বিশ্ব!" invertedText := invertText(originalText)
fmt.Printf("মূল: %s\n", originalText)
fmt.Printf("উল্টানো: %s\n", invertedText)
// ইউনিকোড অক্ষরগুলি হ্যান্ডেল করা
unicodeText := "こんにちは世界! 🌍"
invertedUnicode := invertText(unicodeText)
fmt.Printf("মূল ইউনিকোড: %s\n", unicodeText)
fmt.Printf("উল্টানো ইউনিকোড: %s\n", invertedUnicode)
}
1
2swift func invertText(_ inputText: String) -> String { return String(inputText.reversed()) }
// উদাহরণ ব্যবহার let originalText = "হ্যালো, বিশ্ব!" let invertedText = invertText(originalText)
print("মূল: (originalText)") print("উল্টানো: (invertedText)")
// ইউনিকোড অক্ষরগুলি হ্যান্ডেল করা let unicodeText = "こんにちは世界! 🌍" let invertedUnicode = invertText(unicodeText) print("মূল ইউনিকোড: (unicodeText)") print("উল্টানো ইউনিকোড: (invertedUnicode)")
## পারফরম্যান্স অপ্টিমাইজেশন টিপস
যদি আপনি প্রোডাকশন কোডে টেক্সট রিভার্সাল নিয়ে কাজ করছেন, তাহলে এখানে কিছু পারফরম্যান্স ফ্যাক্টর রয়েছে যা বিবেচনা করার যোগ্য:
**মেমোরি ব্যবহার**: একটি রিভার্সড কপি তৈরি করতে আপনার ইনপুট সাইজের সমান মেমোরি প্রয়োজন। ছোট থেকে মাঝারি আকারের স্ট্রিংস (১ এমবি এর নিচে), এটি তুচ্ছ। বড় টেক্সটের জন্য, আপনি সাময়িকভাবে মেমোরি ব্যবহার দ্বিগুণ করছেন।
**ইন-প্লেস রিভার্সাল**: C, C++, এবং Rust এর মতো ভাষাগুলি আপনাকে একটি কপি তৈরি না করেই সরাসরি মেমোরিতে অক্ষর অ্যারে রিভার্স করতে দেয়। এটি মেমোরি ব্যবহার অর্ধেক করে কমায়, কিন্তু শুধুমাত্র পরিবর্তনযোগ্য স্ট্রিংস সাথে কাজ করে। অনেক ভাষা (Python, JavaScript, Java) অপরিবর্তনীয় স্ট্রিংস ব্যবহার করে, তাই আপনাকে একটি নতুন তৈরি করতে হবে।
**ইউনিকোড হ্যান্ডলিং**: এখানেই জিনিসগুলি জটিল হয়ে যায়। মাল্টি-বাইট ইউনিকোড অক্ষরগুলিকে সঠিকভাবে হ্যান্ডল করতে হবে অন্যথায় এনকোডিং ক্ষতিগ্রস্ত হবে। বেশিরভাগ আধুনিক ভাষার স্ট্যান্ডার্ড লাইব্রেরিগুলি এটি সঠিকভাবে হ্যান্ডল করে, কিন্তু যদি আপনি নিম্ন-স্তরের কোড লিখছেন বা সরাসরি বাইট অ্যারের সাথে কাজ করছেন, তাহলে সাবধান থাকুন। এমোজি এবং নন-ল্যাটিন লিপিগুলির সাথে পরীক্ষা করুন।
**বড় ফাইলগুলির জন্য স্ট্রিমিং**: যদি আপনি গিগাবাইট আকারের লগ ফাইল বা ডেটাসেট রিভার্স করছেন, তাহলে সবকিছু মেমোরিতে লোড করবেন না। একটি স্ট্রিমিং পদ্ধতি ব্যবহার করুন—শেষ থেকে চাংক পড়ুন, যেমন যেমন যাচ্ছে লিখে ফেলুন। [ইউনিকোড টেকনিক্যাল স্ট্যান্ডার্ড #১৮](https://unicode.org/reports/tr18/) অনুসারে, গ্রাফিম ক্লাস্টার হ্যান্ডলিংয়ের জন্য সঠিক টেক্সট সীমা সনাক্তকরণ বিশেষ মনোযোগ প্রয়োজন।
**সমান্তরাল প্রক্রিয়াকরণ**: অত্যন্ত দীর্ঘ স্ট্রিংসের জন্য, আপনি তত্ত্বগতভাবে রিভার্সাল সমান্তরাল করতে পারেন (চাংকে বিভাজন, প্রত্যেকটি রিভার্স করুন, সংযুক্ত করুন)। ব্যবহারিকভাবে, অতিরিক্ত সংস্থান সাধারণত এর মূল্য যোগ্য নয় যদি না আপনি বিশাল ডেটাসেট এবং কম্পিউট সংস্থান সাথে কাজ করছেন।
## প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী
### আমি কীভাবে অনলাইনে টেক্সট রিভার্স করব?
সহজে আপনার টেক্সটটি উপরের ইনপুট ক্ষেত্রে পেস্ট বা টাইপ করুন। টুলটি স্বয়ংক্রিয়ভাবে রিয়েল-টাইমে এটি রিভার্স করে—কোনো বোতাম ক্লিক করার প্রয়োজন নেই। একটি ক্লিকে ফলাফল কপি করুন।
### টেক্সট রিভার্স এবং শব্দ রিভার্সের মধ্যে পার্থক্য কী?
টেক্সট রিভার্সাল (অক্ষর রিভার্সাল) পৃথক অক্ষরগুলিকে উল্টায়: "Hello World" → "dlroW olleH"। শব্দ রিভার্সাল প্রত্যেক শব্দকে অক্ষত রেখে তাদের ক্রম উল্টায়: "Hello World" → "World Hello"। এই টুলটি অক্ষর রিভার্সাল করে।
### এই টুলটি কি ইমোজি এবং ইউনিকোড অক্ষরগুলি পরিচালনা করতে পারে?
হ্যাঁ। টুলটি সমস্ত ইউনিকোড অক্ষর, ইমোজি, চীনা/জাপানি/কোরিয়ান টেক্সট, আরবি লিপি, বিশেষ প্রতীক এবং সংযুক্ত অক্ষরগুলি সঠিকভাবে পরিচালনা করে। "こんにちは 🌍" দিয়ে নিজেই দেখে নিন।
### রিভার্সড টেক্সট কি মিরর লেখার সমান?
তারা সম্পর্কিত কিন্তু সমান নয়। অক্ষর রিভার্সাল (যা এই টুলটি করে) শুধুমাত্র অক্ষরের ক্রম উল্টায়। মিরর লেখা অক্ষরগুলিকে অনুভূমিকভাবে উল্টায় যাতে তারা মিরর প্রতিফলনের মতো দেখায়। মিরর লেখা পড়তে, আপনার একটি আসল মিরর বা অনুভূমিক ফ্লিপ প্রয়োজন।
### আমি কেন টেক্সট রিভার্স করব?
সাধারণ ব্যবহার রয়েছে: পালিন্দ্রোম পরীক্ষা, পাজলের জন্য সরল এনকোডিং তৈরি, প্রোগ্রামিংয়ের জন্য পরীক্ষা তথ্য তৈরি, কলাত্মক টেক্সট প্রভাব, স্ট্রিং অ্যালগরিদম শিক্ষা এবং টেক্সট প্রসেসিং কোড ডিবাগিং।
### দ্বিতীয়বার টেক্সট রিভার্স করলে কি আমি মূল টেক্সটটি পেয়ে যাব?
হ্যাঁ। টেক্সট রিভার্সাল নিজের বিপরীত অপারেশন। আপনি যদি "Hello" কে "olleH" তে রিভার্স করেন, তারপর "olleH" কে রিভার্স করলে আবার "Hello" পাবেন। গাণিতিকভাবে, এটিকে ইনভোলুশন বলা হয়।
### টেক্সট রিভার্সাল কতটা দ্রুত?
খুব দ্রুত—রৈখিক সময় জটিলতা O(n) যেখানে n হল টেক্সটের দৈর্ঘ্য। সাধারণ টেক্সটের জন্য (কয়েক অনুচ্ছেদ), প্রসেসিং তাৎক্ষণিক। বহু দীর্ঘ টেক্সটের জন্যও (হাজার হাজার শব্দ), আধুনিক কম্পিউটার এটি মিলিসেকেন্ডে পরিচালনা করে।
### আমি কি Excel বা Google Sheets-এ টেক্সট রিভার্স করতে পারি?
হ্যাঁ, কিন্তু আপনার একটি কাস্টম ফাংশন প্রয়োজন কারণ কোনো বিল্ট-ইন রিভার্স ফাংশন নেই। Excel VBA এবং অন্যান্য প্রোগ্রামিং বাস্তবায়নের জন্য উপরের কোড উদাহরণ দেখুন।
## কারিগরি রেফারেন্স
1. নুথ, ডি. ই. (১৯৯৭)। *কম্পিউটার প্রোগ্রামিংয়ের শিল্প, খণ্ড ১: মৌলিক অ্যালগরিদম* (৩য় সংস্করণ)। অ্যাডিসন-ওয়েসলি প্রফেশনাল।
2. সেজউইক, আর., & ওয়েন, কে. (২০১১)। *অ্যালগরিদম* (৪র্থ সংস্করণ)। অ্যাডিসন-ওয়েসলি প্রফেশনাল।
3. ইউনিকোড কনসোর্টিয়াম। *ইউনিকোড কারিগরি মান #১৮: ইউনিকোড রেগুলার এক্সপ্রেশন*। পাওয়া যায়: https://unicode.org/reports/tr18/
4. MDN ওয়েব ডকস। *স্ট্রিং পদ্ধতি রেফারেন্স*। মোজিলা ডেভেলপার নেটওয়ার্ক। পাওয়া যায়: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String
5. কর্মেন, টি. এইচ., লেইসারসন, সি. ই., রিভেস্ট, আর. এল., & স্টাইন, সি. (২০০৯)। *অ্যালগরিদমে প্রবেশ* (৩য় সংস্করণ)। এমআইটি প্রেস।