Kom ihåg mig?
Home Menu

Menu


Gissa PHP-funktionen

 
Ämnesverktyg Visningsalternativ
Oläst 2005-07-25, 18:34 #1
koalas avatar
koala koala är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Sep 2004
Inlägg: 1 154
koala koala är inte uppkopplad
Har WN som tidsfördriv
koalas avatar
 
Reg.datum: Sep 2004
Inlägg: 1 154
Ok, jag är väl en aning störd som postar det här, det är nog så långt offtopic man kan komma, men jag hade fruktansvärt roligt åt att skriva följande "obfuscerade" PHP-kod.

Vad är meningen med funktionen p() i koden nedan? Det är inte allt för svårt att lista ut om man lyckas "tyda" koden. (Men koden fungerar utmärkt att köra som den är, bortsett från att det är överdrivet otydligt skrivet.)

Jag kan tipsa om att funktionen p är av intresse när man studerar heltal (matematik).

Den första som gissar rätt kan kalla sig smart.



Kod:
<?php
echo p(3); // Vad kommer att skrivas ut, och hur ska detta resultat tolkas?

function p($d){
	return(int)$d!=$d ? isset($$_SERVER) : $d<2 ? function_exists('+') : (($d==(strlen($_SERVER['SCRIPT_FILENAME'])!= !($d===$d)) + preg_match("/l/", "linux")) ? ($_SERVER===$d) : d($d));
}

function d($d){
	for ($x = !NULL + (bool)"x"; $x*$x <= $d; $x++) {
 if(!($d%$x))
 	return !$d===$d;
 }
	return!$d===!$d;
}
?>
koala är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-07-25, 19:34 #2
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
Citat:
Originally posted by koala@Jul 25 2005, 18:34
Kod:
<?php
echo p(3); // Vad kommer att skrivas ut, och hur ska detta resultat tolkas?

function p($d){
	return(int)$d!=$d ? isset($$_SERVER) : $d<2 ? function_exists('+') : (($d==(strlen($_SERVER['SCRIPT_FILENAME'])!= !($d===$d)) + preg_match("/l/", "linux")) ? ($_SERVER===$d) : d($d));
}

function d($d){
	for ($x = !NULL + (bool)"x"; $x*$x <= $d; $x++) {
 if(!($d%$x))
 	return !$d===$d;
 }
	return!$d===!$d;
}
?>
Får man poäng om man kan skriva den mest svår tydliga funktion???

Skulle inte skada med några <ENTER> och tabbar i den koden :P
Jonas är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-07-25, 19:34 #3
FredrikMHs avatar
FredrikMH FredrikMH är inte uppkopplad
Supermoderator
 
Reg.datum: Apr 2004
Inlägg: 1 501
FredrikMH FredrikMH är inte uppkopplad
Supermoderator
FredrikMHs avatar
 
Reg.datum: Apr 2004
Inlägg: 1 501
Funktionen P() skriver ut 1 om talet som matas in är ett primtal.
FredrikMH är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-07-25, 19:37 #4
koalas avatar
koala koala är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Sep 2004
Inlägg: 1 154
koala koala är inte uppkopplad
Har WN som tidsfördriv
koalas avatar
 
Reg.datum: Sep 2004
Inlägg: 1 154
Rätt! Inte illa Fredrik
koala är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-07-25, 19:40 #5
koalas avatar
koala koala är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Sep 2004
Inlägg: 1 154
koala koala är inte uppkopplad
Har WN som tidsfördriv
koalas avatar
 
Reg.datum: Sep 2004
Inlägg: 1 154
Citat:
Ursprungligen postat av Jonas
Citat:
Ursprungligen postat av koala
Kod:
<?php
echo p(3); // Vad kommer att skrivas ut, och hur ska detta resultat tolkas?

function p($d){
	return(int)$d!=$d ? isset($$_SERVER) : $d<2 ? function_exists('+') : (($d==(strlen($_SERVER['SCRIPT_FILENAME'])!= !($d===$d)) + preg_match("/l/", "linux")) ? ($_SERVER===$d) : d($d));
}

function d($d){
	for ($x = !NULL + (bool)"x"; $x*$x <= $d; $x++) {
 if(!($d%$x))
 	return !$d===$d;
 }
	return!$d===!$d;
}
?>
Får man poäng om man kan skriva den mest svår tydliga funktion???

Skulle inte skada med några <ENTER> och tabbar i den koden :P
Visst gör ett försök, alltid kul att klura på något. Låt oss göra det här till en knep & knåp-tråd


Så här såg min funktion ut innan jag förvrängde koden:


Kod:
function is_prime($d) {
  if ((int)$d != $d) {
    return false;
  } else {
    if ($d<2) {
      return false;
    } else {
      if ($d==2) {
        return true;
      } else {        
        $sqrt = sqrt($d);
        $x=1;
        while (++$x < $sqrt+1) {
          if ($d % $x == 0) {
            return false;
          }
        }
        return true;
      }
    }
  }
}

EDIT:

Så här såg det ut innan jag drog till med alla onödigheter:
Kod:
for($i=0;$i<1000;$i++){print(p($i)?$i.'<br />':NULL);}
function p($d){return(int)$d!=$d?0:$d<2?0:($d==2?1:d($d));}
function d($d){for($x=2;$x*$x<=$d;$x++){if(!($d%$x))return 0;}return 1;}
Detta skriver ut alla primtal mellan 0 och 1000 (på tre rader kod hehe...)
koala är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-07-25, 19:52 #6
Per Per är inte uppkopplad
Supermoderator
 
Reg.datum: Apr 2003
Inlägg: 719
Per Per är inte uppkopplad
Supermoderator
 
Reg.datum: Apr 2003
Inlägg: 719
Kod:
for($i=1;$i<1000;print($p==false?"":$i."\n"),$i+=2,$p=true){for($j=2;$j<$i;$j++)$p=$i%$j==0?$p=false:$p;}
En rad! :-)
__________________
www.ip2nation.com (ip till land)
Per är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-07-25, 19:56 #7
koalas avatar
koala koala är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Sep 2004
Inlägg: 1 154
koala koala är inte uppkopplad
Har WN som tidsfördriv
koalas avatar
 
Reg.datum: Sep 2004
Inlägg: 1 154
Citat:
Originally posted by Per@Jul 25 2005, 19:52
Kod:
fori=1;i1000;printp==false?i.n,i+=2,p=true{forj=2;ji;j++p=i%j==0?p=falsep;}
En rad :-)
Inte illa Snart kan vi ge oss på RSA-1024
koala är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-07-25, 19:57 #8
Per Per är inte uppkopplad
Supermoderator
 
Reg.datum: Apr 2003
Inlägg: 719
Per Per är inte uppkopplad
Supermoderator
 
Reg.datum: Apr 2003
Inlägg: 719
Citat:
Ursprungligen postat av koala
Citat:
Ursprungligen postat av Per
Kod:
fori=1;i1000;printp==false?i.n,i+=2,p=true{forj=2;ji;j++p=i%j==0?p=falsep;}
En rad :-)
Inte illa Snart kan vi ge oss på RSA-1024
Haha, lätt!
__________________
www.ip2nation.com (ip till land)
Per är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-07-25, 20:56 #9
nomicon nomicon är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Aug 2003
Inlägg: 753
nomicon nomicon är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Aug 2003
Inlägg: 753
Gissa vad denna gör då:

<?
function skrivUtnamn($namn) {
echo $namn;
}
skrivUtnamn('kalle');
?>

Den som får fel är en nöt.

-Martin
nomicon är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-07-25, 22:07 #10
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
Om du gillar sånt ska du titta på "orginalet": http://www.ioccc.org/

Kolla koden för en av vinnarna 1994: dodsond1 (http://www.de.ioccc.org/years.html)
Ett prgram som spelar othello och där koden ser ut som ett othellobräde...
eg0master är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 22:31.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017