Merge with 22bad86100ac86a8164a6c6925086cfda905d765
authorrushan
Sun, 19 Jun 2011 17:32:15 +0400
changeset 889555608af847
parent 87 0f4c762f56f7
parent 86 22bad86100ac
child 89 b6543dcda026
Merge with 22bad86100ac86a8164a6c6925086cfda905d765
src/main/java/ru/alphatech/icfpc/game/AbstractPolicy.java
     1.1 --- a/src/main/java/ru/alphatech/icfpc/cards/Attack.java	Sun Jun 19 17:30:18 2011 +0400
     1.2 +++ b/src/main/java/ru/alphatech/icfpc/cards/Attack.java	Sun Jun 19 17:32:15 2011 +0400
     1.3 @@ -3,21 +3,36 @@
     1.4  import ru.alphatech.icfpc.game.ICFPCException;
     1.5  import ru.alphatech.icfpc.game.IValue;
     1.6  import ru.alphatech.icfpc.game.Player;
     1.7 +import ru.alphatech.icfpc.game.Run;
     1.8  import ru.alphatech.icfpc.game.Value;
     1.9  
    1.10  public class Attack implements ICard
    1.11  {
    1.12  	@Override
    1.13 +	public String getName() {
    1.14 +		return "attack";
    1.15 +	}
    1.16 +
    1.17 +	@Override
    1.18  	public IValue returnValue(final IValue iobj, Player proponent, Player opponent)
    1.19  	{
    1.20  		return new ICard()
    1.21  		{
    1.22  			@Override
    1.23 +			public String getName() {
    1.24 +				return "";
    1.25 +			}
    1.26 +			
    1.27 +			@Override
    1.28  			public IValue returnValue(final IValue jobj, Player proponent, Player opponent)
    1.29  			{
    1.30  				return new ICard()
    1.31  				{
    1.32  					@Override
    1.33 +					public String getName() {
    1.34 +						return "";
    1.35 +					}
    1.36 +					@Override
    1.37  					public IValue returnValue(final IValue nobj, Player proponent, Player opponent)
    1.38  					{
    1.39  						if(iobj instanceof Value && nobj instanceof Value)
    1.40 @@ -39,13 +54,26 @@
    1.41  										{
    1.42  											int w = opponent.getSlot(255 - j).getVitality();
    1.43  											
    1.44 -											if (w > 0)
    1.45 +											if(Run.getAutoMode())
    1.46  											{
    1.47 -												int wdec = (int) Math.floor(9 * n / 10);
    1.48 -												int resw = w - wdec;
    1.49 +												if(w > 0)
    1.50 +												{
    1.51 +													int wdec = (int) Math.floor(9 * n / 10);
    1.52 +													int resw = w + wdec;
    1.53  
    1.54 -												opponent.getSlot(255 - j).setVitality(resw < 0 ? 0 : w);
    1.55 +													opponent.getSlot(255 - j).setVitality(resw > 65535 ? 65535 : w);
    1.56 +												}
    1.57  											}
    1.58 +											else
    1.59 +											{
    1.60 +												if (w > 0)
    1.61 +												{
    1.62 +													int wdec = (int) Math.floor(9 * n / 10);
    1.63 +													int resw = w - wdec;
    1.64 +
    1.65 +													opponent.getSlot(255 - j).setVitality(resw < 0 ? 0 : w);
    1.66 +												}
    1.67 +											}											
    1.68  
    1.69  											return new I();
    1.70  										}
     2.1 --- a/src/main/java/ru/alphatech/icfpc/cards/Copy.java	Sun Jun 19 17:30:18 2011 +0400
     2.2 +++ b/src/main/java/ru/alphatech/icfpc/cards/Copy.java	Sun Jun 19 17:32:15 2011 +0400
     2.3 @@ -8,6 +8,11 @@
     2.4  public class Copy implements ICard
     2.5  {
     2.6  	@Override
     2.7 +	public String getName() {
     2.8 +		return "copy";
     2.9 +	}
    2.10 +	
    2.11 +	@Override
    2.12  	public IValue returnValue(IValue iobj, Player proponent, Player opponent)
    2.13  	{
    2.14  		if (iobj instanceof Value)
     3.1 --- a/src/main/java/ru/alphatech/icfpc/cards/Dbl.java	Sun Jun 19 17:30:18 2011 +0400
     3.2 +++ b/src/main/java/ru/alphatech/icfpc/cards/Dbl.java	Sun Jun 19 17:32:15 2011 +0400
     3.3 @@ -8,6 +8,11 @@
     3.4  public class Dbl implements ICard
     3.5  {
     3.6  	@Override
     3.7 +	public String getName() {
     3.8 +		return "dbl";
     3.9 +	}
    3.10 +	
    3.11 +	@Override
    3.12  	public IValue returnValue(IValue nobj, Player proponent, Player opponent)
    3.13  	{
    3.14  		if(nobj instanceof Value)
     4.1 --- a/src/main/java/ru/alphatech/icfpc/cards/Dec.java	Sun Jun 19 17:30:18 2011 +0400
     4.2 +++ b/src/main/java/ru/alphatech/icfpc/cards/Dec.java	Sun Jun 19 17:32:15 2011 +0400
     4.3 @@ -3,11 +3,17 @@
     4.4  import ru.alphatech.icfpc.game.ICFPCException;
     4.5  import ru.alphatech.icfpc.game.IValue;
     4.6  import ru.alphatech.icfpc.game.Player;
     4.7 +import ru.alphatech.icfpc.game.Run;
     4.8  import ru.alphatech.icfpc.game.Value;
     4.9  
    4.10  public class Dec implements ICard
    4.11  {
    4.12  	@Override
    4.13 +	public String getName() {
    4.14 +		return "dec";
    4.15 +	}
    4.16 +	
    4.17 +	@Override
    4.18  	public IValue returnValue(IValue iobj, Player proponent, Player opponent)
    4.19  	{
    4.20  		if(iobj instanceof Value)
    4.21 @@ -18,9 +24,19 @@
    4.22  			{
    4.23  				int v = proponent.getSlot(255 - i).getVitality();
    4.24  				
    4.25 -				if (v > 0)
    4.26 +				if(Run.getAutoMode())
    4.27  				{
    4.28 -					proponent.getSlot(255 - i).setVitality(v - 1);
    4.29 +					if(v > 0 && v < 65535)
    4.30 +					{
    4.31 +						proponent.getSlot(255 - i).setVitality(v + 1);
    4.32 +					}
    4.33 +				}
    4.34 +				else
    4.35 +				{
    4.36 +					if (v > 0)
    4.37 +					{
    4.38 +						proponent.getSlot(255 - i).setVitality(v - 1);
    4.39 +					}
    4.40  				}
    4.41  
    4.42  				return new I();
     5.1 --- a/src/main/java/ru/alphatech/icfpc/cards/Get.java	Sun Jun 19 17:30:18 2011 +0400
     5.2 +++ b/src/main/java/ru/alphatech/icfpc/cards/Get.java	Sun Jun 19 17:32:15 2011 +0400
     5.3 @@ -8,6 +8,11 @@
     5.4  public class Get implements ICard
     5.5  {
     5.6  	@Override
     5.7 +	public String getName() {
     5.8 +		return "get";
     5.9 +	}
    5.10 +	
    5.11 +	@Override
    5.12  	public IValue returnValue(IValue iobj, Player proponent, Player opponent)
    5.13  	{
    5.14  		if (iobj instanceof Value)
     6.1 --- a/src/main/java/ru/alphatech/icfpc/cards/Help.java	Sun Jun 19 17:30:18 2011 +0400
     6.2 +++ b/src/main/java/ru/alphatech/icfpc/cards/Help.java	Sun Jun 19 17:32:15 2011 +0400
     6.3 @@ -3,21 +3,37 @@
     6.4  import ru.alphatech.icfpc.game.ICFPCException;
     6.5  import ru.alphatech.icfpc.game.IValue;
     6.6  import ru.alphatech.icfpc.game.Player;
     6.7 +import ru.alphatech.icfpc.game.Run;
     6.8  import ru.alphatech.icfpc.game.Value;
     6.9  
    6.10  public class Help implements ICard
    6.11  {
    6.12  	@Override
    6.13 +	public String getName() {
    6.14 +		return "help";
    6.15 +	}
    6.16 +	
    6.17 +	@Override
    6.18  	public IValue returnValue(final IValue iobj, Player proponent, Player opponent)
    6.19  	{
    6.20  		return new ICard()
    6.21  		{
    6.22  			@Override
    6.23 +			public String getName() {
    6.24 +				return "";
    6.25 +			}
    6.26 +			
    6.27 +			@Override
    6.28  			public IValue returnValue(final IValue jobj, Player proponent, Player opponent)
    6.29  			{
    6.30  				return new ICard()
    6.31  				{
    6.32  					@Override
    6.33 +					public String getName() {
    6.34 +						return "";
    6.35 +					}
    6.36 +					
    6.37 +					@Override
    6.38  					public IValue returnValue(final IValue nobj, Player proponent, Player opponent)
    6.39  					{
    6.40  						if(iobj instanceof Value && nobj instanceof Value)
    6.41 @@ -39,13 +55,26 @@
    6.42  										{
    6.43  											int w = proponent.getSlot(j).getVitality();
    6.44  											
    6.45 -											if(w > 0)
    6.46 +											if(Run.getAutoMode())
    6.47  											{
    6.48 -												int winc = (int) Math.floor(11 * n / 10);
    6.49 -												int resw = w + winc;
    6.50 -												
    6.51 -												proponent.getSlot(j).setVitality(resw > 65535 ? 65535 : resw);
    6.52 +												if(w > 0)
    6.53 +												{
    6.54 +													int winc = (int) Math.floor(11 * n / 10);
    6.55 +													int resw = w - winc;
    6.56 +													
    6.57 +													proponent.getSlot(j).setVitality(resw < 0 ? 0 : resw);
    6.58 +												}
    6.59  											}
    6.60 +											else
    6.61 +											{
    6.62 +												if(w > 0)
    6.63 +												{
    6.64 +													int winc = (int) Math.floor(11 * n / 10);
    6.65 +													int resw = w + winc;
    6.66 +													
    6.67 +													proponent.getSlot(j).setVitality(resw > 65535 ? 65535 : resw);
    6.68 +												}
    6.69 +											}											
    6.70  											
    6.71  											return new I();
    6.72  										}
     7.1 --- a/src/main/java/ru/alphatech/icfpc/cards/I.java	Sun Jun 19 17:30:18 2011 +0400
     7.2 +++ b/src/main/java/ru/alphatech/icfpc/cards/I.java	Sun Jun 19 17:32:15 2011 +0400
     7.3 @@ -6,6 +6,11 @@
     7.4  public class I implements ICard
     7.5  {
     7.6  	@Override
     7.7 +	public String getName() {
     7.8 +		return "I";
     7.9 +	}
    7.10 +	
    7.11 +	@Override
    7.12  	public IValue returnValue(IValue x, Player proponent, Player opponent)
    7.13  	{
    7.14  		return x;
     8.1 --- a/src/main/java/ru/alphatech/icfpc/cards/ICard.java	Sun Jun 19 17:30:18 2011 +0400
     8.2 +++ b/src/main/java/ru/alphatech/icfpc/cards/ICard.java	Sun Jun 19 17:32:15 2011 +0400
     8.3 @@ -5,5 +5,6 @@
     8.4  
     8.5  public interface ICard extends IValue
     8.6  {
     8.7 +	public String getName();
     8.8  	public IValue returnValue(final IValue value, Player proponent, Player opponent);
     8.9  }
     9.1 --- a/src/main/java/ru/alphatech/icfpc/cards/Inc.java	Sun Jun 19 17:30:18 2011 +0400
     9.2 +++ b/src/main/java/ru/alphatech/icfpc/cards/Inc.java	Sun Jun 19 17:32:15 2011 +0400
     9.3 @@ -3,11 +3,17 @@
     9.4  import ru.alphatech.icfpc.game.ICFPCException;
     9.5  import ru.alphatech.icfpc.game.IValue;
     9.6  import ru.alphatech.icfpc.game.Player;
     9.7 +import ru.alphatech.icfpc.game.Run;
     9.8  import ru.alphatech.icfpc.game.Value;
     9.9  
    9.10  public class Inc implements ICard
    9.11  {
    9.12  	@Override
    9.13 +	public String getName() {
    9.14 +		return "inc";
    9.15 +	}
    9.16 +	
    9.17 +	@Override
    9.18  	public IValue returnValue(IValue iobj, Player proponent, Player opponent)
    9.19  	{
    9.20  		if(iobj instanceof Value)
    9.21 @@ -18,9 +24,19 @@
    9.22  			{
    9.23  				int v = proponent.getSlot(i).getVitality();
    9.24  				
    9.25 -				if (v > 0 && v < 65535)
    9.26 +				if(Run.getAutoMode())
    9.27  				{
    9.28 -					proponent.getSlot(i).setVitality(v + 1);
    9.29 +					if(v > 0)
    9.30 +					{
    9.31 +						proponent.getSlot(i).setVitality(v - 1);
    9.32 +					}
    9.33 +				}
    9.34 +				else
    9.35 +				{
    9.36 +					if (v > 0 && v < 65535)
    9.37 +					{
    9.38 +						proponent.getSlot(i).setVitality(v + 1);
    9.39 +					}
    9.40  				}
    9.41  				
    9.42  				return new I();
    10.1 --- a/src/main/java/ru/alphatech/icfpc/cards/K.java	Sun Jun 19 17:30:18 2011 +0400
    10.2 +++ b/src/main/java/ru/alphatech/icfpc/cards/K.java	Sun Jun 19 17:32:15 2011 +0400
    10.3 @@ -6,10 +6,20 @@
    10.4  public class K implements ICard
    10.5  {
    10.6  	@Override
    10.7 +	public String getName() {
    10.8 +		return "K";
    10.9 +	}
   10.10 +	
   10.11 +	@Override
   10.12  	public IValue returnValue(final IValue x, Player proponent, Player opponent)
   10.13  	{
   10.14  		return new ICard()
   10.15  		{
   10.16 +			@Override
   10.17 +			public String getName() {
   10.18 +				return "";
   10.19 +			}
   10.20 +			
   10.21  			public IValue returnValue(IValue y, Player proponent, Player opponent)
   10.22  			{
   10.23  				return y;
    11.1 --- a/src/main/java/ru/alphatech/icfpc/cards/Put.java	Sun Jun 19 17:30:18 2011 +0400
    11.2 +++ b/src/main/java/ru/alphatech/icfpc/cards/Put.java	Sun Jun 19 17:32:15 2011 +0400
    11.3 @@ -6,11 +6,21 @@
    11.4  public class Put implements ICard
    11.5  {
    11.6  	@Override
    11.7 +	public String getName() {
    11.8 +		return "put";
    11.9 +	}
   11.10 +	
   11.11 +	@Override
   11.12  	public IValue returnValue(IValue x, Player proponent, Player opponent)
   11.13  	{
   11.14  		return new ICard()
   11.15  		{
   11.16  			@Override
   11.17 +			public String getName() {
   11.18 +				return "";
   11.19 +			}
   11.20 +			
   11.21 +			@Override
   11.22  			public IValue returnValue(IValue value, Player proponent, Player opponent)
   11.23  			{
   11.24  				return new I();
    12.1 --- a/src/main/java/ru/alphatech/icfpc/cards/Revive.java	Sun Jun 19 17:30:18 2011 +0400
    12.2 +++ b/src/main/java/ru/alphatech/icfpc/cards/Revive.java	Sun Jun 19 17:32:15 2011 +0400
    12.3 @@ -8,6 +8,11 @@
    12.4  public class Revive implements ICard
    12.5  {
    12.6  	@Override
    12.7 +	public String getName() {
    12.8 +		return "revive";
    12.9 +	}
   12.10 +	
   12.11 +	@Override
   12.12  	public IValue returnValue(IValue iobj, Player proponent, Player opponent)
   12.13  	{
   12.14  		if (iobj instanceof Value)
    13.1 --- a/src/main/java/ru/alphatech/icfpc/cards/S.java	Sun Jun 19 17:30:18 2011 +0400
    13.2 +++ b/src/main/java/ru/alphatech/icfpc/cards/S.java	Sun Jun 19 17:32:15 2011 +0400
    13.3 @@ -6,14 +6,29 @@
    13.4  public class S implements ICard
    13.5  {
    13.6  	@Override
    13.7 +	public String getName() {
    13.8 +		return "S";
    13.9 +	}
   13.10 +	
   13.11 +	@Override
   13.12  	public IValue returnValue(final IValue f, Player proponent, Player opponent)
   13.13  	{
   13.14  		return new ICard()
   13.15  		{
   13.16 +			@Override
   13.17 +			public String getName() {
   13.18 +				return "";
   13.19 +			}
   13.20 +			
   13.21  			public IValue returnValue(final IValue g, Player proponent, Player opponent)
   13.22  			{
   13.23  				return new ICard()
   13.24  				{
   13.25 +					@Override
   13.26 +					public String getName() {
   13.27 +						return "";
   13.28 +					}
   13.29 +					
   13.30  					public IValue returnValue(final IValue x, Player proponent, Player opponent)
   13.31  					{
   13.32  						IValue h = f.returnValue(x, proponent, opponent);
    14.1 --- a/src/main/java/ru/alphatech/icfpc/cards/Succ.java	Sun Jun 19 17:30:18 2011 +0400
    14.2 +++ b/src/main/java/ru/alphatech/icfpc/cards/Succ.java	Sun Jun 19 17:32:15 2011 +0400
    14.3 @@ -8,6 +8,11 @@
    14.4  public class Succ implements ICard
    14.5  {
    14.6  	@Override
    14.7 +	public String getName() {
    14.8 +		return "succ";
    14.9 +	}
   14.10 +	
   14.11 +	@Override
   14.12  	public IValue returnValue(IValue nobj, Player proponent, Player opponent)
   14.13  	{
   14.14  		if(nobj instanceof Value)
    15.1 --- a/src/main/java/ru/alphatech/icfpc/cards/Zero.java	Sun Jun 19 17:30:18 2011 +0400
    15.2 +++ b/src/main/java/ru/alphatech/icfpc/cards/Zero.java	Sun Jun 19 17:32:15 2011 +0400
    15.3 @@ -6,6 +6,11 @@
    15.4  
    15.5  public class Zero implements ICard
    15.6  {
    15.7 +	@Override
    15.8 +	public String getName() {
    15.9 +		return "zero";
   15.10 +	}
   15.11 +	
   15.12  	public IValue returnValue(IValue value, Player proponent, Player opponent)
   15.13  	{
   15.14  		return new Value(0);
    16.1 --- a/src/main/java/ru/alphatech/icfpc/cards/Zombie.java	Sun Jun 19 17:30:18 2011 +0400
    16.2 +++ b/src/main/java/ru/alphatech/icfpc/cards/Zombie.java	Sun Jun 19 17:32:15 2011 +0400
    16.3 @@ -8,11 +8,21 @@
    16.4  public class Zombie implements ICard
    16.5  {
    16.6  	@Override
    16.7 +	public String getName() {
    16.8 +		return "zombie";
    16.9 +	}
   16.10 +	
   16.11 +	@Override
   16.12  	public IValue returnValue(final IValue iobj, Player proponent, Player opponent)
   16.13  	{
   16.14  		return new ICard()
   16.15  		{
   16.16  			@Override
   16.17 +			public String getName() {
   16.18 +				return "";
   16.19 +			}
   16.20 +			
   16.21 +			@Override
   16.22  			public IValue returnValue(final IValue x, Player proponent, Player opponent)
   16.23  			{
   16.24  				if (iobj instanceof Value)
    17.1 --- a/src/main/java/ru/alphatech/icfpc/game/AbstractPolicy.java	Sun Jun 19 17:30:18 2011 +0400
    17.2 +++ b/src/main/java/ru/alphatech/icfpc/game/AbstractPolicy.java	Sun Jun 19 17:32:15 2011 +0400
    17.3 @@ -121,64 +121,6 @@
    17.4  		return list;
    17.5  	}
    17.6  	
    17.7 -	protected ArrayList<Batch> BcombineForFunctWith3ParamsInRegister(ICard function, Slot processingSlot){
    17.8 -		ArrayList<Batch> retArray = new ArrayList<Batch>();
    17.9 -		
   17.10 -		if(!(function instanceof Attack || function instanceof Help)){
   17.11 -			throw new ICFPCException();
   17.12 -		}
   17.13 -		
   17.14 -		retArray.add(new Batch(OperationType.CARD_TO_SLOT, new Put(), processingSlot));
   17.15 -		retArray.add(new Batch(OperationType.SLOT_TO_CARD, function,  processingSlot));
   17.16 -		
   17.17 -		retArray.add(new Batch(OperationType.CARD_TO_SLOT, new K(), processingSlot));
   17.18 -		retArray.add(new Batch(OperationType.CARD_TO_SLOT, new S(), processingSlot));
   17.19 -		
   17.20 -		retArray.add(new Batch(OperationType.SLOT_TO_CARD, new Get(), processingSlot));
   17.21 -
   17.22 -		retArray.add(new Batch(OperationType.CARD_TO_SLOT, new K(), processingSlot));
   17.23 -		retArray.add(new Batch(OperationType.CARD_TO_SLOT, new S(), processingSlot));
   17.24 -		
   17.25 -		retArray.add(new Batch(OperationType.SLOT_TO_CARD, new Zero(), processingSlot));
   17.26 -		
   17.27 -		retArray.add(new Batch(OperationType.CARD_TO_SLOT, new K(), processingSlot));
   17.28 -		retArray.add(new Batch(OperationType.CARD_TO_SLOT, new S(), processingSlot));
   17.29 -		
   17.30 -		retArray.add(new Batch(OperationType.SLOT_TO_CARD, new Get(), processingSlot));
   17.31 -
   17.32 -		retArray.add(new Batch(OperationType.CARD_TO_SLOT, new K(), processingSlot));
   17.33 -		retArray.add(new Batch(OperationType.CARD_TO_SLOT, new S(), processingSlot));
   17.34 -		
   17.35 -		retArray.add(new Batch(OperationType.SLOT_TO_CARD, new Succ(), processingSlot));
   17.36 -		
   17.37 -		retArray.add(new Batch(OperationType.CARD_TO_SLOT, new K(), processingSlot));
   17.38 -		retArray.add(new Batch(OperationType.CARD_TO_SLOT, new S(), processingSlot));
   17.39 -		
   17.40 -		retArray.add(new Batch(OperationType.SLOT_TO_CARD, new Zero(), processingSlot));
   17.41 -		
   17.42 -		retArray.add(new Batch(OperationType.CARD_TO_SLOT, new K(), processingSlot));
   17.43 -		retArray.add(new Batch(OperationType.CARD_TO_SLOT, new S(), processingSlot));
   17.44 -		
   17.45 -		retArray.add(new Batch(OperationType.SLOT_TO_CARD, new Get(), processingSlot));
   17.46 -
   17.47 -		retArray.add(new Batch(OperationType.CARD_TO_SLOT, new K(), processingSlot));
   17.48 -		retArray.add(new Batch(OperationType.CARD_TO_SLOT, new S(), processingSlot));
   17.49 -		
   17.50 -		retArray.add(new Batch(OperationType.SLOT_TO_CARD, new Succ(), processingSlot));
   17.51 -		
   17.52 -		retArray.add(new Batch(OperationType.CARD_TO_SLOT, new K(), processingSlot));
   17.53 -		retArray.add(new Batch(OperationType.CARD_TO_SLOT, new S(), processingSlot));
   17.54 -		
   17.55 -		retArray.add(new Batch(OperationType.SLOT_TO_CARD, new Succ(), processingSlot));
   17.56 -		
   17.57 -		retArray.add(new Batch(OperationType.CARD_TO_SLOT, new K(), processingSlot));
   17.58 -		retArray.add(new Batch(OperationType.CARD_TO_SLOT, new S(), processingSlot));
   17.59 -		
   17.60 -		retArray.add(new Batch(OperationType.SLOT_TO_CARD, new Zero(), processingSlot));
   17.61 -		
   17.62 -		return retArray;
   17.63 -	}
   17.64 -	
   17.65  	public abstract ArrayList<Batch> getBatches();
   17.66  	
   17.67  	public static void main(String[] args)
    18.1 --- a/src/main/java/ru/alphatech/icfpc/game/Batch.java	Sun Jun 19 17:30:18 2011 +0400
    18.2 +++ b/src/main/java/ru/alphatech/icfpc/game/Batch.java	Sun Jun 19 17:32:15 2011 +0400
    18.3 @@ -19,5 +19,25 @@
    18.4  		this.card = card;
    18.5  		this.slot = slot;
    18.6  	}
    18.7 +
    18.8 +	@Override
    18.9 +	public String toString() {
   18.10 +		if(operationType == null || card == null || slot == null)
   18.11 +			throw new ICFPCException();
   18.12 +		StringBuilder ret = new StringBuilder();
   18.13 +		switch(operationType){
   18.14 +		case CARD_TO_SLOT:
   18.15 +			ret.append("1\n");
   18.16 +			ret.append(card.getName() + "\n");
   18.17 +			ret.append(slot.getId() + "\n");
   18.18 +			break;
   18.19 +		case SLOT_TO_CARD:
   18.20 +			ret.append("2\n");
   18.21 +			ret.append(slot.getId() + "\n");
   18.22 +			ret.append(card.getName() + "\n");
   18.23 +			break;
   18.24 +		}
   18.25 +		return ret.toString();
   18.26 +	}
   18.27  	
   18.28  }
    19.1 --- a/src/main/java/ru/alphatech/icfpc/game/Player.java	Sun Jun 19 17:30:18 2011 +0400
    19.2 +++ b/src/main/java/ru/alphatech/icfpc/game/Player.java	Sun Jun 19 17:32:15 2011 +0400
    19.3 @@ -11,7 +11,7 @@
    19.4      {
    19.5  		for(int i = 0; i < 255; i++)
    19.6  		{
    19.7 -			slots[i] = new Slot();
    19.8 +			slots[i] = new Slot(i);
    19.9  		}
   19.10      }
   19.11  	
    20.1 --- a/src/main/java/ru/alphatech/icfpc/game/Run.java	Sun Jun 19 17:30:18 2011 +0400
    20.2 +++ b/src/main/java/ru/alphatech/icfpc/game/Run.java	Sun Jun 19 17:32:15 2011 +0400
    20.3 @@ -8,22 +8,20 @@
    20.4  import java.io.BufferedReader;
    20.5  import java.io.IOException;
    20.6  import java.io.InputStreamReader;
    20.7 -import java.util.LinkedList;
    20.8 -import java.util.List;
    20.9  
   20.10  import ru.alphatech.icfpc.game.strategy.IStrategy;
   20.11  import ru.alphatech.icfpc.game.strategy.SimplyStrategy;
   20.12  
   20.13  public class Run
   20.14  {
   20.15 +	private static boolean automodeapply = false;
   20.16 +
   20.17  	private static boolean endgame = false;
   20.18  	
   20.19  	private static Player proponent = new Player();
   20.20  	
   20.21  	private static Player opponent = new Player();
   20.22  	
   20.23 -	private static LinkedList<Batch> batches = new LinkedList<Batch>();
   20.24 -	
   20.25  	private static int registers[] = new int[4];
   20.26  	
   20.27  	static {
   20.28 @@ -39,14 +37,6 @@
   20.29  		return proponent.getSlot( registers[registerIdex] );
   20.30  	}
   20.31  	
   20.32 -	public static void clearBatcher(){
   20.33 -		batches.removeAll(batches);
   20.34 -	}
   20.35 -	
   20.36 -	public static void addBatcher(List<Batch> batches){
   20.37 -		batches.addAll(batches);
   20.38 -	}
   20.39 -	
   20.40  	public static Player getOpponent(){
   20.41  		return opponent;
   20.42  	}
   20.43 @@ -88,6 +78,11 @@
   20.44  		strategy.moving(proponent, opponent, System.out);
   20.45      }
   20.46  	
   20.47 +	public static boolean getAutoMode()
   20.48 +	{
   20.49 +		return automodeapply;
   20.50 +	}
   20.51 +	
   20.52  	public static void main(String[] args) throws IOException
   20.53      {
   20.54  	    String playerNum = args[0];
    21.1 --- a/src/main/java/ru/alphatech/icfpc/game/Slot.java	Sun Jun 19 17:30:18 2011 +0400
    21.2 +++ b/src/main/java/ru/alphatech/icfpc/game/Slot.java	Sun Jun 19 17:32:15 2011 +0400
    21.3 @@ -9,6 +9,18 @@
    21.4  
    21.5  	private IValue _value = new I();
    21.6  	
    21.7 +	private int id = -1;
    21.8 +	
    21.9 +	public int getId() {
   21.10 +		return id;
   21.11 +	}
   21.12 +
   21.13 +	public Slot(int id){
   21.14 +		if(id < 0 || id > 255)
   21.15 +			throw new ICFPCException();
   21.16 +		this.id = id;
   21.17 +	}
   21.18 +	
   21.19  	public void setVitality(int vitality)
   21.20  	{
   21.21  		_vitality = vitality;
    22.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    22.2 +++ b/src/main/java/ru/alphatech/icfpc/game/strategy/OtherStrategy.java	Sun Jun 19 17:32:15 2011 +0400
    22.3 @@ -0,0 +1,28 @@
    22.4 +package ru.alphatech.icfpc.game.strategy;
    22.5 +
    22.6 +import java.io.PrintStream;
    22.7 +import java.util.LinkedList;
    22.8 +import java.util.List;
    22.9 +import java.util.Queue;
   22.10 +
   22.11 +import ru.alphatech.icfpc.game.Batch;
   22.12 +import ru.alphatech.icfpc.game.Player;
   22.13 +
   22.14 +public class OtherStrategy implements IStrategy {
   22.15 +	
   22.16 +	private static Queue<Batch> batches = new LinkedList<Batch>();
   22.17 +	
   22.18 +	public void clearBatcher(){
   22.19 +		batches.removeAll(batches);
   22.20 +	}
   22.21 +	
   22.22 +	public void addBatcher(List<Batch> batches){
   22.23 +		this.batches.addAll(batches);
   22.24 +	}
   22.25 +	
   22.26 +	@Override
   22.27 +	public void moving(Player proponent, Player opponent, PrintStream out) {
   22.28 +		out.print(batches.poll());
   22.29 +	}
   22.30 +
   22.31 +}
    23.1 --- a/src/main/java/ru/alphatech/icfpc/game/strategy/SimplyStrategy.java	Sun Jun 19 17:30:18 2011 +0400
    23.2 +++ b/src/main/java/ru/alphatech/icfpc/game/strategy/SimplyStrategy.java	Sun Jun 19 17:32:15 2011 +0400
    23.3 @@ -2,7 +2,10 @@
    23.4  
    23.5  import java.io.PrintStream;
    23.6  
    23.7 +import ru.alphatech.icfpc.cards.I;
    23.8 +import ru.alphatech.icfpc.game.Batch;
    23.9  import ru.alphatech.icfpc.game.Player;
   23.10 +import static ru.alphatech.icfpc.game.Batch.OperationType.*;
   23.11  
   23.12  /**
   23.13   * @author indvdum
   23.14 @@ -13,9 +16,8 @@
   23.15  
   23.16  	@Override
   23.17  	public void moving(Player proponent, Player opponent, PrintStream out) {
   23.18 -		out.print(1 + "\n");
   23.19 -		out.print("I" + "\n");
   23.20 -		out.print(0 + "\n");
   23.21 +		Batch batch = new Batch(CARD_TO_SLOT, new I(), opponent.getSlot(0));
   23.22 +		out.print(batch);
   23.23  	}
   23.24  
   23.25  }
    24.1 --- a/src/main/java/ru/alphatech/icfpc/policy/AttackHelpPolicy.java	Sun Jun 19 17:30:18 2011 +0400
    24.2 +++ b/src/main/java/ru/alphatech/icfpc/policy/AttackHelpPolicy.java	Sun Jun 19 17:32:15 2011 +0400
    24.3 @@ -67,7 +67,8 @@
    24.4  		return type == TYPE.ATTACK ? new Attack() : new Help();
    24.5  	}
    24.6  	
    24.7 -	protected ArrayList<Batch> BcombineForFunctWith3ParamsInRegister(ICard function, Slot processingSlot){
    24.8 +	protected ArrayList<Batch> BcombineForFunctWith3ParamsInRegister(ICard function, Slot processingSlot)
    24.9 +	{
   24.10  		ArrayList<Batch> retArray = new ArrayList<Batch>();
   24.11  		
   24.12  		if(!(function instanceof Attack || function instanceof Help)){
    25.1 --- a/src/main/java/ru/alphatech/icfpc/policy/CompositionPolicy.java	Sun Jun 19 17:30:18 2011 +0400
    25.2 +++ b/src/main/java/ru/alphatech/icfpc/policy/CompositionPolicy.java	Sun Jun 19 17:32:15 2011 +0400
    25.3 @@ -5,19 +5,19 @@
    25.4  import ru.alphatech.icfpc.game.AbstractPolicy;
    25.5  import ru.alphatech.icfpc.game.Batch;
    25.6  
    25.7 -public class CompositionPolicy extends AbstractPolicy{
    25.8 +public abstract class CompositionPolicy extends AbstractPolicy{
    25.9  	
   25.10  	protected ArrayList<AbstractPolicy> policies = new ArrayList<AbstractPolicy>();
   25.11  
   25.12 -	public void addPolicy(AbstractPolicy policy){
   25.13 +	protected void addPolicy(AbstractPolicy policy){
   25.14  		policies.add(policy);
   25.15  	}
   25.16  	
   25.17 -	public void removePolicy(AbstractPolicy policy){
   25.18 +	protected void removePolicy(AbstractPolicy policy){
   25.19  		policies.remove(policy);
   25.20  	}
   25.21  	
   25.22 -	public AbstractPolicy getPolicy(int index){
   25.23 +	protected AbstractPolicy getPolicy(int index){
   25.24  		return policies.get(index);
   25.25  	}
   25.26  	
    26.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    26.2 +++ b/src/main/java/ru/alphatech/icfpc/policy/OneArgumentCardsPolicy.java	Sun Jun 19 17:32:15 2011 +0400
    26.3 @@ -0,0 +1,104 @@
    26.4 +package ru.alphatech.icfpc.policy;
    26.5 +
    26.6 +import java.util.ArrayList;
    26.7 +
    26.8 +import ru.alphatech.icfpc.cards.Copy;
    26.9 +import ru.alphatech.icfpc.cards.Dec;
   26.10 +import ru.alphatech.icfpc.cards.Get;
   26.11 +import ru.alphatech.icfpc.cards.ICard;
   26.12 +import ru.alphatech.icfpc.cards.Inc;
   26.13 +import ru.alphatech.icfpc.cards.K;
   26.14 +import ru.alphatech.icfpc.cards.Put;
   26.15 +import ru.alphatech.icfpc.cards.Revive;
   26.16 +import ru.alphatech.icfpc.cards.S;
   26.17 +import ru.alphatech.icfpc.cards.Zero;
   26.18 +import ru.alphatech.icfpc.game.AbstractPolicy;
   26.19 +import ru.alphatech.icfpc.game.Batch;
   26.20 +import ru.alphatech.icfpc.game.IValue;
   26.21 +import ru.alphatech.icfpc.game.Run;
   26.22 +import ru.alphatech.icfpc.game.Slot;
   26.23 +import ru.alphatech.icfpc.game.Value;
   26.24 +import ru.alphatech.icfpc.game.Batch.OperationType;
   26.25 +
   26.26 +public class OneArgumentCardsPolicy extends AbstractPolicy{
   26.27 +	
   26.28 +	public enum TYPE {
   26.29 +		DEC,
   26.30 +		INC,
   26.31 +		COPY,
   26.32 +		REVIVE
   26.33 +	}
   26.34 +	
   26.35 +	private TYPE type;
   26.36 +	private int processingSlotIndex = -1;
   26.37 +	private int registerIndex = -1;
   26.38 +	private int targetSlotIndex = -1;
   26.39 +	
   26.40 +	
   26.41 +	public OneArgumentCardsPolicy(TYPE type, int processingSlot, int target, int registerIndex) {
   26.42 +		this.type = type;
   26.43 +		this.processingSlotIndex = processingSlot;
   26.44 +		this.targetSlotIndex = target;
   26.45 +		this.registerIndex = registerIndex;
   26.46 +	}
   26.47 +	
   26.48 +	public ICard getCard(){
   26.49 +		switch (type) {
   26.50 +			case DEC:
   26.51 +			return new Dec();
   26.52 +			case INC:
   26.53 +			return new Inc();
   26.54 +			case COPY:
   26.55 +			return new Copy();
   26.56 +			case REVIVE:
   26.57 +			return new Revive();
   26.58 +		}
   26.59 +		return null;
   26.60 +	}
   26.61 +	
   26.62 +	protected boolean isEqualsCard(IValue value){
   26.63 +		if(value instanceof IValue)
   26.64 +			return false;
   26.65 +		if( type == TYPE.DEC && value instanceof Dec)
   26.66 +			return true;
   26.67 +		if( type == TYPE.INC && value instanceof Inc)
   26.68 +			return true;
   26.69 +		if( type == TYPE.COPY && value instanceof Copy)
   26.70 +			return true;
   26.71 +		if( type == TYPE.REVIVE && value instanceof Revive)
   26.72 +			return true;
   26.73 +		return false;
   26.74 +	}
   26.75 +
   26.76 +	@Override
   26.77 +	public ArrayList<Batch> getBatches() {
   26.78 +		ArrayList<Batch> retArray = new ArrayList<Batch>();
   26.79 +		
   26.80 +		retArray.addAll(numberIntoSlotField(Run.getRegisterByIndex(registerIndex), targetSlotIndex));
   26.81 +		
   26.82 +		Slot processingSlot = Run.getProponent().getSlot(processingSlotIndex);
   26.83 +		IValue slotValue = processingSlot.getValue();
   26.84 +		
   26.85 +		if(slotValue instanceof Value){
   26.86 +			retArray.add(new Batch(OperationType.CARD_TO_SLOT, new Put(), processingSlot));
   26.87 +			retArray.add(new Batch(OperationType.SLOT_TO_CARD, getCard(), processingSlot));
   26.88 +		}else{
   26.89 +			ICard currentCard = (ICard) slotValue;
   26.90 +			if(!(currentCard instanceof Dec && type == TYPE.DEC) || 
   26.91 +			   !(currentCard instanceof Inc && type == TYPE.INC))
   26.92 +			{
   26.93 +				retArray.add(new Batch(OperationType.CARD_TO_SLOT, new Put(), processingSlot));
   26.94 +				retArray.add(new Batch(OperationType.SLOT_TO_CARD, getCard(), processingSlot));
   26.95 +			}
   26.96 +		}
   26.97 +		
   26.98 +		retArray.add(new Batch(OperationType.CARD_TO_SLOT, new K(), processingSlot));
   26.99 +		retArray.add(new Batch(OperationType.CARD_TO_SLOT, new S(), processingSlot));
  26.100 +		
  26.101 +		retArray.add(new Batch(OperationType.SLOT_TO_CARD, new Get(), processingSlot));
  26.102 +		retArray.add(new Batch(OperationType.SLOT_TO_CARD, new Zero(), processingSlot));
  26.103 +		
  26.104 +		return retArray;
  26.105 +	}
  26.106 +	
  26.107 +}
    27.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    27.2 +++ b/src/main/java/ru/alphatech/icfpc/policy/ZombiePolicy.java	Sun Jun 19 17:32:15 2011 +0400
    27.3 @@ -0,0 +1,15 @@
    27.4 +package ru.alphatech.icfpc.policy;
    27.5 +
    27.6 +import java.util.ArrayList;
    27.7 +
    27.8 +import ru.alphatech.icfpc.game.AbstractPolicy;
    27.9 +import ru.alphatech.icfpc.game.Batch;
   27.10 +
   27.11 +public class ZombiePolicy extends AbstractPolicy {
   27.12 +
   27.13 +	@Override
   27.14 +	public ArrayList<Batch> getBatches() {
   27.15 +		return null;
   27.16 +	}
   27.17 +
   27.18 +}