コード例 #1
0
ファイル: Arithmetic.cs プロジェクト: xoposhiy/icfpc2016
 public static Rational Sqrt(Rational r)
 {
     r = r.Reduce();
     return(new Rational(Sqrt(r.Numerator), Sqrt(r.Denomerator)));
 }
コード例 #2
0
ファイル: Arithmetic.cs プロジェクト: xoposhiy/icfpc2016
 public static bool IsSquare(Rational r)
 {
     r = r.Reduce();
     return(IsSquare(r.Numerator) && IsSquare(r.Denomerator));
 }
コード例 #3
0
ファイル: D4Problem.cs プロジェクト: xoposhiy/icfpc2016
 public SolutionSpec MakeFinalFolds(SolutionSpec sol, Rational k, params int[] pointIndices)
 {
     return(MakeFinalFolds(sol, k, pointIndices.Select(i => sol.DestPoints[i])));
 }
コード例 #4
0
ファイル: Arithmetic.cs プロジェクト: xoposhiy/icfpc2016
 private static bool IsBetween(Rational a, Rational x, Rational b)
 {
     return((a - x) * (b - x) <= 0);
 }
コード例 #5
0
ファイル: Vector.cs プロジェクト: xoposhiy/icfpc2016
 public Vector Move(Rational shiftX, Rational shiftY)
 {
     return(new Vector(X + shiftX, Y + shiftY));
 }
コード例 #6
0
ファイル: D4Problem.cs プロジェクト: xoposhiy/icfpc2016
 public SolutionSpec MakeFinalFolds(SolutionSpec sol, Rational k)
 {
     return(MakeFinalFolds(sol, k, sol.DestPoints));
 }
コード例 #7
0
ファイル: Vector.cs プロジェクト: xoposhiy/icfpc2016
 public Vector(Rational x, Rational y)
 {
     X = x;
     Y = y;
 }
コード例 #8
0
ファイル: Segment.cs プロジェクト: xoposhiy/icfpc2016
 public Segment Move(Rational shiftX, Rational shiftY)
 {
     return(new Segment(Start.Move(shiftX, shiftY), End.Move(shiftX, shiftY)));
 }
コード例 #9
0
ファイル: CycleReflector.cs プロジェクト: xoposhiy/icfpc2016
 private static Vector ReflectY(Vector v, Rational height)
 {
     return(new Vector(v.X, height - v.Y + height));
 }
コード例 #10
0
ファイル: CycleReflector.cs プロジェクト: xoposhiy/icfpc2016
 private static Vector ShiftY(Vector v, Rational shift)
 {
     return(new Vector(v.X, v.Y + shift));
 }
コード例 #11
0
ファイル: CycleReflector.cs プロジェクト: xoposhiy/icfpc2016
 public static List <List <GNode <PEdge, PNode> > > GetReflectedAndShiftedCycles(List <List <GNode <PEdge, PNode> > > cycles,
                                                                                 Rational reflectionH, Rational shiftH)
 {
     return(CloneCyclesWithUpdateProjection(cycles, v => ShiftY(ReflectY(v, reflectionH), shiftH)));
 }