Страниц: 1 [2]
  Печать  
Автор Тема: Автопортрет (для программистов)  (Прочитано 8674 раз)
0 Пользователей и 1 Гость смотрят эту тему.

Напишите  программу , печатающую копию собственного исходного текста.
Seamew
Умник
****
Offline Offline

Сообщений: 509

СПАСИБО
-вы поблагодарили: 76
-вас поблагодарили: 148


будет буря


Просмотр профиля
Ответ #15 : Март 16, 2012, 10:57:39 �

а зачем он?
Записан

Над седой равниной моря гордо реет буревестник..
mayer
Гений-Говорун
*
Offline Offline

Сообщений: 1943

СПАСИБО
-вы поблагодарили: 1011
-вас поблагодарили: 332


!!!!!!

22011996 2201199+6 2201199+36
Просмотр профиля
Ответ #16 : Март 16, 2012, 11:03:48 �

а зачем он?

Показать скрытый текст.  Я ж в этом нифига не шарю,если честно. Smiley
Записан

Максимум символов - 800; Осталось: 300
Вилли ☂
Гений-Говорун
*
Offline Offline

Сообщений: 1572

СПАСИБО
-вы поблагодарили: 532
-вас поблагодарили: 722





Просмотр профиля
Ответ #17 : Март 16, 2012, 11:12:33 �

а поподробнее? что не так?

Код:
Код:
begin
i="print i"
print "begin i="print i""
print i "end"
end

Результат выполнения (даже, если закрыть глаза на все кавычки):
Цитировать
begin
i="print i"
print i
end
отсутствуют третья и пятая строчки
Записан
☭-Изделие 20Д
Ум
*****
Offline Offline

Сообщений: 7915

СПАСИБО
-вы поблагодарили: 6291
-вас поблагодарили: 2537


[img] http://s016.radikal.ru/i337/1409/6a/5b2b5c71

614445846
Просмотр профиля Email
Ответ #18 : Март 16, 2012, 11:41:17 �

это называется куайн

я могу написать куайн на языке hq9+:

Код:
q
Было уже

http://nazva.net/forum/in....msg154155.html#msg154155
Последнее редактирование: Март 16, 2012, 11:55:15 от Изделие 20Д Записан

☭-Изделие 20Д
Ум
*****
Offline Offline

Сообщений: 7915

СПАСИБО
-вы поблагодарили: 6291
-вас поблагодарили: 2537


[img] http://s016.radikal.ru/i337/1409/6a/5b2b5c71

614445846
Просмотр профиля Email
Ответ #19 : Март 16, 2012, 11:52:23 �

я как проженный програмист отвечу - низя такую программу написать
http://nazva.net/forum/in....msg154155.html#msg154155
Последнее редактирование: Март 16, 2012, 11:59:13 от Изделие 20Д Записан

Seamew
Умник
****
Offline Offline

Сообщений: 509

СПАСИБО
-вы поблагодарили: 76
-вас поблагодарили: 148


будет буря


Просмотр профиля
Ответ #20 : Март 16, 2012, 14:12:30 �

а поподробнее? что не так?

Код:
Код:
begin
i="print i"
print "begin i="print i""
print i "end"
end

Результат выполнения (даже, если закрыть глаза на все кавычки):
Цитировать
begin
i="print i"
print i
end
отсутствуют третья и пятая строчки

ну тогда как-то так?

begin
i="print a"
a="print "begin i="print a"""
print "begin i="print a" a="" a """ - вот эти последние три кавычки.. ну это я кавычку в кавычках написала)))
print a "a=""a""  end"
end
Записан

Над седой равниной моря гордо реет буревестник..
Вилли ☂
Гений-Говорун
*
Offline Offline

Сообщений: 1572

СПАСИБО
-вы поблагодарили: 532
-вас поблагодарили: 722





Просмотр профиля
Ответ #21 : Март 16, 2012, 17:46:46 �

Ну не получиться так.

Вот посмотри свои последние строчки:
Цитировать
...
print a "a=""a""  end"
end
END тут 2 раза
а на выходе только один:

Цитировать
[тут я не разобрал, что получится, но второго END там точно нет]
end

Да и с кавычками тут не так всё просто.
И сцеплять параметры PRINT так неверно.
Но ты молодец!  Показывает сердце
Записан
moonlight
Умник
****
Offline Offline

Сообщений: 741

СПАСИБО
-вы поблагодарили: 19
-вас поблагодарили: 232


Просмотр профиля Email
Ответ #22 : Март 16, 2012, 21:38:49 �

Когда-то давно писал я эту программу на Delphi. Это на C#, идея та же.
Код:
using System;
namespace Avtoportret
{
    class Program
    {
        static void Main()
        {
            char[] ch = { ' ', (char)34, 's', '[', ']', '=', ';' };
            string[] s = new string[ch.Length];
            for (int i = 0; i < s.Length; i++) s[i] = ch[i].ToString();
            string s0 = s[0];
            for (int i = 0; i < 11; i++) s0 += s[0];
            string[] ss = new string[21];
            ss[0] = "using System;";
            ss[1] = "namespace Avtoportret";
            ss[2] = "{";
            ss[3] = "    class Program";
            ss[4] = "    {";
            ss[5] = "        static void Main()";
            ss[6] = "        {";
            ss[7] = "            char[] ch = { ' ', (char)34, 's', '[', ']', '=', ';' };";
            ss[8] = "            string[] s = new string[ch.Length];";
            ss[9] = "            for (int i = 0; i < s.Length; i++) s[i] = ch[i].ToString();";
            ss[10] = "            string s0 = s[0];";
            ss[11] = "            for (int i = 0; i < 11; i++) s0 += s[0];";
            ss[12] = "            string[] ss = new string[21];";
            ss[13] = "            for (int i = 0; i < 13; i++) Console.WriteLine(ss[i]);";
            ss[14] = "            for (int i = 0; i < ss.Length; i++)";
            ss[15] = "            { Console.WriteLine(s0 + s[2] + s[2] + s[3] + i + s[4] + s[0] + s[5] + s[0] + s[1] + ss[i] + s[1] + s[6]); }";
            ss[16] = "            for (int i = 13; i < ss.Length; i++) Console.WriteLine(ss[i]);";
            ss[17] = "            Console.ReadLine();";
            ss[18] = "        }";
            ss[19] = "    }";
            ss[20] = "}";
            for (int i = 0; i < 13; i++) Console.WriteLine(ss[i]);
            for (int i = 0; i < ss.Length; i++)
            { Console.WriteLine(s0 + s[2] + s[2] + s[3] + i + s[4] + s[0] + s[5] + s[0] + s[1] + ss[i] + s[1] + s[6]); }
            for (int i = 13; i < ss.Length; i++) Console.WriteLine(ss[i]);
            Console.ReadLine();
        }
    }
}


Эти пользователи сказали вам СПАСИБО :

Вилли ☂

За это сообщение 1 пользователь сказал спасибо!
Записан

Зачем откладывать на завтра то, что можно отложить на послезавтра?
moonlight
Умник
****
Offline Offline

Сообщений: 741

СПАСИБО
-вы поблагодарили: 19
-вас поблагодарили: 232


Просмотр профиля Email
Ответ #23 : Март 17, 2012, 16:36:13 �

а вот для такого языка придумайте квин:

в языке есть единственный тип данных - строка
нельзя конвертировать ASCII-коды в строку, т.к. в языке нет чисел
нельзя брать подстроку
нельзя брать конкатенацию двух строк
можно только присваивать строки и печатать их

в языке всего 3 оператора:

1) присваивание строки:
X="строка"
присваивать можно только строки, не содержащие кавычек
Вместо X можно подставить любое однобуквенное имя переменной

2) печать строки из переменной X:
PX
можно заменить переменную X любой другой буквой

3) печать одной кавычки:
Q

программа - это одна строка (нет переносов строк, пробелов, точек с запятой и т.д.)

пример программы, печатающей слово Привет
X="Привет"PX

пример программы, печатающей фразу Привет, "Назва"
Y="Привет, "Z="Назва"PYQPZQ
кавычку нельзя включить в строку, поэтому приходится печатать одну строку, потом печатать кавычку, потом печатать другую строку и завершающую кавычку

Напишите для этого языка квин

Могут ли P и Q быть именами переменных?
Можно ли одной строке присваивать значение другой строки?
Если да то результатом программы QP="P=Q"Q=PPPPQQ будет "P=QP=Q" ?
Записан

Зачем откладывать на завтра то, что можно отложить на послезавтра?
iPhonograph
Гений-Говорун
*
Offline Offline

Сообщений: 2100

СПАСИБО
-вы поблагодарили: 561
-вас поблагодарили: 1315

Дискоед


Просмотр профиля
Ответ #24 : Март 17, 2012, 16:53:00 �

Могут ли P и Q быть именами переменных?
да
строка программы разбивается на последовательность операторов единственным способом, даже если переменные называются P и Q

Цитировать
Можно ли одной строке присваивать значение другой строки?
пусть будет можно
это расширение языка не упростит задачу

Цитировать
результатом программы QP="P=Q"Q=PPPPQQ будет "P=QP=Q" ?
да

Записан

"Было бы величайшей ошибкой думать" (с) В.И.Ленин, Полн. cобр. cоч., т.34, стр.375
Вилли ☂
Гений-Говорун
*
Offline Offline

Сообщений: 1572

СПАСИБО
-вы поблагодарили: 532
-вас поблагодарили: 722





Просмотр профиля
Ответ #25 : Март 18, 2012, 14:58:42 �

Когда-то давно писал я эту программу на Delphi. Это на C#, идея та же.
похоже.  Мир
Записан
Страниц: 1 [2]
  Печать  
 
Перейти в: