Koodihaaste on päättynyt ja voittajat selvillä. Meille tuli paljon
kovatasoisia vastauksia ja näiden paremmuusjärjestukseen laittamisessa
tuomaristolla oli paljon hommaa.

Raadin mielipiteet ratkaisujen kohdalla jakaantuivat, mutta pääpalkinnon, eli Verkkokauppa.com:in lahjakortin vei tällä kertaa Antti L koodilla, jota raati kehui mm. seuraavasti: “Lyhyt, ytimekäs ja tehokas -kaikki samassa paketissa”. Toni K:n koodi oli myös raadin mieleen. Sitä kommentoitiin mm. seuraavasti “tehokasta, ylläpidettävää ja hyvin kommentoitua koodia”.

 

Hyviä vastauksia tuli niin reilusti, että päätimme palkita 10 ansioitunutta vastausta leffalippupaketilla. Leffaliput
menivät tällä kertaa seuraaville: Tuomas E, Timo F, Helene K, Toni F,
Juhani L, Sami V, Jarno M, Vesa K, Toni K ja Akhilleus S. Näiden lisäksi
monet jäivät kalkkiviivoille ja olisivat yhtä lailla voineet olla
palkittujen joukossa.

Koodihaaste palaa taas pienen mietiskelytauon jälkeen eetteriin uusien
tehtävien kera. Tiedotamme haasteista täällä sekä Facebookissa.

Solidabiksella on tällä hetkellä paljon mielenkiintoisia tehtäviä tarjolla, eli jos kaipaat mukavia haasteita hyvässä porukassa, niin käy jättämässä hakemus rekrytointisivullamme.

Antti L:n koodi tässä alla:

class Goldbach {
public static void main(String[] args) {
int n = 100000;
int[] x = new int[n+1];
x[1] = 1;
int c = 0;
for (int a = 2; a <= n; a++) { if (x[a] == 1) continue; if (x[n-a] == 0 && a >= n-a) c++;
for (int b = 2*a; b <= n; b += a) x[b] = 1;
}
System.out.println(c);
}
}

Toni K:n koodi tässä:

import java.util.*;
import java.lang.*;
import java.io.*;
class Goldbach {
public static void main(String[] args) {
int arrayLength = 100001;
boolean[] arrWithPrimes = fillPrimes(new boolean[arrayLength]);
int sumCombinations = 0;
for(int i = 2; i <= arrWithPrimes.length / 2; i++) {
int j = arrWithPrimes.length – (i+1);
if(arrWithPrimes[i] && arrWithPrimes[arrWithPrimes.length – (i+1)])
sumCombinations++;
if(i == j)
break;
}
System.out.println(“”+sumCombinations);
}
private static boolean[] fillPrimes(boolean[] array) {
boolean[] arrayToFill = array;
Arrays.fill(arrayToFill,true);
arrayToFill[0]=arrayToFill[1]=false;
for (int i = 2; i < arrayToFill.length; i++) {
if( arrayToFill[i] ) {
for (int j = 2; i * j < arrayToFill.length; j++) {
arrayToFill[i * j]=false;
}}}
return arrayToFill;
} }

Solidabis Oy     |         |     Facebook   LinkedIn   Twitter     |     Tietosuoja     |     Tilaa uutiskirje