public BlockStorage Redistribute() { var blockStorage = new BlockStorage(this.Blocks); int maxPos = 0; int max = 0; for (int i = 0; i < blockStorage.Blocks.Count(); i++) { if (blockStorage.Blocks[i] > max) { maxPos = i; max = blockStorage.Blocks[i]; } } blockStorage.Blocks[maxPos] = 0; int toRedistribute = max; int pos = maxPos; while (toRedistribute > 0) { pos++; if (pos >= blockStorage.Blocks.Count()) { pos = 0; } blockStorage.Increment(pos); toRedistribute--; } return(blockStorage); }
public override bool Equals(object obj) { BlockStorage other = obj as BlockStorage; if (obj == null) { return(false); } if (this.Blocks.Count() != other.Blocks.Count()) { return(false); } for (var i = 0; i < this.Blocks.Count(); i++) { if (this.Blocks[i] != other.Blocks[i]) { return(false); } } return(true); }