За последние 24 часа нас посетили 20116 программистов и 1668 роботов. Сейчас ищут 1889 программистов ...

Print itself

Тема в разделе "Прочее", создана пользователем artoodetoo, 21 окт 2013.

  1. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.119
    Симпатии:
    1.245
    Адрес:
    там-сям
    Мне тут задали задачку, я выдал два разных рабочих ответа (правда их не приняли :) ), теперь хочу размять ваши мозги. Попробуйте из головы, без помощи гугля и учебников, написать на PHP программу, которая бы вывела полный собственный текст. А я проверю: дурак ли я или всё-таки меня как-то неправильно тестировали.

    Update: Не читай свой файл!

    Спасибо!
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну есть конкурсные правила, типа не читай свой файл и т.п.
     
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.119
    Симпатии:
    1.245
    Адрес:
    там-сям
    Ок, буквально такая фраза не звучала. Но пусть будет: "не читай свой файл". У меня остался один ответ ;)
     
  4. Yadfewm

    Yadfewm Активный пользователь

    С нами с:
    20 июл 2009
    Сообщения:
    223
    Симпатии:
    0
    Блин, неудержался, прогуглил писать ответ конечно не буду =)

    Добавлено спустя 3 минуты 54 секунды:
    Но я был на верном пути, конечно - php умный - и прекрасно знает что он выполняет и откуда =)

    Добавлено спустя 20 минут 8 секунд:
    Да но это решение всё же читает собственный файл, ммм а вот второе мудрёное решение...
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Небось через собственное отражение =) но это тоже чит как читать файл
     
  6. Yadfewm

    Yadfewm Активный пользователь

    С нами с:
    20 июл 2009
    Сообщения:
    223
    Симпатии:
    0
    Не знаю что такое собственное отражение =) не похоже на него, через замену в самом себе, может это ты имел в виду?
    )))
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Нет. Недодокументированный reflection.
     
  8. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    echo "полный собственный текст";

    Добавлено спустя 28 минут 32 секунды:
    сидел думал думал ..
    вот че надумал
    1. условие себя не читаем .. ок

    мы себя копируем в новый файл "чегототам.html" и редиректимся на этот файл ..
    пока еше не гуглил - просто мыслями кидаюсь :D
     
  9. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.589
    Симпатии:
    1.763
    Вот я эту задачу встречаю не в первый раз, и не только на PHP, но и на Pascal, на C++ и т.п. У меня один вопрос - а нахрена уметь решать такую задачу?
     
  10. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    Видимо пользователи должны видеть код. После всех моих бредовых мыслей меня уже на хаха начинает пробивать .. это чтото типа как мне показать свои кишки или мозК всем

    Добавлено спустя 7 минут 52 секунды:
    надо еще подумать .. это ладно - у меня на работе была задача сделать конвертер из аксеса 97 в постришку .. причем - необходимо сохранить все данные, все связи, все права .. конвертилку сделал - но вот какая была штука - файлов с данными достаточно много - штук 15 на 4 гига ..
    и чего я придумал - сделал 1 файл основной - в нем стартуеш функцию ..
    результат функции - она копировала файл - помойму 8 раз ( циферку меняла)
    потом - на 2 серваках по 4 ядра - запускала аксес - все эти 8 файлов .. такая веселуха начиналась =) часа на 3..
    а если в 1 потоке все делать - заняло часов 16 помомойму .. тест был
     
  11. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Если учесть, что именно препроцессор PHP отправляет в output всё за пределами дескрипторов <? ?>, то любой текст без этих дескрипторов является программой на php, выводящий свой код =)

    Добавлено спустя 1 минуту 36 секунд:
    По аналогии с обезьяной и печатной машинкой, программа, выводящая рандомный текст, когда-нибудь выведет свой код. Следовательно, возможно генерировать с помощью вычислений исходный код программы, вместо тупого print
     
  12. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.119
    Симпатии:
    1.245
    Адрес:
    там-сям
    Вася, ты повторил моё решение №2 ))) Ответ у меня не приняли, да и фиг с ним. Я считаю он верный, мало того, ответ элегантный. У языка PHP есть особенность и здесь она использована. Но есть и другие решения - я потом находил.
     
  13. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    речь о таком подходе?
    Код (PHP):
    1. <?php printf($a='<?php printf($a=%c%s%c,39,$a,39);',39,$a,39);
     
  14. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.119
    Симпатии:
    1.245
    Адрес:
    там-сям
    из головы взял или нашел? зачет!
     
  15. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    из головы - но не придумал а вспомнил.
    квайнами увлекался одно время, писал свои, смотрел как другие подходят к решению. этот запомнился - ибо короткий и простой.
     
  16. Yadfewm

    Yadfewm Активный пользователь

    С нами с:
    20 июл 2009
    Сообщения:
    223
    Симпатии:
    0
    Код (PHP):
    1. <?php $a='<?php $a=2; echo str_replace(1+1,chr(39).$a.chr(39),$a); ?>'; echo str_replace(1+1,chr(39).$a.chr(39),$a); ?>
    Код (PHP):
    1. echo "Hello"; 
    Код (PHP):
    1. <?php show_source(__FILE__); ?>
     
  17. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.119
    Симпатии:
    1.245
    Адрес:
    там-сям
    "Не читай свой файл"
     
  18. Yadfewm

    Yadfewm Активный пользователь

    С нами с:
    20 июл 2009
    Сообщения:
    223
    Симпатии:
    0
    Ну остается первые два варианта