Sie sind auf Seite 1von 4

Solución sin relojes

import x10.io.Console;
import x10.util.Random;
public class ejemplo {
public static def main(args: Rail[String]) {
val d=new Rail[Long](6);
val r=new Random();
val v=new Rail[Long](6,(i:Long)=>r.nextLong(55));
Console.OUT.println("Velocidad 1 = "+v(1));
Console.OUT.println("Velocidad 2 = "+v(2));
Console.OUT.println("Velocidad 3 = "+v(3));
Console.OUT.println("Velocidad 4 = "+v(4));
Console.OUT.println("Velocidad 5 = "+v(5));
while (d(1)<5000 && d(2)<5000 && d(3)<5000 && d(4)<5000 && d(5)<5000){
finish{
async {d(1)=d(1)+v(1);Console.OUT.println("Avanzó auto
1");Console.OUT.println("d1="+d(1));}
async {d(2)=d(2)+v(2);Console.OUT.println("Avanzó auto
2");Console.OUT.println("d2="+d(2));}
async {d(3)=d(3)+v(3);Console.OUT.println("Avanzó auto
3");Console.OUT.println("d3="+d(3));}
async {d(4)=d(4)+v(4);Console.OUT.println("Avanzó auto
4");Console.OUT.println("d4="+d(4));}
async {d(5)=d(5)+v(5);Console.OUT.println("Avanzó auto
5");Console.OUT.println("d5="+d(5));}
}
Console.OUT.println("--------------------");
}
Console.OUT.println("-----Ganador------");
var auto:Long=1;
var max:Long=d(1);
for (var i:Long=2;i<=5;i++){
if (d(i)>=max){
max=d(i);
auto=i;
}
}
Console.OUT.println("Auto "+auto+" Distancia final "+max);
}
}
RESULTADO

Observe la diferencia del resultado con el del programa con relojes.


Solución con relojes

import x10.io.Console;
import x10.util.Random;
public class ejemplo {
public static def main(args: Rail[String]) {
val d=new Rail[Long](6);
val r=new Random();
val v=new Rail[Long](6,(i:Long)=>r.nextLong(55));
Console.OUT.println("Velocidad 1 = "+v(1));
Console.OUT.println("Velocidad 2 = "+v(2));
Console.OUT.println("Velocidad 3 = "+v(3));
Console.OUT.println("Velocidad 4 = "+v(4));
Console.OUT.println("Velocidad 5 = "+v(5));
while (d(1)<5000 && d(2)<5000 & d(3)<5000 & d(4)<5000 & d(5)<5000){
finish async{
val c1=Clock.make();
async clocked(c1){
d(1)=d(1)+v(1);
Clock.advanceAll();
Console.OUT.println("Avanzó auto 1");
Clock.advanceAll();
Console.OUT.println("d1 = "+d(1));
Clock.advanceAll();
}
async clocked(c1){
d(2)=d(2)+v(2);
Clock.advanceAll();
Console.OUT.println("Avanzó auto 2");
Clock.advanceAll();
Console.OUT.println("d2 = "+d(2));
Clock.advanceAll();
}
async clocked(c1){
d(3)=d(3)+v(3);
Clock.advanceAll();
Console.OUT.println("Avanzó auto 3");
Clock.advanceAll();
Console.OUT.println("d3 = "+d(3));
Clock.advanceAll();
}
async clocked(c1){
d(4)=d(4)+v(4);
Clock.advanceAll();
Console.OUT.println("Avanzó auto 4");
Clock.advanceAll();
Console.OUT.println("d4 = "+d(4));
Clock.advanceAll();
}
async clocked(c1){
d(5)=d(5)+v(5);
Clock.advanceAll();
Console.OUT.println("Avanzó auto 5");
Clock.advanceAll();
Console.OUT.println("d5 = "+d(5));
Clock.advanceAll();
}
Console.OUT.println("--------------------");
}
}
Console.OUT.println("-----Ganador------");
var auto:Long=1;
var max:Long=d(1);
for (var i:Long=2;i<=5;i++){
if (d(i)>=max){
max=d(i);
auto=i;
}
}
Console.OUT.println("Auto "+auto+" Distancia final "+max);
}
}

RESULTADO

Das könnte Ihnen auch gefallen