Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.*;
- import java.util.*;
- import java.util.Random;
- import java.util.Scanner;
- public class KardanoClass {
- private static void exists(String fileName) throws FileNotFoundException {
- File file = new File(fileName);
- if (!file.exists()){
- throw new FileNotFoundException(file.getName());
- }
- }
- public static String read(String fileName) throws FileNotFoundException {
- //Этот спец. объект для построения строки
- StringBuilder sb = new StringBuilder();
- exists(fileName);
- try {
- //Объект для чтения файла в буфер
- File file = null;
- BufferedReader in = new BufferedReader(new FileReader( file.getAbsoluteFile()));
- try {
- //В цикле построчно считываем файл
- String s;
- while ((s = in.readLine()) != null) {
- sb.append(s);
- sb.append("\n");
- }
- } finally {
- //Также не забываем закрыть файл
- in.close();
- }
- } catch(IOException e) {
- throw new RuntimeException(e);
- }
- //Возвращаем полученный текст с файла
- return sb.toString();
- }
- public static void write(String fileName, String text) {
- //Определяем файл
- File file = new File(fileName);
- try {
- //проверяем, что если файл не существует то создаем его
- if(!file.exists()){
- file.createNewFile();
- }
- //PrintWriter обеспечит возможности записи в файл
- PrintWriter out = new PrintWriter(file.getAbsoluteFile());
- try {
- //Записываем текст у файл
- out.print(text);
- } finally {
- //После чего мы должны закрыть файл
- //Иначе файл не запишется
- out.close();
- }
- } catch(IOException e) {
- throw new RuntimeException(e);
- }
- }
- public static void fillSquare()
- {
- boolean[][] cell = new boolean[0][];
- for (int i = 0; i < 4; ++i) {
- for (int j = 0; j < 4; ++j) {
- cell[i][j] = false;
- }
- }
- cell[0][2] = true;
- cell[1][1] = true;
- cell[3][0] = true;
- cell[3][2] = true;
- }
- public static void RotateMask()
- {
- boolean[][] tmpMask = new boolean[4][4];
- boolean[][] cell = new boolean[0][];
- for (int i = 0; i<4; i++){
- for (int j = 0; j<4; j++) {
- tmpMask[j][3 - i] = cell[i][j];
- }
- }
- for (int i = 0; i<4; i++) {
- for (int j = 0; j < 4; j++) {
- cell[i][j] = tmpMask[i][j];
- }
- }
- }
- public static void WriteBlock(String block)
- {
- int stringIterator = 0;
- for (int i = 0; i<4; i++)
- for (int j = 0; j<4; j++)
- {
- if (stringIterator > 3)
- break;
- boolean[][] cell = new boolean[0][];
- if (cell[i][j] == true)
- {
- double[][] code = new double[0][];
- code[i][j] = block.charAt(stringIterator);
- stringIterator++;
- }
- }
- }
- public static boolean EncodeWord(String inputStr)
- {
- if (inputStr.length() > 16)
- return false;
- int position = 0;
- fillSquare();
- while (inputStr.length() != 16)
- {
- inputStr += '#';
- }
- ArrayList<String> blockSeries= new ArrayList <String>();
- for (int i = 0; i < 4; ++i) {
- blockSeries.add(inputStr.substring(i * 4, 4));
- }
- for (String curBlock : blockSeries)
- {
- WriteBlock(curBlock);
- RotateMask();
- }
- return true;
- }
- public static String DecodeWord(String inputStr) {
- if (inputStr.length() != 16)
- return "";
- int position = 0;
- fillSquare();
- ArrayList<String> blockSeries = new ArrayList<String>();
- for (int i = 0; i < 4; ++i)
- blockSeries.add(inputStr.substring(i * 4, 4));
- double[][] code = new double[4][];
- for (int i = 0; i < 4; ++i) {
- code[i] = new double[4];
- for (int j = 0; j < 4; ++j) {
- code[i][j] = blockSeries.get(i).charAt(j);
- }
- }
- ArrayList<String> resultSeries= new ArrayList <String>();
- for (int i = 0; i < 4; ++i)
- {
- resultSeries.add(ReadBlock());
- RotateMask();
- }
- return CompileStr(resultSeries);
- }
- public static String ReadBlock()
- {
- String result = "";
- boolean[][] mask = new boolean[0][];
- String[][] code = new String[0][];
- for (int i = 0; i < 4; ++i)
- for (int j = 0; j < 4; ++j)
- if (mask[i][j] == true)
- result += code[i][j];
- return result;
- }
- public static void InitCode()
- {
- double[][] code = new double[0][];
- for (int i = 0; i < 4; ++i)
- for (int j = 0; j < 4; ++j)
- code[i][j] = new Random().nextInt(254) + 1;
- }
- public static String CompileStr(ArrayList<String> inputSeries)
- {
- String result = "";
- for (String curStr : inputSeries)
- {
- result += curStr;
- }
- return result;
- }
- public static boolean EmptyState(int position)
- {
- if (position >= 4){
- return true;
- }
- return false;
- }
- public static String GetCodeWord()
- {
- String result = "";
- String[][] code = new String[0][];
- for (int i = 0; i < 4; ++i)
- for (int j = 0; j < 4; ++j)
- result += code[i][j];
- return result;
- }
- public static void main (String[]args){
- Scanner in = new Scanner(System.in);
- System.out.print("Введите строку: ");
- String inputStr = in.nextLine();
- if (EncodeWord(inputStr)){
- System.out.print(GetCodeWord().toString());
- }
- else{
- System.out.print("Encode error.");
- }
- }
- }
- //index = new Random().nextInt(62);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement