เพิ่ม karaca en/decode

This commit is contained in:
Late Night Defender 2023-04-03 01:10:40 +07:00
parent eda1785095
commit a2524fdeae
18 changed files with 530 additions and 0 deletions

16
karaca-encode/.travis.yml Normal file
View file

@ -0,0 +1,16 @@
language: cpp
compiler: gcc
jobs:
include:
- os: linux
dist: focal
- os: linux
dist: xenial
- os: osx
env:
- BUILD_TYPE=Debug
script:
- echo 1 | ./install.sh
- cat test-input.txt
- cat test-input.txt | ~/.local/bin/$(basename $PWD)
- echo 1 | ./uninstall.sh

81
karaca-encode/README.md Normal file
View file

@ -0,0 +1,81 @@
![Banner](info/banner.png)
[![PGTechs](https://img.shields.io/static/v1.svg?color=ff0000&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=PG%20Techs&message=YouTube)](https://www.youtube.com/c/PGTechs "ช่อง YouTube ของเรา")
[![PGVCPlus](https://img.shields.io/static/v1.svg?color=0572e6&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=PGVC%2B&message=Facebook)](https://www.facebook.com/PrincegameRVCPlus "เพจข่าวสาร Distributed Computing ของเรา บน Facebook")
อีกหนึ่งแอปพลิเคชันคุณภาพจาก SashaPGT
* ทุกแอปพลิเคชันผ่านการทดสอบติดตั้งและใช้งานใน Test environment ของเรา
* ใช้งานได้อย่างสะดวกรวดเร็ว ด้วยสคริปต์ติดตั้งแบบสำเร็จรูป ทั้งเฉพาะผู้ใช้และ System-wide
* รองรับ Linux และ macOS
# sashapgt/karaca-encode
[![Build Status](https://app.travis-ci.com/sashapgt/karaca-encode.svg?branch=main)](https://app.travis-ci.com/gitlab/sashapgt/karaca-encode)
"เขียนโปรแกรมการเข้ารหัสของ Karaca ซึ่งการเข้ารหัสมีวิธีดังนี้ (Level 3)
1. รับค่าเข้ามาเช่น suratan
2. กลับด้านตัวอักษรเป็น natarus
3. แปลงสระเป็นตัวเลขโดยเปลี่ยนดังนี้
a => 0
e => 1
i => 2
o => 3
u => 4
จากข้อความด้านบนจะได้ว่า n0t0r4s
4. เติมคำว่า aca เข้าไปด้านหลัง เป็น n0t0r4saca
ปล.ตัวอักษรมีแต่พิมพ์เล็ก ไม่มีช่องว่าง ไม่มีเลข"
**ตัวอย่างการทำงานของโปรแกรม**
![Screenshot](info/screenshot.png)
# วิธีการติดตั้ง/ใช้งาน
### ติดตั้งแบบปกติ
1. โคลน git นี้
`$ git clone https://gitlab.com/sashapgt/karaca-encode.git`
2. cd เข้าโฟลเดอร์ของ git นี้ แล้วรันสคริปต์ติดตั้ง
`$ cd karaca-encode && bash install.sh`
3. เรียกใช้จากเทอร์มินัล (Shell autocomplete อาจจะยังไม่ทำงาน กรุณาปิดเทอร์มินัล แล้วเปิดใหม่อีกครั้ง)
`$ karaca-encode`
### ใช้งานครั้งเดียว (Build, run และ remove ทันทีเมื่อใช้งานเสร็จโดยอัตโนมัติ)
$ bash single-use-build-and-run.sh
# ถอนการติดตั้ง
1. รันสคริปต์ถอนการติดตั้งจากในโฟลเดอร์ git นี้
`$ bash uninstall.sh`
2. ลบโฟลเดอร์ git นี้
# การแก้ปัญหา
หากไม่สามารถรันได้เนื่องจาก Command not found ให้ดูว่ามี ~/.local/bin ใน $PATH หรือไม่
สามารถตรวจสอบได้โดยการ
echo $PATH
หากไม่มี Home folder ของคุณ ตามด้วย .local/bin ให้เพิ่มบรรทัดนี้ลงใน Shell startup script ของคุณ (เช่น .bashrc .zshrc)
export PATH="$PATH:$HOME/.local/bin"

BIN
karaca-encode/info/banner.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

60
karaca-encode/install.sh Executable file
View file

@ -0,0 +1,60 @@
#!/bin/bash
DIR1=$HOME/.local/bin
DIR2=/usr/local/bin
APPNAME=$(basename $PWD)
clear
if [[ "${EUID}" -eq 0 ]]; then
echo " "
echo "คุณกำลังใช้สิทธิ์ Root! ต้องการดำเนินการติดตั้งต่อใน $DIR2 หรือไม่"
echo " "
echo "1) ไม่"
echo "2) ใช่"
echo " "
read -p "ใส่คำตอบของคุณ [1] : " INSTALLCHOICE
until [[ -z "$INSTALLCHOICE" || "$INSTALLCHOICE" =~ ^[1-2]$ ]]; do
printf "\n$INSTALLCHOICE: ค่าที่ใส่ไม่ถูกต้อง\n\n"
read -p "ใส่คำตอบของคุณ [1] : " INSTALLCHOICE
done
case "$INSTALLCHOICE" in
1|"")
exit
;;
2)
DIR=$DIR2
printf "\nกำลัง Build และติดตั้ง $APPNAME ใน $DIR\n"
g++ -o $APPNAME main.cpp && mv $APPNAME $DIR
;;
esac
else
echo " "
echo "เลือกผู้ใช้ที่ต้องการติดตั้งให้"
echo " "
echo "1) $USER ($DIR1)"
echo "2) ทุกคน ($DIR2)"
echo " "
read -p "ใส่คำตอบของคุณ [1] : " INSTALLCHOICE
until [[ -z "$INSTALLCHOICE" || "$INSTALLCHOICE" =~ ^[1-2]$ ]]; do
printf "\n$INSTALLCHOICE: ค่าที่ใส่ไม่ถูกต้อง\n\n"
read -p "ใส่คำตอบของคุณ [1] : " INSTALLCHOICE
done
case "$INSTALLCHOICE" in
1|"")
DIR=$DIR1
if [[ ! -d "$DIR" ]]; then
mkdir -p $DIR
fi
printf "\nกำลัง Build และติดตั้ง $APPNAME ใน $DIR\n"
g++ -o $APPNAME main.cpp && mv $APPNAME $DIR
;;
2)
DIR=$DIR2
printf "\nกำลัง Build และติดตั้ง $APPNAME ใน $DIR\n"
printf "\nกรุณาใส่รหัสผ่าน sudo หากถูกถามในการติดตั้ง\n\n"
g++ -o $APPNAME main.cpp && sudo mv $APPNAME $DIR
;;
esac
fi
printf "\nการติดตั้ง $APPNAME ใน $DIR เสร็จสมบูรณ์\n"

29
karaca-encode/main.cpp Normal file
View file

@ -0,0 +1,29 @@
#include<stdio.h>
#include<iostream>
int main() {
char input[1000],reversed[1003];
printf("Input: ");
std::cin>>input;
printf("\n");
int length=0;
while(input[length]!='\0'){
length++;
}
for(int i=0;i<length;i++){
reversed[length-i-1]=input[i];
}
for(int i=0;i<length;i++){
if(reversed[i]=='a') reversed[i]='0';
else if(reversed[i]=='e') reversed[i]='1';
else if(reversed[i]=='i') reversed[i]='2';
else if(reversed[i]=='o') reversed[i]='3';
else if(reversed[i]=='u') reversed[i]='4';
}
reversed[length]='a';
reversed[length+1]='c';
reversed[length+2]='a';
reversed[length+3]='\0';
std::cout<<"Output: "<<reversed<<std::endl;
return 0;
}

View file

@ -0,0 +1,7 @@
#!/bin/bash
g++ -o main main.cpp
./main
rm main

View file

@ -0,0 +1 @@
kmitlcomputerengineeringsectwo

74
karaca-encode/uninstall.sh Executable file
View file

@ -0,0 +1,74 @@
#!/bin/bash
DIR1=$HOME/.local/bin
DIR2=/usr/local/bin
APPNAME=$(basename $PWD)
clear
if [[ "${EUID}" -eq 0 ]]; then
echo " "
echo "คุณกำลังใช้สิทธิ์ Root! ต้องการถอนการติดตั้งจาก $DIR2 หรือไม่"
echo " "
echo "1) ไม่"
echo "2) ใช่"
echo " "
read -p "ใส่คำตอบของคุณ [1] : " UNINSTALLCHOICE
until [[ -z "$UNINSTALLCHOICE" || "$UNINSTALLCHOICE" =~ ^[1-2]$ ]]; do
printf "\n$UNINSTALLCHOICE: ค่าที่ใส่ไม่ถูกต้อง\n\n"
read -p "ใส่คำตอบของคุณ [1] : " UNINSTALLCHOICE
done
case "$UNINSTALLCHOICE" in
1|"")
exit
;;
2)
DIR=$DIR2
if [[ -f "$DIR/$APPNAME" ]]; then
echo "กำลังถอนการติดตั้ง $APPNAME จาก $DIR"
rm $DIR/$APPNAME
else
echo "ไม่สามารถถอนการติดตั้งได้เนื่องจากยังไม่ได้ติดตั้งแอปพลิเคชันใน $DIR"
fi
;;
esac
else
echo " "
echo "เลือกผู้ใช้ที่ต้องการถอนติดตั้งให้"
echo " "
echo "1) $USER ($DIR1)"
echo "2) ทุกคน ($DIR2)"
echo " "
read -p "ใส่คำตอบของคุณ : " UNINSTALLCHOICE
until [[ -z "$UNINSTALLCHOICE" || "$UNINSTALLCHOICE" =~ ^[1-2]$ ]]; do
echo "$UNINSTALLCHOICE: ค่าที่ใส่ไม่ถูกต้อง"
read -p "ใส่คำตอบของคุณ :" UNINSTALLCHOICE
done
case "$UNINSTALLCHOICE" in
1)
DIR=$DIR1
if [[ -f "$DIR/$APPNAME" ]]; then
printf "\nกำลังถอนการติดตั้ง $APPNAME จาก $DIR\n"
rm $DIR/$APPNAME
else
printf "\nไม่สามารถถอนการติดตั้งได้เนื่องจากยังไม่ได้ติดตั้งแอปพลิเคชันใน $DIR"
exit
fi
;;
2)
DIR=$DIR2
if [[ -f "$DIR/$APPNAME" ]]; then
printf "\nกำลังถอนการติดตั้ง $APPNAME จาก $DIR\n"
printf "\nกรุณาใส่รหัสผ่าน sudo หากถูกถามขณะถอนการติดตั้ง\n\n"
sudo rm $DIR/$APPNAME
else
printf "\nไม่สามารถถอนการติดตั้งได้เนื่องจากยังไม่ได้ติดตั้งแอปพลิเคชันใน $DIR"
exit
fi
;;
"")
exit
;;
esac
fi
printf "\nการถอนการติดตั้ง $APPNAME จาก $DIR เสร็จสมบูรณ์\n"