معکوسکننده متن: برگرداندن متن و واژگونه کردن نویسهها در لحظه
ابزار آنلاین رایگان معکوسکننده متن برای برگرداندن هر رشتهای در لحظه. واژگونه کردن نویسهها، بررسی پالیندرومها و ایجاد متن معکوس. کار با یونیکد، ایموجیها و تمام زبانها.
ابزار معکوسسازی متن
هر متنی را در زیر وارد یا جایگذاری کنید تا به طور فوری ترتیب حروف آن را معکوس کنید. نتایج را در زمان واقعی هنگام تایپ مشاهده کنید.
مستندات
معکوسکنندهٔ متن چیست؟
معکوسکنندهٔ متن ابزاری است که ترتیب نویسهها را در یک قطعه متن برعکس میکند. با وارد کردن «hello»، نتیجه «olleh» میشود. این ابزار با نوشتن همهٔ نویسههای ورودی از آخر به اول کار میکند. از آن برای ساختن متن معکوس، بررسی پالیندروم بودن یک واژه یا مطالعهٔ نحوهٔ معکوسسازی رشتهها در برنامهنویسی استفاده میشود.
چگونه از معکوسکنندهٔ متن استفاده کنیم؟
- متن را در کادر ورودی بنویسید یا جایگذاری کنید.
- بهمحض توقف تایپ، متن معکوسشده در پایین ظاهر میشود. فشردن دکمه لازم نیست.
- برای کپی کردن نتیجه، دکمهٔ کپی را فشار دهید.
دکمهٔ بازنشانی هم ورودی و هم نتیجه را پاک میکند. ابزار حداکثر ۱۰٬۰۰۰ نویسه را میپذیرد؛ ورودی طولانیتر پیام خطایی نشان میدهد که میخواهد متن کوتاهتر شود. شمارش بر اساس نویسههای قابل مشاهده است، بنابراین یک ایموجی، با اینکه رایانه آن را بهصورت چند بخش ذخیره میکند، یک نویسه محسوب میشود.
فرمول معکوسسازی متن
برای رشتهای با طول n که از نویسههای تشکیل شده است، رشتهٔ معکوس چنین است:
به زبان ساده، آخرین نویسه اول میشود، نویسهٔ یکیماندهبهآخر دوم میشود و این روند ادامه پیدا میکند تا نخستین نویسه آخرین نویسه شود.
الگوریتم چگونه مرحلهبهمرحله کار میکند؟
- با یک نتیجهٔ خالی شروع کنید.
- آخرین نویسهٔ ورودی را بردارید و به نتیجه اضافه کنید.
- نویسهٔ یکیماندهبهآخر را بردارید و آن را اضافه کنید.
- این کار را تا اضافه شدن همهٔ نویسهها، به ترتیب معکوس، تکرار کنید.
بیشتر ابزارهای معکوسسازی با نویسههای منفرد رایانه کار میکنند. اما این ابزار پیش از معکوسسازی، هر ایموجی، پرچم و حرف دارای اَکسان را در یک واحد قرار میدهد و از روشی به نام قطعهبندی خوشههای نویسهای استفاده میکند. بخش زیر توضیح میدهد که این موضوع چرا اهمیت دارد.
مثال حلشده
ورودی: Hello, World!
معکوسشده: !dlroW ,olleH
هویت همهٔ نویسهها، از جمله ویرگول، فاصله و علامت تعجب، حفظ میشود. فقط ترتیب آنها تغییر میکند.
مدیریت ایموجیها، اَکسانها و دیگر نویسههای یونیکد
رایانهها اغلب یک نویسهٔ قابل مشاهده، مانند یک ایموجی یا حرف دارای اَکسان، را بهصورت بیش از یک واحد کوچک به نام نقطهٔ کد ذخیره میکنند. روشی که این واحدها را بدون توجه به وابستگیشان، یکییکی جابهجا کند، ممکن است یک نویسه را از هم جدا کند.
برای مثال، «Hello 👍» شامل یک ایموجی شستِ روبهبالاست که از یک جفت واحد پنهان ساخته شده است. معکوسسازی سادهٔ تکواحدی میتواند این جفت را از هم جدا کند و بهجای ایموجی، نمادهای خراب تولید کند. این ابزار با درنظرگرفتن هر ایموجی، پرچم و حرف دارای اعراب بهعنوان یک واحد، از این مشکل جلوگیری میکند؛ بنابراین «Hello 👍» بهدرستی به «👍 olleH» تبدیل میشود. ایموجی پرچم نیز که از دو نماد پنهانِ نشاندهندهٔ کد یک کشور ساخته شده است، دستنخورده باقی میماند: «🇺🇸 USA» به «ASU 🇺🇸» معکوس میشود، نه اینکه پرچم از هم جدا شود.
کاربردهای رایج
- بررسی پالیندروم: پالیندروم از جلو و عقب یکسان خوانده میشود، مانند «racecar». مقایسهٔ یک واژه با معکوس آن یکی از روشهای بررسی این ویژگی است.
- یادگیری کدنویسی: معکوس کردن یک رشته تمرینی رایج برای کار با حلقهها، آرایهها و پشتههاست.
- بازیهای واژهای و معماها: در معماها و اتاقهای فرار از واژههای معکوس برای پنهان کردن پیامها استفاده میشود.
- جلوههای طراحی: برخی طراحان برای ساخت لوگوهای آینهای یا جلوههای بصری، متن را معکوس میکنند.
- اشکالزدایی: مقایسهٔ متن عادی و معکوس میتواند به شناسایی برخی خطاهای داده کمک کند.
معکوسسازی نویسهها در برابر معکوسسازی واژهها
این دو عملیات اغلب با یکدیگر اشتباه گرفته میشوند.
- معکوسسازی نویسهها (کاری که این ابزار انجام میدهد): هر نویسه معکوس میشود. "Hello World" به "dlroW olleH" تبدیل میشود.
- معکوسسازی واژهها: هر واژه دستنخورده میماند، اما ترتیب واژهها تغییر میکند. "Hello World" به "World Hello" تبدیل میشود.
تاریخچهای کوتاه
نوشتار معکوس و آینهای هزاران سال پیش از رایانهها وجود داشته است. برخی کتیبههای یونان باستان از سبکی به نام بوستروفیدون استفاده میکردند که در آن جهت خطوط یکیدرمیان از چپ به راست و سپس از راست به چپ تغییر میکرد؛ شبیه گاوی که زمین را شخم میزند. لئوناردو داوینچی بخش زیادی از دفترهایش را با خط آینهای مینوشت که فقط با گرفتن نوشته در برابر آینه خوانده میشد؛ تاریخنگاران هنوز دربارهٔ اینکه آیا این کار را برای حفظ اسرار، برای راحتی بهعنوان نویسندهای چپدست، یا برای جلوگیری از پخش شدن جوهر انجام میداد، اختلاف نظر دارند.
در رایانش، معکوس کردن یک رشته از نخستین روزهای علوم رایانه تمرینی استاندارد در برنامهنویسی بوده است. این کار اغلب برای آموزش نحوهٔ کار پشتهها و آرایهها به کار میرود، زیرا قرار دادن نویسهها در پشته و بیرون آوردن آنها، ترتیبشان را بهطور خودکار معکوس میکند.
چگونه متن را در کد معکوس کنیم؟
بیشتر زبانهای برنامهنویسی روش داخلی یا سادهای برای معکوس کردن یک رشته دارند:
1text = "Hello, World!"
2print(text[::-1]) # !dlroW ,olleH
31const text = "Hello, World!";
2console.log([...text].reverse().join('')); // !dlroW ,olleH
3هر دو نمونه، متن را برای حروف و اعداد معمولی و ایموجیهای تکواحدی مانند 🌍 بهدرستی معکوس میکنند. بااینحال، ممکن است نویسهای را که از چند واحد پنهان ساخته شده است از هم جدا کنند؛ مانند برخی ایموجیهای پرچم، حروف دارای اَکسان که اَکسان آنها جداگانه تایپ شده است، یا ایموجیهای خانوادگی که با نویسههای اتصالدهندهٔ ویژه به هم پیوستهاند. معکوسسازی کامل و ایمن نسبت به خوشههای نویسهای، یعنی روشی که این ابزار استفاده میکند، به تابعی اختصاصی مانند Intl.Segmenter در جاوااسکریپت نیاز دارد.
کارایی
معکوس کردن متن زمان خطی میبرد: الگوریتم هر نویسه را دقیقاً یک بار بررسی میکند، بنابراین دو برابر شدن ورودی تقریباً حجم کار را دو برابر میکند. برای متن معمولی، از یک واژه تا چند صفحه، نتیجه عملاً بیدرنگ ظاهر میشود. فایلهای بسیار بزرگ، در حد مگابایت و بیشتر، بهتر است با برنامههای تخصصی پردازش شوند که دادهها را بهصورت جریانی میخوانند و همهٔ آن را یکباره در حافظه بارگذاری نمیکنند.
پرسشهای متداول
چگونه متن را بهصورت آنلاین معکوس کنم؟
متن را در کادر بالا جایگذاری یا تایپ کنید. بهمحض توقف تایپ، متن معکوسشده بهطور خودکار ظاهر میشود. برای کپی کردن نتیجه از دکمهٔ کپی استفاده کنید.
آیا طول متن محدودیت دارد؟
بله. ابزار حداکثر ۱۰٬۰۰۰ نویسه را میپذیرد. ورودی طولانیتر بهجای نتیجه، پیام خطا تولید میکند. نویسهها همانطور که روی صفحه دیده میشوند شمارش میشوند؛ بنابراین یک ایموجی یا حرف دارای اَکسان یک نویسه محسوب میشود، نه دو نویسه.
آیا این ابزار واژهها را معکوس میکند یا فقط نویسهها را؟
این ابزار نویسههای منفرد را معکوس میکند، نه ترتیب واژهها را. "Hello World" به "dlroW olleH" تبدیل میشود، نه به "World Hello".
آیا میتواند ایموجی و متنهای غیرانگلیسی را پردازش کند؟
بله. ابزار ایموجیها، پرچمها و حروف دارای اَکسان را بهصورت واحدهای منفرد در نظر میگیرد تا پس از معکوسسازی دستنخورده بمانند. همچنین با هر خطی، از جمله متن چینی، عربی و سیریلیک، کار میکند.
اگر متن را دو بار معکوس کنم، آیا متن اصلی برمیگردد؟
بله. معکوس کردن یک رشتهٔ معکوسشده، متن اصلی را بازمیگرداند. این ویژگی خودوارونی (involution) نام دارد.
آیا متن معکوسشده برای رمزگذاری مفید است؟
خیر. معکوس کردن نویسهها امن نیست. این کار فقط متن را از نظر بصری پنهان میکند و هر کسی که آن را دوباره معکوس کند، میتواند آن را بخواند.
منابع
- کنسرسیوم یونیکد. ضمیمهٔ استاندارد یونیکد #29: قطعهبندی متن یونیکد.
- Cormen, T. H., Leiserson, C. E., Rivest, R. L. و Stein, C. (۲۰۰۹). Introduction to Algorithms (ویراست ۳). MIT Press.
- مستندات وب MDN. Intl.Segmenter. شبکهٔ توسعهدهندگان موزیلا.