Квайн

Обсуждение проектов наших жителей.
Вы можете выставить проект на тест или найти помощников для его реализации.

Модератор: BV

udpn
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 24.07.2007 (Вт) 11:43

Квайн

Сообщение udpn » 02.08.2007 (Чт) 22:52

Квайн - это программа, которая выдает в качестве своего действия свой собственный код. Обычно это делается в стдвывод, но, за неимением оного, пишем в файл.
Код: Выделить всё
Const Cod As String = "Const Cod As String = %" & vbCrLf & "Sub Main()" & vbCrLf & "Dim v As Variant, i As Long" & vbCrLf & "Open App.Path & ""\me.txt"" For Output As #1" & vbCrLf & "v = Split(Cod, vbCrLf)" & vbCrLf & "For i = 0 To UBound(v)" & vbCrLf & "v(i) = """""""" & Replace(v(i), """""""", """""""""""") & """"""""" & vbCrLf & "Next" & vbCrLf & "Print #1, Replace(Cod, ""%"", Join(v, "" & vbCrLf & ""), 1, 1)" & vbCrLf & "Close #1" & vbCrLf & "End Sub"
Sub Main()
Dim v As Variant, i As Long
Open App.Path & "\me.txt" For Output As #1
v = Split(Cod, vbCrLf)
For i = 0 To UBound(v)
v(i) = """" & Replace(v(i), """", """""") & """"
Next
Print #1, Replace(Cod, "%", Join(v, " & vbCrLf & "), 1, 1)
Close #1
End Sub
Не ищите смысла там, где его не ложили (c) проф. В.В. Горяйнов

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 03.08.2007 (Пт) 7:51

Это плохой квайн.
Лучший был в старых версиях бейсика:
10 LIST
Lasciate ogni speranza, voi ch'entrate.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 03.08.2007 (Пт) 8:19

Жесть!
http://alex-semenov.livejournal.com/1797.html?thread=5893
По приведенной ссылке раскопан целый философский пласт!!! Большое спс, udpn, за квайны!
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

udpn
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 24.07.2007 (Вт) 11:43

Сообщение udpn » 04.08.2007 (Сб) 1:03

Лучший был в старых версиях бейсика

Нуу, многие уже не знают, что такие версии и существовали. А вообще боян...
Не ищите смысла там, где его не ложили (c) проф. В.В. Горяйнов

Crio
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 84
Зарегистрирован: 21.05.2007 (Пн) 12:01
Откуда: Питер

Re: Квайн

Сообщение Crio » 04.08.2007 (Сб) 18:03

ОЙ!
Объясните, пожалуйста, как оно работает. А то слова знакомые, но складываются в такое...

Особенно вот эту часть:

Код: Выделить всё
For i = 0 To UBound(v)
v(i) = """" & Replace(v(i), """", """""") & """"
Next
Print #1, Replace(Cod, "%", Join(v, " & vbCrLf & "), 1, 1)


Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 04.08.2007 (Сб) 19:44

Строковая константа код разбивается на массив стрингов, каждый элемент которого содержит строку, заканчивающуюся (заканчивавшуюся, ибо теперь его там нет) символоми CR-LF.
Затем к каждому элементу этого массива меняется на [символ кавычки] + [прежнее значение элемента массива, в котором все символы кавычки заменены на пару таких же символов] + [символ кавычки].

Затем в файл записывается константа cod, в которой все символы % заменены на строчки, склеенные из элементов массива, комбинацией " & vbCrLf & ".

Что непонятного-то?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Crio
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 84
Зарегистрирован: 21.05.2007 (Пн) 12:01
Откуда: Питер

Сообщение Crio » 04.08.2007 (Сб) 20:37

Всё, спасибо...
Было непонятно, что такое """" (это кавычки - ").

udpn
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 24.07.2007 (Вт) 11:43

Сообщение udpn » 06.08.2007 (Пн) 18:16

в которой все символы %

see доп пар-ры для Replace: только первый...
Всё, спасибо...

Не за что, писал полчаса и для души, был уверен что кому-нить понравится
Оддед: али это не ка мне )
Было непонятно, что такое """"

До сих пор удивляюсь, как получилось """"""""""""
Не ищите смысла там, где его не ложили (c) проф. В.В. Горяйнов

Crio
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 84
Зарегистрирован: 21.05.2007 (Пн) 12:01
Откуда: Питер

Сообщение Crio » 09.08.2007 (Чт) 1:49

udpn
И тебе, конечно, спасибо. Познавательно.


Вернуться в Наши проекты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9

    TopList