rot13 သည် ဆီးဇာစကားဝှက် (Caesar's cipher) အမျိုးအစား တစ်မျိုးဖြစ်ပါသည်။ ရောမဗိုလ်ချုပ် ဂျူလီယက် ဆီဇာက စတင် အသုံးပြုခဲ့ သောကြောင့် ဆီဇာစကားဝှက်ဟု အမည်ရခြင်းဖြစ်ပါသည်။ အသုံးပြုပုံမှာ စကားလုံးများတွင် ပါဝင်သော စာလုံးများအား ၃နေရာ ရွှေ့ခြင်းဖြင့် မှုရင်း စကားလုံးအား စကားဝှက်ဝှက်ခြင်း ဖြစ်ပါသည်။
Rot13 သည် Rotate 13 ၏ အတိုကောက် အခေါ်အဝေါ်ဖြစ်ပြီး၊ အင်္ဂလိပ်စာလုံး များအား ၁၃ နေရာ အနောက်သို့ရွှေ့ခြင်း အားဖြင့် စကားဝှက်ဖွဲ့ခြင်း ကိုဆိုလိုပါသည်။ ဤမှ ရိုးရှင်းသော အလဂိုရီဇင်ဖြစ်သော်လည်း လွယ်လင့်တကူ အသုံးပြုနိုင်ခြင်းတို့ကြောင့် Unix OS များတွင် Embedded Program အဖြစ်သော်၎င်း၊ PHP တွင် str_rot13 အဖြစ်၎င်း ပံ့ပိုးထားပါသည်။
Rot13String.java
public class Rot13String { private StringBuilder sb; public Rot13String(String str) { sb = new StringBuilder(); if(null != str && !str.isEmpty()) { for(char c : str.toCharArray()) { sb.append(getRot13Char(c)); } } } private char getRot13Char(char c) { if((c >= 'a' && c <= 'm') || (c >= 'A' && c <= 'M')) c += 13; else if ((c >= 'n' && c <= 'z') || (c >= 'N' && c <= 'Z')) c -= 13; return c; } public String encode() { return this.sb.toString(); } public static void main(String[] args) { // Origin String origin = "hello HELLO"; System.out.println(origin); // Convert String conv = new Rot13String(origin).encode(); System.out.println(conv); // Convert(Convert()) System.out.println(new Rot13String(conv).encode()); } }ဤ Rot13 အလဂိုရီဇင်၏ နမှုနာတွင် အဓိက အလုပ်လုပ်နေသည်မှာ စာကြောင်း ၁၄ ရှိ getRot13Char လုပ်ဆောင်ချက်ပင် ဖြစ်၏။ အကယ်၍ ပါရာမီတာဖြစ်သော c သည် a မှ m အထိ ဒါမှမဟုတ် A မှ M အထိဆိုပါက c အား ၁၃ပေါင်း၍၊ c သည် n မှ z ဒါမှမဟုတ် N မှ Z အထိဆိုပါက c အား 13 နှုတ်ပြီး အစားထိုးကာ c အား ရလဒ်အဖြစ် ပြန်ပေးနေခြင်းသာ ဖြစ်၏။
ကွန်စတရက်တာတွင် အန်ကုဒ်လုပ်ချင်သည့် စကားလုံးအား ပါရာမီတာအဖြစ်ရယူပြီး အတွင်းပိုင်း စာကြောင်း ၈ တွင် For ဝါကျဖြင့် Loop လုပ်ကာ စာလုံးတစ်လုံးခြင်းအား အထက်ပါ getRot13Char လုပ်ဆောင်ချက်ကို အသုံးပြု၍ အန်ကုဒ်လုပ်ကာ StringBuilder အော့ဘဂျက်တွင် ဖြည့်စွက်ထားပါသည်။ StringBuilder အော့ဘဂျက် sb သည် Member ကိန်းရှင်ဖြစ်ပြီး၊ ကွန်စတရက်တာအား စတင်လုပ်ဆောင်သည့် အခါတွင် အန်ကုဒ်လုပ်ပြီး စာလုံးများကို ဖြည့်စွက်ပြီး ဖြစ်နေပါမည်။ ထို့နောက်တွင် encode လုပ်ဆောင်ချက်ကို ခေါ်ယူပါက sb.getString() လုပ်ဆောင်ချက်ကို ခေါ်ယူပြီး တည်ဆောက်ထားသော စာကြောင်းအား ရလဒ်အဖြစ် ပြန်ပေးမည် ဖြစ်ပါသည်။
အသုံးပြုပုံမှာ main လုပ်ဆောင်ချက်အတွင်းတွင် ဖြစ်ပါသည်။ စာကြောင်း ၂၉တွင် မှုရင်းစာလုံးအား ရေးသားစေပါသည်။ တဖန် စာကြောင်း ၃၂ ဖြင့် မှုရင်းစာလုံးအား အန်ကုဒ်လုပ်ပြီး ရလဒ်အား စာကြောင်း ၃၃ တွင် ရေးသားစေပါသည်။ နောက်ဆုံးတွင် စာကြောင်း ၃၆ ဖြင့် အန်ကုဒ်လုပ်ထားသော စာလုံးအား ထပ်မံ အန်ကုဒ်လုပ်ကာ ရေးသားစေပါသည်။
အထက်ပါ နမှုနာအား အလုပ်လုပ်ကြည့်စေသောအခါ အောက်ပါအတိုင်း တွေ့မြင်ရမည် ဖြစ်ပါသည်။
မှုရင်းစာလုံးနှင့်အန်ကုဒ်လုပ်ထားသော စာလုံးအား အန်ကုဒ်လုပ်ထားသည့် စာလုံးသည် အတူတူဖြစ်သည်ကို တွေ့ရပါလိမ့်မည်။
လေးစားစွာဖြင့်။
မင်းလွင်
No comments:
Post a Comment