/*public static int IcebergEndangermentLevel(this Iceberg berg,bool ByEnemy) * { * Player attacker; * if (ByEnemy) * { * attacker = game.GetEnemy(); * } * else * { * attacker = game.GetMyself(); * } * List<Iceberg> EnemyAndMyself = game.GetEnemyIcebergs().Concat(game.GetMyIcebergs()).ToList(); * EnemyAndMyself = * (from Iceberg i in EnemyAndMyself * where !i.Equals(berg) * orderby i.GetTurnsTillArrival(berg) * select i).ToList(); * int endangerment = 0; * foreach(Iceberg i in EnemyAndMyself) * { * * } * }*/ public static double Eval(this Iceberg berg, Player PrespectivePlayer) { Iceberg[] bergs = (from Iceberg i in PrespectivePlayer.Icebergs where !i.Equals(berg) select i).ToArray(); int[] penguinsToSend = (from Iceberg i in bergs let send = berg.SimplifiedPenguinsToSend(i) where send < i.PenguinAmount select send).ToArray(); if (penguinsToSend.Length == 0) { return(int.MaxValue); } int min = penguinsToSend.Min(); return((double)min / berg.PenguinsPerTurn); }
public static bool CanAttackSimplified(this Iceberg From, Iceberg To) { int amount = To.SimplifiedPenguinsToSend(From); return(From.PenguinAmount > amount + 1); }