Напишите на вашем любимом языке программу (или функцию), которая принимает строку, проверяет её на точное совпадение с исходным текстом этой же самой программы и печатает (или возвращает) результат этой проверки (true/false, 1/0, "да"/"нет" и т.д.). Если язык имеет встроенную команду для получения исходного текста программы, не используйте её.
Здравствуйте, nikov, Вы писали:
N>Напишите на вашем любимом языке программу (или функцию), которая принимает строку, проверяет её на точное совпадение с исходным текстом этой же самой программы и печатает (или возвращает) результат этой проверки (true/false, 1/0, "да"/"нет" и т.д.). Если язык имеет встроенную команду для получения исходного текста программы, не используйте её.
Математики любят всякие глупые задачи придумывать , которые на практике совершенно бесполезны.
Здравствуйте, nikov, Вы писали:
N>Напишите на вашем любимом языке программу (или функцию), которая принимает строку, проверяет её на точное совпадение с исходным текстом этой же самой программы и печатает (или возвращает) результат этой проверки (true/false, 1/0, "да"/"нет" и т.д.). Если язык имеет встроенную команду для получения исходного текста программы, не используйте её.
Вы плохо продумываете условия задачи.
Можно ведь положить исходный код рядом с программой (или положить в программу как ресурс) в виде текстового файла. И сравнивать текст с текстовым файлом.
Здравствуйте, omgOnoz, Вы писали:
N>>Напишите на вашем любимом языке программу (или функцию), которая принимает строку, проверяет её на точное совпадение с исходным текстом этой же самой программы и печатает (или возвращает) результат этой проверки (true/false, 1/0, "да"/"нет" и т.д.). Если язык имеет встроенную команду для получения исходного текста программы, не используйте её.
O>Вы плохо продумываете условия задачи.
O>Можно ведь положить исходный код рядом с программой (или положить в программу как ресурс) в виде текстового файла. И сравнивать текст с текстовым файлом.
Это расширенно подпадает под "если имеет встроенную..."
Здравствуйте, nikov, Вы писали:
N>Напишите на вашем любимом языке программу (или функцию), которая принимает строку, проверяет её на точное совпадение с исходным текстом этой же самой программы и печатает (или возвращает) результат этой проверки (true/false, 1/0, "да"/"нет" и т.д.). Если язык имеет встроенную команду для получения исходного текста программы, не используйте её.
Дело нехитрое.
Идея такая
— пишем квайн
— но вместо функций вывода в stdout используем вывод в строковый буфер
— в эпилоге читаем строку из stdin либо argv[1] и сравниваем
Как вариант, — делаем парсер ввода на лету
— вместо функций вывода в stdout используем вот такую функцию
Здравствуйте, nikov, Вы писали:
N>Напишите на вашем любимом языке программу (или функцию), которая принимает строку, проверяет её на точное совпадение с исходным текстом этой же самой программы и печатает (или возвращает) результат этой проверки (true/false, 1/0, "да"/"нет" и т.д.). Если язык имеет встроенную команду для получения исходного текста программы, не используйте её.
Чтоб не быть голословным
import sys
src = [
'\'',
'\\',
'\n',
'',
' ',
',',
'n',
'import sys',
'',
'src = [',
']',
'',
'QUOTE, SLASH, NL, EMPTY, TAB, COMMA, N = src[0:7]',
'',
'dump = EMPTY',
'',
'def puts(s):',
' global dump',
' dump += s + NL',
'',
'def putesc(s):',
' puts(TAB + QUOTE + SLASH + s + QUOTE + COMMA)',
'',
'def putsrc(i):',
' puts(TAB + QUOTE + s + QUOTE + COMMA)',
'',
'[puts(s) for s in src[7:10]]',
'[putesc(s) for s in src[0:2]]',
'[putesc(s) for s in src[6:7]]',
'[putsrc(s) for s in src[3:]]',
'[puts(s) for s in src[10:]]',
'',
'print sys.stdin.read() == dump',
]
QUOTE, SLASH, NL, EMPTY, TAB, COMMA, N = src[0:7]
dump = EMPTY
def puts(s):
global dump
dump += s + NL
def putesc(s):
puts(TAB + QUOTE + SLASH + s + QUOTE + COMMA)
def putsrc(i):
puts(TAB + QUOTE + s + QUOTE + COMMA)
[puts(s) for s in src[7:10]]
[putesc(s) for s in src[0:2]]
[putesc(s) for s in src[6:7]]
[putsrc(s) for s in src[3:]]
[puts(s) for s in src[10:]]
print sys.stdin.read() == dump
N>Напишите на вашем любимом языке программу (или функцию), которая принимает строку, проверяет её на точное совпадение с исходным текстом этой же самой программы и печатает (или возвращает) результат этой проверки (true/false, 1/0, "да"/"нет" и т.д.). Если язык имеет встроенную команду для получения исходного текста программы, не используйте её.
Написать компилятор какого-либо языка на самом этом языке.Встроить в него функцию сравнения двух бинарников. Дальше все очевидно... Ну да, конечно это не 100% однозначность, но может оно и к лучшему
Как много веселых ребят, и все делают велосипед...