- avoid
- build archers and knights
This commit is contained in:
weiss
2020-04-10 05:24:09 +02:00
parent 80038b3883
commit 3e8a95a6b1
6 changed files with 129 additions and 834 deletions

View File

@@ -1,797 +0,0 @@
// Generated by purs bundle 0.13.6
var PS = {};
(function($PS) {
// Generated by purs version 0.13.6
"use strict";
$PS["Control.Semigroupoid"] = $PS["Control.Semigroupoid"] || {};
var exports = $PS["Control.Semigroupoid"];
var Semigroupoid = function (compose) {
this.compose = compose;
};
var semigroupoidFn = new Semigroupoid(function (f) {
return function (g) {
return function (x) {
return f(g(x));
};
};
});
var compose = function (dict) {
return dict.compose;
};
exports["compose"] = compose;
exports["semigroupoidFn"] = semigroupoidFn;
})(PS);
(function($PS) {
// Generated by purs version 0.13.6
"use strict";
$PS["Control.Category"] = $PS["Control.Category"] || {};
var exports = $PS["Control.Category"];
var Control_Semigroupoid = $PS["Control.Semigroupoid"];
var Category = function (Semigroupoid0, identity) {
this.Semigroupoid0 = Semigroupoid0;
this.identity = identity;
};
var identity = function (dict) {
return dict.identity;
};
var categoryFn = new Category(function () {
return Control_Semigroupoid.semigroupoidFn;
}, function (x) {
return x;
});
exports["identity"] = identity;
exports["categoryFn"] = categoryFn;
})(PS);
(function(exports) {
"use strict";
//------------------------------------------------------------------------------
// Array size ------------------------------------------------------------------
//------------------------------------------------------------------------------
exports.length = function (xs) {
return xs.length;
};
//------------------------------------------------------------------------------
// Indexed operations ----------------------------------------------------------
//------------------------------------------------------------------------------
exports.indexImpl = function (just) {
return function (nothing) {
return function (xs) {
return function (i) {
return i < 0 || i >= xs.length ? nothing : just(xs[i]);
};
};
};
};
//------------------------------------------------------------------------------
// Sorting ---------------------------------------------------------------------
//------------------------------------------------------------------------------
exports.sortImpl = function (f) {
return function (l) {
return l.slice().sort(function (x, y) {
return f(x)(y);
});
};
};
exports.drop = function (n) {
return function (l) {
return n < 1 ? l : l.slice(n);
};
};
})(PS["Data.Array"] = PS["Data.Array"] || {});
(function($PS) {
// Generated by purs version 0.13.6
"use strict";
$PS["Data.Maybe"] = $PS["Data.Maybe"] || {};
var exports = $PS["Data.Maybe"];
var Control_Category = $PS["Control.Category"];
var Nothing = (function () {
function Nothing() {
};
Nothing.value = new Nothing();
return Nothing;
})();
var Just = (function () {
function Just(value0) {
this.value0 = value0;
};
Just.create = function (value0) {
return new Just(value0);
};
return Just;
})();
var maybe = function (v) {
return function (v1) {
return function (v2) {
if (v2 instanceof Nothing) {
return v;
};
if (v2 instanceof Just) {
return v1(v2.value0);
};
throw new Error("Failed pattern match at Data.Maybe (line 217, column 1 - line 217, column 51): " + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);
};
};
};
var fromMaybe = function (a) {
return maybe(a)(Control_Category.identity(Control_Category.categoryFn));
};
exports["Nothing"] = Nothing;
exports["Just"] = Just;
exports["fromMaybe"] = fromMaybe;
})(PS);
(function($PS) {
// Generated by purs version 0.13.6
"use strict";
$PS["Data.Ordering"] = $PS["Data.Ordering"] || {};
var exports = $PS["Data.Ordering"];
var LT = (function () {
function LT() {
};
LT.value = new LT();
return LT;
})();
var GT = (function () {
function GT() {
};
GT.value = new GT();
return GT;
})();
var EQ = (function () {
function EQ() {
};
EQ.value = new EQ();
return EQ;
})();
exports["LT"] = LT;
exports["GT"] = GT;
exports["EQ"] = EQ;
})(PS);
(function($PS) {
// Generated by purs version 0.13.6
"use strict";
$PS["Data.Array"] = $PS["Data.Array"] || {};
var exports = $PS["Data.Array"];
var $foreign = $PS["Data.Array"];
var Data_Maybe = $PS["Data.Maybe"];
var Data_Ordering = $PS["Data.Ordering"];
var sortBy = function (comp) {
return function (xs) {
var comp$prime = function (x) {
return function (y) {
var v = comp(x)(y);
if (v instanceof Data_Ordering.GT) {
return 1;
};
if (v instanceof Data_Ordering.EQ) {
return 0;
};
if (v instanceof Data_Ordering.LT) {
return -1 | 0;
};
throw new Error("Failed pattern match at Data.Array (line 702, column 15 - line 705, column 13): " + [ v.constructor.name ]);
};
};
return $foreign.sortImpl(comp$prime)(xs);
};
};
var index = $foreign.indexImpl(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
var head = function (xs) {
return index(xs)(0);
};
exports["head"] = head;
exports["sortBy"] = sortBy;
exports["length"] = $foreign.length;
exports["drop"] = $foreign.drop;
})(PS);
(function(exports) {
"use strict";
var refEq = function (r1) {
return function (r2) {
return r1 === r2;
};
};
exports.eqIntImpl = refEq;
})(PS["Data.Eq"] = PS["Data.Eq"] || {});
(function($PS) {
// Generated by purs version 0.13.6
"use strict";
$PS["Data.Eq"] = $PS["Data.Eq"] || {};
var exports = $PS["Data.Eq"];
var $foreign = $PS["Data.Eq"];
var Eq = function (eq) {
this.eq = eq;
};
var eqInt = new Eq($foreign.eqIntImpl);
exports["eqInt"] = eqInt;
})(PS);
(function(exports) {
"use strict";
exports.foldrArray = function (f) {
return function (init) {
return function (xs) {
var acc = init;
var len = xs.length;
for (var i = len - 1; i >= 0; i--) {
acc = f(xs[i])(acc);
}
return acc;
};
};
};
exports.foldlArray = function (f) {
return function (init) {
return function (xs) {
var acc = init;
var len = xs.length;
for (var i = 0; i < len; i++) {
acc = f(acc)(xs[i]);
}
return acc;
};
};
};
})(PS["Data.Foldable"] = PS["Data.Foldable"] || {});
(function(exports) {
"use strict";
exports.arrayMap = function (f) {
return function (arr) {
var l = arr.length;
var result = new Array(l);
for (var i = 0; i < l; i++) {
result[i] = f(arr[i]);
}
return result;
};
};
})(PS["Data.Functor"] = PS["Data.Functor"] || {});
(function($PS) {
// Generated by purs version 0.13.6
"use strict";
$PS["Data.Functor"] = $PS["Data.Functor"] || {};
var exports = $PS["Data.Functor"];
var $foreign = $PS["Data.Functor"];
var Control_Semigroupoid = $PS["Control.Semigroupoid"];
var Functor = function (map) {
this.map = map;
};
var map = function (dict) {
return dict.map;
};
var functorFn = new Functor(Control_Semigroupoid.compose(Control_Semigroupoid.semigroupoidFn));
var functorArray = new Functor($foreign.arrayMap);
exports["map"] = map;
exports["functorFn"] = functorFn;
exports["functorArray"] = functorArray;
})(PS);
(function($PS) {
// Generated by purs version 0.13.6
"use strict";
$PS["Data.Monoid"] = $PS["Data.Monoid"] || {};
var exports = $PS["Data.Monoid"];
var Monoid = function (Semigroup0, mempty) {
this.Semigroup0 = Semigroup0;
this.mempty = mempty;
};
var mempty = function (dict) {
return dict.mempty;
};
exports["Monoid"] = Monoid;
exports["mempty"] = mempty;
})(PS);
(function(exports) {
"use strict";
exports.boolConj = function (b1) {
return function (b2) {
return b1 && b2;
};
};
exports.boolDisj = function (b1) {
return function (b2) {
return b1 || b2;
};
};
exports.boolNot = function (b) {
return !b;
};
})(PS["Data.HeytingAlgebra"] = PS["Data.HeytingAlgebra"] || {});
(function($PS) {
// Generated by purs version 0.13.6
"use strict";
$PS["Data.HeytingAlgebra"] = $PS["Data.HeytingAlgebra"] || {};
var exports = $PS["Data.HeytingAlgebra"];
var $foreign = $PS["Data.HeytingAlgebra"];
var HeytingAlgebra = function (conj, disj, ff, implies, not, tt) {
this.conj = conj;
this.disj = disj;
this.ff = ff;
this.implies = implies;
this.not = not;
this.tt = tt;
};
var not = function (dict) {
return dict.not;
};
var ff = function (dict) {
return dict.ff;
};
var disj = function (dict) {
return dict.disj;
};
var heytingAlgebraBoolean = new HeytingAlgebra($foreign.boolConj, $foreign.boolDisj, false, function (a) {
return function (b) {
return disj(heytingAlgebraBoolean)(not(heytingAlgebraBoolean)(a))(b);
};
}, $foreign.boolNot, true);
exports["ff"] = ff;
exports["disj"] = disj;
exports["heytingAlgebraBoolean"] = heytingAlgebraBoolean;
})(PS);
(function($PS) {
// Generated by purs version 0.13.6
"use strict";
$PS["Data.Semigroup"] = $PS["Data.Semigroup"] || {};
var exports = $PS["Data.Semigroup"];
var Semigroup = function (append) {
this.append = append;
};
var append = function (dict) {
return dict.append;
};
exports["Semigroup"] = Semigroup;
exports["append"] = append;
})(PS);
(function($PS) {
// Generated by purs version 0.13.6
"use strict";
$PS["Data.Monoid.Disj"] = $PS["Data.Monoid.Disj"] || {};
var exports = $PS["Data.Monoid.Disj"];
var Data_HeytingAlgebra = $PS["Data.HeytingAlgebra"];
var Data_Monoid = $PS["Data.Monoid"];
var Data_Semigroup = $PS["Data.Semigroup"];
var Disj = function (x) {
return x;
};
var semigroupDisj = function (dictHeytingAlgebra) {
return new Data_Semigroup.Semigroup(function (v) {
return function (v1) {
return Data_HeytingAlgebra.disj(dictHeytingAlgebra)(v)(v1);
};
});
};
var monoidDisj = function (dictHeytingAlgebra) {
return new Data_Monoid.Monoid(function () {
return semigroupDisj(dictHeytingAlgebra);
}, Data_HeytingAlgebra.ff(dictHeytingAlgebra));
};
exports["Disj"] = Disj;
exports["monoidDisj"] = monoidDisj;
})(PS);
(function($PS) {
// Generated by purs version 0.13.6
"use strict";
$PS["Data.Newtype"] = $PS["Data.Newtype"] || {};
var exports = $PS["Data.Newtype"];
var Data_Functor = $PS["Data.Functor"];
var Data_Monoid_Disj = $PS["Data.Monoid.Disj"];
var Newtype = function (unwrap, wrap) {
this.unwrap = unwrap;
this.wrap = wrap;
};
var wrap = function (dict) {
return dict.wrap;
};
var unwrap = function (dict) {
return dict.unwrap;
};
var newtypeDisj = new Newtype(function (v) {
return v;
}, Data_Monoid_Disj.Disj);
var alaF = function (dictFunctor) {
return function (dictFunctor1) {
return function (dictNewtype) {
return function (dictNewtype1) {
return function (v) {
return function (f) {
var $96 = Data_Functor.map(dictFunctor1)(unwrap(dictNewtype1));
var $97 = Data_Functor.map(dictFunctor)(wrap(dictNewtype));
return function ($98) {
return $96(f($97($98)));
};
};
};
};
};
};
};
exports["alaF"] = alaF;
exports["newtypeDisj"] = newtypeDisj;
})(PS);
(function($PS) {
// Generated by purs version 0.13.6
"use strict";
$PS["Data.Foldable"] = $PS["Data.Foldable"] || {};
var exports = $PS["Data.Foldable"];
var $foreign = $PS["Data.Foldable"];
var Data_Functor = $PS["Data.Functor"];
var Data_Monoid = $PS["Data.Monoid"];
var Data_Monoid_Disj = $PS["Data.Monoid.Disj"];
var Data_Newtype = $PS["Data.Newtype"];
var Data_Semigroup = $PS["Data.Semigroup"];
var Foldable = function (foldMap, foldl, foldr) {
this.foldMap = foldMap;
this.foldl = foldl;
this.foldr = foldr;
};
var foldr = function (dict) {
return dict.foldr;
};
var foldMapDefaultR = function (dictFoldable) {
return function (dictMonoid) {
return function (f) {
return foldr(dictFoldable)(function (x) {
return function (acc) {
return Data_Semigroup.append(dictMonoid.Semigroup0())(f(x))(acc);
};
})(Data_Monoid.mempty(dictMonoid));
};
};
};
var foldableArray = new Foldable(function (dictMonoid) {
return foldMapDefaultR(foldableArray)(dictMonoid);
}, $foreign.foldlArray, $foreign.foldrArray);
var foldMap = function (dict) {
return dict.foldMap;
};
var any = function (dictFoldable) {
return function (dictHeytingAlgebra) {
return Data_Newtype.alaF(Data_Functor.functorFn)(Data_Functor.functorFn)(Data_Newtype.newtypeDisj)(Data_Newtype.newtypeDisj)(Data_Monoid_Disj.Disj)(foldMap(dictFoldable)(Data_Monoid_Disj.monoidDisj(dictHeytingAlgebra)));
};
};
exports["any"] = any;
exports["foldableArray"] = foldableArray;
})(PS);
(function(exports) {
"use strict";
exports.fromNumberImpl = function (just) {
return function (nothing) {
return function (n) {
/* jshint bitwise: false */
return (n | 0) === n ? just(n) : nothing;
};
};
};
exports.toNumber = function (n) {
return n;
};
exports.pow = function (x) {
return function (y) {
/* jshint bitwise: false */
return Math.pow(x,y) | 0;
};
};
})(PS["Data.Int"] = PS["Data.Int"] || {});
(function($PS) {
// Generated by purs version 0.13.6
"use strict";
$PS["Data.Int"] = $PS["Data.Int"] || {};
var exports = $PS["Data.Int"];
var $foreign = $PS["Data.Int"];
var Data_Maybe = $PS["Data.Maybe"];
var fromNumber = $foreign.fromNumberImpl(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
exports["fromNumber"] = fromNumber;
exports["toNumber"] = $foreign.toNumber;
exports["pow"] = $foreign.pow;
})(PS);
(function(exports) {
"use strict";
var unsafeCompareImpl = function (lt) {
return function (eq) {
return function (gt) {
return function (x) {
return function (y) {
return x < y ? lt : x === y ? eq : gt;
};
};
};
};
};
exports.ordIntImpl = unsafeCompareImpl;
})(PS["Data.Ord"] = PS["Data.Ord"] || {});
(function($PS) {
// Generated by purs version 0.13.6
"use strict";
$PS["Data.Ord"] = $PS["Data.Ord"] || {};
var exports = $PS["Data.Ord"];
var $foreign = $PS["Data.Ord"];
var Data_Eq = $PS["Data.Eq"];
var Data_Ordering = $PS["Data.Ordering"];
var Ord = function (Eq0, compare) {
this.Eq0 = Eq0;
this.compare = compare;
};
var ordInt = new Ord(function () {
return Data_Eq.eqInt;
}, $foreign.ordIntImpl(Data_Ordering.LT.value)(Data_Ordering.EQ.value)(Data_Ordering.GT.value));
var compare = function (dict) {
return dict.compare;
};
exports["compare"] = compare;
exports["ordInt"] = ordInt;
})(PS);
(function(exports) {
"use strict";
exports.showIntImpl = function (n) {
return n.toString();
};
})(PS["Data.Show"] = PS["Data.Show"] || {});
(function($PS) {
// Generated by purs version 0.13.6
"use strict";
$PS["Data.Show"] = $PS["Data.Show"] || {};
var exports = $PS["Data.Show"];
var $foreign = $PS["Data.Show"];
var Show = function (show) {
this.show = show;
};
var showInt = new Show($foreign.showIntImpl);
var show = function (dict) {
return dict.show;
};
exports["Show"] = Show;
exports["show"] = show;
exports["showInt"] = showInt;
})(PS);
(function(exports) {
"use strict";
exports.log = function (s) {
return function () {
console.log(s);
return {};
};
};
})(PS["Effect.Console"] = PS["Effect.Console"] || {});
(function($PS) {
// Generated by purs version 0.13.6
"use strict";
$PS["Effect.Console"] = $PS["Effect.Console"] || {};
var exports = $PS["Effect.Console"];
var $foreign = $PS["Effect.Console"];
exports["log"] = $foreign.log;
})(PS);
(function(exports) {
"use strict";
// module Math
exports.abs = Math.abs;
exports.sqrt = Math.sqrt;
})(PS["Math"] = PS["Math"] || {});
(function($PS) {
// Generated by purs version 0.13.6
"use strict";
$PS["Math"] = $PS["Math"] || {};
var exports = $PS["Math"];
var $foreign = $PS["Math"];
exports["abs"] = $foreign.abs;
exports["sqrt"] = $foreign.sqrt;
})(PS);
(function($PS) {
// Generated by purs version 0.13.6
"use strict";
$PS["Range"] = $PS["Range"] || {};
var exports = $PS["Range"];
var Data_Show = $PS["Data.Show"];
var Pos = (function () {
function Pos(value0, value1) {
this.value0 = value0;
this.value1 = value1;
};
Pos.create = function (value0) {
return function (value1) {
return new Pos(value0, value1);
};
};
return Pos;
})();
var showPos = new Data_Show.Show(function (v) {
return Data_Show.show(Data_Show.showInt)(v.value0) + (" " + Data_Show.show(Data_Show.showInt)(v.value1));
});
exports["Pos"] = Pos;
exports["showPos"] = showPos;
})(PS);
(function($PS) {
// Generated by purs version 0.13.6
"use strict";
$PS["Lib"] = $PS["Lib"] || {};
var exports = $PS["Lib"];
var Data_Int = $PS["Data.Int"];
var Data_Maybe = $PS["Data.Maybe"];
var $$Math = $PS["Math"];
var Range = $PS["Range"];
var toPos = function (p) {
return new Range.Pos(p.x, p.y);
};
var sqrt = function (x) {
return Data_Maybe.fromMaybe(0)(Data_Int.fromNumber($$Math.sqrt(Data_Int.toNumber(x))));
};
var abs = function (x) {
return Data_Maybe.fromMaybe(0)(Data_Int.fromNumber($$Math.abs(Data_Int.toNumber(x))));
};
var dist = function (v) {
return function (v1) {
var b2 = Data_Int.pow(abs(v1.value1 - v.value1 | 0))(2);
var a2 = Data_Int.pow(abs(v1.value0 - v.value0 | 0))(2);
return sqrt(a2 + b2 | 0);
};
};
exports["dist"] = dist;
exports["toPos"] = toPos;
})(PS);
(function(exports) {
"use strict";
exports.parseInput = function() {
var inputs = readline().split(' ');
var x = parseInt(inputs[0]);
var y = parseInt(inputs[1]);
var humanCount = parseInt(readline());
var humans = []
for (let i = 0; i < humanCount; i++) {
var inputs = readline().split(' ');
var humanId = parseInt(inputs[0]);
var humanX = parseInt(inputs[1]);
var humanY = parseInt(inputs[2]);
humans.push({
id: humanId,
x: humanX,
y: humanY,
})
}
var zombieCount = parseInt(readline());
var zombies = []
for (let i = 0; i < zombieCount; i++) {
var inputs = readline().split(' ');
var zombieId = parseInt(inputs[0]);
var zombieX = parseInt(inputs[1]);
var zombieY = parseInt(inputs[2]);
var zombieXNext = parseInt(inputs[3]);
var zombieYNext = parseInt(inputs[4]);
zombies.push({
id: zombieId,
x: zombieX,
y: zombieY,
nextX: zombieXNext,
nextY: zombieYNext,
})
}
return {
player: { x, y },
humanCount,
zombieCount,
humans,
zombies,
}
};
})(PS["Reader"] = PS["Reader"] || {});
(function($PS) {
// Generated by purs version 0.13.6
"use strict";
$PS["Reader"] = $PS["Reader"] || {};
var exports = $PS["Reader"];
var $foreign = $PS["Reader"];
exports["parseInput"] = $foreign.parseInput;
})(PS);
(function($PS) {
// Generated by purs version 0.13.6
"use strict";
$PS["Main"] = $PS["Main"] || {};
var exports = $PS["Main"];
var Data_Array = $PS["Data.Array"];
var Data_Foldable = $PS["Data.Foldable"];
var Data_Functor = $PS["Data.Functor"];
var Data_HeytingAlgebra = $PS["Data.HeytingAlgebra"];
var Data_Maybe = $PS["Data.Maybe"];
var Data_Ord = $PS["Data.Ord"];
var Data_Show = $PS["Data.Show"];
var Effect_Console = $PS["Effect.Console"];
var Lib = $PS["Lib"];
var Range = $PS["Range"];
var Reader = $PS["Reader"];
var loop$prime = function (player) {
return function (humans) {
return function (target) {
var targetAlive = (function () {
if (target instanceof Data_Maybe.Just) {
return Data_Foldable.any(Data_Foldable.foldableArray)(Data_HeytingAlgebra.heytingAlgebraBoolean)(function (h) {
return h.x === target.value0.value0 && h.y === target.value0.value1;
})(humans);
};
if (target instanceof Data_Maybe.Nothing) {
return false;
};
throw new Error("Failed pattern match at Main (line 44, column 23 - line 46, column 29): " + [ target.constructor.name ]);
})();
var playerPos = Lib.toPos(player);
var nearestHuman = Data_Array.sortBy(function (h1) {
return function (h2) {
return Data_Ord.compare(Data_Ord.ordInt)(Lib.dist(Lib.toPos(h1))(playerPos))(Lib.dist(Lib.toPos(h2))(playerPos));
};
})(humans);
var sndHuman = (function () {
var $5 = Data_Array.length(nearestHuman) > 1;
if ($5) {
return Data_Array.drop(1)(nearestHuman);
};
return nearestHuman;
})();
var target$prime = (function () {
if (target instanceof Data_Maybe.Just) {
if (targetAlive) {
return [ target.value0 ];
};
return Data_Functor.map(Data_Functor.functorArray)(Lib.toPos)(sndHuman);
};
if (target instanceof Data_Maybe.Nothing) {
var $9 = Data_Array.length(nearestHuman) === 2;
if ($9) {
return Data_Functor.map(Data_Functor.functorArray)(Lib.toPos)(sndHuman);
};
return Data_Functor.map(Data_Functor.functorArray)(Lib.toPos)(nearestHuman);
};
throw new Error("Failed pattern match at Main (line 27, column 19 - line 29, column 103): " + [ target.constructor.name ]);
})();
var pos = (function () {
var v = Data_Array.head(target$prime);
if (v instanceof Data_Maybe.Just) {
return v.value0;
};
if (v instanceof Data_Maybe.Nothing) {
return new Range.Pos(6000, 6000);
};
throw new Error("Failed pattern match at Main (line 31, column 15 - line 33, column 37): " + [ v.constructor.name ]);
})();
return function __do() {
Effect_Console.log(Data_Show.show(Range.showPos)(pos))();
return loop(new Data_Maybe.Just(pos))();
};
};
};
};
var loop = function (target) {
return function __do() {
var input = Reader.parseInput();
return loop$prime(input.player)(input.humans)(target)();
};
};
var main = loop(Data_Maybe.Nothing.value);
exports["main"] = main;
exports["loop"] = loop;
exports["loop'"] = loop$prime;
})(PS);
PS["Main"].main();