Narcissist: Difference between revisions
(create a new task (a "narcissist" is a variant of a quine)) |
m (→[[Narcissist#ALGOL 68]]: also try: User_talk:NevilleDNZ#Puzzle code suggestion: Electronic Telomerase - I'm not sure if there is a solution, but...]]) |
||
Line 9: | Line 9: | ||
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. |
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. |
||
=={{header|ALGOL 68}}== |
|||
{{works with|ALGOL 68|Revision 1 - no extensions to language used}} |
|||
{{works with|ALGOL 68G|Any - tested with release [http://sourceforge.net/projects/algol68/files/algol68g/algol68g-1.18.0/algol68g-1.18.0-9h.tiny.el5.centos.fc11.i386.rpm/download 1.18.0-9h.tiny]}} |
|||
{{wont work with|ELLA ALGOL 68|Any (with appropriate job cards) - tested with release [http://sourceforge.net/projects/algol68/files/algol68toc/algol68toc-1.8.8d/algol68toc-1.8-8d.fc9.i386.rpm/download 1.8-8d] - due to extensive use of '''format'''[ted] ''transput''}} |
|||
<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. |
|||
=={{header|C}}== |
=={{header|C}}== |
Revision as of 03:59, 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>