Skip to content
This repository was archived by the owner on Feb 29, 2024. It is now read-only.

Commit 79f6bc8

Browse files
authored
Add files via upload
1 parent e36ef9a commit 79f6bc8

18 files changed

+598
-0
lines changed

cowjump.in

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
4
2+
2 1 6 1
3+
4 0 1 5
4+
5 6 5 5
5+
2 7 1 3

cowjump.java

+183
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
1+
import java.io.*;
2+
import java.util.*;
3+
public class cowjump {
4+
public static int pointYCompare(Point p1, Point p2) {
5+
// Compare points
6+
// Check if p2 is above, below, or next to p1
7+
System.out.println("pointycompare(("+p1.x+","+p1.y+"),("+p2.x+","+p2.y+")");
8+
if(p1.y == p2.y) {
9+
System.out.println("output: 0"); // Same Y
10+
return 0;
11+
}
12+
if(p2.y < p1.y) {
13+
System.out.println("output: -1"); // below
14+
return -1;
15+
}
16+
if(p2.y > p1.y) {
17+
System.out.println("output: 1"); // above
18+
return 1;
19+
}
20+
System.out.println("NONE OF THE ABOVE"); // This code should never run, but just keeping this to prevent syntax errors
21+
return -9999999;
22+
}
23+
public static int linesCompare(LineSegement m, LineSegement l) {
24+
int output = pointYCompare(m.a, l.a) * pointYCompare(m.b, l.b);;
25+
System.out.println("Intersection of line "+m+" and "+l + " is "+output + " == -1");
26+
return output;
27+
}
28+
public static void testIntersections() {
29+
assert Point.intersection(new Point(0,0), new Point(2,9), new Point(0,1), new Point(6,1))== true;
30+
//assert Point.intersection(new Point(0,0), new Point(1,1), new Point(3,3), new Point(3,12))== false;
31+
assert linesCompare(new LineSegement(new Point(0,0), new Point(2,3)),new LineSegement(new Point(0,3),new Point(9,1))) == -1;
32+
System.out.println("All Tests OK!");
33+
}
34+
35+
public static boolean sweepCheck(LineSegement s,Point[][] input) {
36+
for(int i = 0; i < input.length; i ++) {
37+
System.out.println("Checking line "+i);
38+
if(input[i][0] == null && input[i][1] == null) {
39+
System.out.println("End of segments");
40+
break;
41+
}
42+
System.out.println("Checking "+s.a.x+" - "+input[i][0].x + " - "+s.b.x);
43+
boolean firstWithinLine = (s.a.x <= input[i][0].x && s.b.x >= input[i][0].x);
44+
System.out.println("(s.a.x <= input[i][0].x && s.b.x >= input[i][0].x)");
45+
System.out.println((s.a.x <= input[i][0].x)+" && " + (s.b.x >= input[i][0].x));
46+
System.out.println("firstWithinLine = "+firstWithinLine);
47+
//|| (s.a.y <= input[i][0].y && s.b.y >= input[i][0].y);
48+
if(firstWithinLine) {
49+
// TODO check line cross logic
50+
LineSegement full = new LineSegement(input[i][0], input[i][1]);
51+
if(linesCompare(s,new LineSegement(full.atX_(s.a.x),full.atX_(s.a.y))) == -1) {
52+
System.out.println("Intersect!");
53+
return true;
54+
}else {
55+
System.out.println("No Intersection!");
56+
}
57+
//continue; // Both statements may be true
58+
}
59+
boolean secondWithinLine = (s.a.x <= input[i][1].x && s.b.x >= input[i][1].x);
60+
//|| (s.a.y <= input[i][0].y && s.b.y >= input[i][0].y);
61+
if(secondWithinLine && !firstWithinLine) {
62+
// TODO check line cross logic
63+
LineSegement full = new LineSegement(input[i][0], input[i][1]);
64+
if(linesCompare(s,new LineSegement(full.atX_(s.a.x), full.atX_(s.b.x))) == -1) {
65+
System.out.println("Intersect!");
66+
return true;
67+
}else {
68+
System.out.println("No Intersection!");
69+
}
70+
}
71+
72+
}
73+
return false;
74+
}
75+
public static void main(String[] args) throws IOException{
76+
//testIntersections();
77+
//testIntersections();
78+
BufferedReader f = new BufferedReader(new FileReader("cowjump2.in"));
79+
int N = Integer.parseInt(f.readLine());
80+
Point[][] input = new Point[N][2];
81+
//System.out.println(input[0][0]);
82+
int output = -1;
83+
for(int i = 0; i < N; i ++) {
84+
StringTokenizer st = new StringTokenizer(f.readLine());
85+
Point a = new Point(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()));
86+
Point b = new Point(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()));
87+
boolean status;
88+
if(a.x > b.x) {
89+
status = sweepCheck(
90+
new LineSegement(b,a),
91+
input);
92+
}else {
93+
status = sweepCheck(
94+
new LineSegement(a,b),
95+
input);
96+
}
97+
System.out.println("That was line "+i);
98+
output = i;
99+
if(status) {
100+
break;
101+
}
102+
103+
input[i][0] = a;
104+
input[i][1] = b;
105+
/*for(int j = 0; j < i; j ++) {
106+
if(Point.intersection(input[j][0], input[j][1], input[i][0], input[i][1])) {
107+
PrintWriter pw = new PrintWriter("cowjump.out");
108+
pw.println(i+1);
109+
pw.close();
110+
System.exit(0);
111+
}
112+
}*/
113+
}
114+
f.close();
115+
PrintWriter pw = new PrintWriter("cowjump.out");
116+
pw.println(output+1);
117+
pw.close();
118+
System.exit(0);
119+
120+
}
121+
122+
}
123+
class Point{
124+
double x,y;
125+
public Point(double x,double y) {
126+
this.x = x;
127+
this.y = y;
128+
}
129+
public Point(int x,int y) {
130+
this.x = x;
131+
this.y = y;
132+
}
133+
public Point() {
134+
this.x = 0;
135+
this.y = 0;
136+
}
137+
static boolean intersection(Point a, Point b,Point c, Point d) {
138+
// OLD CALCULATION CODE
139+
Point E = new Point(b.x - a.x, b.y - a.y);
140+
Point F = new Point(d.x - c.x, d.y - c.y);
141+
Point P = new Point(-E.y, E.x);
142+
Point Q = new Point(a.x - c.x, a.y - c.y);
143+
double k = F.x * P.x + F.y * P.y;
144+
if(k == 0) {
145+
// Parallel
146+
return false;
147+
}
148+
double h = (Q.x * P.x + Q.y * P.y)/(k);
149+
if(0 <= h && h <= 1) {
150+
return true;
151+
}
152+
return false;
153+
}
154+
public String toString() {
155+
return "("+this.x + ","+ this.y + ")";
156+
}
157+
}
158+
159+
class LineSegement {
160+
Point a,b;
161+
public LineSegement(Point a,Point b) {
162+
if(a.x > b.x) {
163+
this.a = b;
164+
this.b = a;
165+
}else {
166+
this.a = a;
167+
this.b = b;
168+
}
169+
}
170+
public double atX(double x) {
171+
if(this.a.y == this.b.y) { // Straight
172+
return this.a.y;
173+
}else {
174+
return this.a.y * (x/this.a.x);
175+
}
176+
}
177+
public Point atX_(double x) {
178+
return new Point(x,this.atX(x));
179+
}
180+
public String toString() {
181+
return this.a.toString() + " -- "+this.b.toString();
182+
}
183+
}

cowjump.out

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
2

cowjump2.in

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
2
2+
0 0 9 9
3+
0 4 9 0

cowjump3.in

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
2
2+
0 0 9 9
3+
0 4 9 0

fenceplan.java

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import java.io.*;
2+
import java.util.*;
3+
public class fenceplan {
4+
// Func Ref
5+
// Output values
6+
// 0 = p, q, r colinear
7+
// 1 = Clockwise
8+
// 2 = Counterclockwise
9+
static int[][] matrix;
10+
static Point[] graph;
11+
public static int orientation(Point p, Point q, Point r)
12+
{
13+
int val = (q.y - p.y) * (r.x - q.x) -
14+
(q.x - p.x) * (r.y - q.y);
15+
16+
if (val == 0) return 0; // collinear
17+
return (val > 0)? 1: 2; // clock or counterclock wise
18+
}
19+
public static void main(String[] args) throws IOException{
20+
BufferedReader f = new BufferedReader(new FileReader("fenceplan.in"));
21+
StringTokenizer st = new StringTokenizer(f.readLine());
22+
int N = Integer.parseInt(st.nextToken());
23+
int M = Integer.parseInt(st.nextToken());
24+
prev = new int[N];
25+
matrix = new int[N][N];
26+
graph = new Point[N];
27+
for(int i = 0; i < N;i ++) {
28+
st = new StringTokenizer(f.readLine());
29+
int x,y;
30+
x = Integer.parseInt(st.nextToken());
31+
y = Integer.parseInt(st.nextToken());
32+
graph[i] = new Point(x,y);
33+
}
34+
Arrays.fill(prev, -1);
35+
}
36+
static int[] prev;
37+
public void crawl(int k) {
38+
39+
}
40+
}
41+
class Point{
42+
int x = 0; int y = 0;
43+
public Point() {}
44+
public Point(int x, int y) {
45+
this.x = x;
46+
this.y = y;
47+
}
48+
}

leftout.in

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
3
2+
RLR
3+
RRL
4+
LLR

0 commit comments

Comments
 (0)