Просмотр полной версии : Минимальный код,печатающий свой листинг
undefined
16.10.2015, 15:26
Слышал о такой задаче, якобы предлагаемой на собеседованиях:
Написать минимальный код,печатающий сам себя в консоль или куда-то еще.Операции с файловой структурой и чтение кода откуда-то из памяти запрещены.Размышляя, постоянно ухожу в бесконечную рекурсию с вылетом stack overflow и плавлением мозга.Кто знает, подскажите хоть одно решение.
http://habrahabr.ru/post/128191/
undefined
16.10.2015, 15:39
illuzor, благодарю
illuzor, благодарю
Меня то за что? Гугл благодарите.
undefined
16.10.2015, 16:54
Меня то за что? Гугл благодарите.
За слово "квайн"
caseyryan
16.10.2015, 20:04
Что-то я не понял прикола. Я ожидал, что там будет какой-то "чудо" код который реально выведет сам себя в аутпут. А в итоге увидел банальную строку, которую надо написать руками. Хрень какая-то. Так любой ламер сможет
MikroAcse
16.10.2015, 20:12
Что-то я не понял прикола. Я ожидал, что там будет какой-то "чудо" код который реально выведет сам себя в аутпут. А в итоге увидел банальную строку, которую надо написать руками. Хрень какая-то. Так любой ламер сможет
У меня то же самое ощущение. Ожидал увидеть какую-то операцию с памятью, которая вытягивает байт-код и превращает его в код с помощью декомпиляции :D
Bletraut
17.10.2015, 14:53
Вот именно, да и к тому же там написано, что все изменения в программе вы должны записывать в строку. Так почему бы тогда просто в строку S, код программы не писать. Тупость.
Так почему бы тогда просто в строку S, код программы не писать. Тупость.
А вы попробуйте объявить строковую переменную и записать в нее объявление и значение, которое должно входить в объявление внутри значения ну и так далее. + Строка должна содержать кавычки, в которые она заключена
caseyryan
17.10.2015, 18:35
А вы попробуйте объявить строковую переменную и записать в нее объявление и значение, которое должно входить в объявление внутри значения ну и так далее. + Строка должна содержать кавычки, в которые она заключена
Да это делается на раз два, простым экранированием кавычек.
Я так писал генератор классов для редактора локаций в одной игре. Просто не знал что это квайном называется)
alexcon314
17.10.2015, 21:40
в порядке флейма
http://hackertyper.net/
caseyryan
17.10.2015, 21:51
Прикольно) Можно кого-нибудь шокировать своими навыками :D
Прям как в фильмах)
ZackMercury
17.10.2015, 21:56
Что ж в конце этот код не запускается а тупо останавливается? Так бы сгодился.
Да это делается на раз два, простым экранированием кавычек.
Ну тогда экранирование тоже надо отображать будет.
caseyryan
18.10.2015, 08:30
Оно отображается двойным экранированием) Только зачем?
Bletraut
18.10.2015, 13:50
А вы попробуйте объявить строковую переменную и записать в нее объявление и значение, которое должно входить в объявление внутри значения ну и так далее. + Строка должна содержать кавычки, в которые она заключена
Просто использовать CDATA.
MikroAcse
18.10.2015, 14:02
То, что меня взбесило больше всего, что это так называемый "квайн" после отображения своего кода не сможет выполнить его же (точнее сможет, но он уже ничего не выведет).
Bletraut
18.10.2015, 14:16
Вообще как я понял, прога должна вывести свой собственный код, который после компила должен вывести свой собственный код и так до бесконечности. Считывать свой код не откуда нельзя, т.е. в решении подразумевается написание самого кода программы в строке.
MikroAcse
18.10.2015, 14:24
Но, как видишь, выводится код, только второй раз он уже не скомпилится.
Или я чего-то не понимаю.
Bletraut
18.10.2015, 14:42
До сих пор понять не могу в чем сложность задачи, если просто записывать код программы в строку это оооооооооочень просто.
package
{
import flash.display.Sprite;
public class Main extends Sprite
{
public function Main()
{
var quine:String = <![CDATA[
package
{
import flash.display.Sprite;
public class Main extends Sprite
{
public function Main()
{
var quine:String = <![CDATA[@]>;
quine = quine.replace("@", quine + "]");
trace(quine);
}
}
}
]]>;
quine = quine.replace("@", quine + "]");
trace(quine);
}
}
}
Добавлено через 2 минуты
В чем сложность, объясните???
В чем сложность, объясните???
:о)) Прикольно, а мне что-то казалось, что должно быть сложнее.
undefined
20.10.2015, 14:55
А js такое возможно?
В js даже проще, метод toString для функции вернет её код в виде строки.
А каково практическое применение данной свистопляски?
MikroAcse
20.10.2015, 19:57
А каково практическое применение данной свистопляски?
Абсолютно никакое :D
undefined
20.10.2015, 21:31
пройти собеседование если вдруг спросят
Psycho Tiger
22.10.2015, 10:57
Ну, это же своеобразное искусство. Эти простейшие квайны, что не сложно написать – каляканье карандашами подрастающего ребёнка. А вот искусство (http://habrahabr.ru/post/74827/).
caseyryan
22.10.2015, 11:55
Ну, это же своеобразное искусство. Эти простейшие квайны, что не сложно написать – каляканье карандашами подрастающего ребёнка. А вот искусство (http://habrahabr.ru/post/74827/).
Думается мне, этому японцу совсем нечем было заняться :D
Psycho Tiger
23.10.2015, 14:41
Есть ещё русский парень, который всунул в квайн японца ещё два языка.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.