Die hint van mij was misschien ook niet echt duidelijkquote:Op zondag 11 december 2005 22:03 schreef SuperRembo het volgende:
Het winnende scriptje van crisp:
[ code verwijderd ]
Ik heb er dus echt geen moment aan gedacht om de parameters om te wisselen (ondanks de hint van Light).
Maar hij kan nog korter
[ code verwijderd ]
49 tekens. bcadd() rondt trouwens naar beneden af.
1 |
Hoe apart, waarom daar niet?quote:Op zondag 11 december 2005 22:34 schreef SuperRembo het volgende:
Die truck met de X werkt in dit geval niet
1 |
Ik ben wel benieuwd naar je oplossing, volgens mij wordt ie niet genoemd op phpfreakz.quote:Op maandag 5 december 2005 01:46 schreef Ro�a� het volgende:
Is er ook een prijs voor meest originele inzending. Heb nog een leuke gevonden, die is echter wel 60 tekens, dus niet helemaal optimaal.
Roonaan wordt daar helemaal niet genoemd, vreemd genoeg.quote:Op zondag 11 december 2005 23:05 schreef SuperRembo het volgende:
[..]
Ik ben wel benieuwd naar je oplossing, volgens mij wordt ie niet genoemd op phpfreakz.
Ja...quote:Op zondag 11 december 2005 23:02 schreef Light het volgende:
printf verwacht een string met format specifiers, en een bijpassend aantal variabelen. Zie sprintf voor de mogelijkheden. %.2f geeft iig aan dat de parameter een floating point variabele met een precisie van twee decimalen is. Da's precies wat de bedoeling is
En die preg_replace is wat flauw natuurlijk. De constante X evalueert naar een lege string (omdat de constante X niet bestaat) en op die string wordt een lege expressie losgelaten. NOrmaal gesproken gebruik je delen van de expressie weer in de tweede variabele (met $0 of $1 bijvoorbeeld), maar hier dus niet. De /e modifier bij de expressie geeft aan dat de resultaatsting (de tweede parameter van de functie preg_replace dus) moet worden geevalueerd als php code.
End ten slotte levert het laatste element van de array op. De volgorde van de elementen in het formulier was met opzet gekozen.
Zo werkt het niet.quote:Op zondag 11 december 2005 23:02 schreef Light het volgende:
En die preg_replace is wat flauw natuurlijk. De constante X evalueert naar een lege string (omdat de constante X niet bestaat) en op die string wordt een lege expressie losgelaten.
Nee, X wordt gezien als een constante die leeg is. Als het als een string zou worden gezien zou de regexp niet meer werken. Maar dan snap ik nog steeds niet waarom het niet werkt in de code van Lightquote:Op zondag 11 december 2005 23:16 schreef SuperRembo het volgende:
[..]
Zo werkt het niet.
X is onbekend en wordt daarom gezien als constante string 'X'.
De // regexp matcht het begin en eind van de string 'X' (denk ik).
Correctquote:Op zondag 11 december 2005 23:16 schreef Swetsenegger het volgende:
wacht even, je gaat de input dus gewoon behandelen als php code, welke dus gewoon 2*3/4 uit zal voeren en de printf geeft die uitkomst als float met 2 decimalen.
Klopt dit?
Owja, als ik printf weghaal uit de functie en gewoon 2+3 als invoer geef dan krijg ik 5X5 als uitvoer. En X is natuurlijk geen nummer, dus bij de convertering naar een getal verdwijnt die.quote:Op zondag 11 december 2005 23:16 schreef SuperRembo het volgende:
[..]
Zo werkt het niet.
X is onbekend en wordt daarom gezien als constante string 'X'.
De // regexp matcht het begin en eind van de string 'X' (denk ik).
Het begin en eind wordt gereplaced door de uitkomst van de eval van de input ('3+4*5/3' => 9.6666666666667). Dit levert de string '9.6666666666667X9.6666666666667'.
Printf verwacht een float, en converteert daarom de string naar een float, dat levert 9.6666666666667. Dat getal wordt afgerond op 2 decimalen en geconverteerd naar een string: '9.67'.
quote:Op zondag 11 december 2005 23:05 schreef SuperRembo het volgende:
[..]
Ik ben wel benieuwd naar je oplossing, volgens mij wordt ie niet genoemd op phpfreakz.
1 |
Round levert bij 2+8 de uitkomst 10, niet 10.00.quote:Op zondag 11 december 2005 23:47 schreef SuperRembo het volgende:
Wel creatief, maar die gebruikt dus intern ook eval. Ik zie nergens dat je round niet mocht gebruiken.
het schijnt dat er áltijd twee cijfers achter de komma moest hebben, round doet dat niet, die geeft gewoon 2.5 voor 5/2, ipv 2.50.quote:Op zondag 11 december 2005 23:47 schreef SuperRembo het volgende:
Wel creatief, maar die gebruikt dus intern ook eval. Ik zie nergens dat je round niet mocht gebruiken.
1 |
jups. mijn fout. misread de opdracht klaarblijkelijk.quote:Op zondag 11 december 2005 23:47 schreef Light het volgende:
En je oplossing van 52 tekens, was dat ook met een round?
Dat round() iets anders doet dan de %.2f van printf() betekent niet dat je round() niet mag gebruiken.quote:Op zondag 11 december 2005 23:48 schreef Light het volgende:
[..]
Round levert bij 2+8 de uitkomst 10, niet 10.00.
1 2 3 4 5 | <form method="POST" action="base64.php"> <input type="text" name="input"> <input type="submit" value="base64"> </form> |
In dit geval wel. Uit de opdracht:quote:Op zondag 11 december 2005 23:49 schreef JeRa het volgende:
[..]
Dat round() iets anders doet dan de %.2f van printf() betekent niet dat je round() niet mag gebruiken.
quote:Output moet bestaan uit twee decimalen en de punt wordt als scheidingsteken gebruikt.
|
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |