Advertisement
Pavle_nis

RESAVAC

Mar 25th, 2017
304
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 47.15 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Slagalica
  8. {
  9.     class Resavac
  10.     {
  11.         public long najbl;
  12.         public int u, pok, zad;
  13.         public int l;
  14.         public long[] niz = new long[946687];
  15.         public bool[] uzet = new bool[7];
  16.         public string w;
  17.         public bool lpl;
  18.  
  19.         public string Calculate(int target, int target10, int target100, int hint1, int hint2, int hint3, int hint4, int hint5, int hint6)
  20.         {
  21.             Resavac prog = new Resavac();
  22.             prog.zad = target * 100 + target10 * 10 + target100;
  23.             prog.niz[1] = hint1;
  24.             prog.niz[2] = hint2;
  25.             prog.niz[3] = hint3;
  26.             prog.niz[4] = hint4;
  27.             prog.niz[5] = hint5;
  28.             prog.niz[6] = hint6;
  29.             for (int i = 1; i < 7; i++)
  30.             {
  31.                 if (prog.niz[i] == prog.zad)
  32.                 {
  33.                     return (prog.zad.ToString());
  34.                 }
  35.             }
  36.             prog.pok = 7;
  37.             prog.w = "";
  38.             bool success = false;
  39.             for (prog.u = 1; prog.u < 209407; prog.u++)
  40.             {
  41.                 if (prog.uradi(prog.u))
  42.                 {
  43.                     success = true;
  44.                     break;
  45.                 }
  46.             }
  47.             if (!success)
  48.             {
  49.                 prog.najbl = 0;
  50.                 if (!prog.resi_6())
  51.                 {
  52.                     if (!prog.resi_3_3())
  53.                     {
  54.                         prog.resi_2_2_2();
  55.                     }
  56.                 }
  57.             }
  58.             return prog.najbl.ToString() + " = " + prog.w;
  59.         }
  60.         long abs2(long x)
  61.         {
  62.             if (x > 0) return x;
  63.             else return -x;
  64.         }
  65.         string num2str2(long y)
  66.         {
  67.             //string ret = "";
  68.             //while (y > 0)
  69.             //{
  70.             //    ret = Strings.Chr((int)(y % 10 + 48)) + ret;
  71.             //    y = y / 10;
  72.             //}
  73.  
  74.             //return ret;
  75.             return y.ToString();
  76.         }
  77.         void inc_uzet()
  78.         {
  79.             for (int ss = 1; ss < 7; ss++)
  80.                 uzet[ss] = false;
  81.         }
  82.         void oznaci_po_redu(long s)
  83.         {
  84.             l = 0;
  85.             while (s > 0)
  86.             {
  87.                 l++;
  88.                 if (!uzet[l]) s--;
  89.             }
  90.             uzet[l] = true;
  91.         }
  92.         void dekodiraj(long i)
  93.         {
  94.             if (i < 7)
  95.                 uzet[i] = true;
  96.             else if (i < 127)
  97.             {
  98.                 dekodiraj((i - 7) / 4 / 5 + 1);
  99.                 oznaci_po_redu((i - 7) / 4 - (i - 7) / 4 / 5 * 5 + 1);
  100.             }
  101.             else if (i < 2047)
  102.             {
  103.                 dekodiraj((i - 127) / 4 / 4 + 7);
  104.                 oznaci_po_redu((i - 127) / 4 - (i - 127) / 4 / 4 * 4 + 1);
  105.             }
  106.             else if (i < 25087)
  107.             {
  108.                 dekodiraj((i - 2047) / 4 / 3 + 127);
  109.                 oznaci_po_redu((i - 2047) / 4 - (i - 2047) / 4 / 3 * 3 + 1);
  110.             }
  111.             else if (i < 209407)
  112.             {
  113.                 dekodiraj((i - 25087) / 4 / 2 + 2047);
  114.                 oznaci_po_redu((i - 25087) / 4 - (i - 25087) / 4 / 2 * 2 + 1);
  115.             }
  116.             else
  117.             {
  118.                 dekodiraj((i - 209407) / 4 + 25087);
  119.                 oznaci_po_redu(1);
  120.             }
  121.         }
  122.         void dekodiraj1(long i)
  123.         {
  124.             long a;
  125.             if (i < 7)
  126.             {
  127.                 uzet[i] = true;
  128.                 w = w + num2str2(niz[i]);
  129.                 lpl = false;
  130.             }
  131.             else
  132.             {
  133.                 if (i < 127)
  134.                 {
  135.                     a = (i - 7) / 4 / 5 + 1;
  136.                     dekodiraj1(a);
  137.                     oznaci_po_redu((i - 7) / 4 - 5 * (a - 1) + 1);
  138.                 }
  139.                 else if (i < 2047)
  140.                 {
  141.                     a = (i - 127) / 4 / 4 + 7;
  142.                     dekodiraj1(a);
  143.                     oznaci_po_redu((i - 127) / 4 - 4 * (a - 7) + 1);
  144.                 }
  145.                 else if (i < 25087)
  146.                 {
  147.                     a = (i - 2047) / 4 / 3 + 127;
  148.                     dekodiraj1(a);
  149.                     oznaci_po_redu((i - 2047) / 4 - 3 * (a - 127) + 1);
  150.                 }
  151.                 else if (i < 209407)
  152.                 {
  153.                     a = (i - 25087) / 4 / 2 + 2047;
  154.                     dekodiraj1(a);
  155.                     oznaci_po_redu((i - 25087) / 4 - 2 * (a - 2047) + 1);
  156.                 }
  157.                 else
  158.                 {
  159.                     a = (i - 209407) / 4 + 25087;
  160.                     dekodiraj1(a);
  161.                     oznaci_po_redu(1);
  162.                 }
  163.                 switch ((i + 1) % 4)
  164.                 {
  165.                     case 0:
  166.                         {
  167.                             w = w + '+' + num2str2(niz[l]);
  168.                             lpl = true;
  169.                             break;
  170.                         }
  171.                     case 1:
  172.                         {
  173.                             if (niz[a] > niz[l])
  174.                                 w = w + '-' + num2str2(niz[l]);
  175.                             else
  176.                             {
  177.                                 if (!lpl)
  178.                                     w = num2str2(niz[l]) + '-' + w;
  179.                                 else
  180.                                     w = num2str2(niz[l]) + "-(" + w + ")";
  181.                             }
  182.                             lpl = true;
  183.                             break;
  184.                         }
  185.                     case 2:
  186.                         {
  187.                             if (lpl)
  188.                                 w = "(" + w + ")*" + num2str2(niz[l]);
  189.                             else
  190.                                 w = w + '*' + num2str2(niz[l]);
  191.                             lpl = false;
  192.                             break;
  193.                         }
  194.                     case 3:
  195.                         {
  196.                             if (niz[a] > niz[l])
  197.                             {
  198.                                 if (lpl)
  199.                                     w = "(" + w + ")/" + num2str2(niz[l]);
  200.                                 else
  201.                                     w = w + '/' + num2str2(niz[l]);
  202.                             }
  203.                             else
  204.                             {
  205.                                 if (i < 127)
  206.                                     w = num2str2(niz[l]) + '/' + w;
  207.                                 else
  208.                                     w = num2str2(niz[l]) + "/(" + w + ")";
  209.                             }
  210.                             lpl = false;
  211.                             break;
  212.                         }
  213.                 }
  214.             }
  215.         }
  216.         void ispisi()
  217.         {
  218.             najbl = zad;
  219.             //Console.WriteLine(zad);
  220.             //Console.WriteLine(w);
  221.             //Console.ReadKey();
  222.         }
  223.         bool kraj()
  224.         {
  225.             if (niz[pok] == zad)
  226.             {
  227.                 inc_uzet();
  228.                 dekodiraj1(pok);
  229.                 ispisi();
  230.                 return true;
  231.             }
  232.             return false;
  233.         }
  234.         bool uradi(long k)
  235.         {
  236.             int j;
  237.             inc_uzet();
  238.             dekodiraj(k);
  239.             for (j = 1; j < 7; j++)
  240.             {
  241.                 if (!uzet[j])
  242.                 {
  243.                     niz[pok] = niz[k] + niz[j];
  244.                     if (kraj())
  245.                         return true;
  246.                     pok++;
  247.                     niz[pok] = abs2(niz[k] - niz[j]);
  248.                     if (kraj())
  249.                         return true;
  250.                     pok++;
  251.                     niz[pok] = niz[k] * niz[j];
  252.                     if (kraj())
  253.                         return true;
  254.                     pok++;
  255.                     niz[pok] = 0;
  256.                     if (niz[k] % niz[j] == 0)
  257.                         niz[pok] = niz[k] / niz[j];
  258.                     else if (niz[k] > 0)
  259.                         if (niz[j] % niz[k] == 0)
  260.                             niz[pok] = niz[j] / niz[k];
  261.                     if (kraj())
  262.                         return true;
  263.                     pok++;
  264.                 }
  265.             }
  266.             return false;
  267.         }
  268.         bool resi_6()
  269.         {
  270.             for (u = 1; u < 946687; u++)
  271.                 if (abs2(niz[u] - zad) < abs2(najbl - zad))
  272.                 {
  273.                     najbl = niz[u];
  274.                     pok = u;
  275.                 }
  276.             inc_uzet();
  277.             dekodiraj1(pok);
  278.             if (najbl == zad)
  279.             {
  280.                 ispisi();
  281.                 return true;
  282.             }
  283.             return false;
  284.         }
  285.         bool resi_3_3()
  286.         {
  287.             long v;
  288.             string w1;
  289.             bool[] uzet1 = new bool[7];
  290.             for (u = 7; u < 2046; u++)
  291.                 for (v = u + 1; v < 2047; v++)
  292.                 {
  293.                     inc_uzet();
  294.                     dekodiraj(v);
  295.                     for (pok = 1; pok < 7; pok++)
  296.                         uzet1[pok] = uzet[pok];
  297.                     inc_uzet();
  298.                     dekodiraj(u);
  299.                     if (!((uzet[1] && uzet1[1]) || (uzet[2] && uzet1[2]) || (uzet[3] && uzet1[3]) || (uzet[4] && uzet1[4]) || (uzet[5] && uzet1[5]) || (uzet[6] && uzet1[6])))
  300.                     {
  301.                         if (abs2(niz[u] + niz[v] - zad) < abs2(najbl - zad))
  302.                         {
  303.                             najbl = niz[u] + niz[v];
  304.                             w = "";
  305.                             inc_uzet();
  306.                             dekodiraj1(v);
  307.                             w1 = w;
  308.                             w = "";
  309.                             inc_uzet();
  310.                             dekodiraj1(u);
  311.                             w = w + '+' + w1;
  312.                             if (najbl == zad)
  313.                             {
  314.                                 ispisi();
  315.                                 return true;
  316.                             }
  317.                         }
  318.                         if (abs2(abs2(niz[u] - niz[v]) - zad) < abs2(najbl - zad))
  319.                         {
  320.                             najbl = abs2(niz[u] - niz[v]);
  321.                             w = "";
  322.                             inc_uzet();
  323.                             if (niz[u] > niz[v])
  324.                             {
  325.                                 dekodiraj1(v);
  326.                                 if (lpl)
  327.                                     w1 = '(' + w + ')';
  328.                                 else
  329.                                     w1 = w;
  330.                                 w = "";
  331.                                 inc_uzet();
  332.                                 dekodiraj1(u);
  333.                             }
  334.                             else
  335.                             {
  336.                                 dekodiraj1(u);
  337.                                 if (lpl)
  338.                                     w1 = '(' + w + ')';
  339.                                 else
  340.                                     w1 = w;
  341.                                 w = "";
  342.                                 inc_uzet();
  343.                                 dekodiraj1(v);
  344.                             }
  345.                             w = w + '-' + w1;
  346.                             if (najbl == zad)
  347.                             {
  348.                                 ispisi();
  349.                                 return true;
  350.                             }
  351.                         }
  352.                         if (abs2(niz[u] * niz[v] - zad) < abs2(najbl - zad))
  353.                         {
  354.                             najbl = niz[u] * niz[v];
  355.                             w = "";
  356.                             inc_uzet();
  357.                             dekodiraj1(v);
  358.                             if (lpl)
  359.                                 w1 = '(' + w + ')';
  360.                             else
  361.                                 w1 = w;
  362.                             w = "";
  363.                             inc_uzet();
  364.                             dekodiraj1(u);
  365.                             if (lpl)
  366.                                 w = "(" + w + ")*" + w1;
  367.                             else
  368.                                 w = w + '*' + w1;
  369.                             if (najbl == zad)
  370.                             {
  371.                                 ispisi();
  372.                                 return true;
  373.                             }
  374.                         }
  375.                         if ((niz[v] > 0) && (niz[u] % niz[v] == 0))
  376.                             if (abs2(niz[u] / niz[v] - zad) < abs2(najbl - zad))
  377.                             {
  378.                                 najbl = niz[u] / niz[v];
  379.                                 w = "";
  380.                                 inc_uzet();
  381.                                 dekodiraj1(v);
  382.                                 w1 = '(' + w + ')';
  383.                                 w = "";
  384.                                 inc_uzet();
  385.                                 dekodiraj1(u);
  386.                                 if (lpl)
  387.                                     w = "(" + w + ")/" + w1;
  388.                                 else w = w + '/' + w1;
  389.                                 if (najbl == zad)
  390.                                 {
  391.                                     ispisi();
  392.                                     return true;
  393.                                 }
  394.                             }
  395.                             else
  396.                         if ((niz[u] > 0) && (niz[v] % niz[u] == 0))
  397.                                 if (abs2(niz[v] / niz[u] - zad) < abs2(najbl - zad))
  398.                                 {
  399.                                     najbl = niz[v] / niz[u];
  400.                                     w = "";
  401.                                     inc_uzet();
  402.                                     dekodiraj1(u);
  403.                                     w1 = '(' + w + ')';
  404.                                     w = "";
  405.                                     inc_uzet();
  406.                                     dekodiraj1(v);
  407.                                     if (lpl)
  408.                                         w = "(" + w + ")/" + w1;
  409.                                     else
  410.                                         w = w + '/' + w1;
  411.                                     if (najbl == zad)
  412.                                     {
  413.                                         ispisi();
  414.                                         return true;
  415.                                     }
  416.                                 }
  417.                     }
  418.                 }
  419.             return false;
  420.         }
  421.         bool resi_2_2_2()
  422.         {
  423.             int v, v1;
  424.             string w1;
  425.             bool[] uzet1 = new bool[7];
  426.             for (u = 7; u < 127; u++)
  427.                 for (v = 7; v < 127; v++)
  428.                 {
  429.                     inc_uzet();
  430.                     dekodiraj(v);
  431.                     for (pok = 1; pok < 7; pok++)
  432.                         uzet1[pok] = uzet[pok];
  433.                     inc_uzet();
  434.                     dekodiraj(u);
  435.                     if (!((uzet[1] && uzet1[1]) || (uzet[2] && uzet1[2]) || (uzet[3] && uzet1[3]) || (uzet[4] && uzet1[4]) || (uzet[5] && uzet1[5]) || (uzet[6] && uzet1[6])))
  436.                     {
  437.                         for (pok = 1; pok < 7; pok++)
  438.                             uzet1[pok] = uzet[pok] || uzet1[pok];
  439.                         for (v1 = 1; v1 < 127; v1++)
  440.                         {
  441.                             inc_uzet();
  442.                             dekodiraj(v1);
  443.                             if (!((uzet[1] && uzet1[1]) || (uzet[2] && uzet1[2]) || (uzet[3] && uzet1[3]) || (uzet[4] && uzet1[4]) || (uzet[5] && uzet1[5]) || (uzet[6] && uzet1[6])))
  444.                             {
  445.                                 //prvu dvojicu sabiramo
  446.                                 if (abs2(niz[u] + niz[v] + niz[v1] - zad) < abs2(najbl - zad))
  447.                                 {
  448.                                     najbl = niz[u] + niz[v] + niz[v1];
  449.                                     w = "";
  450.                                     inc_uzet();
  451.                                     dekodiraj1(v1);
  452.                                     w1 = w;
  453.                                     w = "";
  454.                                     inc_uzet();
  455.                                     dekodiraj1(v);
  456.                                     w1 = w + '+' + w1;
  457.                                     w = "";
  458.                                     inc_uzet();
  459.                                     dekodiraj1(u);
  460.                                     w = w + '+' + w1;
  461.                                     if (najbl == zad)
  462.                                     {
  463.                                         ispisi();
  464.                                         return true;
  465.                                     }
  466.                                 }
  467.                                 if (abs2(abs2(niz[u] + niz[v] - niz[v1]) - zad) < abs2(najbl - zad))
  468.                                 {
  469.                                     najbl = abs2(niz[u] + niz[v] - niz[v1]);
  470.                                     w = "";
  471.                                     inc_uzet();
  472.                                     if (niz[u] + niz[v] > niz[v1])
  473.                                     {
  474.                                         dekodiraj1(v1);
  475.                                         if (lpl)
  476.                                             w1 = '(' + w + ')';
  477.                                         else w1 = w;
  478.                                         w = "";
  479.                                         inc_uzet();
  480.                                         dekodiraj1(v);
  481.                                         w1 = w + '-' + w1;
  482.                                         w = "";
  483.                                         inc_uzet();
  484.                                         dekodiraj1(u);
  485.                                         w = w + '+' + w1;
  486.                                     }
  487.                                     else
  488.                                     {
  489.                                         dekodiraj1(v);
  490.                                         w1 = w;
  491.                                         w = "";
  492.                                         inc_uzet();
  493.                                         dekodiraj1(u);
  494.                                         w1 = '(' + w + '+' + w1 + ')';
  495.                                         w = "";
  496.                                         inc_uzet();
  497.                                         dekodiraj1(v1);
  498.                                         w = w + '-' + w1;
  499.                                     }
  500.                                     if (najbl == zad)
  501.                                     {
  502.                                         ispisi();
  503.                                         return true;
  504.                                     }
  505.                                 }
  506.                                 if (abs2((niz[u] + niz[v]) * niz[v1] - zad) < abs2(najbl - zad))
  507.                                 {
  508.                                     najbl = (niz[u] + niz[v]) * niz[v1];
  509.                                     w = "";
  510.                                     inc_uzet();
  511.                                     dekodiraj1(v1);
  512.                                     if (lpl)
  513.                                         w1 = '(' + w + ')';
  514.                                     else w1 = w;
  515.                                     w = "";
  516.                                     inc_uzet();
  517.                                     dekodiraj1(v);
  518.                                     w1 = w + ")*" + w1;
  519.                                     w = "";
  520.                                     inc_uzet();
  521.                                     dekodiraj1(u);
  522.                                     w = '(' + w + '+' + w1;
  523.                                     if (najbl == zad)
  524.                                     {
  525.                                         ispisi();
  526.                                         return true;
  527.                                     }
  528.                                 }
  529.                                 if ((niz[v1] > 0) && ((niz[u] + niz[v]) % niz[v1] == 0))
  530.                                     if (abs2((niz[u] + niz[v]) / niz[v1] - zad) < abs2(najbl - zad))
  531.                                     {
  532.                                         najbl = (niz[u] + niz[v]) / niz[v1];
  533.                                         w = "";
  534.                                         inc_uzet();
  535.                                         dekodiraj1(v1);
  536.                                         if (v1 < 7)
  537.                                             w1 = w;
  538.                                         else
  539.                                             w1 = '(' + w + ')';
  540.                                         w = "";
  541.                                         inc_uzet();
  542.                                         dekodiraj1(v);
  543.                                         w1 = w + ")/" + w1;
  544.                                         w = "";
  545.                                         inc_uzet();
  546.                                         dekodiraj1(u);
  547.                                         w = '(' + w + '+' + w1;
  548.                                         if (najbl == zad)
  549.                                         {
  550.                                             ispisi();
  551.                                             return true;
  552.                                         }
  553.                                     }
  554.                                     else if ((niz[u] + niz[v] > 0) && (niz[v1] % (niz[u] + niz[v]) == 0))
  555.                                         if (abs2(niz[v1] / (niz[u] + niz[v]) - zad) < abs2(najbl - zad))
  556.                                         {
  557.                                             najbl = niz[v] / (niz[u] + niz[v]);
  558.                                             w = "";
  559.                                             inc_uzet();
  560.                                             dekodiraj1(v);
  561.                                             w1 = w + ')';
  562.                                             w = "";
  563.                                             inc_uzet();
  564.                                             dekodiraj1(u);
  565.                                             w1 = '(' + w + '+' + w1;
  566.                                             w = "";
  567.                                             inc_uzet();
  568.                                             dekodiraj1(v1);
  569.                                             if (lpl)
  570.                                                 w = "(' + w + ')/" + w1;
  571.                                             else
  572.                                                 w = w + '/' + w1;
  573.                                             if (najbl == zad)
  574.                                             {
  575.                                                 ispisi();
  576.                                                 return true;
  577.                                             }
  578.                                         }
  579.                                 if (abs2(abs2(niz[u] - niz[v]) * niz[v1] - zad) < abs2(najbl - zad))
  580.                                 {
  581.                                     najbl = abs2(niz[u] - niz[v]) * niz[v1];
  582.                                     w = "";
  583.                                     inc_uzet();
  584.                                     dekodiraj1(v1);
  585.                                     if (lpl)
  586.                                         w1 = '(' + w + ')';
  587.                                     else w1 = w;
  588.                                     w = "";
  589.                                     inc_uzet();
  590.                                     if (niz[u] > niz[v])
  591.                                     {
  592.                                         dekodiraj1(v);
  593.                                         if (lpl)
  594.                                             w1 = "(' + w + '))*" + w1;
  595.                                         else
  596.                                             w1 = w + ")*" + w1;
  597.                                         w = "";
  598.                                         inc_uzet();
  599.                                         dekodiraj1(u);
  600.                                     }
  601.                                     else
  602.                                     {
  603.                                         dekodiraj1(v);
  604.                                         if (lpl)
  605.                                             w1 = "(' + w + '))*" + w1;
  606.                                         else w1 = w + ")*" + w1;
  607.                                         w = "";
  608.                                         inc_uzet();
  609.                                         dekodiraj1(u);
  610.                                     }
  611.                                     w = '(' + w + '-' + w1;
  612.                                     if (najbl == zad)
  613.                                     {
  614.                                         ispisi();
  615.                                         return true;
  616.                                     }
  617.                                 }
  618.                                 if ((niz[v1] > 0) && (abs2(niz[u] - niz[v]) % niz[v1] == 0))
  619.                                     if (abs2(abs2(niz[u] - niz[v]) / niz[v1] - zad) < abs2(najbl - zad))
  620.                                     {
  621.                                         najbl = abs2(niz[u] - niz[v]) / niz[v1];
  622.                                         w = "";
  623.                                         inc_uzet();
  624.                                         dekodiraj1(v1);
  625.                                         if (v1 < 7)
  626.                                             w1 = w;
  627.                                         else w1 = '(' + w + ')';
  628.                                         w = "";
  629.                                         inc_uzet();
  630.                                         if (niz[u] > niz[v])
  631.                                         {
  632.                                             dekodiraj1(v);
  633.                                             if (lpl)
  634.                                                 w1 = "(' + w + '))/" + w1;
  635.                                             else
  636.                                                 w1 = w + ")/" + w1;
  637.                                             w = "";
  638.                                             inc_uzet();
  639.                                             dekodiraj1(u);
  640.                                         }
  641.                                         else
  642.                                         {
  643.                                             dekodiraj1(u);
  644.                                             if (lpl)
  645.                                                 w1 = "(' + w + '))/" + w1;
  646.                                             else
  647.                                                 w1 = w + ")/" + w1;
  648.                                             w = "";
  649.                                             inc_uzet();
  650.                                             dekodiraj1(v);
  651.                                         }
  652.                                         w = '(' + w + '-' + w1;
  653.                                         if (najbl == zad)
  654.                                         {
  655.                                             ispisi();
  656.                                             return true;
  657.                                         }
  658.                                     }
  659.                                     else if ((abs2(niz[u] - niz[v]) > 0) && (niz[v1] % abs2(niz[u] - niz[v]) == 0))
  660.                                         if (abs2(niz[v1] / abs2(niz[u] - niz[v]) - zad) < abs2(najbl - zad))
  661.                                         {
  662.                                             najbl = niz[v1] / abs2(niz[u] - niz[v]);
  663.                                             w = "";
  664.                                             inc_uzet();
  665.                                             if (niz[u] > niz[v])
  666.                                             {
  667.                                                 dekodiraj1(v);
  668.                                                 if (lpl)
  669.                                                     w1 = "(' + w + '))";
  670.                                                 else
  671.                                                     w1 = w + ')';
  672.                                                 w = "";
  673.                                                 inc_uzet();
  674.                                                 dekodiraj1(u);
  675.                                             }
  676.                                             else
  677.                                             {
  678.                                                 dekodiraj1(u);
  679.                                                 if (lpl)
  680.                                                     w1 = "(' + w + '))";
  681.                                                 else
  682.                                                     w1 = w + ')';
  683.                                                 w = "";
  684.                                                 inc_uzet();
  685.                                                 dekodiraj1(v);
  686.                                             }
  687.                                             w1 = '(' + w + '-' + w1;
  688.                                             w = "";
  689.                                             inc_uzet();
  690.                                             dekodiraj1(v1);
  691.                                             if (lpl)
  692.                                                 w = "(' + w + ')/" + w1;
  693.                                             else
  694.                                                 w = w + '/' + w1;
  695.                                             if (najbl == zad)
  696.                                             {
  697.                                                 ispisi();
  698.                                                 return true;
  699.                                             }
  700.                                         }
  701.                                 if (abs2(niz[u] * niz[v] + niz[v1] - zad) < abs2(najbl - zad))
  702.                                 {
  703.                                     najbl = niz[u] * niz[v] + niz[v1];
  704.                                     w = "";
  705.                                     inc_uzet();
  706.                                     dekodiraj1(v1);
  707.                                     w1 = w;
  708.                                     w = "";
  709.                                     inc_uzet();
  710.                                     dekodiraj1(v);
  711.                                     if (lpl)
  712.                                         w1 = "(' + w + ')+" + w1;
  713.                                     else
  714.                                         w1 = w + '+' + w1;
  715.                                     w = "";
  716.                                     inc_uzet();
  717.                                     dekodiraj1(u);
  718.                                     if (lpl)
  719.                                         w = "(' + w + ')*" + w1;
  720.                                     else
  721.                                         w = w + '*' + w1;
  722.                                     if (najbl == zad)
  723.                                     {
  724.                                         ispisi();
  725.                                         return true;
  726.                                     }
  727.                                 }
  728.                                 if (abs2(abs2(niz[u] * niz[v] - niz[v1]) - zad) < abs2(najbl - zad))
  729.                                 {
  730.                                     najbl = abs2(niz[u] * niz[v] - niz[v1]);
  731.                                     w = "";
  732.                                     inc_uzet();
  733.                                     if (niz[u] * niz[v] > niz[v1])
  734.                                     {
  735.                                         dekodiraj1(v1);
  736.                                         if (lpl)
  737.                                             w1 = '(' + w + ')';
  738.                                         else
  739.                                             w1 = w;
  740.                                         w = "";
  741.                                         inc_uzet();
  742.                                         dekodiraj1(v);
  743.                                         if (lpl)
  744.                                             w1 = "(' + w + ')-" + w1;
  745.                                         else
  746.                                             w1 = w + '-' + w1;
  747.                                         w = "";
  748.                                         inc_uzet();
  749.                                         dekodiraj1(u);
  750.                                         if (lpl)
  751.                                             w = "(' + w + ')*" + w1;
  752.                                         else
  753.                                             w = w + '*' + w1;
  754.                                     }
  755.                                     else
  756.                                     {
  757.                                         dekodiraj1(v);
  758.                                         if (lpl)
  759.                                             w1 = '(' + w + ')';
  760.                                         else
  761.                                             w1 = w;
  762.                                         w = "";
  763.                                         inc_uzet();
  764.                                         dekodiraj1(u);
  765.                                         if (lpl)
  766.                                             w1 = "(' + w + ')*" + w1;
  767.                                         else
  768.                                             w1 = w + '*' + w1;
  769.                                         w = "";
  770.                                         inc_uzet();
  771.                                         dekodiraj1(v1);
  772.                                         w = w + '-' + w1;
  773.                                     }
  774.                                     if (najbl == zad)
  775.                                     {
  776.                                         ispisi();
  777.                                         return true;
  778.                                     }
  779.                                 }
  780.                                 if (abs2(niz[u] * niz[v] * niz[v1] - zad) < abs2(najbl - zad))
  781.                                 {
  782.                                     najbl = niz[u] * niz[v] * niz[v1];
  783.                                     w = "";
  784.                                     inc_uzet();
  785.                                     dekodiraj1(v1);
  786.                                     if (lpl)
  787.                                         w1 = '(' + w + ')';
  788.                                     else
  789.                                         w1 = w;
  790.                                     w = "";
  791.                                     inc_uzet();
  792.                                     dekodiraj1(v);
  793.                                     if (lpl)
  794.                                         w1 = "(' + w + ')*" + w1;
  795.                                     else
  796.                                         w1 = w + '*' + w1;
  797.                                     w = "";
  798.                                     inc_uzet();
  799.                                     dekodiraj1(u);
  800.                                     if (lpl)
  801.                                         w = "(' + w + ')*" + w1;
  802.                                     else
  803.                                         w = w + '*' + w1;
  804.                                     if (najbl == zad)
  805.                                     {
  806.                                         ispisi();
  807.                                         return true;
  808.                                     }
  809.                                 }
  810.                                 if ((niz[v1] > 0) && (niz[u] * niz[v] % niz[v1] == 0))
  811.                                     if (abs2(niz[u] * niz[v] / niz[v1] - zad) < abs2(najbl - zad))
  812.                                     {
  813.                                         najbl = niz[u] * niz[v] / niz[v1];
  814.                                         w = "";
  815.                                         inc_uzet();
  816.                                         dekodiraj1(v1);
  817.                                         if (v1 < 7)
  818.                                             w1 = w;
  819.                                         else
  820.                                             w1 = '(' + w + ')';
  821.                                         w = "";
  822.                                         inc_uzet();
  823.                                         dekodiraj1(v);
  824.                                         if (lpl)
  825.                                             w1 = "(' + w + ')/" + w1;
  826.                                         else
  827.                                             w1 = w + '/' + w1;
  828.                                         w = "";
  829.                                         inc_uzet();
  830.                                         dekodiraj1(u);
  831.                                         if (lpl)
  832.                                             w = "(' + w + ')*" + w1;
  833.                                         else
  834.                                             w = w + '*' + w1;
  835.                                         if (najbl == zad)
  836.                                         {
  837.                                             ispisi();
  838.                                             return true;
  839.                                         }
  840.                                     }
  841.                                     else if ((niz[u] * niz[v] > 0) && (niz[v1] % (niz[u] * niz[v]) == 0))
  842.                                         if (abs2(niz[v1] / (niz[u] * niz[v]) - zad) < abs2(najbl - zad))
  843.                                         {
  844.                                             najbl = niz[v] / (niz[u] * niz[v]);
  845.                                             w = "";
  846.                                             inc_uzet();
  847.                                             dekodiraj1(v);
  848.                                             if (lpl)
  849.                                                 w1 = "(' + w + '))";
  850.                                             else
  851.                                                 w1 = w + ')';
  852.                                             w = "";
  853.                                             inc_uzet();
  854.                                             dekodiraj1(u);
  855.                                             if (lpl)
  856.                                                 w1 = "((' + w + ')*" + w1;
  857.                                             else
  858.                                                 w1 = '(' + w + '*' + w1;
  859.                                             w = "";
  860.                                             inc_uzet();
  861.                                             dekodiraj1(v1);
  862.                                             if (lpl)
  863.                                                 w = "(' + w + ')/" + w1;
  864.                                             else
  865.                                                 w = w + '/' + w1;
  866.                                             if (najbl == zad)
  867.                                             {
  868.                                                 ispisi();
  869.                                                 return true;
  870.                                             }
  871.                                         }
  872.                                 if ((niz[v] > 0) && (niz[u] % niz[v] == 0))
  873.                                 {
  874.                                     if (abs2(niz[u] / niz[v] + niz[v1] - zad) < abs2(najbl - zad))
  875.                                     {
  876.                                         najbl = niz[u] / niz[v] + niz[v1];
  877.                                         w = "";
  878.                                         inc_uzet();
  879.                                         dekodiraj1(v1);
  880.                                         w1 = w;
  881.                                         w = "";
  882.                                         inc_uzet();
  883.                                         dekodiraj1(v);
  884.                                         w1 = "(' + w + ')+" + w1;
  885.                                         w = "";
  886.                                         inc_uzet();
  887.                                         dekodiraj1(u);
  888.                                         if (lpl)
  889.                                             w = "(' + w + ')/" + w1;
  890.                                         else
  891.                                             w = w + '/' + w1;
  892.                                         if (najbl == zad)
  893.                                         {
  894.                                             ispisi();
  895.                                             return true;
  896.                                         }
  897.                                     }
  898.                                     if (abs2(abs2(niz[u] / niz[v] - niz[v1]) - zad) < abs2(najbl - zad))
  899.                                     {
  900.                                         najbl = abs2(niz[u] / niz[v] - niz[v1]);
  901.                                         w = "";
  902.                                         inc_uzet();
  903.                                         if (niz[u] / niz[v] > niz[v1])
  904.                                         {
  905.                                             dekodiraj1(v1);
  906.                                             if (lpl)
  907.                                                 w1 = '(' + w + ')';
  908.                                             else
  909.                                                 w1 = w;
  910.                                             w = "";
  911.                                             inc_uzet();
  912.                                             dekodiraj1(v);
  913.                                             w1 = "(' + w + ')-" + w1;
  914.                                             w = "";
  915.                                             inc_uzet();
  916.                                             dekodiraj1(u);
  917.                                             if (lpl)
  918.                                                 w = "(' + w + ')/" + w1;
  919.                                             else
  920.                                                 w = w + '/' + w1;
  921.                                         }
  922.                                         else
  923.                                         {
  924.                                             dekodiraj1(v);
  925.                                             w1 = '(' + w + ')';
  926.                                             w = "";
  927.                                             inc_uzet();
  928.                                             dekodiraj1(u);
  929.                                             if (lpl)
  930.                                                 w1 = "(' + w + ')/" + w1;
  931.                                             else
  932.                                                 w1 = w + '/' + w1;
  933.                                             w = "";
  934.                                             inc_uzet();
  935.                                             dekodiraj1(v1);
  936.                                             w = w + '-' + w1;
  937.                                         }
  938.                                         if (najbl == zad)
  939.                                         {
  940.                                             ispisi();
  941.                                             return true;
  942.                                         }
  943.                                     }
  944.                                 }
  945.                                 else if ((niz[u] > 0) && (niz[v] % niz[u] == 0))
  946.                                 {
  947.                                     if (abs2(niz[v] / niz[u] + niz[v1] - zad) < abs2(najbl - zad))
  948.                                     {
  949.                                         najbl = niz[v] / niz[u] + niz[v1];
  950.                                         w = "";
  951.                                         inc_uzet();
  952.                                         dekodiraj1(v1);
  953.                                         w1 = w;
  954.                                         w = "";
  955.                                         inc_uzet();
  956.                                         dekodiraj1(u);
  957.                                         w1 = "(' + w + ')+" + w1;
  958.                                         w = "";
  959.                                         inc_uzet();
  960.                                         dekodiraj1(v);
  961.                                         if (lpl)
  962.                                             w = "(' + w + ')/" + w1;
  963.                                         else
  964.                                             w = w + '/' + w1;
  965.                                         if (najbl == zad)
  966.                                         {
  967.                                             ispisi();
  968.                                             return true;
  969.                                         }
  970.                                     }
  971.                                     if (abs2(abs2(niz[v] / niz[u] - niz[v1]) - zad) < abs2(najbl - zad))
  972.                                     {
  973.                                         najbl = abs2(niz[v] / niz[u] - niz[v1]);
  974.                                         w = "";
  975.                                         inc_uzet();
  976.                                         if (niz[v] / niz[u] > niz[v1])
  977.                                         {
  978.                                             dekodiraj1(v1);
  979.                                             if (lpl)
  980.                                                 w1 = '(' + w + ')';
  981.                                             else
  982.                                                 w1 = w;
  983.                                             w = "";
  984.                                             inc_uzet();
  985.                                             dekodiraj1(u);
  986.                                             w1 = "(' + w + ')-" + w1;
  987.                                             w = "";
  988.                                             inc_uzet();
  989.                                             dekodiraj1(v);
  990.                                             if (lpl)
  991.                                                 w = "(' + w + ')/" + w1;
  992.                                             else
  993.                                                 w = w + '/' + w1;
  994.                                         }
  995.                                         else
  996.                                         {
  997.                                             dekodiraj1(u);
  998.                                             w1 = '(' + w + ')';
  999.                                             w = "";
  1000.                                             inc_uzet();
  1001.                                             dekodiraj1(v);
  1002.                                             if (lpl)
  1003.                                                 w1 = "(' + w + ')/" + w1;
  1004.                                             else
  1005.                                                 w1 = w + '/' + w1;
  1006.                                             w = "";
  1007.                                             inc_uzet();
  1008.                                             dekodiraj1(v1);
  1009.                                             w = w + '-' + w1;
  1010.                                         }
  1011.                                         if (najbl == zad)
  1012.                                         {
  1013.                                             ispisi();
  1014.                                             return true;
  1015.                                         }
  1016.                                     }
  1017.                                 }
  1018.                             }
  1019.                         }
  1020.                     }
  1021.                 }
  1022.             return false;
  1023.         }
  1024.     }
  1025. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement