БлогNot. Куайн и Нарцисс на JS

Куайн и Нарцисс на 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 [1960 просмотров]


теги: программирование javascript

показать комментарии (1)