Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Quiz PHP, pytania i odpowiedzi
cojack
post
Post #1





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


Mam pomysł by zacząć Quiz php, kto pierwszy odpowie poprawnie na zadane pytanie ma prawo do zadania kolejnego pytania, i tak dalej.

Trafiłem na fajne pytanie na forum goldenline, i zamierzam je Wam tu wkleić:

Cytat
to może ktoś się podejmie bardziej hardcorowego zadania:
program który wyprintuje własny kod i będzie się zawierać w 1 pliku
na ekranie po uruchomieniu skryptu ma się pojawić dokładnie to samo co jest w pliku
żeby nie było za łatwo - nie można w żaden sposób odczytywać pliku w którym jest zapisany kod tego programu
dodam że jest to wykonalne ;D

Krzysztof Korzeniewski edytował(a) ten post dnia 18.08.10 o godzinie 22:17


Link: http://www.goldenline.pl/forum/1647030/php-quiz/s/4

Ja nie mam pojęcia jak to zrobić w php, by w samym pliku, wypluć wszystko począwszy od <?php do miejsca w którym wypluwamy kod. Jak ktoś wie jak to zrobić to czekam ;]


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
4 Stron V   1 2 3 > »   
Start new topic
Odpowiedzi (1 - 19)
Wicepsik
post
Post #2





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


show_source winksmiley.jpg

//edit
Chyba nie doczytał?em pytania, bo nie można odczytywać pliku dry.gif

Ten post edytował Wicepsik 20.08.2010, 20:06:15


--------------------
Go to the top of the page
+Quote Post
thek
post
Post #3





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Nie wiem, czy drążę w dobrą stronę, ale coś mi się widzi, że trzeba będzie użyć przekierowania strumienia. Aczkolwiek zgaduje teraz smile.gif


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Blame
post
Post #4





Grupa: Zarejestrowani
Postów: 678
Pomógł: 124
Dołączył: 26.09.2009

Ostrzeżenie: (0%)
-----


Jako, że ma to być program, to chyba takie rozwiązanie odpada, ale zawsze można wyłączyć interpretację plików php przez parser winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
everth
post
Post #5





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

Ostrzeżenie: (0%)
-----


@Blame, niekoniecznie. Na bezczela można by zrobić tak:
  1. <?
  2. $test ='czymkolwiek';
  3. $test2 = 'cokolwiek';
  4. passthru('php -w '.__FILE__,$return);
  5. echo $return;
  6. ?>

i bronić się że przecież nasz skrypt nie odczytuje bezpośrednio tylko zleca wykonanie parserowi PHP, ale to nie jest rozwiązanie smile.gif

Przeglądałem manual na wszystkie strony i o ile nie istnieje jakaś nieudokumentowana funkcja która pozwala dobrać się do cache Zend Engine to raczej nie widzę rozwiązania. Może @thek pije w dobrą stronę ale ja się poddałem.


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
Fifi209
post
Post #6





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat(Blame @ 20.08.2010, 22:07:57 ) *
Jako, że ma to być program, to chyba takie rozwiązanie odpada, ale zawsze można wyłączyć interpretację plików php przez parser winksmiley.jpg


ale on ma wyprintować swój kod... nie serwer tylko on sam.

@topic
jestem bardzo ciekawy rozwiązania haha.gif


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
devnul
post
Post #7





Grupa: Zarejestrowani
Postów: 1 470
Pomógł: 75
Dołączył: 21.09.2005
Skąd: że znowu

Ostrzeżenie: (0%)
-----


Quine
poniżej przykład
  1. <?
  2. $a='chr(60).chr(63).chr(10).chr(36).chr(97).chr(61).chr(39).$a.chr(39).chr(59).chr(10)."echo $a;".chr(10).chr(63).chr(62)';
  3. echo chr(60).chr(63).chr(10).chr(36).chr(97).chr(61).chr(39).$a.chr(39).chr(59).chr(10)."echo $a;".chr(10).chr(63).chr(62);
  4. ?>
  5.  
  6. <?
  7. $a='<?
  8. $a=2;
  9. echo str_replace(1+1,chr(39).$a.chr(39),$a);
  10. ?>';
  11. echo str_replace(1+1,chr(39).$a.chr(39),$a);
  12. ?>


lub tak:
  1. <?php $c='echo \'<?php $c=\\\'\'.addslashes($c).\'\\\';eval($c) ?>\';';eval($c) ?>


Ponieważ mogę ale nie muszę zadać kolejne pytanie to sobie daruję. Mimo to miłej zabawy - w razie czego znowu wam ją popsuję winksmiley.jpg

Ten post edytował devnul 21.08.2010, 00:37:52


--------------------
Profesjonaliści są przewidywalni...
strzeż się amatorów...
FL4SHB4CK - imprezy, galerie, lokale
Go to the top of the page
+Quote Post
cojack
post
Post #8





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


Hahaha, wiedziałem że to będzie coś z evalem. Ten drugi przykład to jeszcze rozumiem, ale tego pierwszego to niestety ;]


Ale nie jestem pewien, że autorowi pytania o takie rozwiązanie chodziło, gdyż w Twoim przykładzie devnull trzeba 2x ten sam kod napisać by go wyprintować i by wyglądał jakby się sam wyprintował.

Ten post edytował cojack 21.08.2010, 09:26:39


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
Fifi209
post
Post #9





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Mi się zdaje bardziej, że jeżeli skrypt wygląda tak:
  1. <?php
  2.  
  3. $cos = 2;
  4.  
  5. ?>


to ma wyprintować od <?php do ?> sam siebie


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
cojack
post
Post #10





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


Zgadzam się.


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
Blame
post
Post #11





Grupa: Zarejestrowani
Postów: 678
Pomógł: 124
Dołączył: 26.09.2009

Ostrzeżenie: (0%)
-----


@cojack Wiesz w ogóle jakie ma być rozwiązanie? tongue.gif


--------------------
Go to the top of the page
+Quote Post
devnul
post
Post #12





Grupa: Zarejestrowani
Postów: 1 470
Pomógł: 75
Dołączył: 21.09.2005
Skąd: że znowu

Ostrzeżenie: (0%)
-----


@cojack: jestem pewien że dokładnie o to chodziło autorowi, "problem" jest stary jak samo programowanie i na tym polega cała "trudność" że w żaden sposób fizycznie się do kodu nie dobieramy. To co wkleiłem to tylko 2 z setek różnych możliwości - przy odrobinie wysiłku i zrozumieniu problemu można bez trudu napisać coś takiego samemu, a wersja z evalem to tylko czysty przykład, w pierwszej podanej przeze mnie możliwości eval nie występuje a wynik jest dokładnie taki sam (wyprintowanie własnego kodu).

@fifi209: źle Ci się zdaje. Podany przez Ciebie przykład nie ma racji bytu bo niby jak chcesz wydrukować kod programu nie dobierając się do jego źródła? Chodzi właśnie o takie napisanie programu żeby w jego kodzie zawrzeć go ponownie.

Rety ludzie to przecież są podstawy programowania. Nie chce mi się wierzyć że to dla was taka czarna magia. Zagadnienie wymaga trochę wiedzy i umiejętności myślenia na trochę wyższym poziomie abstrakcji niż surykatka ale przy odrobinie wysiłku jest do zrobienia przez każdego.

Pokrewne chociaż rzadziej spotykane reverse Quine - czyli wypisanie źródła programu ale od końca do początku. Ktoś spróbuje?


--------------------
Profesjonaliści są przewidywalni...
strzeż się amatorów...
FL4SHB4CK - imprezy, galerie, lokale
Go to the top of the page
+Quote Post
phpion
post
Post #13





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(devnul @ 21.08.2010, 13:30:11 ) *
Rety ludzie to przecież są podstawy programowania. Nie chce mi się wierzyć że to dla was taka czarna magia. Zagadnienie wymaga trochę wiedzy i umiejętności myślenia na trochę wyższym poziomie abstrakcji niż surykatka ale przy odrobinie wysiłku jest do zrobienia przez każdego.

Jakie podstawy? To, że kiedyś gdzieś zasłyszałeś o takiej metodzie nie powoduje zakwalifikowania jej do podstaw. Nie udawaj znowu takiego cwaniaka, dla którego to pestka. Sam wkleiłeś kody z Wikipedii; nie sądzę byś miał z nimi do czynienia na co dzień.
Go to the top of the page
+Quote Post
cojack
post
Post #14





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


Cytat(Blame @ 21.08.2010, 12:45:15 ) *
@cojack Wiesz w ogóle jakie ma być rozwiązanie? tongue.gif


Nie znam rozwiązania winksmiley.jpg


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
devnul
post
Post #15





Grupa: Zarejestrowani
Postów: 1 470
Pomógł: 75
Dołączył: 21.09.2005
Skąd: że znowu

Ostrzeżenie: (0%)
-----


@cojack: to już znasz, jeżeli wątpisz proponuję skontaktować się z autorem pytania na goldenline

@phpion: jej, jak mi wstyd - wybacz że nie chciało mi się pisać tego o wpół do drugiej w nocy i posłużyłem się przykładami z wikipedi (do której niemalże zalinkowałem), z czym wcale się nie kryję. Może trochę przesadziłem pisząc o podstawach ale nie zmienia to faktu że każdy kto trochę się zajmuje programowaniem się z tym zetknął. Problem w tym że dzisiaj większość rzeczy pisze się korzystając z frameworków a na boczny tor schodzi kompletnie umiejętność logicznego myślenia bo robią to za nas autorzy tych właśnie "magicznych" narzędzi. Mimo wszystko dla kogoś ze "starej szkoły" quine to moim zdaniem nic nowego. Przynajmniej ja się z tym zetknąłem w czasach gdy jeszcze internet się przenosiło na dyskietkach? Poniżej masz coś napisanego na szybko tak specjalnie dla Ciebie żebyś mi nie deptał po ego. Pozdrawiam i bez urazy winksmiley.jpg

  1. <?php
  2. $supertajne = 'PD9waHAKJHN1cGVydGFqbmUgPSAnUG96ZHJvd2llbmlhIGRsYSBQSFAucGwnOwplY2hvIHN0cl9yZXBs
    YWNlKGNocig4MCkuY2hyKDExMSkuY2hyKDEyMikuY2hyKDEwMCkuY2hyKDExNCkuY2hyKDExMSkuY2hyK
    DExOSkuY2hyKDEwNSkuY2hyKDEwMSkuY2hyKDExMCkuY2hyKDEwNSkuY2hyKDk3KS5jaHIoMzIpLmNoci
    gxMDApLmNocigxMDgpLmNocig5NykuY2hyKDMyKS5jaHIoODApLmNocig3MikuY2hyKDgwKS5jaHIoNDY
    pLmNocigxMTIpLmNocigxMDgpLCAkc3VwZXJ0YWpuZSwgYmFzZTY0X2RlY29kZSgkc3VwZXJ0YWpuZSkp
    OyAKPz4= '
    ;
  3. echo str_replace(chr(80).chr(111).chr(122).chr(100).chr(114).chr(111).chr(119).chr(105).chr(101).chr(110).chr(105).chr(97).chr(32).chr(100).chr(108).chr(97).chr(32).chr(80).chr(72).chr(80).chr(46).chr(112).chr(108), $supertajne, base64_decode($supertajne));
  4. ?>


//edit: @phpion: no i oczywiście masz rację nie mam z tym do czynienia na co dzień bo jest to problem typowo akademicki w życiu codziennym (niemal) zupełnie do niczego Ci się nie przyda, niemniej jednak dalej uważam że każdy kto ma do czynienia z programowaniem powinien przynajmniej spróbować napisać quina w dowolnym języku ot choćby po to żeby się sprawdzić lub nauczyć czegoś nowego. Nie uważasz?

Ten post edytował devnul 21.08.2010, 14:01:52


--------------------
Profesjonaliści są przewidywalni...
strzeż się amatorów...
FL4SHB4CK - imprezy, galerie, lokale
Go to the top of the page
+Quote Post
#luq
post
Post #16





Grupa: Zarejestrowani
Postów: 589
Pomógł: 91
Dołączył: 22.05.2008
Skąd: Gliwice

Ostrzeżenie: (0%)
-----


Cytat(devnul @ 21.08.2010, 14:53:40 ) *
Może trochę przesadziłem pisząc o podstawach ale nie zmienia to faktu że każdy kto trochę się zajmuje programowaniem się z tym zetknął.


To raczej jest ciekawostka/zagadka dla zapaleńców a nie coś co każdy powinien znać. No nie przesadzajmy.
Tak samo rozwiązywałem kiedyś pewne zadania, wszystko miało działać a kodu miało być jak najmniej tylko umiesz. Czysta zabawa nic więcej. Zresztą spróbuj sam http://nullcode.pl/zadanie-2-ilo-t80.html?...4cb2fc4bea28d97 bo ja się wkręciłem nad udoskonalaniem swojego kodu winksmiley.jpg Pobij przynajmniej mnie, (oczywiście mówimy o PHP) zresztą nie sądzę żebyś miał z tym problem smile.gif


--------------------
Moja gra - scraby.io
Go to the top of the page
+Quote Post
Wicepsik
post
Post #17





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


  1. function table($w, $h){
  2. $b=1;
  3. printf("%'x".($w*6+1)."s", '');
  4. for($i=0;$i<$h;$i++){
  5. echo "\nx";
  6. for($j=0;$j<$w;$j++){
  7. printf("%' 4d x", $b);
  8. $b++;
  9. }
  10. }
  11. printf("\n%'x".($w*6+1)."s\n", '');
  12. }

199 biggrin.gif

Ten post edytował Wicepsik 21.08.2010, 15:39:33


--------------------
Go to the top of the page
+Quote Post
erix
post
Post #18





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Ale to nie zmienia faktu, że to głównie sztuka dla sztuki. Wiedza dla odczytania tylko własnego kodu jest... w jakiś sposób użyteczna?

~Wicepsik, kiedyś pomagałem kumplowi pisać program do przeliczania pewnego wzoru. No i miał być wykres. No to zrobiliśmy. Tylko że dopiero potem prowadzący powiedział, że to w excelu. biggrin.gif

A my zrobiliśmy taki a'la w lame przy kodowaniu. biggrin.gif


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
#luq
post
Post #19





Grupa: Zarejestrowani
Postów: 589
Pomógł: 91
Dołączył: 22.05.2008
Skąd: Gliwice

Ostrzeżenie: (0%)
-----


@Wicepsik kody były sprawdzane w konsoli i należy korzystać z tablicy $argv.
Poza tym po co Ci funkcja! To są zbędne znaki winksmiley.jpg Ale też musisz dodać jakiś znacznik rozpoczęcia kodu PHP. Ja miałem 151 znaków i jestem z tego dumny winksmiley.jpg


--------------------
Moja gra - scraby.io
Go to the top of the page
+Quote Post
devnul
post
Post #20





Grupa: Zarejestrowani
Postów: 1 470
Pomógł: 75
Dołączył: 21.09.2005
Skąd: że znowu

Ostrzeżenie: (0%)
-----


  1. <?list(,$a,$b)=$argv;echo$c=str_repeat(x,$a*6+7)."\nx";for(;$i<$b*$a;$i++)echo str_pad($i%$a*$b+1+floor($i/$a),5,' ').($i%$a==$a-1?"x x\n".$c:x);
zakładam że Twój wynik to 151 u mnie 149 i da się jeszcze trochę uprościć

@Wicepsik: Twoje rozwiązanie działa niezbyt dokładnie (bramowanie jest krzywe) no i dodatkowo brakuje Ci ostatniej pustej kolumny

@erix: niby sztuka dla sztuki ale jednak jakaś tam gimnastyka dla głowy jest


--------------------
Profesjonaliści są przewidywalni...
strzeż się amatorów...
FL4SHB4CK - imprezy, galerie, lokale
Go to the top of the page
+Quote Post

4 Stron V   1 2 3 > » 
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 04:32