Zana ya mtandaoni ya bure ya kugeukiza maandishi ili kugeuza mstari wowote mara moja. Zungushia herufi, kagua maneno sawa, na unda maandishi ya nyuma. Inafanya kazi na Unicode, emoji, na lugha zote.
Weka au bandika maandishi yoyote hapa chini ili kugeuza mara moja mpangilio wa herufi. Ona matokeo papo hapo unapotandika.
Zana ya kugeuka maandishi (pia inaitwa zana ya kugeuka kwa kinyume) inageuza mpangilio wa herufi katika maandishi yako—kuchukua "Hello World" na kuigeuka kuwa "dlroW olleH". Utapata hii ya kushangaza kuwa muhimu kwa kila kitu kutoka kuchunguza ikiwa kitu ni palindrome hadi kuunda maandishi ya kioo kwa ajili ya kazi ya kubuni.
Zana inafanya kazi mara moja: bandika au andika maandishi yako, na utaona mara moja yake yamegeuka. Kinachofanya kugeuka maandishi kuwa ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya ya
Kutumia zana hii ya kugeuka maandishi ni hatua tatu rahisi:
Zana hii inashughulikia kila kitu mara moja, yaani unaweza kujaribu na kuona matokeo wakati unavyoandika. Inafanya kazi na seti yoyote ya herufi—Kiingereza, emoji, alama maalum, hata vibambo vya Unicode kutoka lugha kama Kijapani au Kiarabu.
Hivi ndivyo kubadilisha maandishi vinavyofanya kazi kwa kimasihi. Kwa mistari yenye urefu na herufi , mistari iliyogeuzwa ni:
Katika vitendo, wasanidi programu wanatekeleza hii kwa njia tatu kuu:
Sifa za utendaji: Kubadilisha maandishi huchukua muda wa (ya mstari) kwa sababu kila herufi huchakatishwa mara moja tu. Ukubwa wa nafasi pia ni kwa sababu unahitaji kuhifadhi mistari iliyogeuzwa. Kwa matumizi ya kawaida na maandishi chini ya megabytes chache, utendaji ni wa mara moja.
Jambo la muhimu la kuzingatia—ikiwa unageuka kwenye mafaili makubwa ya maandishi (kama vile kumbukumbu au seti za data), unaweza kufikiria njia za mtiririko ili kuepuka kupakia kila kitu kwenye ukumbu wa kumbukumbu.
Nipelekeze kabisa jinsi gani algoritmu ya kugeuka itashughulikia maandishi yako:
1.Anza na kiwa cha matokeo tupu 2. Soma kutoka kwa herufi ya mwisho ya ingizo, ukienda nyuma 3. Ongeza kila herufi kwenye matokeo unapoenda 4. Acha ukifika kwenye herufi ya kwanza 5. Rudisha kamba iliyogeuka kabisa
Mfano wa vitendo na "Hello, World!":
1Ingizo: "Hello, World!"
2Hatua 1:Anza na matokeo tupu: ""
3Hatua 2: Chukua herufi ya mwisho "!" → matokeo = "!"
4Hatua 3: Chukua "d" → matokeo = "!d"
5Hatua 4: Chukua "l" → matokeo = "!dl"
6Hatua 5: Endelea kwa kila herufi...
7Matokeo ya mwisho: "!dlroW ,olleH"
8Algoritmu inashughulikia kila herufi sawa kabisa—iwe herufi, nambari, alama ya uakifishi, nafasi, au emoji. Kila kitu kinahifadhiwa katika matokeo yaliyogeuka. Ushughulikaji wa mara kwa mara huu ndiyo sababu inafanya kazi kwa uhakika katika lugha na seti za herufi tofauti.
Unaposhugulika na kuzindusha maandishi, utakutana na mazingira maalum ya kufurahisha:
Mistari tupu: Kuzindusha mistari tupu kukupe... mistari tupu. Inakubalika, sivyo? Hakuna cha kuzindusha.
Herufi moja: Zindusha "A" na utapata "A". Ni kinyume chake mwenyewe, kama vile herufi zote za moja.
Unicode na emoji: Hapa ndipo mambo yanapokuwa ya kuvutia. Algoritmu inashughulikia Unicode vizuri, ikiwa ni pamoja na emoji, herufi za Kijapani, maandishi ya Kiarabu, na maandishi yasiyo ya Kilatini. Jaribu na "こんにちは 🌍" na utaona inafanya kazi sawa.
Nafasi na vibamizi maalum: Nafasi, vipimo, mistara mpya, alama za uakifishaji—kila kitu kinazindusha sawa kabisa. "Hello World" (na nafasi 3) hubadilika kuwa "dlroW olleH" (bado nafasi 3).
Maandishi marefu sana: Kwa pembejeo kubwa sana (fikiri megabytes ya maandishi), unakabiliwa na kumbukumbu iliyopo. Mifumo ya kisasa inashughulikia hili vizuri hadi megabytes kadhaa, lakini ikiwa unashughulikia faili za gigabyte, utahitaji suluhisho la mtiririko badala ya kubeba kila kitu kwenye kumbukumbu.
Jambo nililo gundua: herufi zinazochanganya na vikundi vya grapheme wakati mwingine vinaweza kuvitendea. Kwa mfano, emoji zenye visaidizi vya rangi ya ngozi ni vipimo vya Unicode vingi. Utekelezaji wake wengi unashughulikia hili vizuri, lakini bora kujaribu na kesi yako maalum ikiwa unashughulikia Unicode ya kina.
Unaweza kushangaa mara ngapi kugeuka kwa maandishi kunakotokea katika vitendo. Hapa kuna hali ambazo nimekuwa nimeiona:
Kuchunguza palindrome: Pale unapohitaji kuthibitisha ikiwa neno linasoma sawa mbele na nyuma, unageuka na kulinganisha. Fikiria "racecar" → "racecar" (zinalingana = palindrome).
Mazoezi ya algoritmu ya mistari: Kugeuka kwa maandishi ni tatizo la kawaida la mahojiano ya programu ambalo hujaribisha uelewa wako wa kubadilisha mistari na miundo ya data ya msingi.
Maonyesho ya utekelezaji wa stack: Kugeuka kwa maandishi ni mfano bora wa kufundisha tabia ya LIFO (Mwisho-Ndani-Kwanza-Nje) kwa sababu stack hugeuka kwa mpangilio wa asili.
Usimbaji wa msingi: Ingawa hauna usalama wa kutosha, kugeuka kwa maandishi wakati mwingine hutumiwa kama safu moja katika mifumo ya usimbaji ya hatua kadhaa. Ni zaidi ya kufichilia kuliko usimbaji halisi.
Mifumo ya changamoto-majibu: Baadhi ya mifumo ya uthibitishaji inatumia mistari iliyogeuka kama sehemu ya mchakato wake wa uthibitishaji.
Michezo ya maneno na vipengele: Unda changamoto ambapo wachezaji watatambua maneno yaliyogeuka au kufunua ujumbe. Maajabu katika vyumba vya kukimbia na programu za vipengele.
Athari za kuandika kwa kikoani: Wasanifu hutumiwa maandishi yaliyogeuka kwa ajili ya nembo, athari za sanaa, au muundo wa kibunifu unaojumuisha urejezo.
Zana ya kufundisha: Wakati wa kuelezea kubadilisha mistari kwa wanafunzi wadogo, kugeuka kwa maandishi ni rahisi ya kuelewa lakini ya kutosha kuonyesha dhana muhimu kama vile kuchunguza na kushika safu.
Utafiti wa lugha: Watafiti wanaojifunza maudhui ya lugha wakati mwingine huchambua maandishi mbele na nyuma ili kubainisha vipengele vya muundo.
Kugundua muundo: Kuchunguza usawazishaji wa maandishi au kubainisha mifumo iliyofichika ya maandishi yaliyogeuka katika hifadhi kubwa.
Kubadilisha kwa herufi haitoi chaguo zako zote. Kutegemea unachokitaka, mbadala haya yanaweza kufanya kazi bora:
Kugeuka kwa maneno: Weka kila neno kama ilivyo lakini ubadilishe mpangilio wake. Muhimu kwa kujifunza lugha na baadhi ya kazi za kusindika maandishi.
Kugeuka kwa sentensi: Ubadilishe mpangilio wa sentensi ukihifadhi mpangilio wa maneno ndani ya kila sentensi.
Kugeuka kwa sehemu maalum: Geuka tu sehemu maalum kulingana na vigezo vyako—labda tu vovali, au maneno yenye herufi zaidi ya 5. Bora kwa kufanya michezo ya maneno au kuchambua muundo.
Kugeuka kwa sauti: Hutumiwa katika utafiti wa lugha, hii hugeuka kwa sauti badala ya herufi. Inahitaji kubadilisha sauti kwanza.
Kugeuka kwa kiwango cha bit: Hugeuka uwasilishaji wa binary wa herufi. Utaiona katika baadhi ya shughuli za usimbaji na kubadilisha data ya kiwango cha chini.
Kugeuka kwa maandishi kulikuwa tayari kabla ya inavyoweza kufikirika—kuanzia mifumo ya kuandika ya kale hadi kompyuta za kisasa.
Mataifa ya kale yalichunguza namna ya kuandika kwa muelekeo mbali kabla ya kuwepo kwa kompyuta. Wayunani na Wayahudi wakati mwingine walikuwa wakitumia mtindo wa "boustrophedon", ambapo mistari ilikuwa ikageuka muelekeo—kushoto-kulia, kisha kulia-kushoto, kama ng'ombe akichimba shamba (ambayo ndio maana ya "boustrophedon").
Leonardo da Vinci mashuhuri aliyajaza daftari zake kwa maandishi ya kikofi, ambapo maandishi yanatokea yakageuka. Wahistoria wanabishana kama hili lilikuwa kwa siri, kwa sababu alikuwa mweusi mkono wa kushoto na ilikuwa rahisi, au tu kuzuia kuteleza cha mkono. Kwa sababu yoyote, daftari zake zinaonyesha kuwa kugeuka kwa maandishi kumetumika kama mbinu ya kubainisha kwa karne.
Wakati kompyuta zilitokea miaka ya 1950-60, kubadilisha mistari ilikuwa zoezi la msingi la kubrogramu. Kugeuka kwa maandishi ilikuwa jambo moja ya mifano ya kila programu anayojifunza, pamoja na kupanga na kutafuta.
Kilichofanya iwe ya kushangaza: maendeleo ya miundo ya stack yalihusiana kabisa na kugeuka kwa maandishi. Tabia ya LIFO (Ya Mwisho-Kuingia-Ya Kwanza-Kutoka) ya stack inageuka muelekeo kiotomatiki—weka "HABARI" kwa kila herufi kwenye stack, utaiona "IRABAH". Uhusiano huu wa busara ulifanya kugeuka kwa maandishi kuwe mfano wa kufundisha miundo ya data.
Leo, utakuta algoritmu za kugeuka kwa maandishi zikifanya kazi nyuma:
Urahisi wa algoritmu (ni ya kwanza unayojifunza) pamoja na matumizi yake ya kimahiri inazihakikishia kuwa bado muhimu baada ya miaka mingi tangu ilitumike kwanza.
Hapa uko jinsi ya kutekeleza kugeuza maandishi katika lugha maajabu za programu. Kila mfano unaonyesha algoritmu ya msingi pamoja na matumizi ya vitendo:
1' Funguo ya Excel VBA ya Kugeuza Maandishi
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' Matumizi katika seli:
14' =InvertText("Habari, Dunia!")
151def invert_text(input_text):
2 """Geuza mpangilio wa herufi katika tungo."""
3 return input_text[::-1]
4
5## Mfano wa matumizi:
6
7maandishi_asili = "Habari, Dunia!"
8maandishi_geuzi = geuzi_maandishi(maandishi_asili)
9print(f"Asili: {maandishi_asili}")
10print(f"Geuzi: {maandishi_geuzi}")
11
12# Kushughulikia vibambo vya Unicode
13maandishi_unicode = "こんにちは世界! 🌍"
14geuzi_unicode = geuzi_maandishi(maandishi_unicode)
15print(f"Asili ya Unicode: {maandishi_unicode}")
16print(f"Geuzi ya Unicode: {geuzi_unicode}")
171function geuziMaandishi(maandishiIngizi) {
2 return maandishiIngizi.split('').reverse().join('');
3}
4
5// Mfano wa matumizi:
6const maandishiAsili = "Habari, Dunia!";
7const maandishiGeuzi = geuziMaandishi(maandishiAsili);
8console.log(`Asili: ${maandishiAsili}`);
9console.log(`Geuzi: ${maandishiGeuzi}`);
10
11// Kushughulikia mistari tupu
12console.log(`Mistari tupu geuzi: "${geuziMaandishi("")}"`);
13
14// Kushughulikia Unicode
15const maandishiUnicode = "こんにちは世界! 🌍";
16console.log(`Asili ya Unicode: ${maandishiUnicode}`);
17console.log(`Geuzi ya Unicode: ${geuziMaandishi(maandishiUnicode)}`);
181public class GeuziMaandishi {
2 public static String geuziMaandishi(String maandishiIngizi) {
3 return new StringBuilder(maandishiIngizi).reverse().toString();
4 }
5
6 public static void main(String[] args) {
7 String maandishiAsili = "Habari, Dunia!";
8 String maandishiGeuzi = geuziMaandishi(maandishiAsili);
9
10 System.out.println("Asili: " + maandishiAsili);
11 System.out.println("Geuzi: " + maandishiGeuzi);
12
13 // Kushughulikia vibambo vya Unicode
14 String maandishiUnicode = "こんにちは世界! 🌍";
15 String geuziUnicode = geuziMaandishi(maandishiUnicode);
16 System.out.println("Asili ya Unicode: " + maandishiUnicode);
17 System.out.println("Geuzi ya Unicode: " + geuziUnicode);
18 }
19}
201geuzi_maandishi <- function(maandishi_ingizi) {
2 # Geuza kwenda vector ya herufi, geuza, na unganisha
3 paste(rev(strsplit(maandishi_ingizi, "")[[1]]), collapse = "")
4}
5
6# Mfano wa matumizi
7maandishi_asili <- "Habari, Dunia!"
8maandishi_geuzi <- geuzi_maandishi(maandishi_asili)
9cat("Asili:", maandishi_asili, "\n")
10cat("Geuzi:", maandishi_geuzi, "\n")
111function maandishiGeuzi = geuziMaandishi(maandishiIngizi)
2 % Funguo ya kugeuza mpangilio wa herufi katika kificho
3 maandishiGeuzi = maandishiIngizi(end:-1:1);
4end
5
6% Mfano wa matumizi
7maandishiAsili = 'Habari, Dunia!';
8maandishiGeuzi = geuziMaandishi(maandishiAsili);
9fprintf('Asili: %s\n', maandishiAsili);
10fprintf('Geuzi: %s\n', maandishiGeuzi);
111#include <iostream>
2#include <string>
3#include <algorithm>
4
5std::string geuziMaandishi(const std::string& maandishiIngizi) {
6 std::string matokeo = maandishiIngizi;
7 std::reverse(matokeo.begin(), matokeo.end());
8 return matokeo;
9}
10
11int main() {
12 std::string maandishiAsili = "Habari, Dunia!";
13 std::string maandishiGeuzi = geuziMaandishi(maandishiAsili);
14
15 std::cout << "Asili: " << maandishiAsili << std::endl;
16 std::cout << "Geuzi: " << maandishiGeuzi << std::endl;
17
18 // Kushughulikia mistari tupu
19 std::cout << "Mistari tupu geuzi: \"" << geuziMaandishi("") << "\"" << std::endl;
20
21 return 0;
22}
231def geuzi_maandishi(maandishi_ingizi)
2 maandishi_ingizi.reverse
3end
4
5# Mfano wa matumizi
6maandishi_asili = "Habari, Dunia!"
7maandishi_geuzi = geuzi_maandishi(maandishi_asili)
8puts "Asili: #{maandishi_asili}"
9puts "Geuzi: #{maandishi_geuzi}"
10
11# Kushughulikia vibambo vya Unicode
12maandishi_unicode = "こんにちは世界! 🌍"
13geuzi_unicode = geuzi_maandishi(maandishi_unicode)
14puts "Asili ya Unicode: #{maandishi_unicode}"
15puts "Geuzi ya Unicode: #{geuzi_unicode}"
161<?php
2function geuziMaandishi($maandishiIngizi) {
3 return strrev($maandishiIngizi);
4}
5
6// Mfano wa matumizi
7$maandishiAsili = "Habari, Dunia!";
8$maandishiGeuzi = geuziMaandishi($maandishiAsili);
9echo "Asili: $maandishiAsili\n";
10echo "Geuzi: $maandishiGeuzi\n";
11
12// Kushughulikia vibambo vya Unicode
13$maandishiUnicode = "こんにちは世界! 🌍";
14$geuziUnicode = geuziMaandishi($maandishiUnicode);
15echo "Asili ya Unicode: $maandishiUnicode\n";
16echo "Geuzi ya Unicode: $geuziUnicode\n";
17?>
181fn geuzi_maandishi(maandishi_ingizi: &str) -> String {
2 maandishi_ingizi.chars().rev().collect()
3}
4
5fn main() {
6 let maandishi_asili = "Habari, Dunia!";
7 let maandishi_geuzi = geuzi_maandishi(maandishi_asili);
8
9 println!("Asili: {}", maandishi_asili);
10 println!("Geuzi: {}", maandishi_geuzi);
11
12 // Kushughulikia vibambo vya Unicode
13 let maandishi_unicode = "こんにちは世界! 🌍";
14 let geuzi_unicode = geuzi_maandishi(maandishi_unicode);
15 println!("Asili ya Unicode: {}", maandishi_unicode);
16 println!("Geuzi ya Unicode: {}", geuzi_unicode);
17}
181using System;
2
3class GeuziMaandishi
4{
5 public static string GeuziMaandishiYake(string maandishiIngizi)
6 {
7 char[] safu = maandishiIngizi.ToCharArray();
8 Array.Reverse(safu);
9 return new string(safu);
10 }
11
12 static void Main()
13 {
14 string maandishiAsili = "Habari, Dunia!";
15 string maandishiGeuzi = GeuziMaandishiYake(maandishiAsili);
16
17 Console.WriteLine($"Asili: {maandishiAsili}");
18 Console.WriteLine($"Geuzi: {maandishiGeuzi}");
19
20 // Kushughulikia mistari tupu
21 Console.WriteLine($"Mistari tupu geuzi: \"{GeuziMaandishiYake("")}\"");
22
23 // Kushughulikia vibambo vya Unicode
24 string maandishiUnicode = "こんにちは世界! 🌍";
25 string geuziUnicode = GeuziMaandishiYake(maandishiUnicode);
26 Console.WriteLine($"Asili ya Unicode: {maandishiUnicode}");
27 Console.WriteLine($"Geuzi ya Unicode: {geuziUnicode}");
28 }
29}
301package main
2
3import (
4 "fmt"
5)
6
7func geuziMaandishi(maandishiIngizi string) string {
8 safu := []rune(maandishiIngizi)
9 for i, j := 0, len(safu)-1; i < j; i, j = i+1, j-1 {
10 safu[i], safu[j] = safu[j], safu[i]
11 }
12 return string(safu)
13}
14
15func main() {
16 maandishiAsili := "Habari, Dunia!"
17 maandishiGeuzi := geuziMaandishi(maandishiAsili)
18
19 fmt.Printf("Asili: %s\n", maandishiAsili)
20 fmt.Printf("Geuzi: %s\n", maandishiGeuzi)
21
22 // Kushughulikia vibambo vya Unicode
23 maandishiUnicode := "こんにちは世界! 🌍"
24 geuziUnicode := geuziMaandishi(maandishiUnicode)
25 fmt.Printf("Asili ya Unicode: %s\n", maandishiUnicode)
26 fmt.Printf("Geuzi ya Unicode: %s\n", geuziUnicode)
27}
281func geuziMaandishi(_ maandishiIngizi: String) -> String {
2 return String(maandishiIngizi.reversed())
3}
4
5// Mfano wa matumizi
6let maandishiAsili = "Habari, Dunia!"
7let maandishiGeuzi = geuziMaandishi(maandishiAsili)
8
9print("Asili: \(maandishiAsili)")
10print("Geuzi: \(maandishiGeuzi)")
11
12// Kushughulikia vibambo vya Unicode
13let maandishiUnicode = "こんにちは世界! 🌍"
14let geuziUnicode = geuziMaandishi(maandishiUnicode)
15print("Asili ya Unicode: \(maandishiUnicode)")
16print("Geuzi ya Unicode: \(geuziUnicode)")
17Ikiwa unafanya kazi na kugeuza maandishi katika msimbo wa uzalishaji, hapa kuna vipengele vya utendaji vyenye thamani ya kuzingatia:
Matumizi ya Kumbukumbu: Kuunda nakala iliyogeuza inahitaji kumbukumbu sawa na ukubwa wa ingizo. Kwa mistari midogo hadi ya kati (chini ya 1 MB), hii ni ya kutozingatiwa. Kwa maandishi makubwa zaidi, unazidisha matumizi ya kumbukumbu muda mfupi.
Kugeuza Sehemu ya Sasa: Lugha kama C, C++, na Rust zinakuruhusu kugeuza mifumo ya herufi moja kwa moja katika kumbukumbu bila kuunda nakala. Hii inakopoa matumizi ya kumbukumbu kwa nusu lakini inafanya kazi tu na mistari inayoweza kubadilishwa. Lugha nyingi (Python, JavaScript, Java) zinatumia mistari isiyoweza kubadilishwa, kwa hivyo lazima uunde mpya.
Kushughulikia Unicode: Hapa ndipo mambo yanapata changamoto. Herufi za Unicode zenye byte nyingi zinahitaji kushughulikiwa vizuri au utaharibu usimbaji. Maktaba za kimsingi za lugha za kisasa zinashughulikia hili vizuri, lakini ikiwa unandishi msimbo wa kiwango cha chini au unafanya kazi na mifumo ya byte moja kwa moja, kuwa makini. Jaribu na emoji na mistari isiyo ya Kilatini ili kuthibitisha.
Kusambaza kwa Faili Kubwa: Ikiwa unageuza faili za bathari au datu zenye gigabyte, usiipakize zote katika kumbukumbu. Tumia mbinu ya kusambaza—soma sehemu kutoka mwisho, uziandike wakati unakwenda. Kulingana na Kiwango cha Kiufundi cha Unicode #18, kushughulikia vikundi vya grafu vinahitaji uangalifu maalum kwa kubainisha mipaka ya maandishi vizuri.
Kutekeleza Kwa Pamoja: Kwa mistari sana sana, unaweza kinadharia kutekeleza kugeuza kwa pamoja (gawa katika sehemu, geuza kila moja, unganisha). Katika vitendo, mzigo wa ziada kwa kawaida haukutakiwa isipokuwa wewe una rasilimali za kuhesabu na unashughulikia datu kubwa sana.
Unaweza kunakili au kuandika maandishi yako kwenye sehemu ya kuingiza hapo juu. Zana inageuka mara moja wakati halisi—hakuna haja ya kubonyeza kitufe chochote. Nakili matokeo kwa kubonyeza mara moja.
Kugeuka kwa maandishi (kugeuka kwa herufi) hugeuka herufi binafsi: "Hello World" → "dlroW olleH". Kugeuka kwa maneno huacha kila neno kuwa sawa lakini hugeuka mpangilio wao: "Hello World" → "World Hello". Zana hii inafanya kugeuka kwa herufi.
Ndiyo. Zana inashughulikia vizuri vibambo vyote vya Unicode ikijumlisha emoji, maandishi ya Kichina/Kijapani/Kikorea, maandishi ya Kiarabu, alama maalum, na vibambo vya kuunganisha. Jaribu na "こんにちは 🌍" uone mwenyewe.
Yamesheheni lakini sio sawa kabisa. Kugeuka kwa herufi (ambacho zana hii inafanya) hugeuka mpangilio wa herufi tu. Kuandika kwa kioo hugeuka herufi kwa mlalo ili zionekane kama mavazi ya kioo. Kusoma kuandika kwa kioo, unahitaji kioo halisi au kugeuka kwa mlalo.
Matumizi ya kawaida ni: kukagua palindromes, kuunda usimbaji rahisi wa fumbo, kutengeneza data ya jaribio kwa programu, kuunda athari za kisanaa za maandishi, kufundisha algoritmu za mfumo wa mistari, na kudhibiti programu ya usindikaji wa maandishi.
Ndiyo. Kugeuka kwa maandishi ni uendeshaji wake mwenyewe. Ikiwa unageuka "Hello" kupata "olleH", kisha unageuka "olleH", utapata "Hello" tena. Kwa kimapenzi, hii inaitwa uendeshaji wa kujitokeza.
Iko na kasi sana—kucheleweshwa kwa mstari wa moja O(n) ambapo n ni urefu wa maandishi. Kwa maandishi ya kawaida (mistari michache), usindikaji ni wa mara moja. Hata kwa maandishi marefu sana (maneno ya elfu), kompyuta za kisasa zinashughulikia kwa millisekunde.
Ndiyo, lakini unahitaji kazi maalum kwa sababu hakuna kazi ya kugeuka iliyojengwa. Angalia sehemu ya mifano ya msimbo hapo juu kwa Excel VBA na utekelezaji mbalimbali wa programu.
Knuth, D. E. (1997). Sanaa ya Programu ya Kompyuta, Kiwango cha 1: Algoritmu Msingi (Toleo la 3). Addison-Wesley Professional.
Sedgewick, R., & Wayne, K. (2011). Algoritmu (Toleo la 4). Addison-Wesley Professional.
Umoja wa Unicode. Kiwango cha Kiufundi cha Unicode #18: Mpangilio wa Kawaida wa Unicode. Inapatikana katika: https://unicode.org/reports/tr18/
Hati Wavuti za MDN. Kumbukumbu ya Mbinu za Mistari. Mtandao wa Wasanidi wa Mozilla. Inapatikana katika: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String
Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2009). Utangulizi wa Algoritmu (Toleo la 3). MIT Press.
Gundua zana zaidi ambazo zinaweza kuwa na manufaa kwa mtiririko wako wa kazi