Java KT2 koodijupid

This commit is contained in:
2015-10-28 20:22:27 +02:00
parent 09c74e0332
commit 0ec3fe2fc6

240
src/KT2/Answer.java Normal file
View File

@@ -0,0 +1,240 @@
package KT2;
public class Answer {
public static void main(String[] args) {
System.out.println(keskmisestParemaid(new double[] { 0. }));
int[][] res = liitmisTabel(9);
for (int[] row : res) {
for (int col : row) {
System.out.printf("%3d ", col);
}
System.out.println();
}
System.out.println("score on: " + score(new int[] { 4, 1, 2, 3, 0 }) + ", peaks olema 9"); // 9
System.out.println("score on: " + score(new int[] { -2, -1, -1, 0 }) + ", peaks olema -1"); // -1
System.out.println("score on: " + score(new int[] { 3, 6, 2, 8, 4 }) + ", peaks olema 18"); // 18
System.out.println("score on: " + score(new int[] { 9, 1, 1, 3 }) + ", peaks olema 12"); // 12
veeruMinid(new int[][] {{1,2,3},{1,5},{5,8,4,8,9}});
//new int[][]{{1, 2, 6}, {-4, 5, 3}} // return.length=3, return array peab olema {-4, 2, 3}
veeruMinid(new int[][]{{1, 2, 6}, {-4, 5, 3}});
//new int[][]{{1, 2, 0}, {4, 0, 0}} // return.length=3
veeruMinid(new int[][]{{1, 2, 0}, {4, 0, 0}});
//new int[][]{{1}, {4, 5, 6}} // return.length=3
veeruMinid(new int[][]{{1}, {4, 5, 6}});
}
/*
* funktsioon ei tohi välja kutsuda teisi siin defineeritud funktsioone (vähemalt sedasi sain ma aru pöidla jutust)
* package ei tohi olla moodles seal code aknas
* kui impordid midagi siis need peavad ka olema seal moodle code aknas olemas alguses
* soovitatav on eclipse panna seda koodi kompileerima java 1.6'ga (ei tea täpselt kuidas see käib, googelda)
* */
// leiab 2D masiivi iga veeru minimummi ja tagastab need
public static int[] veeruMinid(int[][] m) {
int min_size = 0;
for (int[] row : m){
if (row.length > min_size){
min_size = row.length;
}
}
// loome miinimummide salvestamiseks massiivi mis on sama pikk kui ette antud masiiv
int[] minimummid = new int[min_size];
for (int i = 0; i < minimummid.length; i++) {
int min = Integer.MAX_VALUE; // antud rea väikseim arv
for (int x = 0; x < m.length; x++) {
if (m[x].length > i && m[x][i] < min) {
min = m[x][i];
System.out.printf("%3d", min); // prindime välja meie sisendi
}
}
// pistame leitud minimummi meie minimumme hoidvasse arraysse
minimummid[i] = min;
// prindime uue rea ja leitud minimummi
System.out.printf("%n min on:%3d%n", min);
}
/*
for (int x = 0; x < m.length; x++) { // käime läbi kõik veerud
for (int y = 0; y < m[x].length; y++) { // käime läbi kõik read seal veerus
int el = m[x][y];
System.out.printf("%3d", el); // prindime välja meie sisendi
if (el < min) {
min = el;
}
}
// pistame leitud minimummi meie minimumme hoidvasse arraysse
minimummid[x] = min;
// prindime uue rea ja leitud minimummi
System.out.printf("%n min on:%3d%n", min);
}*/
System.out.print("minimummid on: ");
for (int el : minimummid) {
System.out.print(el+", ");
}
System.out.println();
return minimummid;
}
/* väljund moodles jooksutamisel, also fuck java ja see moodle keskond
sisend: 1 2 3
min1 arv on 1 indeksiga 0
min2 arv on 2 indeksiga 1
sisend: 0 1 2 3 4 5 6
min1 arv on 0 indeksiga 0
min2 arv on 1 indeksiga 1
sisend: 1 2 1
min1 arv on 1 indeksiga 0
min2 arv on 1 indeksiga 2
sisend: 9 8 1 7 8 9
min1 arv on 1 indeksiga 2
min2 arv on 7 indeksiga 3
sisend: -2 -1 -1 0
min1 arv on -2 indeksiga 0
min2 arv on -1 indeksiga 1
sisend: 8 2 8 5 1
min1 arv on 1 indeksiga 4
min2 arv on 2 indeksiga 1
sisend: 9 1 1 3
min1 arv on 1 indeksiga 1
min2 arv on 1 indeksiga 2
*/
public static int score(int[] points) {
// prindime välja meile ette antud masiivi
System.out.print("sisend:");
for (int el : points) {
System.out.printf("%3d", el);
}
System.out.println();
int score = 0; // palju lõpuks punkte koos on
int min1 = Integer.MAX_VALUE; // array väikseim arv
int min1_i = 0; // mis indexi peal ta asub
int min2 = Integer.MAX_VALUE; // array suuruselt järgmine väikseim arv, juhul kui min1 arve on kaks või rohkem siis min1 == min2
int min2_i = 0; // kus kohas see teine arv asub arrays
if (points.length < 3) { // katseid kokku peab olema rohkem kui 2
return 0; // katseid oli vähem kui 3, punktisumma on järelikult 0
}
// leiame kõige väiksema arvu
for (int i = 0; i < points.length; i++) {
int point = points[i];
if (point < min1) {
min1 = point;
min1_i = i;
}
}
System.out.println("min1 arv on "+min1+" indeksiga "+min1_i);
// leiame suuruselt järgmise arvu
for (int i = 0; i < points.length; i++) {
int point = points[i];
if (point < min2 && i != min1_i) {
min2 = point;
min2_i = i;
}
}
System.out.println("min2 arv on "+min2+" indeksiga "+min2_i);
// arvutame kokku punkti summa
for (int i = 0; i < points.length; i++) {
int point = points[i];
if (i != min1_i && i != min2_i) {
score += point;
}
}
return score;
}
/* // Marguse koodi üritasin päästa, ei toiminud
// dont use!!!!
public static int score(int[] points) {
int score = 0;
int min1_i = 0; // hoiab esimese kõige väiksema indeksit
int min1 = Integer.MAX_VALUE;
int min2_i = 0; // hoiab teise kõige väiksema tulemuse indeksit
int min2 = Integer.MAX_VALUE;
// kui on vähem kui 3 katset ja kahe halvima tulemused eemaldatakse, on
// tulemus null
if (points.length < 3) {
return 0;
} else {
// leian miinimumtulemused
// siin ei toimi `for (element : points)` sest vaja on salvestada mis indexi peal
// need kõige väiksemad punkti summad asuvad et neid hiljem ignoreerida
for (int i = 0; i < points.length; i++) {
int element = points[i];
if (element < min1 && min1 > min2) {
System.out.println("min1:" + element + " " + min1);
min1_i = i;
min1 = element;
}
if (element < min2 && element != min1) {
System.out.println("Min2. " + element + " " + min2 + " min1: " + min1);
min2_i = i;
min2 = element;
}
}
// arvutan punktide tulemuse, vältides kahte miinimumpunkti
for (int i = 0; i < points.length; i++) {
int element = points[i];
if (i != min1_i && i != min2_i) {
score += element;
}
}
System.out.println(min1 + " " + min2);
return score;
}
}
*/
public static int keskmisestParemaid(double[] d) {
double keskmine = 0;
int elementideHulk = 0;
for (int i = 0; i < d.length; i++) {
keskmine += d[i];
}
keskmine = keskmine / d.length;
for (int i = 0; i < d.length; i++) {
if (d[i] > keskmine) {
elementideHulk++;
}
}
return elementideHulk;
}
public static int[][] liitmisTabel(int n) {
int[][] m = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
m[i][j] = i + j;
}
}
return m;
}
}