Пример #1
0
    public override void PartTwo()
    {
        var bots = ReadBots().ToArray(Input.Length);

        using var _ = Zzz.Context;

        var x = "x".IntConst();
        var y = "y".IntConst();
        var z = "z".IntConst();

        var inRange = bots.Select(bot => (
                                      ((x - bot.Position.X).Abs() +
                                       (y - bot.Position.Y).Abs() +
                                       (z - bot.Position.Z).Abs()) <= bot.Radius).Condition(1, 0))
                      .ToArray();

        var sum  = "sum".IntConst();
        var dist = "dist".IntConst();

        var o = Zzz.Optimize();

        // sum = Number in range at x, y, z
        o.Add(sum == inRange.Sum());
        // dist = Manhattan distance to 0, 0, 0.
        o.Add(dist == x.Abs() + y.Abs() + z.Abs());

        var maxSum  = o.MkMaximize(sum);
        var minDist = o.MkMinimize(dist);

        WriteLn(o.Check());
        WriteLn(maxSum.Value);
        WriteLn(minDist.Value);
    }
Пример #2
0
        public void TestReadWrite2()
        {
            var zzz = new Zzz {
                DateTimeOffset = new DateTimeOffset(new DateTime(2010, 1, 1), new TimeSpan(0, 1, 1, 0))
            };
            var data = serializer.Serialize(zzz);
            var zzz2 = serializer.Deserialize <Zzz>(data);

            Assert.AreEqual(zzz.DateTimeOffset, zzz2.DateTimeOffset);
        }
Пример #3
0
        public void TestReadWrite2()
        {
            var zzz = new Zzz {
                TimeSpan = new TimeSpan(82354222765175)
            };
            var data = serializer.Serialize(zzz);
            var zzz2 = serializer.Deserialize <Zzz>(data);

            Assert.AreEqual(zzz.TimeSpan, zzz2.TimeSpan);
        }
Пример #4
0
        public void TestArray()
        {
            var zzz = new Zzz();

            zzz.Properties.Add("zzz", serializer.Serialize(true));
            zzz.Properties.Add("qxx", serializer.Serialize(false));
            var data = serializer.Serialize(zzz);
            var zzz3 = serializer.Deserialize <Zzz>(data);

            Assert.AreEqual(2, zzz3.Properties.Count);
            Assert.AreEqual(true, serializer.Deserialize <bool>(zzz3.Properties["zzz"]));
            Assert.AreEqual(false, serializer.Deserialize <bool>(zzz3.Properties["qxx"]));
        }
Пример #5
0
        public void TestReadWrite2()
        {
            var zzz = new Zzz {
                EndPoint = new IPEndPoint(new IPAddress(new byte[] { 123, 1, 2, 3 }), 146)
            };
            var data = serializer.Serialize(zzz);
            var zzz2 = serializer.Deserialize <Zzz>(data);

            Assert.AreEqual(zzz.EndPoint, zzz2.EndPoint);
            zzz = new Zzz {
                EndPoint = new IPEndPoint(new IPAddress(Guid.NewGuid().ToByteArray()), 146)
            };
            data = serializer.Serialize(zzz);
            zzz2 = serializer.Deserialize <Zzz>(data);
            Assert.AreEqual(zzz.EndPoint, zzz2.EndPoint);
        }
Пример #6
0
        public void TestReadWrite2()
        {
            var zzz = new Zzz {
                Address = new IPAddress(new byte[] { 123, 1, 2, 3 })
            };
            var data = serializer.Serialize(zzz);
            var zzz2 = serializer.Deserialize <Zzz>(data);

            Assert.AreEqual(zzz.Address, zzz2.Address);
            zzz = new Zzz {
                Address = new IPAddress(Guid.NewGuid().ToByteArray())
            };
            data = serializer.Serialize(zzz);
            zzz2 = serializer.Deserialize <Zzz>(data);
            Assert.AreEqual(zzz.Address, zzz2.Address);
        }
Пример #7
0
        public void TestConstructorCall()
        {
            var method = new DynamicMethod(Guid.NewGuid().ToString(), typeof(void), new[] { typeof(Zzz) }, typeof(Test));

            using (var il = new GroboIL(method))
            {
                il.Ldarg(0);
                il.Ldc_I4(8);
                il.Call(typeof(Zzz).GetConstructor(new[] { typeof(int) }));
                il.Ret();
                Console.Write(il.GetILCode());
            }
            var action = (Action <Zzz>)method.CreateDelegate(typeof(Action <Zzz>));
            var zzz    = new Zzz(3);

            action(zzz);
            Assert.AreEqual(8, zzz.X);
        }
Пример #8
0
 protected bool Equals(Zzz other)
 {
     return(Id == other.Id);
 }