import java.io.*;
import java.util.*;
import java.net.*;
//_____________________________________________________________
public class constants
{ 
   int total = 0;
   int[] kpos = new int[113];
   StringBuffer bufshow = new StringBuffer();
   String[] file1 = data.getFile("constants.txt").split("\r\n");
   String[] file2 = data.getFile("positions.txt").split("\r\n");
   String[] file2b = data.getFile("words.txt").split("\r\n");
   String[] file3 = file2[0].split(",");
   String[] file4 = file2[1].split(",");
   String[] file3b = file2b[0].split(",");
   String[] file4b = file2b[1].split(",");
   String[] name = new String[file1.length];
   String[] num = new String[file1.length];
   String[] show2 = new String[file1.length];

//_____________________________________________________________
public static final void main(String[] args) throws Exception
{
   constants bnk = new constants();
   bnk.setup();
   bnk.start(args);
}
//_____________________________________________________________
constants() throws Exception 
{
}
//___________________________________________________________________________
void start(String[] args)
{
   long t1 = System.nanoTime();
   bufshow.append("<table border='1'>\r\n");
   bufshow.append("<tr><th>significant<br>digits</th><th>order</th>");
   bufshow.append("<th>Genesis 1:1<br>words</th><th>addition</th>");
   bufshow.append("<th>John 1:1<br>words</th><th>addition</th>");
   bufshow.append("<th>division</th><th>actual</th><th>constant</th></tr>\r\n");
   for (int i = 1; i >= 1; i--)
   {
      System.out.println("------------------- " + i + "----------------------");
      start3(i);
   }
   StringBuffer bufshow3 = new StringBuffer();
   for (int i = 0; i < show2.length; i++)
   {
      bufshow3.append(show2[i]);
   }
   String[] out = bufshow3.toString().split("\r\n");
   Arrays.sort(out);
   for (int i = out.length - 1; i >= 0; i--)
   {
      bufshow.append(out[i] + "\r\n");    
   }
   bufshow.append("</table>\r\n");
   data.saveFile("constants.htm",bufshow.toString(),false);
   long t2 = System.nanoTime();
   System.out.println((t2-t1)/1e9);
}
//___________________________________________________________________________
void start3(int kt)
{
   int ib = -1;
   int ic = -1;
   int jb = -1;
   int jc = -1;
   long t3 = System.nanoTime();
   for (int i = -1; i < 7; i++)
   {
      for (int j = -1; j < 17; j++)
      {
         System.out.println("======================================");
         long t4 = System.nanoTime();
         System.out.println(i + " " + j + " seconds = " + ((t4-t3)/1e9));
         t3 = t4;
         System.out.println("______________________________________");
         for (ib = -1; ib < 7; ib++)
         {
            for (jb = -1; jb < 17; jb++)
            {
               for (ic = -1; ic < 7; ic++)
               {
                  for (jc = -1; jc < 17; jc++)
                  { 
                     start2(kt,i,j,ib,jb, ic, jc);
                  }
               }
            }
         }
      }
   }
   System.out.println(total);
}
//___________________________________________________________________________
void setup()
{
   for (int k = 0; k < file1.length; k++)
   {
      int pos1 = file1[k].indexOf("=");
      int pos2 = file1[k].indexOf(";");
      int pos3 = file1[k].indexOf("=",pos2);
      int pos4 = file1[k].indexOf(";",pos3);
      name[k] = file1[k].substring(pos3+2,pos4-1);
      if ((pos1 < 0) | (pos2 < 0)) continue;
      num[k] = file1[k].substring(pos1+1,pos2);
   }
}
//___________________________________________________________________________
void start2(int tm, int t2, int t3, int t2b, int t3b, int t2c, int t3c)
{
   int tt2 = 0;
   if (t2 >= 0) tt2 = Integer.parseInt(file3[t2]);
   int tt3 = 0;
   if (t3 >= 0) tt3 = Integer.parseInt(file4[t3]);
   int tt2b = 0;
   if (t2b >= 0) tt2b = Integer.parseInt(file3[t2b]);
   int tt3b = 0;
   if (t3b >= 0) tt3b = Integer.parseInt(file4[t3b]);
   int tt2c = 0;
   if (t2c >= 0) tt2c = Integer.parseInt(file3[t2c]);
   int tt3c = 0;
   if (t3c >= 0) tt3c = Integer.parseInt(file4[t3c]);
   for(int i = 0; i < file3.length; i++)
   {
      double vi = (double)(Integer.parseInt(file3[i]) + tt2 + tt2b + tt2c);
      for (int j = 0; j < file4.length; j++)
      {
         String ssa = Integer.toString(i+1);
         if (t2 >= 0) ssa += "+" + Integer.toString(t2+1);
         if (t2b >= 0) ssa += "+" + Integer.toString(t2b+1);
         if (t2c >= 0) ssa += "+" + Integer.toString(t2c+1);
         String ssb = Integer.toString(j+1);
         if (t3 >= 0) ssb += "+" + Integer.toString(t3+1);
         if (t3b >= 0) ssb += "+" + Integer.toString(t3b+1);
         if (t3c >= 0) ssb += "+" + Integer.toString(t3c+1);
         String ssastr = file3b[i];
         if (t2 >= 0) ssastr += " " + file3b[t2];
         if (t2b >= 0) ssastr += " " + file3b[t2b];
         if (t2c >= 0) ssastr += " " + file3b[t2c];
         String ssbstr = file4b[j];
         if (t3 >= 0) ssbstr += " " + file4b[t3];
         if (t3b >= 0) ssbstr += " " + file4b[t3b];
         if (t3c >= 0) ssbstr += " " + file4b[t3c];
         double vj = (double)(Integer.parseInt(file4[j]) + tt3 + tt3b + tt3c);
         double kk1 = vi / vj;
         double kk2 = vj / vi;
         String sk1 = Double.toString(kk1).replace(".","");
         String sk2 = Double.toString(kk2).replace(".","");
         for (int k = 0; k < file1.length; k++)
         {
            for (int t = 10; t > kpos[k]; t--)
            {
               if (t > sk1.length()) continue;
               if (t > num[k].length()) continue;
               if (sk1.substring(0,t).equals(num[k].substring(0,t)))
               {
                  {
                     total++;
                     int vii = (int)vi;
                     int vjj = (int)vj;
                     String sii = Integer.toString(vii);
                     String sjj = Integer.toString(vjj);
                     String sk1b = "<a href=mathematics.php?type=divide&num1=" + sii + "&num2=" + sjj + "'>" + sk1 + "</a>";
                     StringBuffer bufshow2 = new StringBuffer();
                     System.out.println(t + " Genesis/John " + ssa + "(" + vi + ") " + ssb + "(" + vj + ") " + sk1 + " " + num[k] + " " + name[k]);
                     bufshow2.append("<tr>");
                     bufshow2.append("<td>" + t + "</td>");
                     bufshow2.append("<td>Genesis 1:1<br>over<br>John 1:1</td>");
                     bufshow2.append("<td>" + ssa + "</td>");
                     bufshow2.append("<td>" + ssastr + "</td>");
                     bufshow2.append("<td>" + (int)vi + "</td>");
                     bufshow2.append("<td>" + ssb + "</td>");
                     bufshow2.append("<td>" + ssbstr + "</td>");
                     bufshow2.append("<td>" + (int)vj + "</td>");
                     bufshow2.append("<td>" + sk1b + "</td>");
                     bufshow2.append("<td>" + num[k] + "</td>");
                     bufshow2.append("<td>" + name[k] + "</td>");
                     bufshow2.append("</tr>\r\n");
                     show2[k] = bufshow2.toString();
                     kpos[k] = t;
                     break;
                  }
               }
            }
            for (int t = 10; t > kpos[k]; t--)
            {
               if (t > sk2.length()) continue;
               if (t > num[k].length()) continue;
               if (sk2.substring(0,t).equals(num[k].substring(0,t)))
               {
                  {
                     total++;
                     int vii = (int)vi;
                     int vjj = (int)vj;
                     String sii = Integer.toString(vii);
                     String sjj = Integer.toString(vjj);
                     String sk2b = "<a href=mathematics.php?type=divide&num1=" + sjj + "&num2=" + sii + "'>" + sk2 + "</a>";
                     StringBuffer bufshow2 = new StringBuffer();
                     System.out.println(t + " John/Genesis " + ssa + "(" + vi + ") " + ssb + "(" + vj + ") " + sk2 + " " + num[k] + " " + name[k]);
                     bufshow2.append("<tr>");
                     bufshow2.append("<td>" + t + "</td>");
                     bufshow2.append("<td>John 1:1<br>over<br>Genesis 1:1</td>");
                     bufshow2.append("<td>" + ssa + "</td>");
                     bufshow2.append("<td>" + ssastr + "</td>");
                     bufshow2.append("<td>" + (int)vi + "</td>");
                     bufshow2.append("<td>" + ssb + "</td>");
                     bufshow2.append("<td>" + ssbstr + "</td>");
                     bufshow2.append("<td>" + (int)vj + "</td>");
                     bufshow2.append("<td>" + sk2b + "</td>");
                     bufshow2.append("<td>" + num[k] + "</td>");
                     bufshow2.append("<td>" + name[k] + "</td>");
                     bufshow2.append("</tr>\r\n");
                     show2[k] = bufshow2.toString();
                     kpos[k] = t;
                     break;
                  }
               }
            }
         }
      }
   }
}
}//__________________________________________________________________________
