download.bg
 Вход Списание  Новини  Програми  Статии  Форум  Чат   Абонамент  Топ95   Архив 

Задача за познавачи

< 1 2 3 4 >

Автор
Съобщение
кака.лара
Нед, 05.12.10, 20:58
Задачата е поснавена още от Н. Винер. За пръв път е решена успешно върху теоретичен модел на абстрактна машина /"Машината на Пост"/, после и с "Машината на Тюринг". Общата теорема е намерена от Ч. Уезъръл... Стига, да не издам и решението Остави, ами в много програмни езици задачата не може да се реши посмъртно.

Та задачата е такава:
Да се напише програма, която да отпечатва собствения си текст.
Търси се пълна идентичност на входния и изходния текст.

По-точни изисквания:
За да няма скрита помощ откъм особеностите на OS или от средата за програмиране не се допускат специални инструменти за само-документиране /команди като "LIST" от старите бейсици, "WRITE" на Focal, "words" от Prolog и т. н./

Абсолютна автономност и отсъствие на външни подпрограми, файлове, данни. Това е и уточнение към предишното изискване. Не върви да извикаш команда TYPE на ДОС-а да изпечата текста

Допуска се само използване на стандартни оператори за печат/извеждане. Специални оператори за прекъсване и продължаване на ред не се допускат /FORTRAN-ите от приди 1996 автоматично отпадат по тоя пункт/.

Изискването за пълна идентичност не засяга неизпълнимите части на програмните текстове. Примерно "шапката" на паскалските програми може да се изпусне, но е предимство да я има.

Който се има за разбирач да хваща любимия си език и да се пробва!
Хай сега да видим!

boy4o
Пон, 06.12.10, 11:30
Забавна задача. Преди ок. 20 год. (даже повече) беше пусната в конкурса "Като слънце" на сп. "Компютър за вас". Спомням си, че някой беше успял да я направи на Паскал, но идея си нямам какво беше правил по-точно.
 
Мисля, че основната трудност беше да се накара операторът за печат да отпечата сам себе си. И имаше някаква кошмарна бъркотия с кавичките/апострофите.
 
Май ще се опитам да напиша нещо, колкото да си припомня младите години.
insecteater
Пон, 06.12.10, 14:54

RE: Задача за познавачи

” ...
Който се има за разбирач да хваща любимия си език и да се пробва!
Хай сега да видим!

Да ти се не види и задачката - не можах да заспя заради нея

” ...
Мисля, че основната трудност беше да се накара операторът за печат да отпечата сам себе си. И имаше някаква кошмарна бъркотия с кавичките/апострофите. ... „

кошмарна ами - заспах едва ли не като броях вложени echo и eval инструкции

как става тоя номер?

phrozencrew
Пон, 06.12.10, 19:14
Доколкото схванах програмата не само, че може, но е и задължително да е максимално къса. Например:
echo "echo";


Но това, да отпечата и echo-то на echo-то на echo-то... . Ми то това не е ли все едно да се "напише" перпето мобиле?! Без да се прочете сорсфайла не виждам как ще стане. Щото иначе е много тъпо решението. Примерно:
<?php
echo file_get_contents('selfreader.php');
?>

kookki
Пон, 06.12.10, 19:59

RE: RE: Задача за познавачи

” Да не би да се има предвид програма, която да напечата собственият си сорс „

Аз точно така я разбрах Кака, но бързо се отказах от подобно творчество и се наспах като пич

кака.лара
Пон, 06.12.10, 20:16

RE: RE: Задача за познавачи

” Кой е входния и кой изходния текст.
Да не би да се има предвид програма, която да напечата собственият си сорс или нещо друго. „
Аха. Точно.
Да напечата собственият си сорс. Давам примерче на Focal:

Само дето номера с "WRITE" и подобни команди е забранен по условие.
***
Онова "ОК!" е сестемен отговор, не е част от програмата.

редактиран от кака.лара на 06.12.10 20:25
vesov
Пон, 06.12.10, 21:17

RE: Задача за познавачи

Интроспективна програма. Стана популярна у нас преди около 25 години от чудесната книга " Этюды для програмистов".

Виж тук:http://en.wikipedia.org/wiki/Quine_(computing)
Имплементации на различни програмни езици: http://www.nyx.net/~gthompso/quine.htm

phrozencrew
Пон, 06.12.10, 21:29
И на мен ми заприлича на някаква руска тъпня, ала стил "БАН - бъди алабалист навеки".
Шегувам се де. Но определено не разбрах какъв е проблема да си изпринтя сорс-файла при така поставеното условие?!
vesov
Пон, 06.12.10, 21:35

RE: Задача за познавачи

” И на мен ми заприлича на някаква руска тъпня, ала стил "БАН - бъди алабалист навеки".
Шегувам се де. Но определено не разбрах какъв е проблема да си изпринтя сорс-файла при така поставеното условие?!

Книгата беше превод. Не си спомням автора. но превода беше от английски.
кака.лара
Пон, 06.12.10, 21:46
” Интроспективна програма. Стана популярна у нас преди около 25 години от чудесната книга " Этюды для програмистов".

Виж тук:http://en.wikipedia.org/wiki/Quine_(computing)
Имплементации на различни програмни езици: http://www.nyx.net/~gthompso/quine.htm

Уф! Не трябваше да издаваш толкова много.

Абе задачата има повече теоретичен смисъл. Произтича от основните теореми на теорията на алгоритмите. Емил Пост намерил навремето аналитично решение без да може да го реализира. По-късно Алън Тюринг намерил частично решение върху абстрактна машина. С появата на истински компютри са намерени множество частни решения.

Има много важна роля в изследванията по изкуствен интелект. Още Норберт Винер свързва проблема с въпроса за самосъзнанието на изчислителните машини. Файнман /изобретателят на паралелната и конвейрната обработка на данни/ открива, че освен рекурсията и ма и по-високо алгоритмично ниво, авто-рекурсия.

Добре де. Издаденото си е издадено. Бития си е бит, еб... байтия си е бит 8 пъти
Дай да видим кой как може да го реализира

***
Абе не знам. Сигурно е много тъпа задача ама си е бая упражнение за акъла.

Може да няма много файда на практика. Само не се сещам сега кой беше казал, че няма нищо по-практично от добрата теория.

Точно теорията ми е на мерак. Мога да нопиша някаква там програма за астрология или др. шашкъния, ама не ми е интересно. Друга работа си е да видиш целия процес как мисълта на жив човек става на разни заряди в силициев кристал и пак не е хептен умряла.

редактиран от кака.лара на 06.12.10 21:57

< 1 2 3 4 >

Коментар

за нас | за разработчици | за реклама | станете автори | in english  © 1998-2024   Experta Ltd.