import java.io.*;
import java.util.*;
import java.math.*;
import java.net.*;
import java.sql.*;
import java.text.*;
//_____________________________________________________________
public class genpiephi
{ 
   StringBuffer bufall = new StringBuffer();
   int range = 100;
   boolean production = false;
   private Connection connect = null;
   private Statement statement = null;
   private PreparedStatement preparedStatement = null;
   private ResultSet resultSet = null;

   String gen11a  = "BRAJYO BRA ALHYM AO HJMYM VAO HARE"; 
   String gen11 = gen11a;
   String pi = getFile2("pi.lst");
   String e = getFile2("e.lst");
   String phi = getFile2("phi.lst");
   boolean add = false;
   boolean blank = false;
   boolean shift = false;
   boolean place = false;
   boolean reverse = false;
   boolean show = true;
   int paircnt = 0;
   int paircnt2 = 0;
   int[] pair = new int[4];
   int paircnttot = 0;
   int paircnt2tot = 0;
//_____________________________________________________________
public static final void main(String[] args) throws Exception
{
   genpiephi bnk = new genpiephi();
   bnk.startit(args);
}
//_____________________________________________________________
void startit(String[] args) throws Exception
{
   System.out.println("This prove pattern 79");
   String name = "pi";
   if (args.length == 0)
   { 
      System.out.println ("java genpiephi [name]");
      System.out.println ("where [name] is the name of the '.txt' file where your sentence is located will run all OR...");
      System.out.println("java database");
      System.out.println("if you have sentences stored in a database and define ids in 'database.id' OR ");
      System.out.println("java genpiephi [name] [iterations] [add] [space] [shift] [place] [reverse] [sentence] [all]");
      System.out.println("[name] must be either 'pi', 'e', 'phi', 'count', 'position', or a number for the seed of a random number");
      System.out.println("[iterations] is 1 to n, how many times to proceed forward (n)");
      System.out.println("[add] starts 'a' for true and means that offsets are additive within the constant");
      System.out.println("[blanks] starts 'b' for true and means that there is no blank spaces between the words of Genesis 1:1");
      System.out.println("[shift] starts 's' for true and means that the values are shifted one to the left to capture the first digit of the constant");
      System.out.println("[place] starts 'p' for true and means to use Hebrew place instead of Hebrew value of the letters of Genesis 1:1");
      System.out.println("[reverse] starts with 'r' and reveres Genesis 1:1.");
      System.out.println("[sentence] is the name of the '.txt' file you want to replace Genesis 1:1 with. Type 'keep' to use Genesis 1:1.");
      System.out.println("[all] means run all sixteen methods and display only that last result for each i.e. number(count).");
   }
   int count = 5000;
   if (args.length > 1) count = Integer.parseInt(args[1]);
   if (args.length > 0) 
   {
      name = args[0];
      boolean found = false;
      if (name.equals("pi")) found = true;
      if (name.equals("e")) found = true;
      if (name.equals("phi")) found = true;
      if (name.equals("count")) found = true;
      if (name.equals("position")) found = true;
      if (name.equals("all")) found = true;
      if (isnum(name)) found = true;
      if (name.equals("database"))
      {
         dosentence();
         return;
      }
      if (name.equals("combine"))
      {
         startmulti(name,count,2);
         System.out.println(bufall.toString());
         data.saveFile("outall.txt",bufall.toString(),true);
         return;
      }
      if (name.equals("keep"))
      {
         startmulti(name,count,1);
         System.out.println(bufall.toString());
         data.saveFile("outall.txt",bufall.toString(),true);
         return;
      }
      if (name.equals("combine2"))
      {
         range = 1000;
         startmulti(name,count,2);
         System.out.println(bufall.toString());
         data.saveFile("outall.txt",bufall.toString(),true);
         return;
      }
      if (name.equals("keep2"))
      {
         range = 1000;
         startmulti(name,count,1);
         System.out.println(bufall.toString());
         data.saveFile("outall.txt",bufall.toString(),true);
         return;
      }
      if (name.equals("combine3"))
      {
         range = 10000;
         startmulti(name,count,2);
         System.out.println(bufall.toString());
         data.saveFile("outall.txt",bufall.toString(),true);
         return;
      }
      if (name.equals("keep3"))
      {
         range = 10000;
         startmulti(name,count,1);
         System.out.println(bufall.toString());
         data.saveFile("outall.txt",bufall.toString(),true);
         return;
      }
      if (!found)
      {
         startmulti(name, count,1);
         System.out.println(bufall.toString());
         data.saveFile("outall.txt",bufall.toString(),true);
         return;
      }
   }
   if (args.length > 2) if (args[2].toLowerCase().substring(0,1).equals("t")) { add = true; System.out.println(" add "); }
   if (args.length > 3) if (args[3].toLowerCase().substring(0,1).equals("t")) { blank = true; System.out.println(" blank "); }
   if (args.length > 4) if (args[4].toLowerCase().substring(0,1).equals("t")) { shift = true; System.out.println(" shift "); }
   if (args.length > 5) if (args[5].toLowerCase().substring(0,1).equals("t")) { place = true; System.out.println(" place "); }
   if (args.length > 6) if (args[6].toLowerCase().substring(0,1).equals("t")) { reverse = true; System.out.println(" reverse "); }

   if (args.length > 2) if (args[2].toLowerCase().substring(0,1).equals("a")) { add = true; System.out.println(" add "); }
   if (args.length > 2) if (args[2].toLowerCase().substring(0,1).equals("b")) { blank = true; System.out.println(" blank "); }
   if (args.length > 2) if (args[2].toLowerCase().substring(0,1).equals("s")) { shift = true; System.out.println(" shift "); }
   if (args.length > 2) if (args[2].toLowerCase().substring(0,1).equals("p")) { place = true; System.out.println(" place "); }
   if (args.length > 2) if (args[2].toLowerCase().substring(0,1).equals("r")) { reverse = true; System.out.println(" reverse "); }

   if (args.length > 3) if (args[3].toLowerCase().substring(0,1).equals("a")) { add = true; System.out.println(" add "); }
   if (args.length > 3) if (args[3].toLowerCase().substring(0,1).equals("b")) { blank = true; System.out.println(" blank "); }
   if (args.length > 3) if (args[3].toLowerCase().substring(0,1).equals("s")) { shift = true; System.out.println(" shift "); }
   if (args.length > 3) if (args[3].toLowerCase().substring(0,1).equals("p")) { place = true; System.out.println(" place "); }
   if (args.length > 3) if (args[3].toLowerCase().substring(0,1).equals("r")) { reverse = true; System.out.println(" reverse "); }

   if (args.length > 4) if (args[4].toLowerCase().substring(0,1).equals("a")) { add = true; System.out.println(" add "); }
   if (args.length > 4) if (args[4].toLowerCase().substring(0,1).equals("b")) { blank = true; System.out.println(" blank "); }
   if (args.length > 4) if (args[4].toLowerCase().substring(0,1).equals("s")) { shift = true; System.out.println(" shift "); }
   if (args.length > 4) if (args[4].toLowerCase().substring(0,1).equals("p")) { place = true; System.out.println(" place "); }
   if (args.length > 4) if (args[4].toLowerCase().substring(0,1).equals("r")) { reverse = true; System.out.println(" reverse "); }

   if (args.length > 5) if (args[5].toLowerCase().substring(0,1).equals("a")) { add = true; System.out.println(" add "); }
   if (args.length > 5) if (args[5].toLowerCase().substring(0,1).equals("b")) { blank = true; System.out.println(" blank "); }
   if (args.length > 5) if (args[5].toLowerCase().substring(0,1).equals("s")) { shift = true; System.out.println(" shift "); }
   if (args.length > 5) if (args[5].toLowerCase().substring(0,1).equals("p")) { place = true; System.out.println(" place "); }
   if (args.length > 5) if (args[5].toLowerCase().substring(0,1).equals("r")) { reverse = true; System.out.println(" reverse "); }

   if (args.length > 6) if (args[6].toLowerCase().substring(0,1).equals("a")) { add = true; System.out.println(" add "); }
   if (args.length > 6) if (args[6].toLowerCase().substring(0,1).equals("b")) { blank = true; System.out.println(" blank "); }
   if (args.length > 6) if (args[6].toLowerCase().substring(0,1).equals("s")) { shift = true; System.out.println(" shift "); }
   if (args.length > 6) if (args[6].toLowerCase().substring(0,1).equals("p")) { place = true; System.out.println(" place "); }
   if (args.length > 6) if (args[6].toLowerCase().substring(0,1).equals("r")) { reverse = true; System.out.println(" reverse "); }

   if (args.length > 7) if (!args[7].equals("keep")) gen11 = data.getFile2(args[7] + ".txt");
   if (args.length > 8) startall(name,count);
   else start(name,count);
   System.out.print(bufall.toString());
   data.saveFile("outall.txt",bufall.toString(),true);
}
//___________________________________________________________________________
void startmulti(String name, int count, int type) throws Exception
{
   if ((!name.equals("keep")) & (!name.equals("combine")) & (!name.equals("keep2")) & (!name.equals("combine2"))& (!name.equals("keep3")) & (!name.equals("combine3")))
   {
      gen11 = data.getFile2(name + ".txt");
   }
   if (type == 1) startmany(gen11,count);
   else startmany2(gen11,count);
}
//___________________________________________________________________________
String startmany(String gen11, int count) throws Exception
{
   long t1 = System.nanoTime();
    gen11a = gen11;
    bufall.append(gen11 + "\r\n");
    startall("pi",count);
    startall("e",count);
    startall("phi",count);
    startall("count",count);
    startall("position",count);
    pair[0] = paircnttot;
    pair[1] = paircnt2tot;
    bufall.append(gen11 + "\r\n");
    for (int i = 0; i < pair.length; i++)
    {
      System.out.print(pair[i] + " ");
    }
    bufall.append("\r\n\r\n");
    bufall.append("number of God's prime pairs and multiples using constants: " + pair[0] + "\r\n");
    bufall.append("number of secular prime pairs and multiples using constants: " + pair[1] + "\r\n");
    double aprob = allprob(pair[0],pair[1],pair[2],pair[3]);
    bufall.append("overall derivation factor: " + aprob + "\r\n");
    long t2 = System.nanoTime();
    bufall.append("seconds = " + ((t2-t1)/1e9) + "\r\n");
    StringBuffer buf = new StringBuffer();
    buf.append(pair[0] + "," + pair[1] + "," + pair[2] + "," + pair[3] + ",");
    buf.append(aprob);
    return(buf.toString());
}
//___________________________________________________________________________
String startmany2(String gen11, int count) throws Exception
{
   long t1 = System.nanoTime();
    gen11a = gen11;
    System.out.println(gen11);
    startall("pie",count);
    startall("piphi",count);
    startall("ephi",count);
    startall("piephi",count);
    startall("both",count);
    pair[0] = paircnttot;
    pair[1] = paircnt2tot;
    bufall.append(gen11 + "\r\n");
    for (int i = 0; i < pair.length; i++)
    {
      bufall.append(pair[i] + " ");
    }
    bufall.append("\r\n");
    bufall.append("number of God's prime pairs and multiples using constants: " + pair[0] + "\r\n");
    bufall.append("number of secular prime pairs and multiples using constants: " + pair[1] + "\r\n");
    double aprob = allprob(pair[0],pair[1],pair[2],pair[3]);
    bufall.append("overall derivation factor: " + aprob + "\r\n");
    long t2 = System.nanoTime();
    bufall.append("seconds = " + ((t2-t1)/1e9) + "\r\n");
    StringBuffer buf = new StringBuffer();
    buf.append(pair[0] + "," + pair[1] + "," + pair[2] + "," + pair[3] + ",");
    buf.append(aprob);
    return(buf.toString());
}
//___________________________________________________________________________
double allprob(int p1, int p2, int p3, int p4) throws Exception
{
    if (p2 == 0) p2 = 1;
    if (p3 == 0) p3 = 1;
    if (p4 == 0) p4 = 1;
    double prob1 = probability(p1,160,160/p2);
    return(prob1);
}
//___________________________________________________________________________
void startall(String name, int count) throws Exception
{
   bufall.append(name + " " + count + "\r\n");
   show = false;
   paircnt = 0;
   paircnt2 = 0;
   reverse = false; add = false; blank = false; shift = false; place = false; start(name, count);
   reverse = false; add = false; blank = false; shift = false; place = true; start(name, count);
   reverse = false; add = false; blank = false; shift = true; place = false; start(name, count);
   reverse = false; add = false; blank = false; shift = true; place = true; start(name, count);
   reverse = false; add = false; blank = true; shift = false; place = false; start(name, count);
   reverse = false; add = false; blank = true; shift = false; place = true; start(name, count);
   reverse = false; add = false; blank = true; shift = true; place = false; start(name, count);
   reverse = false; add = false; blank = true; shift = true; place = true; start(name, count);
   reverse = false; add = true; blank = false; shift = false; place = false; start(name, count);
   reverse = false; add = true; blank = false; shift = false; place = true; start(name, count);
   reverse = false; add = true; blank = false; shift = true; place = false; start(name, count);
   reverse = false; add = true; blank = false; shift = true; place = true; start(name, count);
   reverse = false; add = true; blank = true; shift = false; place = false; start(name, count);
   reverse = false; add = true; blank = true; shift = false; place = true; start(name, count);
   reverse = false; add = true; blank = true; shift = true; place = false; start(name, count);
   reverse = false; add = true; blank = true; shift = true; place = true; start(name, count);
   reverse = true; add = false; blank = false; shift = false; place = false; start(name, count);
   reverse = true; add = false; blank = false; shift = false; place = true; start(name, count);
   reverse = true; add = false; blank = false; shift = true; place = false; start(name, count);
   reverse = true; add = false; blank = false; shift = true; place = true; start(name, count);
   reverse = true; add = false; blank = true; shift = false; place = false; start(name, count);
   reverse = true; add = false; blank = true; shift = false; place = true; start(name, count);
   reverse = true; add = false; blank = true; shift = true; place = false; start(name, count);
   reverse = true; add = false; blank = true; shift = true; place = true; start(name, count);
   reverse = true; add = true; blank = false; shift = false; place = false; start(name, count);
   reverse = true; add = true; blank = false; shift = false; place = true; start(name, count);
   reverse = true; add = true; blank = false; shift = true; place = false; start(name, count);
   reverse = true; add = true; blank = false; shift = true; place = true; start(name, count);
   reverse = true; add = true; blank = true; shift = false; place = false; start(name, count);
   reverse = true; add = true; blank = true; shift = false; place = true; start(name, count);
   reverse = true; add = true; blank = true; shift = true; place = false; start(name, count);
   reverse = true; add = true; blank = true; shift = true; place = true; start(name, count);
   paircnttot += paircnt;
   paircnt2tot += paircnt2;
   bufall.append("God's prime pairs and multiples: " + paircnt + " / 32\r\n");
   bufall.append("Secular prime pairs and multiples: " + paircnt2 + " / 32\r\n");
}
//___________________________________________________________________________
void start(String name, int count) throws Exception
{
   bufall.append("");
   if (add) bufall.append("A");
   if (blank) bufall.append("B");
   if (shift) bufall.append("S");
   if (place) bufall.append("P");
   if (reverse) bufall.append("R");
   bufall.append("\t");
   int ttlmax = 0;
   int ttlpos = 0;
   gen11 = gen11a;
   if (blank) gen11 = gen11a.replace(" ","");
   if (reverse) gen11 = reverse(gen11);
   if (show) System.out.print("" + name + " (based on Genesis 1:1 numeric values) ");
   String valstr = getnum(name);
   if (show) System.out.print("[number(count)]");
   StringBuffer buf = new StringBuffer();
   int[] vals = new int[range];
   int maxposold = 0;
   int maxposcnt = 0;
   int track = 0;
   int i = 0;
   int[] ttl = new int[range];
   int[] ttl2 = new int[range];
   boolean done = false;
   boolean fixed = true;
   for (i = 0; i < count; i++)
   {
      if (track >= 1000)
      {
         if (show) System.out.print("\r\n." + i + "\r\n");
         track = 0;
      }
      track++;
      int pos = i % valstr.length();
      buf.append(valstr.substring(pos,pos+1));
      String used = buf.toString();
      for (int j = 1; j < range; j++)
      {
         BigInteger bg1 = new BigInteger(used);
         BigInteger bg2 = new BigInteger(Integer.toString(j));
         BigInteger bg3 = new BigInteger("0");
         BigInteger bg4 = bg1.mod(bg2);
         if (bg4.equals(bg3)) vals[j]++;
      } 
      double max = 0;
      int maxpos = 0;
      for (int j = 1; j < range; j++)
      {
         double per = 100.0 * vals[j] * j;
         if (per > max)
         {
            max = per;
            maxpos = j;
         }
      }
      if (show) System.out.print(maxpos + " ");
      if (maxposold != maxpos)
      {
         if (show) System.out.print("\r\n[" + maxposold + "(" + maxposcnt + ")]\r\n");
         maxposcnt = 0;
      }
      ttl[maxpos]++;
      ttlmax = 0;
      ttlpos = 0;
      maxposold = maxpos;
      for (int j = 0; j < ttl.length; j++)
      {
         if (ttl[j] > ttlmax)
         {
            ttlmax = ttl[j];
            ttlpos = j;
         }
      }
      ttl2[ttlpos]++;
      for (int j = 0; j < ttl2.length; j++)
      {
         if (ttl2[j] >= 3000)
         {
            fixed = false;
            //bufall.append("* ");
            //bufall.append("[[[" + j + "]]]");
            done = true;
            maxposold = j;
            break;
         }
      }
      if (done) break;
      maxposcnt++;
      if (maxposcnt >= 1000) 
      {
         done = true;
         break;
      }
   }
   if (show) System.out.println("");
   if (!done) System.out.print("\t\t");
   if (!fixed) bufall.append("[");
   else bufall.append(" ");
   bufall.append(maxposold);
   if (!fixed) bufall.append("]");
   else bufall.append(" ");
   int calc = (int)((double)maxposold * (double)vals[maxposold] / (double)i);
   bufall.append(calc);
   if (!done)
   {
      for (int j = 0; j < ttl.length; j++)
      {
         if (ttl[j] > ttlmax)
         {
            ttlmax = ttl[j];
            ttlpos = j;
         }
      }
      System.out.println("\r\n" + ttlmax + " " + ttlpos + "\r\n");
      if (maxposold != ttlpos)
      {
         System.out.println("\r\n\r\n\r\nBIG DEAL\r\n\r\n\r\n");
         maxposold = ttlpos;
      }
   }
   bufall.append(" \t");
   if (maxposold % 100 != 0)
   {
      if ((maxposold % 37 == 0) | ((maxposold % 100) % 37 == 0))  
      {
         bufall.append("* 37 ");
         paircnt++;
      }
      if ((maxposold % 73 == 0) | ((maxposold % 100) % 73 == 0)) 
      {
         bufall.append("* 73 ");
         paircnt++;
      }
      if ((maxposold % 52 == 0) | ((maxposold % 100) % 52 == 0))
      {
         bufall.append("  52 ");
         paircnt2++;
      }
   }
   if ((maxposold % 25 == 0) | ((maxposold % 100) % 25 == 0))
   {
      bufall.append("  25 ");
      paircnt2++;
   }
   bufall.append("\r\n");
   System.out.print(bufall.toString());
   data.saveFile("outall.txt",bufall.toString(),true);
   bufall = new StringBuffer();
}
//___________________________________________________________________________
String getnum(String name) throws Exception
{
   math mth = new math();
   int shiftval = 0;
   if (shift) shiftval = 1;
   String str = "";
   if (name.equals("pi")) str = pi.substring(0,4001);
   else if (name.equals("e")) str = e.substring(0,4001);
   else if (name.equals("phi")) str = phi.substring(0,4001);
   else if (name.equals("pie")) str = mth.add(pi.substring(0,4001),e.substring(0,4001));
   else if (name.equals("piphi")) str = mth.add(pi.substring(0,4001),phi.substring(0,4001));
   else if (name.equals("ephi")) str = mth.add(e.substring(0,4001),phi.substring(0,4001));
   else if (name.equals("piephi")) 
   {
      str = mth.add(e.substring(0,4001),phi.substring(0,4001));
      str = mth.add(str,pi.substring(0,4001));
   }
   else if (name.equals("count")) str = numpla(1);
   else if (name.equals("position")) str = numpla(2);
   else if (name.equals("both")) str = numpla(3);
   else str = getrand(4001,Integer.parseInt(name));
   StringBuffer buf = new StringBuffer();
   int val = 0;
   for (int i = 0; i < gen11.length(); i++)
   {
      String s = gen11.substring(i,i+1);
      int num = value(s);
      if (place) num = place(s);
      int addit = 0;
      if (add) addit = val;
      val = addit + num - shiftval;
      val = val % str.length();
      if ((val) >= 0) buf.append(str.substring(val,val+1));
   }
   String blank = "                                               ".substring(0,gen11a.length());
   int len = buf.toString().length();
   int dif = blank.length() - len;
   String ending = blank.substring(0,dif);
   bufall.append("" + buf.toString() + ending + " \t");
   if (show) System.out.println("");
   return(buf.toString()); 
}
//___________________________________________________________________________
String numpla(int vl)
{
   StringBuffer buf = new StringBuffer();
   for (int i = 0; i < gen11.length(); i++)
   {
      String s = gen11.substring(i,i+1);
      int v = 0;
      if (vl == 1) v = dupe(i);
      if (vl == 2) v = dpos(i);
      if (vl == 3) v = dupe(i) + dpos(i);
      String vs = adddigits(Integer.toString(v));
      buf.append(vs);
   }
   return(buf.toString());
}
//___________________________________________________________________________
int dupe(int pos)
{
   String s1 = gen11.substring(pos,pos+1);
   int total = 0;
   for (int i = 0; i < gen11.length(); i++)
   {
      String s2 = gen11.substring(i,i+1);
      if (s1.equals(s2)) total++;
   }
   return(total);
}
//___________________________________________________________________________
int dpos(int pos)
{
   String s1 = gen11.substring(pos,pos+1);
   int total = 0;
   for (int i = 0; i < gen11.length(); i++)
   {
      String s2 = gen11.substring(i,i+1);
      if (s1.equals(s2)) return(i);
   }
   return(0);
}//___________________________________________________________________________
String adddigits(String str)
{
   int total = 0;
   for (int i = 0; i < str.length(); i++)
   {
      String s = str.substring(i,i+1);
      int v = Integer.parseInt(s);
      total += v;
   }
   return(Integer.toString(total));
}
//___________________________________________________________________________
String getrand(int width, int seed)
{
   Random rand = new Random(seed);
   StringBuffer buf = new StringBuffer();
   for (int i = 0; i < width; i++)
   {
      buf.append(rand.nextInt(10));
   }
   return(buf.toString());
}
//___________________________________________________________________________
public static String getFile2(String file) 
{
   StringBuffer buf=new StringBuffer();
   String str;
   try
   {
      BufferedReader in = new BufferedReader (new FileReader (file));
      while((str=in.readLine())!=null)
      {
         buf.append(str);
      }
      in.close();
   }
   catch (Exception e)
   {
      System.out.println(e);
   }
   return (buf.toString());
}
//__________________________________________________
public static int value(String str)
{
   int total = 0;
   for (int i = 0; i < str.length(); i++)
   {
      int v = 0;
      String st2 = str.substring(i,i+1);
      byte[] st3 = st2.getBytes();
      byte st = st3[0];
      if (st == 'a') v = 1;
      else if (st == 'b') v = 2;
      else if (st == 'c') v = 3;
      else if (st == 'd') v = 4;
      else if (st == 'e') v = 5;
      else if (st == 'f') v = 6;
      else if (st == 'g') v = 7;
      else if (st == 'h') v = 8;
      else if (st == 'i') v = 9;
      else if (st == 'j') v = 10;
      else if (st == 'k') v = 20;
      else if (st == 'l') v = 30;    
      else if (st == 'm') v = 40;
      else if (st == 'n') v = 50;
      else if (st == 'o') v = 60;
      else if (st == 'p') v = 70;
      else if (st == 'q') v = 80;
      else if (st == 'r') v = 90;
      else if (st == 's') v = 100;
      else if (st == 't') v = 200;
      else if (st == 'u') v = 300;
      else if (st == 'v') v = 400;
      else if (st == 'w') v = 500;
      else if (st == 'x') v = 600;
      else if (st == 'y') v = 700;
      else if (st == 'z') v = 800;
      else if (st == 'A') v = 1;
      else if (st == 'B') v = 2;
      else if (st == 'G') v = 3;
      else if (st == 'D') v = 4;
      else if (st == 'H') v = 5;
      else if (st == 'V') v = 6;
      else if (st == 'Z') v = 7;
      else if (st == 'C') v = 8;
      else if (st == 'T') v = 9;
      else if (st == 'Y') v = 10;
      else if (st == 'K') v = 20;
      else if (st == 'L') v = 30;
      else if (st == 'M') v = 40;
      else if (st == 'N') v = 50;
      else if (st == 'S') v = 60;
      else if (st == 'I') v = 70;
      else if (st == 'F') v = 80;
      else if (st == 'E') v = 90;
      else if (st == 'Q') v = 100;
      else if (st == 'R') v = 200;
      else if (st == 'J') v = 300;
      else if (st == 'O') v = 400;
      total += v;
   }
   return(total);
}
//__________________________________________________
public static int place(String str)
{
   int total = 0;
   for (int i = 0; i < str.length(); i++)
   {
      int v = 0;
      String st2 = str.substring(i,i+1);
      byte[] st3 = st2.getBytes();
      byte st = st3[0];
      if (st == 'a') v = 1;
      else if (st == 'b') v = 2;
      else if (st == 'c') v = 3;
      else if (st == 'd') v = 4;
      else if (st == 'e') v = 5;
      else if (st == 'f') v = 6;
      else if (st == 'g') v = 7;
      else if (st == 'h') v = 8;
      else if (st == 'i') v = 9;
      else if (st == 'j') v = 10;
      else if (st == 'k') v = 11;
      else if (st == 'l') v = 12;    
      else if (st == 'm') v = 13;
      else if (st == 'n') v = 14;
      else if (st == 'o') v = 15;
      else if (st == 'p') v = 16;
      else if (st == 'q') v = 17;
      else if (st == 'r') v = 18;
      else if (st == 's') v = 19;
      else if (st == 't') v = 20;
      else if (st == 'u') v = 21;
      else if (st == 'v') v = 22;
      else if (st == 'w') v = 23;
      else if (st == 'x') v = 24;
      else if (st == 'y') v = 25;
      else if (st == 'z') v = 26;
      else if (st == 'A') v = 1;
      else if (st == 'B') v = 2;
      else if (st == 'G') v = 3;
      else if (st == 'D') v = 4;
      else if (st == 'H') v = 5;
      else if (st == 'V') v = 6;
      else if (st == 'Z') v = 7;
      else if (st == 'C') v = 8;
      else if (st == 'T') v = 9;
      else if (st == 'Y') v = 10;
      else if (st == 'K') v = 11;
      else if (st == 'L') v = 12;
      else if (st == 'M') v = 13;
      else if (st == 'N') v = 14;
      else if (st == 'S') v = 15;
      else if (st == 'I') v = 16;
      else if (st == 'F') v = 17;
      else if (st == 'E') v = 18;
      else if (st == 'Q') v = 19;
      else if (st == 'R') v = 20;
      else if (st == 'J') v = 21;
      else if (st == 'O') v = 22;
      total += v;
   }
   return(total);
}
//__________________________________________________
boolean isnum(String str)
{
   byte[] bb = str.getBytes();
   boolean ok = true;
   for (int i = 0; i < bb.length; i++)
   {
      if ((bb[i] < '0') | (bb[i] > '9'))
      {
         return(false);
      }
   }
   return(true);
}
//__________________________________________________
String reverse(String str)
{
   StringBuffer buf = new StringBuffer();
   for (int i = str.length() - 1; i >= 0; i--)
   {
      String s = str.substring(i,i+1);
      buf.append(s);
   }
   return(buf.toString());
}
//__________________________________________________
double probability(int kk, int n, int p)
{
   double p2 = (double)1.0 / (double)p;
   double p3 = (double)1.0 - p2;
   double sum = 0.0;
   double sumnow = 0.0;
   for (int k = n; k >= 0; k--)
   {
      int nk = n - k;
      double facn = factorial(n);
      double fack = factorial(k);
      double facnk = factorial(nk);
      double a = facn / (fack * facnk);
      double b = Math.pow(p2,k);
      double c = Math.pow(p3,nk);
      double out = a * b * c;
      sum += out;
      if (k == kk) return(sum);
   }
   return(0);
}
//__________________________________________________
double factorial(int f)
{
   double out = 1.0;
   for (int i = 1; i <= f; i++)
   {
      out *= i;
   }
   return(out);
}
//___________________________________________________________________________
void dosentence()
{
   String[] dataid = new String[4];
   File tmp = new File("database.id");
   if (tmp.exists()) dataid = data.getFile("database.id").split("\r\n");
   try
   {
      StringBuffer buf = new StringBuffer();
      Class.forName("com.mysql.jdbc.Driver");
      if (production)
      {
         connect = DriverManager.getConnection("jdbc:mysql://" + dataid[0] + ":3306/" + dataid[1] + "?" + "user=" + dataid[2] + "&password=" + dataid[3] + "&useSSL=true");
      }
      else
      {
         connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/" + dataid[1] + "?" + "user=" + dataid[2] + "&password=" + dataid[3] + "&useSSL=true");
      }
      statement = connect.createStatement();
      String s = "select * from genpiephi ";
      s += "where status = 0; ";
      ResultSet rs = statement.executeQuery(s);
      while (rs.next())
      {
         int id = rs.getInt("id");
         String words = rs.getString("sentence");
         buf.append(id + "," + words + "\r\n");
      }
      String[] lines = buf.toString().split("\r\n");
      for (int i = 0; i < lines.length; i++)
      {
         String[] fullline = lines[i].split(",");
         if (fullline.length < 2) continue;
         int id = Integer.parseInt(fullline[0]);
         String words = fullline[1];
         String[] gets = startmany(words,5000).split(",");
         s = "update genpiephi ";
         s += "set goodconstant = " + gets[0] + ", ";
         s += "badconstant = " + gets[1] + ", ";
         s += "goodrandom = " + gets[2] + ", ";
         s += "badrandom = " + gets[3] + ", ";
         s += "probability = " + gets[4] + ", ";
         s += "status = 1, ";
         s += "process_date = now() ";
         s += "where id = " + Integer.toString(id) + " ";
         statement.executeUpdate(s);
      }
   }
   catch (Exception e)
   {
      System.out.println("[" + e + "]");
   }
   finally
   {
      close();
   }
}
//____________________________________________________________
private void close() 
{
    try 
    {
      if (resultSet != null) { resultSet.close(); }
      if (statement != null) { statement.close(); }
      if (connect != null) { connect.close(); }
    } catch (Exception e) { }
}
}//__________________________________________________________________________
