Gå til innhold

PHP challenge 6: Leksikon sortering (update 2)


Anbefalte innlegg

Videoannonse
Annonse
Skrevet (endret)

Okay, vi kan utsette turneringen til neste søndag, altså 18 November så kan vi ta ei liten lett oppgave i mellomtiden.

 

edit: Ok, da første post blitt oppdatert med ny oppgave. Denne oppgaven er veldig kort, så jeg håper at flere blir med!

 

Kan også nevnes at jeg har nå gått tom for oppgaver som ikke er så fryktelig vanskelige. Så hvis noen har forslag så må dere gjerne sende dem inn!

Endret av MC2
Skrevet (endret)

Nja, funksjonene skal bli benket på min mindre imponerende maskin og jeg tror ikke jeg tør la maskina stå på med benking over natten, så de kommer nok ikke å bli spurt om primtall nummer 10 000 for å si det sånn. Men så er det også sånn at desto høyere tall man tester med, desto tydeligere blir fartsforskjellen.

 

Primtall nummer 10 000 er jo 104 729, så kanskje det er et bedre svar.

Endret av MC2
Skrevet (endret)

Har sendt inn svar nå, der du selv kan velge max grense, men det burde vere en fast max grense for max kan ha en del å si på hvor fort scriptet jobber (kommer ann på hvordan det er skrevet)

 

Edit: Satte max på 2mill jeg, tror ikke du trenger høyere, eller gjør du?

Endret av Sjark
Skrevet

Jeg har faktisk bare fått inn en besvarelse. Er det sånn at folk ikke er keen på dette eller er det dårlig med tid? (Jeg vet at det er eksamen osv.)

Skrevet (endret)

Vel, jeg har en besvarelse liggende. Jeg har bare ikke hatt tid til å sende den (flytting er gøy :ermm:). Sender den om et par minutter :)

 

Red.: Sendt. En ting som slår meg er at PHP-kategorien ikke akkurat er videre befestet med folk med inngående kjennskap til PHP, ei heller folk med sterk bakgrunn innen programmering generelt. Min oppfattning er at de fleste her er stort sett selvlærte og har aldri vært borti ting som C, C++, Java el., og enda mindre tatt noe kurs/fag eller vært i nærheten av å snuse på kjente algoritmer o.l. Resultatet er at folk flest her ikke nødvendigvis har kunnskapen eller nivået til å f.eks effektivt generere og verifisere primtall, eller sortere en array.

Red.2: Enten har de ikke kunnskapen ellers så veit de at de kommer til å tape uannsett :p

Endret av Ernie
Skrevet (endret)

Det er flott!

 

Jeg har nå fått inn to stykk, så jeg foreslår at vi lar den stå åpen noen timer til, i tilfelle noen andre har noen foreslag (må lage middag).

Endret av MC2
Skrevet

Tror nok erni har rett i mye av det han sier, men jeg tror det er mange her som har kunnskaper nok til å lage sortering for primtall, jeg har lært meg php selv og jeg klarer å sortere primtall så da er det sikkert flere som klarer det.

 

Når det kommer til litt mer avanserte ting så detter jeg rett av, men det er en annen sak :p

Har ikke hatt bruk for så mye avansert enda jeg.

Skrevet

Jeg kunne ikke så alt for mye om primetall før jeg leste oppgaven, men jeg bare leste litt på wikipedia om primtall, så lagte jeg et php script ut i fra det, jeg er med bare for gøy, bryr meg ikke spessielt om jeg vinner eller ikke

Skrevet (endret)

Ok da har vi resultater fra 3 deltagere, men totalt 4 veldig bra forslag!

 

Alle funksjonene har blitt testet med å finne primtallene nummer 1, 20, 120, 300, 500, 900, 1300 og 2000. Samme benkealgoritme ble kjørt denne gangen som sist, og som vi ser var Ernie sin algoritme nok en gang raskest! Grattis!

 

Som sist er det otrolig kult at folk vil være med, håper flere kan være med på neste oppgave! :)

 

Ernie
	1	   2
	20	  71
	120	 659
	300	 1987
	500	 3571
	900	 6997
	1300	10657
	2000	17389

	Time:			0.214737176895


Ernie_2
	1	   2
	20	  71
	120	 659
	300	 1987
	500	 3571
	900	 6997
	1300	10657
	2000	17389

	Time:			0.214105844498


Runar0
	1	   2
	20	  71
	120	 659
	300	 1987
	500	 3571
	900	 6997
	1300	10657
	2000	17389

	Time:			0.462564229965


sjark
	1	   2
	20	  71
	120	 659
	300	 1987
	500	 3571
	900	 6997
	1300	10657
	2000	17389

	Time:			27.2068519592

 

Koden han vant med:

 

<?php

function Ernie_2($num)

{

  if ($num < 4)

  {

   if ($num === 1)

   {

	   return 2;

   }

   elseif ($num === 2)

   {

	   return 3;

   }

   else

   {

	   return 5;

   }

  }

  $primeNumber = 5;

  $i = 3;

  while($i !== $num)

  {

   $primeNumber += 2;

   if ($primeNumber % 3 === 0)

   {

	   continue;

   }

   elseif ($primeNumber % 5 === 0)

   {

	   continue;

   }

   else

   {

	   $max = (int)sqrt($primeNumber);

	   $prime = true;

	   for ($j = 3; $j <= $max; $j += 2)

	   {

		   if ($primeNumber % $j === 0)

		   {

			   $prime = false;

			   break;

		   }

	   }

	   if ($prime === true)

	   {

		   $i +=1;

	   }

   }

  }

  return $primeNumber;

}

 

 

 

Deltagere:

 

 

Ernie:

<?php
function Ernie($num) {
  if ($num < 4)
  {
   if ($num === 1)
   {
	   return 2;
   }
   elseif ($num === 2)
   {
	   return 3;
   }
   else
   {
	   return 5;
   }
  }
  $primeNumber = 5;
  $i = 3;
  while($i !== $num)
  {
   $primeNumber += 2;
   if ($primeNumber % 5 === 0)
   {
	   continue;
   }
   elseif (isPrime($primeNumber))
   {
	   $i +=1;
   }
  }
  return $primeNumber;
}

function isPrime($num)
{
  if ($num % 3 === 0)
  {
   return false;
  }
  else
  {
   $max = (int)ceil(sqrt($num));
   for ($i = 3; $i <= $max; $i += 2)
   {
	   if ($num % $i === 0)
	   {
		   return false;
	   }
   }
   return true;
  }
}

?>

Runar0

<?php
/**
* @desc Attempt to find prime number X using some really basic code
*/
function Runar0($no) {
$i		  = 0;
$cur		= 1;
// Loop untill we got prime X
while($i < $no) {
	$cur++;

	$root = sqrt($cur);
	$prime = true;
	for($t = 2; $t <= $root; $t++) {
			if(($cur % $t) == 0) {
					$prime = false;
					break;
			}
	}
	if(!$prime) continue;

	$i++;
}
// And by now we got out result prime
return $cur;
} 

?>

Sjark

<?php
function sjark($tall) {
	$tall = $tall - 1;
	$primes = array();
			for ( $x=0; $x<=2000000; $x++ ) {
					if ( $x == 2 ) {
							$primes[] = $x;
					}
					for ( $i=2; $i<$x; $i++ ) {
							$remainder = ($x % $i);	   
							if ( $remainder == 0 ) {
									$i = $x;
									} 
							elseif ( $i == ($x-1) ) {
									$primes[] = $x;
							}

					}
					if(!empty($primes[$tall])) {
							$x = 2000000;
					}
			}
	return $primes[$tall];
}
?>

 

 

 

Nå må folk seriøst hjelpe meg for at jeg har gått tom for ideer for oppgaver som faktisk er mulig å løse.

Endret av MC2
Skrevet

Weeeee .... :w00t:

 

Var nede og hentet opp litt stuff fra bilen, deriblant et hefte med ukeoppgaver fra et fag i algoritmiske metoder. Kan jo se om det er noe der om kan brukes :)

Skrevet (endret)

Vi nærmer oss bondesjakk turneringen og hittil har jeg ikke fått inn et eneste bidrag... Vil folk ha mer tid eller er folk forsatt skuffa pga 2-1 i går?

 

Vi kunne i så fall ta neste oppgave i mellomtiden.

Endret av MC2
Skrevet

Jupp, da har jeg lagt ut neste oppgave og vi prøver å utsette AI oppgaven til søndag (for å se om det er noen interesserte da).

 

Denne oppgaven kan være litt små tricky :)

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...