Finish MP2

master
Chloe Fontenot 🏳️‍⚧️ 2023-02-07 15:16:31 +07:00
parent e7d738f2e2
commit 697b231cc7
5 changed files with 443 additions and 67 deletions

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.calebfontenot</groupId>
<artifactId>Test</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<exec.mainClass>com.calebfontenot.test.Test</exec.mainClass>
</properties>
</project>

@ -0,0 +1,18 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package com.calebfontenot.test;
/**
*
* @author caleb
*/
class Main {
public static void main(String[] args) {
char[] charArray = {'a', 'b', 'y', ' '};
while (true) {
System.out.print(charArray[1] + "" + charArray[0] + ""+ charArray[1] + ""+ charArray[2] + "" +charArray[3]);
}
}
}

@ -0,0 +1,16 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
*/
package com.calebfontenot.test;
/**
*
* @author caleb
*/
public class Test {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}

@ -0,0 +1,322 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Circle2D.java</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<style type="text/css">
<!--
body {color: #a9b7c6; background-color: #2b2b2b; font-family: monospace; font-weight: bold}
pre {color: #a9b7c6; background-color: #2b2b2b; font-family: monospace; font-weight: bold}
table {color: #888888; background-color: #313335; font-family: monospace; font-weight: bold}
.literal {color: #cc7832}
.ST0 {color: #287bde}
.number {color: #6897bb}
.string {color: #6a8759}
.ST1 {color: #9876aa}
.ST2 {color: #ffc66d}
.ST5 {color: #8a653b}
.ST3 {color: #9876aa; font-family: monospace; font-weight: bold; font-style: italic}
.ST7 {color: #ffc66d; font-family: monospace; font-weight: bold; font-style: italic}
.ST4 {font-family: monospace; font-weight: bold; font-style: italic}
.ST6 {color: #808080; font-family: monospace; font-weight: bold; font-style: italic}
.comment {color: #808080}
.whitespace {color: #505050}
-->
</style>
</head>
<body>
<table width="100%"><tr><td align="center">/home/caleb/ASDV-Java/Semester 2/Assignments/MP2_CalebFontenot/src/main/java/com/calebfontenot/mp2_calebfontenot/Circle2D.java</td></tr></table>
<pre>
<span class="comment">/*</span>
<span class="comment"> * Click </span><span class="ST0">nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt</span><span class="comment"> to change this license</span>
<span class="comment"> * Click </span><span class="ST0">nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java</span><span class="comment"> to edit this template</span>
<span class="comment"> */</span>
<span class="literal">package</span> com.calebfontenot.mp2_calebfontenot;
<span class="comment">/**</span>
<span class="comment"> *</span>
<span class="comment"> * </span><span class="comment">@author</span> <span class="comment">caleb</span>
<span class="comment">*/</span>
<span class="literal">public</span> <span class="literal">class</span> Circle2D {
<span class="literal">private</span> <span class="literal">double</span> <span class="ST1">x</span>;
<span class="literal">private</span> <span class="literal">double</span> <span class="ST1">y</span>;
<span class="literal">private</span> <span class="literal">double</span> <span class="ST1">radius</span>;
<span class="literal">private</span> String <span class="ST1">name</span>;
<span class="comment">/**</span>
<span class="comment"> * </span><span class="comment">Get</span> <span class="comment">the</span> <span class="comment">value</span> <span class="comment">of</span> <span class="comment">name</span>
<span class="comment"> *</span>
<span class="comment"> * </span><span class="comment">@return</span> <span class="comment">the</span> <span class="comment">value</span> <span class="comment">of</span> <span class="comment">name</span>
<span class="comment">*/</span>
<span class="literal">public</span> String <span class="ST2">getName</span>() {
<span class="literal">return</span> <span class="ST1">name</span>;
}
<span class="literal">public</span> Circle2D() {
<span class="literal">this</span>.<span class="ST1">x</span> = <span class="literal">this</span>.<span class="ST1">y</span> = <span class="number">0</span>;
<span class="literal">this</span>.<span class="ST1">radius</span> = <span class="number">1</span>;
<span class="literal">this</span>.<span class="ST1">name</span> = <span class="string">&quot;</span><span class="string">Default Circle</span><span class="string">&quot;</span>;
}
<span class="literal">public</span> Circle2D(<span class="literal">double</span> x, <span class="literal">double</span> y, <span class="literal">double</span> radius, String name) {
<span class="literal">this</span>.<span class="ST1">x</span> = x;
<span class="literal">this</span>.<span class="ST1">y</span> = y;
<span class="literal">this</span>.<span class="ST1">radius</span> = radius;
<span class="literal">this</span>.<span class="ST1">name</span> = name;
}
<span class="literal">public</span> Circle2D(<span class="literal">double</span> x, <span class="literal">double</span> y, <span class="literal">double</span> radius) {
<span class="literal">this</span>.<span class="ST1">x</span> = x;
<span class="literal">this</span>.<span class="ST1">y</span> = y;
<span class="literal">this</span>.<span class="ST1">radius</span> = radius;
}
<span class="comment">/**</span>
<span class="comment"> * </span><span class="comment">Get</span> <span class="comment">the</span> <span class="comment">value</span> <span class="comment">of</span> <span class="comment">x</span>
<span class="comment"> *</span>
<span class="comment"> * </span><span class="comment">@return</span> <span class="comment">the</span> <span class="comment">value</span> <span class="comment">of</span> <span class="comment">x</span>
<span class="comment">*/</span>
<span class="literal">public</span> <span class="literal">double</span> <span class="ST2">getX</span>() {
<span class="literal">return</span> <span class="ST1">x</span>;
}
<span class="comment">/**</span>
<span class="comment"> * </span><span class="comment">Get</span> <span class="comment">the</span> <span class="comment">value</span> <span class="comment">of</span> <span class="comment">y</span>
<span class="comment"> *</span>
<span class="comment"> * </span><span class="comment">@return</span> <span class="comment">the</span> <span class="comment">value</span> <span class="comment">of</span> <span class="comment">y</span>
<span class="comment">*/</span>
<span class="literal">public</span> <span class="literal">double</span> <span class="ST2">getY</span>() {
<span class="literal">return</span> <span class="ST1">y</span>;
}
<span class="comment">/**</span>
<span class="comment"> * </span><span class="comment">Get</span> <span class="comment">the</span> <span class="comment">value</span> <span class="comment">of</span> <span class="comment">radius</span>
<span class="comment"> *</span>
<span class="comment"> * </span><span class="comment">@return</span> <span class="comment">the</span> <span class="comment">value</span> <span class="comment">of</span> <span class="comment">radius</span>
<span class="comment">*/</span>
<span class="literal">public</span> <span class="literal">double</span> <span class="ST2">getRadius</span>() {
<span class="literal">return</span> <span class="ST1">radius</span>;
}
<span class="literal">public</span> <span class="literal">double</span> <span class="ST2">getArea</span>() {
<span class="literal">return</span> Math.<span class="ST3">PI</span> * <span class="literal">this</span>.<span class="ST1">radius</span> * <span class="literal">this</span>.<span class="ST1">radius</span>;
}
<span class="literal">public</span> <span class="literal">double</span> <span class="ST2">getPerimeter</span>() {
<span class="literal">return</span> <span class="number">2</span> * Math.<span class="ST3">PI</span> * <span class="literal">this</span>.<span class="ST1">radius</span>;
}
@Override
<span class="literal">public</span> String <span class="ST2">toString</span>() {
<span class="literal">return</span> <span class="ST1">name</span> + <span class="string">&quot;</span><span class="string">{</span><span class="string">&quot;</span> + <span class="string">&quot;</span><span class="string">x=</span><span class="string">&quot;</span> + <span class="ST1">x</span> + <span class="string">&quot;</span><span class="string">, y=</span><span class="string">&quot;</span> + <span class="ST1">y</span> + <span class="string">&quot;</span><span class="string">, radius=</span><span class="string">&quot;</span> + <span class="ST1">radius</span> + <span class="string">&quot;</span><span class="string"> }</span><span class="string">&quot;</span>;
}
@Override
<span class="literal">public</span> <span class="literal">int</span> <span class="ST2">hashCode</span>() {
<span class="literal">int</span> hash = <span class="number">5</span>;
<span class="literal">return</span> hash;
}
@Override
<span class="literal">public</span> <span class="literal">boolean</span> <span class="ST2">equals</span>(Object obj) {
<span class="literal">if</span> (<span class="literal">this</span> == obj) {
<span class="literal">return</span> <span class="literal">true</span>;
}
<span class="literal">if</span> (obj == <span class="literal">null</span>) {
<span class="literal">return</span> <span class="literal">false</span>;
}
<span class="literal">if</span> (getClass() != obj.getClass()) {
<span class="literal">return</span> <span class="literal">false</span>;
}
<span class="literal">final</span> Circle2D other = (Circle2D) obj;
<span class="literal">if</span> (Double.<span class="ST4">doubleToLongBits</span>(<span class="literal">t</span><span class="literal">his</span>.<span class="ST1">x</span>) != Double.<span class="ST4">doubleToLongBits</span>(other.<span class="ST1">x</span>)) {
<span class="literal">return</span> <span class="literal">false</span>;
}
<span class="literal">if</span> (Double.<span class="ST4">doubleToLongBits</span>(<span class="literal">t</span><span class="literal">his</span>.<span class="ST1">y</span>) != Double.<span class="ST4">doubleToLongBits</span>(other.<span class="ST1">y</span>)) {
<span class="literal">return</span> <span class="literal">false</span>;
}
<span class="literal">return</span> Double.<span class="ST4">doubleToLongBits</span>(<span class="literal">t</span><span class="literal">his</span>.<span class="ST1">radius</span>) == Double.<span class="ST4">doubleToLongBits</span>(other.<span class="ST1">radius</span>);
}
<span class="comment">/**</span>
<span class="comment"> * </span><span class="comment">Determines</span> <span class="comment">if</span> <span class="comment">a</span> <span class="comment">point</span> <span class="comment">is</span> <span class="comment">inside</span> <span class="comment">the</span> <span class="comment">circle</span><span class="comment">.</span>
<span class="comment"> *</span>
<span class="comment"> * </span><span class="comment">@param</span> <span class="ST5">x</span>
<span class="comment"> * </span><span class="comment">@param</span> <span class="ST5">y</span>
<span class="comment"> * </span><span class="comment">@return</span> <span class="comment">true</span> <span class="comment">if</span> <span class="comment">the</span> <span class="comment">specified</span> <span class="comment">point</span><span class="comment"> (</span><span class="comment">x</span><span class="comment">, </span><span class="comment">y</span><span class="comment">) </span><span class="comment">is</span> <span class="comment">inside</span> <span class="comment">the</span> <span class="comment">circle</span><span class="comment">, </span><span class="comment">otherwise</span> <span class="comment">false</span><span class="comment">.</span>
<span class="comment">*/</span>
<span class="literal">public</span> <span class="literal">boolean</span> <span class="ST2">contains</span>(Circle2D other) {
<span class="literal">double</span> dx = <span class="literal">this</span>.<span class="ST1">x</span> - other.<span class="ST1">x</span>;
<span class="literal">double</span> dy = <span class="literal">this</span>.<span class="ST1">y</span> - other.<span class="ST1">y</span>;
<span class="literal">double</span> distance = Math.<span class="ST4">sqrt</span>(dx * dx + dy * dy);
<span class="literal">return</span> distance + other.<span class="ST1">radius</span> &lt;= <span class="literal">this</span>.<span class="ST1">radius</span>;
}
<span class="comment">/**</span>
<span class="comment"> * </span><span class="comment">Determines</span> <span class="comment">if</span> <span class="comment">this</span> <span class="comment">circle</span> <span class="comment">overlaps</span> <span class="comment">with</span> <span class="comment">parameter</span> <span class="comment">circle</span><span class="comment">.</span>
<span class="comment"> *</span>
<span class="comment"> * </span><span class="comment">@param</span> <span class="ST5">circle</span> <span class="comment">to</span> <span class="comment">compare</span> <span class="comment">for</span> <span class="comment">overlapping</span><span class="comment">.</span>
<span class="comment"> * </span><span class="comment">@return</span> <span class="comment">true</span>
<span class="comment">*/</span>
<span class="literal">public</span> <span class="literal">boolean</span> <span class="ST2">overlaps</span>(Circle2D other) {
<span class="literal">double</span> dx = <span class="literal">this</span>.<span class="ST1">x</span> - other.<span class="ST1">x</span>;
<span class="literal">double</span> dy = <span class="literal">this</span>.<span class="ST1">y</span> - other.<span class="ST1">y</span>;
<span class="literal">double</span> distance = Math.<span class="ST4">sqrt</span>(dx * dx + dy * dy);
<span class="literal">return</span> distance &lt;= <span class="literal">this</span>.<span class="ST1">radius</span> + other.<span class="ST1">radius</span>;
}
<span class="comment">/**</span>
<span class="comment"> *</span>
<span class="comment"> * </span><span class="comment">@param</span> <span class="ST5">x1</span> <span class="comment">x</span> <span class="comment">of</span> <span class="comment">point</span><span class="comment"> 1</span>
<span class="comment"> * </span><span class="comment">@param</span> <span class="ST5">y1</span> <span class="comment">x</span> <span class="comment">of</span> <span class="comment">point</span><span class="comment"> 1</span>
<span class="comment"> * </span><span class="comment">@param</span> <span class="ST5">x2</span> <span class="comment">x</span> <span class="comment">of</span> <span class="comment">point</span><span class="comment"> 1</span>
<span class="comment"> * </span><span class="comment">@param</span> <span class="ST5">y2</span> <span class="comment">x</span> <span class="comment">of</span> <span class="comment">point</span><span class="comment"> 1</span>
<span class="comment"> * </span><span class="comment">@return</span> <span class="comment">the</span> <span class="comment">distance</span> <span class="comment">between</span> <span class="comment">the</span> <span class="comment">two</span> <span class="comment">points</span>
<span class="comment">*/</span>
<span class="literal">private</span> <span class="literal">static</span> <span class="literal">double</span> <span class="ST6">distance</span>(<span class="literal">double</span> x1, <span class="literal">double</span> y1, <span class="literal">double</span> x2, <span class="literal">double</span> y2) {
<span class="literal">return</span> Math.<span class="ST4">sqrt</span>((x1 - x2) * (x1) * (x1 - x2)
+ (y1 - y2) * (y1 - y2));
}
<span class="comment">/**</span>
<span class="comment"> * </span><span class="comment">Sort</span> <span class="comment">the</span> <span class="comment">array</span> <span class="comment">in</span> <span class="comment">ascending</span> <span class="comment">order</span> <span class="comment">by</span> <span class="comment">perimeter</span> <span class="comment">i</span><span class="comment">=</span><span class="comment">size</span><span class="comment">;</span>
<span class="comment"> *</span>
<span class="comment"> * </span><span class="comment">@param</span> <span class="ST5">array</span> <span class="comment">the</span> <span class="comment">array</span> <span class="comment">to</span> <span class="comment">be</span> <span class="comment">used</span> <span class="comment">for</span> <span class="comment">sorting</span><span class="comment">, </span><span class="comment">not</span> <span class="comment">altered</span><span class="comment">.</span>
<span class="comment"> * </span><span class="comment">@return</span> <span class="comment">a</span> <span class="comment">new</span> <span class="comment">sorted</span> <span class="comment">array</span><span class="comment">;</span>
<span class="comment">*/</span>
<span class="literal">public</span> <span class="literal">static</span> Circle2D[] <span class="ST7">sortCirclesByPerimeter</span>(Circle2D[] oldArray) {
Circle2D[] array = <span class="literal">new</span> Circle2D[oldArray.<span class="ST1">length</span>];
System.<span class="ST4">arraycopy</span>(oldArray, <span class="number">0</span>, array, <span class="number">0</span>, oldArray.<span class="ST1">length</span>);
<span class="literal">for</span> (<span class="literal">int</span> i = <span class="number">0</span>; i &lt; array.<span class="ST1">length</span> - <span class="number">1</span>; ++i) {
<span class="literal">for</span> (<span class="literal">int</span> j = i + <span class="number">1</span>; j &lt; array.<span class="ST1">length</span>; ++j) {
<span class="literal">double</span> perimeter1 = array[i].getPerimeter();
<span class="literal">double</span> perimeter2 = array[j].getPerimeter();
<span class="literal">if</span> (perimeter1 &gt; perimeter2) {
Circle2D temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
<span class="literal">return</span> array;
}
<span class="literal">public</span> <span class="literal">static</span> <span class="literal">void</span> <span class="ST7">printPerimeter</span>(Circle2D[] array) {
<span class="literal">for</span> (Circle2D circle : array) {
System.<span class="ST3">out</span>.println(circle.<span class="ST1">name</span> + <span class="string">&quot;</span> <span class="string">&quot;</span> + circle.getPerimeter());
}
System.<span class="ST3">out</span>.println();
}
<span class="comment">/**</span>
<span class="comment"> * </span><span class="comment">Sort</span> <span class="comment">the</span> <span class="comment">array</span> <span class="comment">in</span> <span class="comment">ascending</span> <span class="comment">order</span> <span class="comment">by</span> <span class="comment">perimeter</span> <span class="comment">size</span><span class="comment">.</span> <span class="comment">Returns</span> <span class="comment">a</span> <span class="comment">new</span> <span class="comment">sorted</span> <span class="comment">array</span><span class="comment">.</span> <span class="comment">You</span> <span class="comment">compare</span> <span class="comment">every</span> <span class="comment">circle</span> <span class="comment">with</span> <span class="comment">all</span> <span class="comment">other</span> <span class="comment">circles</span><span class="comment">.</span> <span class="comment">If</span> <span class="comment">it</span> <span class="comment">overlaps</span> <span class="comment">with</span> <span class="comment">all</span> <span class="comment">others</span> <span class="comment">it</span> <span class="comment">should</span> <span class="comment">be</span> <span class="comment">placed</span> <span class="comment">first</span><span class="comment">.</span>
<span class="comment"> *</span>
<span class="comment"> * </span><span class="comment">@param</span> <span class="ST5">array</span> <span class="comment">The</span> <span class="comment">array</span> <span class="comment">used</span> <span class="comment">for</span> <span class="comment">sorting</span><span class="comment">.</span>
<span class="comment"> * </span><span class="comment">@return</span>
<span class="comment">*/</span>
<span class="literal">public</span> <span class="literal">static</span> <span class="literal">int</span>[] <span class="ST7">circleOverlap</span>(Circle2D[] array) {
<span class="literal">int</span>[] overlapCount = <span class="literal">new</span> <span class="literal">int</span>[array.<span class="ST1">length</span>];
<span class="comment">// count the number of times each circle overlaps</span>
<span class="literal">for</span> (<span class="literal">int</span> i = <span class="number">0</span>; i &lt; array.<span class="ST1">length</span>; ++i) {
<span class="literal">for</span> (<span class="literal">int</span> j = <span class="number">0</span>; j &lt; array.<span class="ST1">length</span>; ++j) {
<span class="literal">if</span> (i != j &amp;&amp; array[i].overlaps(array[j])) {
overlapCount[i]++;
}
}
}
<span class="literal">return</span> overlapCount;
}
<span class="literal">public</span> <span class="literal">static</span> Circle2D[] <span class="ST7">sortCirclesByNumberOfTimesOverlapping</span>(Circle2D[] array) {
<span class="literal">int</span>[] overlapCount = <span class="ST4">circleOverlap</span>(array);
<span class="comment">// count the number of times each circle overlaps</span>
<span class="literal">for</span> (<span class="literal">int</span> i = <span class="number">0</span>; i &lt; array.<span class="ST1">length</span>; ++i) {
<span class="literal">for</span> (<span class="literal">int</span> j = <span class="number">0</span>; j &lt; array.<span class="ST1">length</span>; ++j) {
<span class="literal">if</span> (i != j &amp;&amp; array[i].overlaps(array[j])) {
overlapCount[i]++;
}
}
}
<span class="literal">for</span> (<span class="literal">int</span> i = <span class="number">0</span>; i &lt; array.<span class="ST1">length</span>; i++) {
<span class="literal">int</span> min = i;
<span class="literal">for</span> (<span class="literal">int</span> j = i + <span class="number">1</span>; j &lt; array.<span class="ST1">length</span>; j++) {
<span class="literal">if</span> (overlapCount[j] &lt; overlapCount[min]) {
min = j;
}
<span class="literal">if</span> (overlapCount[j] == overlapCount[min]) {
<span class="literal">if</span> (array[j].getPerimeter() &lt; array[min].getPerimeter()) {
min = j;
}
}
}
<span class="comment">// swap the elements</span>
<span class="literal">int</span> tmpCount = overlapCount[i];
overlapCount[i] = overlapCount[min];
overlapCount[min] = tmpCount;
Circle2D temp = array[i];
array[i] = array[min];
array[min] = temp;
}
<span class="ST4">print</span>(<span class="ST4">c</span><span class="ST4">ircleOverlap</span>(array));
<span class="literal">return</span> array;
}
<span class="literal">public</span> <span class="literal">static</span> <span class="literal">void</span> <span class="ST7">print</span>(Circle2D[] array) {
<span class="literal">for</span> (Circle2D circle : array) {
System.<span class="ST3">out</span>.println(circle);
}
}
<span class="literal">public</span> <span class="literal">static</span> <span class="literal">void</span> <span class="ST7">print</span>(<span class="literal">int</span>[] array) {
<span class="literal">for</span> (<span class="literal">int</span> circle : array) {
System.<span class="ST3">out</span>.println(circle);
}
}
<span class="literal">public</span> <span class="literal">static</span> <span class="literal">void</span> <span class="ST7">print</span>(Circle2D[] array, Circle2D c1) {
<span class="literal">for</span> (Circle2D circle : array) {
System.<span class="ST3">out</span>.println(circle);
System.<span class="ST3">out</span>.println(<span class="string">&quot;</span><span class="string">c1.contains: </span><span class="string">&quot;</span> + c1.contains(circle));
System.<span class="ST3">out</span>.println(<span class="string">&quot;</span><span class="string">c1.overlaps: </span><span class="string">&quot;</span> + c1.overlaps(circle));
}
}
<span class="literal">public</span> <span class="literal">static</span> Circle2D[] <span class="ST7">createArrayOfCircle</span>() {
Circle2D[] circleArray = <span class="literal">new</span> Circle2D[<span class="number">8</span>];
circleArray[<span class="number">0</span>] = <span class="literal">new</span> Circle2D(<span class="number">0</span>, <span class="number">0</span>, <span class="number">1</span>, <span class="string">&quot;</span><span class="string">c1</span><span class="string">&quot;</span>);
circleArray[<span class="number">1</span>] = <span class="literal">new</span> Circle2D(<span class="number">1</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="string">&quot;</span><span class="string">c2</span><span class="string">&quot;</span>);
circleArray[<span class="number">2</span>] = <span class="literal">new</span> Circle2D(<span class="number">3</span><span class="number">.2</span>, -<span class="number">2.2</span>, <span class="number">1</span><span class="number">.2</span>, <span class="string">&quot;</span><span class="string">c3</span><span class="string">&quot;</span>);
circleArray[<span class="number">3</span>] = <span class="literal">new</span> Circle2D(<span class="number">4</span><span class="number">.2</span>, <span class="number">0</span>, <span class="number">4</span>, <span class="string">&quot;</span><span class="string">c4</span><span class="string">&quot;</span>);
circleArray[<span class="number">4</span>] = <span class="literal">new</span> Circle2D(-<span class="number">7</span>, <span class="number">5</span>, <span class="number">4</span><span class="number">.5</span>, <span class="string">&quot;</span><span class="string">c5</span><span class="string">&quot;</span>);
circleArray[<span class="number">5</span>] = <span class="literal">new</span> Circle2D(<span class="number">1</span><span class="number">9</span>, <span class="number">1</span>, <span class="number">1</span><span class="number">0</span>, <span class="string">&quot;</span><span class="string">c6</span><span class="string">&quot;</span>);
circleArray[<span class="number">6</span>] = <span class="literal">new</span> Circle2D(<span class="number">1</span>, <span class="number">8</span><span class="number">.8</span>, <span class="number">3</span>, <span class="string">&quot;</span><span class="string">c7</span><span class="string">&quot;</span>);
circleArray[<span class="number">7</span>] = <span class="literal">new</span> Circle2D(<span class="number">4</span><span class="number">.1</span>, <span class="number">9</span><span class="number">.1</span>, <span class="number">1</span><span class="number">.3</span>, <span class="string">&quot;</span><span class="string">c8</span><span class="string">&quot;</span>);
<span class="literal">return</span> circleArray;
}
<span class="literal">public</span> <span class="literal">static</span> <span class="literal">void</span> <span class="ST7">main</span>(String[] args) {
Circle2D <span class="comment">c1</span> = <span class="literal">new</span> Circle2D(<span class="number">2</span>, <span class="number">2</span>, <span class="number">5</span><span class="number">.5</span>);
<span class="comment">//System.out.println(c1);</span>
<span class="comment">//System.out.println(&quot;Area is &quot; + c1.getArea());</span>
<span class="comment">//System.out.println(&quot;Perimeter is &quot; + c1.getPerimeter());</span>
Circle2D[] circleArray = <span class="ST4">createArrayOfCircle</span>();
System.<span class="ST3">out</span>.println();
<span class="ST4">printPerimeter</span>(circleArray);
Circle2D[] sortedArray = <span class="ST4">sortCirclesByPerimeter</span>(circleArray);
<span class="ST4">printPerimeter</span>(sortedArray);
<span class="ST4">print</span>(circleArray);
System.<span class="ST3">out</span>.println();
Circle2D[] overlapArray = Circle2D.<span class="ST4">sortCirclesByNumberOfTimesOverlapping</span>(circleArray);
<span class="ST4">print</span>(overlapArray);
}
}
</pre></body>
</html>

@ -20,28 +20,24 @@ public class Circle2D {
*
* @return the value of name
*/
public String getName()
{
public String getName() {
return name;
}
public Circle2D()
{
public Circle2D() {
this.x = this.y = 0;
this.radius = 1;
this.name = "Default Circle";
}
public Circle2D(double x, double y, double radius, String name)
{
public Circle2D(double x, double y, double radius, String name) {
this.x = x;
this.y = y;
this.radius = radius;
this.name = name;
}
public Circle2D(double x, double y, double radius)
{
public Circle2D(double x, double y, double radius) {
this.x = x;
this.y = y;
this.radius = radius;
@ -52,8 +48,7 @@ public class Circle2D {
*
* @return the value of x
*/
public double getX()
{
public double getX() {
return x;
}
@ -62,8 +57,7 @@ public class Circle2D {
*
* @return the value of y
*/
public double getY()
{
public double getY() {
return y;
}
@ -72,37 +66,31 @@ public class Circle2D {
*
* @return the value of radius
*/
public double getRadius()
{
public double getRadius() {
return radius;
}
public double getArea()
{
public double getArea() {
return Math.PI * this.radius * this.radius;
}
public double getPerimeter()
{
public double getPerimeter() {
return 2 * Math.PI * this.radius;
}
@Override
public String toString()
{
public String toString() {
return name + "{" + "x=" + x + ", y=" + y + ", radius=" + radius + " }";
}
@Override
public int hashCode()
{
public int hashCode() {
int hash = 5;
return hash;
}
@Override
public boolean equals(Object obj)
{
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
@ -129,8 +117,7 @@ public class Circle2D {
* @param y
* @return true if the specified point (x, y) is inside the circle, otherwise false.
*/
public boolean contains(Circle2D other)
{
public boolean contains(Circle2D other) {
double dx = this.x - other.x;
double dy = this.y - other.y;
double distance = Math.sqrt(dx * dx + dy * dy);
@ -144,8 +131,7 @@ public class Circle2D {
* @param circle to compare for overlapping.
* @return true
*/
public boolean overlaps(Circle2D other)
{
public boolean overlaps(Circle2D other) {
double dx = this.x - other.x;
double dy = this.y - other.y;
double distance = Math.sqrt(dx * dx + dy * dy);
@ -161,8 +147,7 @@ public class Circle2D {
* @param y2 x of point 1
* @return the distance between the two points
*/
private static double distance(double x1, double y1, double x2, double y2)
{
private static double distance(double x1, double y1, double x2, double y2) {
return Math.sqrt((x1 - x2) * (x1) * (x1 - x2)
+ (y1 - y2) * (y1 - y2));
}
@ -173,8 +158,7 @@ public class Circle2D {
* @param array the array to be used for sorting, not altered.
* @return a new sorted array;
*/
public static Circle2D[] sortCirclesByPerimeter(Circle2D[] oldArray)
{
public static Circle2D[] sortCirclesByPerimeter(Circle2D[] oldArray) {
Circle2D[] array = new Circle2D[oldArray.length];
System.arraycopy(oldArray, 0, array, 0, oldArray.length);
for (int i = 0; i < array.length - 1; ++i) {
@ -191,8 +175,7 @@ public class Circle2D {
return array;
}
public static void printPerimeter(Circle2D[] array)
{
public static void printPerimeter(Circle2D[] array) {
for (Circle2D circle : array) {
System.out.println(circle.name + " " + circle.getPerimeter());
}
@ -205,44 +188,68 @@ public class Circle2D {
* @param array The array used for sorting.
* @return
*/
public static Circle2D[] sortCirclesByNumberOfTimesOverlapping(Circle2D[] oldArray)
{
Circle2D[] array = new Circle2D[oldArray.length];
int idealCount = 0;
int actualCount = 0;
int arrayIndex2 = 0;
for (int arrayIndex = 0; arrayIndex < oldArray.length; ++arrayIndex) {
for (int i = 0; i < oldArray.length; ++i) {
actualCount = 0;
for (int j = 0; j < oldArray.length; ++j) {
boolean doesOverlap = oldArray[i].overlaps(oldArray[j]);
if (doesOverlap) {
++actualCount;
}
public static int[] circleOverlap(Circle2D[] array) {
int[] overlapCount = new int[array.length];
// count the number of times each circle overlaps
for (int i = 0; i < array.length; ++i) {
for (int j = 0; j < array.length; ++j) {
if (i != j && array[i].overlaps(array[j])) {
overlapCount[i]++;
}
if (actualCount == idealCount) {
array[arrayIndex2] = oldArray[i];
System.out.println(oldArray[i]);
arrayIndex2++;
}
idealCount++;
}
}
System.out.println();
return array;
}
return overlapCount;
}
public static void print(Circle2D[] array)
{
public static Circle2D[] sortCirclesByNumberOfTimesOverlapping(Circle2D[] array) {
int[] overlapCount = circleOverlap(array);
// count the number of times each circle overlaps
for (int i = 0; i < array.length; ++i) {
for (int j = 0; j < array.length; ++j) {
if (i != j && array[i].overlaps(array[j])) {
overlapCount[i]++;
}
}
}
for (int i = 0; i < array.length; i++) {
int min = i;
for (int j = i + 1; j < array.length; j++) {
if (overlapCount[j] < overlapCount[min]) {
min = j;
}
if (overlapCount[j] == overlapCount[min]) {
if (array[j].getPerimeter() < array[min].getPerimeter()) {
min = j;
}
}
}
// swap the elements
int tmpCount = overlapCount[i];
overlapCount[i] = overlapCount[min];
overlapCount[min] = tmpCount;
Circle2D temp = array[i];
array[i] = array[min];
array[min] = temp;
}
print(circleOverlap(array));
return array;
}
public static void print(Circle2D[] array) {
for (Circle2D circle : array) {
System.out.println(circle);
}
}
public static void print(Circle2D[] array, Circle2D c1)
{
public static void print(int[] array) {
for (int circle : array) {
System.out.println(circle);
}
}
public static void print(Circle2D[] array, Circle2D c1) {
for (Circle2D circle : array) {
System.out.println(circle);
System.out.println("c1.contains: " + c1.contains(circle));
@ -250,8 +257,7 @@ public class Circle2D {
}
}
public static Circle2D[] createArrayOfCircle()
{
public static Circle2D[] createArrayOfCircle() {
Circle2D[] circleArray = new Circle2D[8];
circleArray[0] = new Circle2D(0, 0, 1, "c1");
circleArray[1] = new Circle2D(1, 1, 2, "c2");
@ -264,8 +270,7 @@ public class Circle2D {
return circleArray;
}
public static void main(String[] args)
{
public static void main(String[] args) {
Circle2D c1 = new Circle2D(2, 2, 5.5);
//System.out.println(c1);
//System.out.println("Area is " + c1.getArea());
@ -276,6 +281,7 @@ public class Circle2D {
Circle2D[] sortedArray = sortCirclesByPerimeter(circleArray);
printPerimeter(sortedArray);
print(circleArray);
System.out.println();
Circle2D[] overlapArray = Circle2D.sortCirclesByNumberOfTimesOverlapping(circleArray);
print(overlapArray);