Narcissist: Difference between revisions
m (→[[Narcissist#ALGOL 68]]: also try: User_talk:NevilleDNZ#Puzzle code suggestion: Electronic Telomerase - I'm not sure if there is a solution, but...]]) |
(→Tcl: Added implementation) |
||
Line 21: | Line 21: | ||
Based upon the quine. |
Based upon the quine. |
||
<lang c>extern void*stdin;main(){ char*p = "extern void*stdin;main(){ char*p = %c%s%c,a[300],b[300];sprintf(a,p,34,p,34);fgets(b,300,stdin);putchar(48+!strcmp(a,b)); }",a[300],b[300];sprintf(a,p,34,p,34);fgets(b,300,stdin);putchar(48+!strcmp(a,b)); }</lang> |
<lang c>extern void*stdin;main(){ char*p = "extern void*stdin;main(){ char*p = %c%s%c,a[300],b[300];sprintf(a,p,34,p,34);fgets(b,300,stdin);putchar(48+!strcmp(a,b)); }",a[300],b[300];sprintf(a,p,34,p,34);fgets(b,300,stdin);putchar(48+!strcmp(a,b)); }</lang> |
||
=={{header|Tcl}}== |
|||
<lang tcl>apply {{} {puts [string equal [gets stdin] [info level 0]]}}</lang> |
Revision as of 15:44, 22 September 2010
Quoting from the Esolangs wiki page:
A narcissist (or Narcissus program) is the decision-problem version of a quine.
A quine, when run, takes no input, but produces a copy of its own source code at its output. In contrast, a narcissist reads a string of symbols from its input, and produces no output except a "1" or "accept" if that string matches its own source code, or a "0" or "reject" if it does not.
For concreteness, in this task we shall assume that symbol = character, input = stdin and output = stdout. The narcissist should be able to cope with any input, and should not read any data files from disk.
ALGOL 68
<lang algol68>STRINGs="STRINGs="";print(readstring=2*s[:9]+2*s[9:])";print(readstring=2*s[:9]+2*s[9:])</lang> Output: T or F depending on input.
C
Based upon the quine. <lang c>extern void*stdin;main(){ char*p = "extern void*stdin;main(){ char*p = %c%s%c,a[300],b[300];sprintf(a,p,34,p,34);fgets(b,300,stdin);putchar(48+!strcmp(a,b)); }",a[300],b[300];sprintf(a,p,34,p,34);fgets(b,300,stdin);putchar(48+!strcmp(a,b)); }</lang>
Tcl
<lang tcl>apply {{} {puts [string equal [gets stdin] [info level 0]]}}</lang>