» »

Java ->Python

Java ->Python

tx-z ::

A bi lahko bil kdo tako dober, da bi mi napisu sledečo kodo v pythonu (predstavitev v disjunktivni normalni obliki)

public static void main(String[] args){
Integer[][] vhod ={{0,0,1,1},{0,0,1,0},{0,1,0,1}}; //primer vhoda -  v Pythonu bi najverjetneje bili oglati oklepaji; lahko si predstavljamo kot funkcijo, ki za parametre x1=0, x2=0,x3=1 vrne 1 ..in tako naprej za ostale
String izhod="["; //izhod narejen za python obliko
for (int i=0; i<vhod.length; i++){ //gremo čez vsako podmnožico
   if(vhod[i][vhod[i].length-1]==1){ //zanimajo nas samo tisti, ki imajo rezultat 1
      izhod+="[";
      for(int j=0; j<vhod[i].length-1; j++){ //gremo čez vsazga v podmnožici, razn zadnjega
         if(vhod[i][j]==1){ //če je true ga zapišemo kot zaporedno številko (+1 zato kr u javi začne z 0)
            izhod+=(j+1);
         }else{
            izhod+="-"+(j+1);  //če je false, dodamo minus
         }
         if(j!=vhod[i].length-2){ //če še nismo končali dodamo vejico, sicer ]
            izhod+=",";
         }else{
            izhod+="]";
         }
      }
      if(i!=vhod.length-1){
         izhod+=",";
      }else{
         izhod+="]";
      }
   }
}

System.out.println("Rezultat: "+izhod);
}
}


Primer si lahko pogledat tuki: http://ideone.com/YIwTb ...

Rabil bi predvsem v osnovi, sej tut ta algoritem ni še čist dodelan...Ampak ne vem kako bi to prevedu v python, kr je vse krneki čudn tm :/

No, če bi bil kdo vsaj tako dober, da bi kakšen del kode mi predstavil v python obliki, bi bil tut zelo hvaležen!
tx-z

jype ::

To bo v pythonu pošastno počasno.

tx-z ::

Kaj nej. Narest bi sicr mogu z A*/iskanje v širino/globino algoritmom, sam tm niti prbližn še nism niti ne vem kako bi tisto stvar uporabu za ta namen. Zaenkrat se mi je že tle ustavl:
def dnf(vhod):
    for i in range(len(vhod)):
        for j in range(len(vhod[i]))
        
    return vhod


edit: ah, dvopičje mankalo pr for....
tx-z

Zgodovina sprememb…

  • spremenilo: tx-z ()

tx-z ::

Okej, sej neki sm že naredu :) Ponavad je tko da more človk odpret temo na forumu in pol nekak itak sam pride do rešitve :)
tx-z

sandmat ::

a te pr UI matrajo, da moraš delat v pythonu? jst sm nazaj forsiral javo :)

tx-z ::

Ma ja :) Sej verjamm da je python kul za kšne stvari, ampak da se morš pa spet neki naučit sam zard ene nalogce je pa tut smotan :)

Okej, zdej mi je ratal. :) Zdej morm pa uporabt enga izmed tistih algoritmov, da bi izbolšu/minimiziru celotno stvar. A ma kdo kakšno idejo?
tx-z

Mavrik ::

(A se ti ne zdi da je naučit se nekaj novega point teh nalog? ;) Eh FRIjevci, FRIjevci :P )

Take stvari rešuješ s pathfinding algoritmom tako, da ti prostor predstavljajo vsa možna stanja in kombinacije spremeljivk ter operatorjev. Potem pa laufaš pathfinding algoritem čez to in ti bo poiskal "najkrajšo" pot (torej najkrajši izraz) do rešitve.

Za kaj več boš pa moral kaj o nalogi še napisat ;)
The truth is rarely pure and never simple.

tx-z ::

Torej bruteforce iščeš rešitev? Seriously? :P

Torej morm narest algoritm k ti nardi lepo
x1,!x1,x1|x2,!x1|x2,x1|!x2,!x1|!x2,..isto za &, in vse možne kombinacije, in tista najkrajša k prime je rezultat?

Podano maš torej možnosti za funkcijo f(x1,x2,x3)
x1 x2 x3 f
1 0 1 1
0 0 1 0
0 1 1 1
0 1 0 0

In ti moraš izpisat v tem primeru x1|(x2&x3), kar predstavlja pač najkrajšo predstavitev te funkcije. Do zdej sm uspel narest da ti predstav to funkcijo, ampak bi jo mogu minimizirat. Kšna quinnova metoda je čist preveč komplicirana da jo spišm :)
tx-z

Zgodovina sprememb…

  • spremenilo: tx-z ()

Arto ::

A ni glih quine kao najbolj kul za računalniško realizacijo? Pa men se niti ni zdej neki ful kompliciran (no, za na roko pisat je blo precej moreče).

sandmat ::

@ziga: za to obstaja polinomski algoritem (glej skripto TOR2) ce se prav spomnim. Ti lahko vedno naredis v polinomskem casu iz cesarkoli disjunktivno normalno obliko in iz tega dost hitro pojoinas skupaj tiste, ki se razlikujejo samo v eni spremenljivki. To delas, dokler lahko. over.

Mavrik ::

Torej bruteforce iščeš rešitev? Seriously? :P


Seveda ne - uporabljaš pathfinding algoritem, ki ti poišče (skoraj) optimalno rešitev v (skoraj) najkrajšem času.

Pač vozlišča grafa so vse možne enačbe, uteži so sprememba kriterija (če se prav spomnim ti iščeš najkrajšo, torej je utež povečanje števila parametrov), sama vozlišča pa jasno generiraš sproti, ko algoritem teče (ker nočeš najprej pokurit ogromno rama sam da vozlišča zgeneriraš).

Za to ti ni nobenih Quinnov potrebno implementirati. Le svoj problem moraš tako preoblikovat, da bo Dijkstrin algoritem na njem tekel :)
The truth is rarely pure and never simple.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Programiranje v pythonu

Oddelek: Programiranje
142032 (1390) Sony-Tech
»

Verjetnost pri kroglicah

Oddelek: Šola
61614 (1311) Math Freak
»

Python, prosim za pomoc pri programiranju (strani: 1 2 3 )

Oddelek: Programiranje
10413986 (10088) lenika
»

Naloge v Pythonu

Oddelek: Programiranje
252527 (2144) Isotropic
»

Iskanje podvojenih zaporedij

Oddelek: Programiranje
91855 (1635) Gundolf

Več podobnih tem