Куайн и Нарцисс на JS
На яваскрипте классический Куайн можно сделать несколькими способами, например, самое "школьное"
<script type="text/javascript"> var a=function () {var b="var a="+a.toString()+"\;a()";alert(b)};a() </script>
вполне себе сработает. Или же
<script type="text/javascript"> var code='var q=String.fromCharCode(39);console.log("var code="+q+code+q+";eval(code)")';eval(code) </script>
(выводит свой код в консоль браузера). Наверное, из последнего Куйана нетрудно сделать и Нарцисс.
Программа-нарцисс, в отличие от Куайна, выдаёт true
(или другую истину) только тогда, когда входная строка с данными совпадает с её исходником. В остальных случаях должна выдаваться false
(или ноль, или другая ложь).
Вот что вышло:
<script type="text/javascript"> function read(){ return 'var code=\'var q=String.fromCharCode(39);console.log("var code="+q+code+q+";eval(code)"==read())\';eval(code)'; } var code='var q=String.fromCharCode(39);console.log("var code="+q+code+q+";eval(code)"==read())';eval(code) </script>
Как и любой код на яваскрипте, эти примеры можно выполнить из файлов типа .html
.
16.10.2018, 22:16 [2076 просмотров]