Provocarea PHP

Vineri, Alin D. a provocat echipa INNOBYTE să rezolve următoarea problemă PHP:

if (CEVA) {

    echo ‘Hello’;

} else {

    echo ‘ world’;

}

Provocarea PHP a constat în a scrie o secvență de cod ce va înlocui CEVA astfel încât să afișeze Hello World.

La sfârșitul zilei, Alin a tras linia și ne-a arătat soluțiile primite:

1. if (!print(‘Hello’)) {  (cei mai mulți s-au gandit la solutia aceasta)

2. if (((print(‘ Hello’)) && 0)) {

3. printf(“Hello “)==”4”

4. !printf(“Hello”)

Au fost și câteva soluții deosebite, precum:

5. php -r ‘if (eval(“echo “Hello”;”)){ echo “Hello”;} else {echo ” world”;}’

6. if(($a = function(){echo ‘hello ‘; return false;}) && $a() === true)

7. if (die(‘Hello world’)) {

8. if (printf(‘Hello world<div style=”display:none”>’)) { (care nu merge din CLI sau IE)

9. php -r “if(print(“Hello worldr”)){echo’Hello’;}else{echo’ world’;} echo PHP_EOL;”

10. php -r “if(print(‘Hello world’)){} __halt_compiler(); ){echo’Hello’;}else{echo’ world’;}”

11. if(eval(“echo ‘hello ‘; return false;”))

Ni s-au părut foarte tari soluțiile găsite (și cât de multe s-au găsit!), așa că am dorit să vi le arătăm și vouă.

Voi cum ați fi rezolvat această problemă?

 

3 thoughts on “Provocarea PHP”

  1. Emil [carco] Sirbu

    Varianta #4 mi se pare cea mai corecta (d.p.d.v. semantic), solutia #1 fiind fortata. De mers (sol. #1), merge, insa print nu-i chiar o functie. Variantele cu exit/__halt_compiler nu prea-s ok, functioneaza daca testezi doar acea bucata de cod, daca s-ar pune codul (sa zicem ca ar fi un modul) intr-o aplicatie mai mare, ar fi inacceptabil, oprind executia aplicatiei

    Continuand:

    12. if(ob_start(function($text,$phase){return ($phase & PHP_OUTPUT_HANDLER_START)?”{$text} world”:$text;})) …

  2. interesant subiect (chiar daca l-am gasit cu intarziere);
    totusi, (presupunand ca ghilimelele sunt de cele corecte si codul se interpreteaza).. in care varianta se afiseaza “World” (cu W capital) asa ca in cerinta?

Leave a Comment

Your email address will not be published.

Scroll to Top