Advertisement
Guest User

Kardan_for_Pavel

a guest
Mar 23rd, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.72 KB | None | 0 0
  1. import java.io.*;
  2. import java.util.*;
  3. import java.util.Random;
  4. import java.util.Scanner;
  5.  
  6.  
  7. public class KardanoClass {
  8.  
  9.     private static void exists(String fileName) throws FileNotFoundException {
  10.         File file = new File(fileName);
  11.         if (!file.exists()){
  12.             throw new FileNotFoundException(file.getName());
  13.         }
  14.     }
  15.  
  16.     public static String read(String fileName) throws FileNotFoundException {
  17.         //Этот спец. объект для построения строки
  18.         StringBuilder sb = new StringBuilder();
  19.  
  20.         exists(fileName);
  21.  
  22.         try {
  23.             //Объект для чтения файла в буфер
  24.             File file = null;
  25.             BufferedReader in = new BufferedReader(new FileReader( file.getAbsoluteFile()));
  26.             try {
  27.                 //В цикле построчно считываем файл
  28.                 String s;
  29.                 while ((s = in.readLine()) != null) {
  30.                     sb.append(s);
  31.                     sb.append("\n");
  32.                 }
  33.             } finally {
  34.                 //Также не забываем закрыть файл
  35.                 in.close();
  36.             }
  37.         } catch(IOException e) {
  38.             throw new RuntimeException(e);
  39.         }
  40.  
  41.         //Возвращаем полученный текст с файла
  42.         return sb.toString();
  43.     }
  44.  
  45.     public static void write(String fileName, String text) {
  46.         //Определяем файл
  47.         File file = new File(fileName);
  48.  
  49.         try {
  50.             //проверяем, что если файл не существует то создаем его
  51.             if(!file.exists()){
  52.                 file.createNewFile();
  53.             }
  54.  
  55.             //PrintWriter обеспечит возможности записи в файл
  56.             PrintWriter out = new PrintWriter(file.getAbsoluteFile());
  57.  
  58.             try {
  59.                 //Записываем текст у файл
  60.                 out.print(text);
  61.             } finally {
  62.                 //После чего мы должны закрыть файл
  63.                 //Иначе файл не запишется
  64.                 out.close();
  65.             }
  66.         } catch(IOException e) {
  67.             throw new RuntimeException(e);
  68.         }
  69.     }
  70.  
  71.  
  72.  
  73.     public static void fillSquare()
  74.     {
  75.         boolean[][] cell = new boolean[0][];
  76.         for (int i = 0; i < 4; ++i) {
  77.             for (int j = 0; j < 4; ++j) {
  78.                 cell[i][j] = false;
  79.             }
  80.         }
  81.         cell[0][2] = true;
  82.         cell[1][1] = true;
  83.         cell[3][0] = true;
  84.         cell[3][2] = true;
  85.     }
  86.  
  87.     public static void RotateMask()
  88.     {
  89.         boolean[][] tmpMask = new boolean[4][4];
  90.         boolean[][] cell = new boolean[0][];
  91.         for (int i = 0; i<4; i++){
  92.             for (int j = 0; j<4; j++) {
  93.                 tmpMask[j][3 - i] = cell[i][j];
  94.             }
  95.         }
  96.         for (int i = 0; i<4; i++) {
  97.             for (int j = 0; j < 4; j++) {
  98.                 cell[i][j] = tmpMask[i][j];
  99.             }
  100.         }
  101.     }
  102.     public static void WriteBlock(String block)
  103.     {
  104.         int stringIterator = 0;
  105.         for (int i = 0; i<4; i++)
  106.             for (int j = 0; j<4; j++)
  107.             {
  108.                 if (stringIterator > 3)
  109.                     break;
  110.                 boolean[][] cell =  new boolean[0][];
  111.                 if (cell[i][j] == true)
  112.                 {
  113.                     double[][] code = new double[0][];
  114.                     code[i][j] = block.charAt(stringIterator);
  115.                     stringIterator++;
  116.                 }
  117.             }
  118.     }
  119.  
  120.     public static   boolean EncodeWord(String inputStr)
  121.     {
  122.  
  123.         if (inputStr.length() > 16)
  124.             return false;
  125.         int position = 0;
  126.         fillSquare();
  127.         while (inputStr.length() != 16)
  128.         {
  129.             inputStr += '#';
  130.         }
  131.         ArrayList<String> blockSeries= new ArrayList <String>();
  132.         for (int i = 0; i < 4; ++i) {
  133.             blockSeries.add(inputStr.substring(i * 4, 4));
  134.         }
  135.         for (String curBlock : blockSeries)
  136.         {
  137.             WriteBlock(curBlock);
  138.             RotateMask();
  139.         }
  140.         return true;
  141.     }
  142.  
  143.     public static String DecodeWord(String inputStr) {
  144.         if (inputStr.length() != 16)
  145.             return "";
  146.         int position = 0;
  147.         fillSquare();
  148.         ArrayList<String> blockSeries = new ArrayList<String>();
  149.         for (int i = 0; i < 4; ++i)
  150.             blockSeries.add(inputStr.substring(i * 4, 4));
  151.         double[][] code = new double[4][];
  152.         for (int i = 0; i < 4; ++i) {
  153.             code[i] = new double[4];
  154.             for (int j = 0; j < 4; ++j) {
  155.                 code[i][j] = blockSeries.get(i).charAt(j);
  156.             }
  157.         }
  158.         ArrayList<String> resultSeries= new ArrayList <String>();
  159.         for (int i = 0; i < 4; ++i)
  160.         {
  161.             resultSeries.add(ReadBlock());
  162.             RotateMask();
  163.         }
  164.         return CompileStr(resultSeries);
  165.     }
  166.  
  167.     public static String ReadBlock()
  168.     {
  169.         String result = "";
  170.         boolean[][] mask = new boolean[0][];
  171.         String[][] code = new String[0][];
  172.         for (int i = 0; i < 4; ++i)
  173.             for (int j = 0; j < 4; ++j)
  174.                 if (mask[i][j] == true)
  175.                     result += code[i][j];
  176.         return result;
  177.     }
  178.    
  179.     public static void InitCode()
  180.     {
  181.         double[][] code = new double[0][];
  182.         for (int i = 0; i < 4; ++i)
  183.             for (int j = 0; j < 4; ++j)
  184.                 code[i][j] = new Random().nextInt(254)  + 1;
  185.     }
  186.  
  187.     public static String CompileStr(ArrayList<String>  inputSeries)
  188.     {
  189.         String result = "";
  190.         for (String curStr : inputSeries)
  191.         {
  192.             result += curStr;
  193.         }
  194.         return result;
  195.     }
  196.  
  197.     public static boolean EmptyState(int position)
  198.     {
  199.         if  (position >= 4){
  200.         return true;
  201.     }
  202.         return false;
  203.     }
  204.  
  205.     public static String GetCodeWord()
  206.     {
  207.         String result = "";
  208.         String[][] code = new String[0][];
  209.         for (int i = 0; i < 4; ++i)
  210.             for (int j = 0; j < 4; ++j)
  211.                 result += code[i][j];
  212.         return result;
  213.     }
  214.     public static void main (String[]args){
  215.         Scanner in = new Scanner(System.in);
  216.         System.out.print("Введите строку: ");
  217.         String inputStr = in.nextLine();
  218.         if (EncodeWord(inputStr)){
  219.             System.out.print(GetCodeWord().toString());
  220.         }
  221.         else{
  222.             System.out.print("Encode error.");
  223.         }
  224.  
  225.     }
  226. }
  227.  //index = new Random().nextInt(62);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement