Keresés

Részletes keresés

Helem Creative Commons License 2017.10.19 0 0 126

Ilyesmit én is csináltam kicsiben. Neuron hálózatok játszottak kicsiben. Innen már csak egy-két lépés s megvan a mesterséges intelligencia. Az első, hogy a jutalmazást és megerősítést ne az okozza, hogy a hálózat nyer. Simán be kell tenni egy virtuális környezetbe é azt kell neki használni jutalmazásul, megerősítésül, hogy újat csinál. Amit még soha. Újat gondol, amit még soha. Ezt egy hálózat tudja érzékelni. Ennek kimenete erősíti meg a másikat. Ezután az egésznek akkorának és olyan gyorsnak kell lennie, hogy rá lehessen csatolni a világra. Bődületes tanulása lesz. 

Előzmény: mmormota (125)
mmormota Creative Commons License 2017.10.19 0 0 125

A Zero változat:

- nem használ semmiféle emberi játszmát

- nem programoztak bele semmiféle olyan go ismeretet, amit az emberek tanítanak a kezdőknek, pl. létrát

Vagyis kizárólag a szabályokat kapta meg a program, és abból tanul, hogy saját magával játszik. Ezzel egy hónap alatt eljutott oda, hogy simán veri azt a változatot, ami még emberi játszma adatbázist használt, és többször megverte a világbajnokot. Ezt az újat már nem sok értelme lenne emberek ellen kiállítani, kb. emelővillás targonca vs. súlyemelő. 

Előzmény: mmormota (124)
mmormota Creative Commons License 2017.10.19 0 0 124

Van ebben valami megalázó. 

"Ezek a csupasz majmok olyan rosszul játszanak, hogy tanulni se lehet belőle. Inkább lenyomok pár játszmát saját magammal, hogy ráérezzek a játékra..."

Előzmény: Pathmaster (123)
Pathmaster Creative Commons License 2017.10.19 0 0 123

Az AlphaGo Zero részére csak a GO játék szabályait adták meg, és az önmagával folytatott játékok sorozatával építette fel a saját tudásbázisát, amely jelenleg már túlnőtt az AlphaGo korábbi verziójába feltöltött 100 ezer játékból álló tudásbázison.
Forrás: http://index.hu/tech/2017/10/18/40_nap_alatt_szedett_fel_3000_evnyi_tudast_a_google_mesterseges_intelligenciaja/

Előzmény: mmormota (119)
Pathmaster Creative Commons License 2017.08.01 0 0 122

Köszönöm az információt: https://www.sjeng.org/leela.html

Előzmény: mmormota (121)
mmormota Creative Commons License 2017.07.31 0 0 121

Ha valaki nem ismerné, ingyenesen letölthető a leela nevű Go program. Kb. 7 danos erős gépen, GPU támogatással, ha nem több. Még egy gyenge notebookon (GPU nélkül, az Intel régi fajta, processzorba épített grafikus rendszere nem segít) is rommá ver engem (1 dan körül lehetek), minimum 4 danos így is.

Pathmaster Creative Commons License 2017.07.25 0 0 120

Elém került az alábbi videó az intelligencia egyenletéről:
https://www.ted.com/talks/alex_wissner_gross_a_new_equation_for_intelligence#t-26929

 

Úgy tűnik, hogy az intelligencia egyenlete alapján meghatározott legjobb lépésnél maximális értéke lesz az N1/N2 hányadosnak, ahol N1 a saját lehetséges lépéseinknek a száma, és N2 az ellenfél lehetséges lépéseinek a száma. Mi erről a véleményetek?

Előzmény: Pathmaster (108)
mmormota Creative Commons License 2017.01.10 0 0 119

https://www.newscientist.com/article/2117067-deepminds-alphago-is-secretly-beating-human-players-online/

 

Alphago-t regisztrálták Master néven (nem árulva el a kilétét) a Tygem netes GO szerverre. 51-ből 50 meccset megnyert, az 51-et a net kapcsolat megszakadása miatt döntetlennek vette a szerver.

Kétszer megverte Ke Jie-t, a legerősebb (emberi) go játékost.

Pathmaster Creative Commons License 2016.04.29 0 0 118
Előzmény: Pathmaster (117)
Pathmaster Creative Commons License 2016.03.22 0 0 117
Előzmény: mmormota (115)
mmormota Creative Commons License 2016.03.15 0 0 116

Szegény Lee-nek ez nagyon megalázó lehetett. Nem tudom, mit fogy mondani a sajtótájékoztatón...

mmormota Creative Commons License 2016.03.15 0 0 115

Nagyon úgy tűnik, hogy ha a maradék gyengeségeit is kiszedik, előnykövet is adhat a világbajnoknak.

Előzmény: mmormota (114)
mmormota Creative Commons License 2016.03.15 0 0 114

De van hogy abból is nyer...

Az 5. játszma elején brutális hibát vétett Alphago, ráadásul kijátszotta mint egy 15 kyus játékos. Ezzel megsemmisítette az ellenfél állásának gyengeségeit. Ez megdöbbentő egy ennyire erős játékostól, mert nem csak ko fenyegetéseket veszít, hanem az egész környezetben rontja a játék esélyeit, sok pontot veszít vele. Mindenki azt hitte, vége, feladja vagy sétagalopp lesz Lee-nek.

Nem így történt, zseniálisan játszott a továbbiakban, ledolgozta a hátrányát.

A játszma legvégén, mikor már nyilván végelemzése volt pontos pontszámmal, még lépett egy-két értelmetlen hülyeségeket, nem vesztett rajta, de akkor is furcsa.

Törölt nick Creative Commons License 2016.03.13 0 0 113

na, azért hibázni is tud :-))

Előzmény: mmormota (112)
mmormota Creative Commons License 2016.03.13 0 1 112

Megint teljesen más jellegű játszma, és megint a gép nyert.

Bonyolult moyo stratégia, kölcsönös fenyegetések, nyitva hagyott helyzetek sokasága, a végén kemény inváziós kísérlettel és bonyolult ko harccal. Lee nagyot alkotott, de Alphago ledarálta.

Ha nem lenne megalázó, lassan azt kellene tesztelni, hány kő előnyt adhat az embereknek...

mmormota Creative Commons License 2016.03.10 0 1 111

Félelmetes, mire képes ez a gép...

A 2. meccs közvetítése érdekesebb volt, most nem magyaráztak elemi dolgokat, hanem rendesen elemezték a variációkat. Elképesztő, hogy mennyire jól értékelte a gép a teljes táblát. Olyan lépéseket tett a játszma elején, amik lokálisan előnyteleneknek tűnnek, de stratégiai szempontból megérték. A gép gyakran meglepte az elemzőt, kifejezetten bonyolult változatokba ment bele. Előfordult, hogy az elemző szerint nem jól lépett, de a gépnek lett igaza.

A végjátékot Lee időzavarban kényszerült lejátszani, és megint vesztett. 

mmormota Creative Commons License 2016.03.09 0 1 110

Megnéztem a közvetítést, nagyon izgalmas volt. (kár hogy néha 30k szinten kommentálták)

Félidőben nekem úgy tűnt, hogy Lee nagy előnyre tett szert, de Alphago megmutatta mennyit értek hozzá... :-)))

Mindig minden sikerült neki, mindig úgy jött ki a helyi harcokból hogy megléphette a nagy lépéseket, tiszta mágiának tűnt ahogy ledarálta Lee látszólagos előnyét.   

 

 

 

Előzmény: Pathmaster (109)
Pathmaster Creative Commons License 2016.03.09 0 0 109
Előzmény: Pathmaster (108)
Pathmaster Creative Commons License 2016.03.09 0 0 108
Előzmény: mmormota (106)
mmormota Creative Commons License 2016.01.28 0 0 106

Kb. 20 éve láttam először GO programot. Akkor még olyan gyenge volt, hogy 9 kő előnnyel is megvertem, pedig gyenge amatőr vagyok.  Sokáig alig fejlődtek ezek, aztán pár éve Monte Carlo módszereket kezdtek alkalmazni, és hirtelen az 5 kyu-ról az amatőr dan tartományba javultak. Most már a KGS-en (netes GO server) is van 3 dan-os program. (ez is kutyaütő amatőr szint).

Ezek szerint megint volt egy nagy ugrás, pro játékost megverni egész más szint.

 

Előzmény: Pathmaster (105)
Pathmaster Creative Commons License 2016.01.28 0 0 105
Előzmény: Pathmaster (104)
Pathmaster Creative Commons License 2008.08.17 0 0 104
Előzmény: Pathmaster (-)
Pathmaster Creative Commons License 2005.06.16 0 0 103

Ezen a lapon magas szintű GO játszmák leírását találjuk SGF formátumban.

A program következő verziója az SGF formátumban megadott játszmákat aszerint fogja kiértékelni, hogy az egyes lépéseket a program hányadik helyen emelné ki. Ezt követően készítene egy statisztikát arról, hogy játékosok színvonala alapján jónak minősülő lépések közül melyiket sorolta a leghátrább, és az hányadik kiemelt volt, illetve, hogy átlagosan hányadik helyen emelte ki a jó lépéseket. 

Előzmény: Pathmaster (102)
Pathmaster Creative Commons License 2005.06.13 0 0 102
Ez a program még nem ismeri fel a stabil alakzatokat, és arra sem képes, hogy az ellenfél lépését mérlegelve emelje ki a várhatóan leghatékonyabb lépést. Ennek ellenére az előnyös lépéseknél mégis sikerül hátrább sorolni előnytelenebb lépéseket.  
 
(A stabil alakzatok felismertetése a legfontosabb továbbfejlesztési lehetőség, mert ennek hiányában a program egészen addig nem kínálja fel a passzt, amíg van üres rácspont a táblán.) 
 
Ennek a programnak a segítségével szívesen kielemezném a hozzáférhetővé tett híres játszmák játszmalapjait. Az elemzés arra irányulna, hogy az egyes lépéseket a program hányadik helyen emelné ki.  
Előzmény: Pathmaster (101)
Pathmaster Creative Commons License 2005.06.09 0 0 101

// Ez annak a programnak a 0.35-as verzioja, amely a GO jatek lehetseges lepesei kozul emel ki tizet.

import java.text.*;
import java.util.*;

public class board {

 locus[] grid;
 int size, length;

 public board (){
  boolean ok;
  do {
   System.out.print("A tabla merete (8 es 20 kozotti paratlan): ");
   size = readInt();
   ok = (size%2==1) & (size>8) & (size<20);
  } while (!ok);
  length = size*size;
  grid = new locus[length+2];
  for (int i=0; i<length; i++)
   grid[i] = new locus(size, i);
  grid[length] = new locus(length+1);
 }

 public void game (){ //A jatek levezetese.
  int lepes;
  int[] kiemeltek = new int[10];
  boolean passz, egyik, masik;
  egyik = false;
  masik = false;
  while (true) {
   proposer(1);
   lepes = readStep();
   if (lepes<length){
    grid[lepes].step(1);
    colouring();
    masik = false;
   }
   else {
    System.out.println("Passz");
    egyik = true;
   }
   if (egyik & masik) break;
   proposer(-1);
   lepes = readStep();
   if (lepes<length){
    grid[lepes].step(-1);
    colouring();
    egyik = false;
   }
   else {
    System.out.println("Passz");
    masik = true;
   }
   if (egyik & masik) break;
  }
 }

 public void proposer (int color){  //Kiemeles: Red eseten 1.
  int i, j, cs;      //
  for (i=0; i<length; i++){
   if (grid[i].getSpec(3) ==0){
    grid[i].step(color);   //Atmenetileg feltesz egy kovet.
    dyeing();      //Meghatarozza a racspontok atmeneti szinet.
    grid[i].setE((int)Math.exp(expansion(color)/grid[i].getSpec(0))); //Meghatarozza a gondolkodás eredmenyet.
    grid[i].setD(defence(color)/grid[i].getSpec(0)); //Meghatarozza az erzekeles eredmenyet.
    grid[i].setA(assault(color)); //Meghatarozza az erzelem eredmenyet.
    grid[i].abate();    //Leveszi az atmenetileg feltett kovet.
   }
   else {
    grid[i].setE(0);
    grid[i].setD(0);
    grid[i].setA(0);
   }
  }
  intuition(color);     //Beallitja a sulyozott eredmenyt.


  printBoard(3);      //A kovek kiiratasa.
  //printBoard(4);      //A piros szinkodok kiiratasa.
  //printBoard(5);      //A kek szinkodok kiiratasa.
  printBoard(8);      //A terulet novelo hatas kiiratasa.
  printBoard(9);      //A stabilitas novelo hatas kiiratasa.
  //printBoard(6);      //Az atmeneti szinkod kiiratasa.
  printBoard(10);      //Az ellenhatas csokkento hatas kiiratasa.
  printBoard(11);      //Az osszetett hatas kiiratasa.


  int[] kiemeltek = new int[length+1];
  for (i=0; i<length+1; i++)
   kiemeltek[i] = i;    //Mint egy indextomb.
  for (i=length; i>0; i--){   //Az indextombot I szerint rendezi.
   for (j=0; j<i; j++) {
    if (grid[kiemeltek[j+1]].getSpec(11) > grid[kiemeltek[j]].getSpec(11)){
     cs = kiemeltek[j];
     kiemeltek[j] = kiemeltek[j+1];
     kiemeltek[j+1] = cs;
    }
   }
  }
  for (i=0; i<10; i++) //Kiirja a 10 legnagyobb I erteku racspont koordinatajat.
   System.out.print(grid[kiemeltek[i]].getName()+"; "+((int)grid[kiemeltek[i]].getSpec(11))+"; ");
  System.out.println();
 }

 public double expansion (int color){ //Meghatarozza a teruletnovelo hatast.
  double teruletNovekedes = 0.0;   //A kulonbseg maximumat keressuk.
  boolean ujTerulet;
  for (int i=0; i<length; i++){
   ujTerulet = (0>=color*(grid[i].getSpec(4)-grid[i].getSpec(5))
   & (0<color*(grid[i].getSpec(6)-grid[i].getSpec(7))));
   if (ujTerulet){
    //System.out.print(color*(grid[i].getSpec(6)-grid[i].getSpec(7))+"; ");
    teruletNovekedes += color*(grid[i].getSpec(6)-grid[i].getSpec(7));
   }
  }
  //double expNovekedes = Math.exp(teruletNovekedes/3000);
  return teruletNovekedes/10;
 }

 public int defence (int color){  //Meghatarozza a stabilitasnovelo hatast.
  int stabilitasNovekedes = 0; //A maximumat keressuk.
  boolean sajatTerulet;
  for (int i=0; i<length; i++){
   sajatTerulet = (0<color*(grid[i].getSpec(4)-grid[i].getSpec(5)));
   if (sajatTerulet)
    stabilitasNovekedes += color*(grid[i].getSpec(5)+grid[i].getSpec(6)-grid[i].getSpec(7)-grid[i].getSpec(4));
  }
  stabilitasNovekedes *= 10;
  return stabilitasNovekedes;
 }

 public int assault (int color){  //Meghatarozza az ellenfel gyengitesenek hatasat.
  int ellenhatasCsokkenes = 0;
  double regiHatas = 0.0;
  double ujHatas = 0.0;
  for (int i=0; i<length; i++){
   if (0>color*(grid[i].getSpec(4)-grid[i].getSpec(5)))
    regiHatas += color*(grid[i].getSpec(4)-grid[i].getSpec(5));
   if (0>color*(grid[i].getSpec(6)-grid[i].getSpec(7)))
    ujHatas += color*(grid[i].getSpec(6)-grid[i].getSpec(7));
  }
  if (regiHatas<0 && ujHatas<0)         //regiHatas < ujHatas!!!
   ellenhatasCsokkenes += (int) (100*(Math.log(regiHatas/ujHatas))); //Pozitiv elojelu!!!
  return ellenhatasCsokkenes;
 }

 public void intuition (int color){ //Beallitja a masik harom ertek sulyozott atlagabol adodo sorrendet.
  double osszhatas;
  double E = 0.0;
  double D = 0.0;
  double A = 0.0;
  for (int i=0; i<length; i++){
   if (0<grid[i].getSpec(8)) E += grid[i].getSpec(8);
   if (0<grid[i].getSpec(9)) D += grid[i].getSpec(9);
   if (0<grid[i].getSpec(10)) A += grid[i].getSpec(10);
  }
  System.out.println(E+"; "+D+"; "+A+"; ");
  for (int i=0; i<length; i++){
   osszhatas = 0.0;
   boolean ok = (0<=grid[i].getSpec(6)) & (0<=grid[i].getSpec(7)) & (0<=grid[i].getSpec(8) & (0==grid[i].getSpec(3)));
   if (ok){
    if (E>0) osszhatas += 2*grid[i].getSpec(8)/E;
    if (D>0) osszhatas += grid[i].getSpec(9)/D;
    if (A>0) osszhatas += grid[i].getSpec(10)/A;
    grid[i].setI((int)(1000*osszhatas));
   }
   else grid[i].setI(0);
  }
 }

 public void colouring (){ //Meghatarozza a racspontok vegso szinet.
  for (int i=0; i<length; i++)
   grid[i].setColor(holding(i));
 }

 public void dyeing (){ //Meghatarozza a racspontok atmeneti szinet.
  for (int i=0; i<length; i++)
   grid[i].setDye(holding(i));
 }

 public int[] holding (int i){ //Visszaadja a kovek hatasat az i-edik racspontra.
  int[] holder = new int[2];
  holder[0] = 0;
  holder[1] = 0;
  double q, d;
  for (int j=0; j<length; j++){
   q = grid[i].getBorder()*grid[j].getBorder()/1000;
   if (q>2000) q = 2166.0;
   d = D(i, j);
   if (grid[j].getSpec(3)>0){ //Az elso lepes elott csak ez lehet.
    holder[0] += (int)(q/Math.pow(2,d));
   }
   else if (grid[j].getSpec(3)<0){
    holder[1] += (int)(q/Math.pow(2,d));
   }
  }
  boolean[] s = stabil(i);
  if (s[0]) holder[0] = 15000;
  else if (s[1]) holder[1] = 15000;
  else holder = weighted(holder);
  return holder;
 }

 public int[] weighted (int[] w){ //Visszaadja hatas sulyozott erteket.
  int n = 500;      //Az arnyalatok szama: 1 + 14900%n;
  double q = 4.49;    //Az eredmenyt kezdetben 4.5 szorosere transzponaljuk;
  if (q*w[0]>14900.0) q = 14900.0/w[0];
  if (q*w[1]>14900.0) q = 14900.0/w[1];
  w[0] = n*((int)(q*w[0]/n));
  w[1] = n*((int)(q*w[1]/n));
  return w;      //Elso kozelitesben.
 }

 public double D (int i, int j){ //Visszaadja az i-edik es a j-edik racspont tavolsagat.
  return Math.sqrt((grid[i].getX()-grid[j].getX())*(grid[i].getX()-grid[j].getX())
    + (grid[i].getY()-grid[j].getY())*(grid[i].getY()-grid[j].getY()));
 }

 public boolean[] stabil (int i) { //Stabil alakzathoz tartozik-e az adott racspont?
  boolean[] s = new boolean[2];
  s[0] = false; //Amig az alakzat stabilitasat nem vizsgaljuk.
  s[1] = false;
  return s;
 }

 public int readInt() { //Beolvas egy int típusú változót.
  while(true) {
   try {
    return Integer.parseInt(readLine().trim());
   }
   catch(NumberFormatException e) {
    System.out.println("Nem egesz! Ujra!");
   }
  }
 }

 public int readStep (){
  int step = length;
  String lepes = (readLine().trim()).toUpperCase();
  for (int i=0; i<length; i++){
   if (lepes.equals(grid[i].getName())) {
    step = i;
    break;
   }
  }
  //System.out.println(step);
  return step;
 }

 public String readLine (){ //Beolvas egy Stringet.
  int ch;
  String str = "";
  boolean done = false;
  while (!done) {
   try {
    ch = System.in.read();
    if (ch < 0 || (char)ch == 'n')
     done = true;
    else if ((char)ch != 'r')
    str = str + (char)ch;
    }
   catch(java.io.IOException e) {
   done = true;
   }
  }
  return str;
 }

 public void printBoard(int a){
  if ((a>=0) & (a<12)){
   System.out.println();
   for (int i=0; i<size; i++) {
    for (int j=0; j<size; j++) {
     System.out. print(grid[i*size+j].getSpec(a)+"; ");
    }
   System.out.println();
   }
  }
  else System.out.print("Ilyen attributum nincs.");
 }

 public static void main (String[]args){
  (new board ()).game(); //Megjelenitesi teszt.
 }
}

class locus {

 private int[] specifies = new int[12];
 private NumberFormat nf = NumberFormat.getInstance(Locale.US);
 private final String spaces = ("00");
 private String name;

 public locus (int size, int ID){
  int x, y;
  x = 1+ID%size;
  y = 1+(1+ID-x)/size;
  boolean sarok = (x==1&y==1)|(x==1&y==size)|(x==size&y==1)|(x==size&y==size);
  boolean szel = x==1 | y==1 | x==size | y==size;
  if (!szel) specifies[0] = 1000; //border
  else if (!sarok) specifies[0] = 1625;
  else specifies[0] = 2166;
  specifies[1] = x;
  specifies[2] = y;
  nf.setGroupingUsed(false);
  nf.setMaximumFractionDigits(0);
  name = nf.format(y); //A szamot String-ge alakitja.
  if (name.length() < 2)
   name = spaces.substring(0,2-name.length()) + name; //Szukseg eseten 0-t tesz ele.
  name = (char) (x+64) + name; //Ele rakja az oszlop betujelet.
  //System.out.print(name+"; ");
  specifies[3] = 0;  //n: A racsponton levo kovek szama lehet: -1; 0; 1.
  specifies[4] = 0;  //color P: a kezdeti szinertek nulla.
  specifies[5] = 0;  //color B
  specifies[6] = 0;  //dye P: az atmeneti szinertek.
  specifies[7] = 0;  //dye B
  specifies[8] = 0;  //E: a teruletnovelo hatas.
  specifies[9] = 0;  //D: a stabilitasnovelo hatas.
  specifies[10] = 0;  //A: az ellenhatas csokkento hatas.
  specifies[11] = 0;  //I: az osszevont hatas
 }

 public locus (int ID){
  specifies[0] = 0;  //border
  specifies[1] = ID;  //x: ez garantaltan nagyobb a tobbi x-nel.
  specifies[2] = ID;  //y
  name = "Pas";
  specifies[3] = 0;  //n
  specifies[4] = 0;  //color P
  specifies[5] = 0;  //color B
  specifies[6] = 0;  //dye P
  specifies[7] = 0;  //dye B
  specifies[8] = 0;  //E
  specifies[9] = 0;  //D
  specifies[10] = 0;  //A
  specifies[11] = 3;  //I
 }

 public int getSpec (int i){
  return specifies[i];
 }

 public void setE (int e){
  specifies[8] = e;
 }

 public void setD (int d){
  specifies[9] = d;
 }

 public void setA (int a){
  specifies[10] = a;
 }

 public void setI (int i){
  specifies[11] = i;
 }
 public int getX (){
  return specifies[1];
 }

 public int getY (){
  return specifies[2];
 }

 public int getBorder (){   //Visszadja a racspont szinezesi sulyat.
  return specifies[0];
 }

 public void setDye (int[] c){  //Beallitja az atmeneti szint.
  specifies[6] = c[0];   //Beallitja a piros arnyalatot.
  specifies[7] = c[1];   //Beallitja a kek arnyalatot.
 }

 public void setColor (int[] c){  //Beallitja a vegso szint.
  specifies[4] = c[0];   //Beallitja a piros arnyalatot.
  specifies[5] = c[1];   //Beallitja a kek arnyalatot.
 }

 public void step (int c){ //Piros ko eseten pozitiv; kek ko eseten negativ
  if (c>0) specifies[3] = 1;
  else if (c<0) specifies[3] = -1;
  else specifies[3] = 0;
 }

 public void abate (){
  specifies[3] = 0;    //A ko levetele eseten nulla.
 }

 public String getName (){
  return name;
 }

}

Előzmény: Pathmaster (100)
Pathmaster Creative Commons License 2005.06.09 0 0 100
Szerintem a program 0.35-ös verziója már jó.
Előzmény: carnap (96)
carnap Creative Commons License 2005.05.05 0 0 98
en ebbol annyit tudok vallalni, hogy ha kell egy szakertoi velemeny, akkor megmondom, hogy az elmeletileg jo, vagy legjobb lepesek mennyire vannak benne a kiemelt racspontok kozott. de csak ha ezt kepi informaciokent megkapom.
Előzmény: Pathmaster (97)
Pathmaster Creative Commons License 2005.05.05 0 0 97
Szerintem ezt a programot könnyebb futtatni, mint megírni.
 
A jósága pedig attól függ, hogy mennyire felel meg a nyolcvanegyes számú hozzászólásban felvetett specifikációjának. Ott a kiemelő és a fakiértékelő metódusok logikai elkülönítésének az igénye merült fel, amit a pusztán kiemelést végző program természetszerűleg valósít meg.
 
Ezért szerintem ennek a programnak a továbbfejlesztésénél arra kell törekedni, hogy az elméletileg legjobb lépés benne legyen az első néhány helyen kiemelt lépés között. A program működését úgy kell optimalizálni, hogy az elméletileg legjobb lépést a lehető legkevesebb számú kiemelt rácspont között legyen megtalálható.
Előzmény: carnap (96)
carnap Creative Commons License 2005.05.04 0 0 96

en monjduk tudnam futtatni a programodat, de hat lusta vagyok, mivel en ugy velem, hogy nem jo.

 

annyit vallaltam, hogy ha vannak allasok es kiertekelesek, akkor megmondom, mennyire jok, es mire.

Előzmény: Pathmaster (95)
Pathmaster Creative Commons License 2005.05.04 0 0 95
Arra gondoltam, hogy úgy lehetne fokozni a téma iránti érdeklődést, ha a Java nyelvű forráskód futtatását is leírnám. Az egymást követő lépések közül lehet, hogy az első néhány már akkor megtörtént, amikor az operációs rendszert telepítették a számítógépünkre; ezért az akkor elvégzett műveleteket nem kell megismételni.

  1. Ha nincs a telepítve a Java fejlesztő környezet (JDK) a számítógépünkre, akkor a telepítő fájlt a Sun oldaláról tölthetjük le, majd ezt lefuttatva telepítjük. A telepítés során a feltett kérdésekre válaszolva történik a Java fejlesztő környezet beállítása.
  2. Ezt követően XP esetén a Sajátgép/tulajdonságok/speciális/környezeti változóknál be kell állítani JAVA_HOME rendszerváltozót, amely arra a könyvtárra (mappára) mutat, amelyikbe a JDK-t telepítettük.
  3. Ezt követően a PATH-ba be kell állítani a %JAVA_HOME/BIN könyvtárat.
  4. Ezt követően létrehozunk egy GO0.33 nevű könyvtárat.
  5. Ezt követően megnyitjuk a jegyzettömböt, és a 93-as hozzászólásban látható forráskódot a vágólapon keresztül átmásoljuk a jegyzettömbbe, majd a jegyzettömb tartalmát board.java néven elmentjük a GO0.33 nevű könyvtárba.
  6. Ezt követően parancssorból belépünk a GO0.33 nevű könyvtárba, és beírjuk a következő parancsot: javac board.java
  7. Ezt követően többek között megkapjuk a board.class fájlt, amit a java board utasítás beírásával tudunk futtatni.
  8. Ezt követően érdemes készíteni egy board.bat fájlt is, aminek a tartalma: java board
A board.bat fájl futtatásával a program akár a munkaasztal grafikus felületéről is kényelmesen elindítható, és tesztelhető.
Előzmény: Pathmaster (94)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!