Gå til innhold

phpGolf - skriv den korteste koden


Anbefalte innlegg

Videoannonse
Annonse

Min løsning på Fibonacci:

<? function f($t){$r=$t<=1?$t:f($t-1)+f($t-2);return $r;}for($i=0;$i<30;$i++){echo f($i)."\n";}

 

denne blir på 95 bytes. Kan noen hjelpe meg med å fatte at noen klarer å få denne ned i 39 bytes??? Fy f**n

 

Jeg trodde jeg hadde en god løsning jeg, men neida.

Lenke til kommentar
Blue: Trur du at jeg skal løse oppgaven for deg eller? :D

Nei, men det må jo være noe jeg gjør riv ruskende galt når jeg mangler 70 bytes (eller nærmere 40%) på riktig løsning. Hvis du tar det sammen med at de unike ordene i sangen er til sammen 91 bytes (inklusive mellomrom) så skriver jeg 70% mer kode.

 

Du trenger ikke løse oppgaven men du må kunne klare bedre enn 10% av overskuddet hvis du skal hjelpe, hvis ikke så kan du gjerne spare deg for slike kommentarer.

  • Liker 1
Lenke til kommentar

Vell, beklager for å prøve å hjelpe :)

Er faktisk ikke alle om er klar over at vanlig linjeskift bare er på 1 byte (med mindre du bruker DOS formatering) mens \n er på 2

Skal sies at jeg personlig ikke har så altfor god score på den der (eller noen andre)

Jeg jobber mer med validatoren og infrastrukturen

Endret av AlecTBM
Lenke til kommentar
  • 5 måneder senere...

Liten update.

V2 av siden har nå nettopp blitt sluppet. Et bedre design og flere oppgaver.

Enklere å debugge og mer informasjon fra valideringen.

 

Mange bugfikses, mest fordi hele siden har blitt skrevet på nytt fra bunnen av.

Så er bare å komme å prøve seg på nytt. Og forresten EPower, grunnen til at den feila da var fordi at det var \r\n på enter tasten istedenfor \n, men dette er ikke lengre noe problem :)

Lenke til kommentar
Gjest Slettet+9871234

Noen som har klart Pascals enda?

Er ikke det bare å spørre Google?

 

Dette er mye tøffere i Perl!

Han som lagde Perl er lingvistiker, men han som lagde Python er matematiker. Holder en knapp på matematikeren her.

 

Min løsning på Fibonacci:

 

Her er en i Python.

 

# fibonacci generator code from diveintopython.org

def fibonacci(max):
   a, b = 0, 1
   while a < max:
       yield a
       a, b = b, a+b

for n in fibonacci(1000000000000000000000000000000000000000000000000000000):
   print (n),

 

Fibonacci tallene er mye brukt i programmering. Blant annet vil et rekursivt funksjonskall fort fylle opp stacken. Det raskeste på store Fibonacci tall er å bruke dynamisk programmering.

 

Hva med å finne primtallstvillinger

 

(3,5) (5,7) (11,13) (17,19)

 

og store primtall

 

http://www.webproworld.com/webmaster-forum/threads/84053-New-Mersenne-Prime

 

?

Lenke til kommentar

Uff, jobbet litt fra og til på guitar tab-oppgaven i dag, og fikk en løsning, men den blir ikke godkjent uansett hva jeg gjør. Har prøvd med og uten linebreak på slutten og testet at koden min ellers gir riktig output, likevel godkjennes den tydeligvis ikke.

 

Oppgaven er slik:

    Input       Output
   |--3--|     _____________________
   |--0--|     |___|___|___|___|___|
   |--0--|     |___X___|___|___|___|
   |--0--|     X___|___|___|___|___X
   |--2--|     |___|___|___|___|___|
   |--3--|     |___|___|___|___|___|

 

Min løsning til nå, om noen skulle være interesserte:

$a=TAB;
for($i=0;$h=$g=0,$i++<36;) {
for(;$h++<6;)
	if(6-$h==($i-1)%6&&ceil($i/6)-1==$a[9*$h-6])
		$g='X';
echo $i>6?$g?:'|':'_',$i%6?"___":"\n";
}

 

Rent ellers er phpgolf ganske moro, selv om det er surt å ikke komme i nærheten av toppløsningene.

Lenke til kommentar
Her er en i Python.

 

# fibonacci generator code from diveintopython.org

 

def fibonacci(max):

a, b = 0, 1

while a < max:

yield a

a, b = b, a+b

 

for n in fibonacci(1000000000000000000000000000000000000000000000000000000):

print (n),

Ja grei den koden der.

Som bruker "yield" som lager et generator object som en kan loope over.

Dette gjør koden minne effektiv.

 

Men dette er ikke kode i golf standaren,hvor stygg kode med alle triks som finnes stort sett er best.

Kikket litt på fibonacc oppgaven i python da med tanke på en golf løsning.

40 bytes klarte jeg og presse den i,så 2 bytes bak den beste i PHP.

For se om det er noe mere og hente,selv om jeg ikke ser det nå.

x,y=0,1
while y<10**6:print x;x,y=y,x+y

Endret av SNIPPSAT
Lenke til kommentar
Gjest Slettet+9871234

Ja grei den koden der.

Som bruker "yield" som lager et generator object som en kan loope over.

Dette gjør koden minne effektiv.

Minne effektivitet er vel uten at jeg kjenner Python veldig godt et særtrekk ved det språket (som jo egentlig er en C løkke). I Python kan man for eksempel ha størrelse på integers som begrenses av tilgjengelig minne.

 

Kikket litt på fibonacc oppgaven i python da med tanke på en golf løsning.

40 bytes klarte jeg og presse den i,så 2 bytes bak den beste i PHP.

Hvor finner jeg den? Tideligere i tråden? Hvordan oppfører den seg på store tall som

 

fibonacci(1000000000000000000000000000000000000000000000000000000)

 

og mye større?

Lenke til kommentar
Hvor finner jeg den? Tideligere i tråden?

http://www.phpgolf.org/

 

Hvordan oppfører den seg på store tall som

Koden min kjører greit 1000000000000000000000000000000000000000000000000000000

under 1sek.

Koden som lager generator object er tregere ca 5sek,men den har andre styrker som mindere bruk av minne.

 

En test med power **100

x,y=0,1
while y<1000000000000000000000000**100:print x;x,y=y,x+y

Kjører dette fint ca 35sek.

Med denne koden vil minnebruken hele tiden øke.

 

Det som er artig er så og kjøre med power **100 med generator,her vil da minne bruk gå noe ned og stabilisere seg.

Men dette går da på bekostning av fart igjen som nevnt

Endret av SNIPPSAT
Lenke til kommentar

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...