Re[84]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 27.12.10 09:07
Оценка: +1
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, samius, Вы писали:



E>>>>>C+(D!=C?D)+(E!=C && E!=D?E)

S>>>>нет, так не выразить. Уверен на 99.8%.

E>>>Почему?

S>>Напомни, плиз, весь код

E>Ну это уже весь код

E>Это описан переборщик по кубу без повторов.
Т.е. тройной цикл. Это лишь решение частной задачи. Если обобщить, то сложность решения увеличивается в O(N) раз на каждую дополнительную букву. O(C^N), грустно.
Re[83]: Ультракороткий язык программирования RS
От: Erop Россия  
Дата: 27.12.10 09:07
Оценка:
Здравствуйте, samius, Вы писали:

S>Не вижу нужных конструкций для решения, о котором говорил я.

S>А что вижу — 3 счетчика C,D,E, с которыми что-то делается в 3-ном цикле. Это не решение вообще в принципе. Ни то о котором говорил я, ни какое либо другое.
Почему только в третьем?
Почему нельзя делать отсечения во внещних циклах?

Очевидно же, что интерпретатор с МИНИМАЛЬНОЙ оптимизацией будет выбирать в каком порядке итерировать, чобы быстрее получилось. И можно выбрать ту ось, по которой возможны отсечения раньше той, по которой не возможны...

S>Если ты считаешь что так решение записать можно, то логично что ты будешь это доказывать, чем я опровергать.

Что значит "можно"? Это уже запись нужного множества.

S>Тем более, что я слабо представляю смысл написанного.


В смысле?
Смотри, растолкую по кусочкам. Что именно из этого ты не понимаешь?

C -- переборщик букв.
(C!=D?D) -- связанный с C переборщик, который перебирает для какой-то позиции С все буквы, кроме той, которая выбрана в С

(E!=C && E!=D ?E) -- связанный с С и D переборщик, который для каждой позиции С и D перебирает все буквы, кроме тех, котрые выбраны С и D...

C+(C!=D?D)+(E!=C && E!=D ?E) -- переборщик конкатенаций этих троек букв...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[70]: Ультракороткий язык программирования RS
От: Erop Россия  
Дата: 27.12.10 09:08
Оценка:
Здравствуйте, samius, Вы писали:

S>Вижу, версия для light транслятора с диапазоном счетчика 1..10 и колв-ом сложений равному 100. Кстати, сумма элементов а не произведение.


Ну это опечатка. Ты же понял?
Суть претензий, правда, я не понял.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[84]: Ультракороткий язык программирования RS
От: Erop Россия  
Дата: 27.12.10 09:10
Оценка: +1
Здравствуйте, samius, Вы писали:

S>О пути записи рекурсии пока умолчу.

Это функция eval
Такую рекурсию в LISP принято называть сложной. Только там это удобнее делать, так как там сама базовая структура данных -- список, может интерпретироваться, как список лексем некой LISP-функции...

И это не головоломки, а вполне разработанная тема в программировании. Просто сейчас это снова не модно
Сейчас функциональщину можно писать в несколько ином ключе.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[48]: Ультракороткий язык программирования RS
От: Erop Россия  
Дата: 27.12.10 09:17
Оценка: +1
Здравствуйте, PC_2, Вы писали:

E>>Пример приведи задачи, о которой идёт речь. Я вполне допускаю задачу, для которой квадрат, например, будет наследником прямоугольника. но это экзотика...


PC_>Задача простая.

PC_>Взять классическую иерархию фигур и представить в виде ООП
PC_>Ято с тобой согласен, что на счет фигур лучше обойтись массивами фигур,
PC_>но только из-за того что на таком примитивном примере недостатки ООП довольно хорошо просматриваются

PC_>В книжках например бывают рисуют такое.

PC_>[img=http://www.intuit.ru/department/se/oopbases/14/14_2.gif]

Это плохая книжка. Уже наличие классов "3-угольник" и "4-угольник" безмерно доставляет...
Интересно они на 127-угольнике остановились или нет?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[84]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 27.12.10 09:18
Оценка: +1
Здравствуйте, PC_2, Вы писали:

S>>Только на последнем шаге алгоритмическая стоимость генерации увеличивается в n(k-1) раз.

S>>Твой алгоритм лучше полного перебора с последующей фильтрацией. Но намного ли?

PC_>Это спор о реализации транслятора, а не о языке.

PC_>Ты никогда не можешь точно знать как работает РС, потому как он довольно таки декларативен.
Нет оснований предполагать что транслятор (особенно твой) вставит эвристики и понизит сложность задачи.

PC_>Вот например в декларативном SQL func1(1) + func(2) это тоже ниразу не вызов двух функций, как мог бы подумать тот же сишник.

PC_>По семантике, да, вызываются две функции, результаты складываются. А реально оптимизатор может разобрать в ноль эти функции сделать из них одну и еще и переписать
PC_>там все полностью.
Ты прикидываешься или на самом деле не знаешь как оценивается сложность алгоритмов?

S>>Ладно, теперь я меняю условия задачи. Логично предположить что мы используем генерилку для брутфорса (хохмы для). Генерилка проверяет пароли по мере получения (кстати, твои не лезут в память 32х разрядного приложения уже при параметрах 5 из 30). И каждую минуту сбрасывает на винт число проверенных паролей, потому как хакеру периодически нужны ресурсы системы для решения других задач и он хочет продолжить счет с последнего сохраненного номера.

S>>Наперед скажу, что в моем решении менять ничего не надо. Пропустить 10000 элементов (skip 10000 (p 30 10)) результирующей последовательности занимает 0,24s и 10001-ый элемент равен 'abcdefg3vl' при алфавите ['a'..'z']++['1'..'4']. Пропуск миллиона вариантов занимает <20 сек. Уже проблема, но я знаю, что подкрутить что бы пропуск занимал ничтожное время.

PC_>Вообщето скип, это почти тот же фильтр результата.

Ты даже не понял, что результаты по скипу не вычисляются? Ты походу слил, но сам еще не понял это.

PC_>Сам знаешь что нормальная реализация начинает сразу с середины перебор,

PC_>а не чтото там скипит.
Твой подход умеет вообще скипать вычисления?
Сразу с середины это вряд ли, но уменьшить стоимость скипа до логарифма — реально.
Не надеюсь что ты покажешь, как это делается на РС.
Re[84]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 27.12.10 09:23
Оценка: +1
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, samius, Вы писали:


S>>А что вижу — 3 счетчика C,D,E, с которыми что-то делается в 3-ном цикле. Это не решение вообще в принципе. Ни то о котором говорил я, ни какое либо другое.

E>Почему только в третьем?
E>Почему нельзя делать отсечения во внещних циклах?
Я думал что ты записал решение общего случая, а оказалось что 3 из n. Да, может и во внешних. Но продолжишь ли ты его по индукции до k из n?

E>Очевидно же, что интерпретатор с МИНИМАЛЬНОЙ оптимизацией будет выбирать в каком порядке итерировать, чобы быстрее получилось. И можно выбрать ту ось, по которой возможны отсечения раньше той, по которой не возможны...

Пока нет оснований полагать что будет такая оптимизация. Если и будет, чего она будет стоить?

S>>Если ты считаешь что так решение записать можно, то логично что ты будешь это доказывать, чем я опровергать.

E>Что значит "можно"? Это уже запись нужного множества.
А обобщенно для k?

E>C -- переборщик букв.

E>(C!=D?D) -- связанный с C переборщик, который перебирает для какой-то позиции С все буквы, кроме той, которая выбрана в С
N^2

E>(E!=C && E!=D ?E) -- связанный с С и D переборщик, который для каждой позиции С и D перебирает все буквы, кроме тех, котрые выбраны С и D...

N^3

E>C+(C!=D?D)+(E!=C && E!=D ?E) -- переборщик конкатенаций этих троек букв...

Круто. Запишешь для четверок и пятерок?
Re[85]: Ультракороткий язык программирования RS
От: Erop Россия  
Дата: 27.12.10 09:24
Оценка: -1
Здравствуйте, samius, Вы писали:

E>>Это описан переборщик по кубу без повторов.

S>Т.е. тройной цикл.

перебор размещения троек, хотя бы из четырёх -- это всегда тройной цикл, так в итерируется трёхмерное многообразие трёхмерное...
S>Это лишь решение частной задачи. Если обобщить, то сложность решения увеличивается в O(N) раз на каждую дополнительную букву. O(C^N), грустно.

Это не правда. Ты можешь отсекать перебор по каждой из осей, а не в самом низу...

Сложность будет O(число размещений)...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[82]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 27.12.10 09:27
Оценка:
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, samius, Вы писали:



E>>>Ну там что-то вроде
E>>>переборщик перебратьРазмещенияБезПовторов( переборщик X, int count )
E>>>{
S>>       if count == 0 остановить перебор
S>>       для каджого x из X
S>>           для каждого результата r перебратьРазмещенияБезПовторов(X без x, count-1)
S>>               вернуть x склеенный с r
E>>>}


E>э-э-э, "вернуть" внутри "для каждого" концептуально ен ясны для меня...

Это же переборщик. Но он перебирает не числа а решения.

E>Прости, это вот выражение C+(D!=C?D)+(E!=C && E!=D?E) описывает тройки без повторов.

ок, соглашусь
E>Вопрос в том, как снабдить это выражение параметром "скока букв генерим"...
И только после ответа на этот вопрос можно будет говорить о решении.

S>>Т.е. при n=30 и k=10, разница в количестве вариантов гигантская, т.е. последующая фильтрация не катит ну никак в сравнении с предоставленными Владимиром и мной решениями.


E>Почему, ты считаешь, что филььрация последующая?

Да, теперь вижу что не последующая. Но разница в кол-ве вычислений все равно гигантская.

E>Выражение C+(D!=C?D)+(E!=C && E!=D?E) описывает всего лишь МНОЖЕСТВО перебираемых состояний...

E>Множество оно описывает верно.
E>Вопрос в том, можно ли его эффективно интерпретировать? Очевидно, что да, можно. Так и в чём таки проблема?
Можно ли записать это решение для любого числа буков?
Re[48]: Ультракороткий язык программирования RS
От: Erop Россия  
Дата: 27.12.10 09:29
Оценка:
Здравствуйте, PC_2, Вы писали:

PC_>Взять классическую иерархию фигур и представить в виде ООП

1) Выделенного не существует. Фигуры не образуют иерархии. Разве что бывают там представители многоугольников если.
2) ООП подразумевает какую-то задачу, которую мы хотим решить. Без задачи нет смысла строить иерархию...

PC_>Я-то с тобой согласен, что на счет фигур лучше обойтись массивами фигур,

Только не фигур, а вершин.

PC_>но только из-за того что на таком примитивном примере недостатки ООП довольно хорошо просматриваются

У ООП есть недостатки. Один из них -- это то, что хотя ООП пытается приблизить понятия программы к понятиям предметной области, но в реале люди нифига не думают истинно-ООП-шным способом. Так что приблизить не получается. Получаются уродские иерархии.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[84]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 27.12.10 09:29
Оценка:
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, samius, Вы писали:


E>В идеологии RS было бы логично уметь оперировать понятием "позиция переборщика". И для переборщиков, с заданной последовательностью было бы удобно отрезки выделять и на димк можно было бы позицию записать, и НИЧЕГО не пропускать вообще...

Позиция такого переборщика — это срез по всем счетчикам, сколько бы их не было, со всеми состояниями массивов. Ты говоришь о 'хибернейте' интерпретатора, видимо.
Re[85]: Ультракороткий язык программирования RS
От: PC_2 http://code.google.com/p/rsinterpretator/
Дата: 27.12.10 09:29
Оценка: -1
Здравствуйте, samius, Вы писали:

PC_>>Вообщето скип, это почти тот же фильтр результата.

S>Ты даже не понял, что результаты по скипу не вычисляются? Ты походу слил, но сам еще не понял это.

Скипать результаты не проблема в РС.

Но ты как единственный любитель преждевременных оптимизаций тут должен был уже понять,
что программе на Си, например, было бы абсолютно по барабану начинать свои счетчики
с 10 со 100 тыс или с 1 миллиарда. Чего не скажешь о твоем "прогрессивном" решении
со скипом, которые по твоей алгоритмической сложности эквивалент РС.

Что не скажешь о твоем решении.
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Re[85]: Ультракороткий язык программирования RS
От: Erop Россия  
Дата: 27.12.10 09:33
Оценка: :)
Здравствуйте, samius, Вы писали:

S>Я думал что ты записал решение общего случая, а оказалось что 3 из n. Да, может и во внешних. Но продолжишь ли ты его по индукции до k из n?


Ну тут есть вопрос, как это сделать понятно и удобно для интерпретации.

E>>C+(C!=D?D)+(E!=C && E!=D ?E) -- переборщик конкатенаций этих троек букв...

S>Круто. Запишешь для четверок и пятерок?

А в чём проблема:
Вот для чётвёрок, например:

C+(C!=D?D)+(E!=C && E!=D ?E)+(F!=C && F!=D && F!= E ?F)

Струтктура выражения, как раз легко обощается на сколько хочешь букв.

Проблема тут совсем другого рода. Как удобно и понятно выражать факт связанности каких-о переборщиков в разных частях выражения. Ну типа, что вот это-вот -- это текущая позиция вон-того-вот переборщика из той части...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[86]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 27.12.10 09:33
Оценка:
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, samius, Вы писали:


E>>>Это описан переборщик по кубу без повторов.

S>>Т.е. тройной цикл.

E>перебор размещения троек, хотя бы из четырёх -- это всегда тройной цикл, так в итерируется трёхмерное многообразие трёхмерное...

S>>Это лишь решение частной задачи. Если обобщить, то сложность решения увеличивается в O(N) раз на каждую дополнительную букву. O(C^N), грустно.

E>Это не правда. Ты можешь отсекать перебор по каждой из осей, а не в самом низу...

Это правда для той записи что ты показывал. Каждое отсечение — это if, который нужно вычислить. В твоей записи отсечения небесплатны.

E>Сложность будет O(число размещений)...

А в моей как раз так и отсекается.
Re[77]: Ультракороткий язык программирования RS
От: ambel-vlad Беларусь  
Дата: 27.12.10 09:33
Оценка:
Здравствуйте, Erop, Вы писали:

AV>>Не, то что это можно будет сделать я вполне верю. То что будет сделано — не верю. Может быть какой-нибудь один частынй случай. Но не более.


E>Казалось бы, для всех простых случаев всё просто, для комбинаций где-то просто, а где не просто, там полиморфизм. А где совсем не, там массивы.


Если ты не заметил, то я не подвергаю сомнению то, что это можно сделать. А вот в то, что в RS появится нечто отличное от пары частных случаев, я не верю
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[66]: Ультракороткий язык программирования RS
От: ambel-vlad Беларусь  
Дата: 27.12.10 09:33
Оценка:
Здравствуйте, Erop, Вы писали:

AV>>Тогда ты скорее всего получишь язык для решения одного-двух типов языков.


E>Ну цель стоит ясная. Написать легко и просто шахматы, потом шашки, потом каллах и т. д...


Ух-ты, а в топике пару раз проскакивало про то, что это язык общего назначения.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[61]: Ультракороткий язык программирования RS
От: ambel-vlad Беларусь  
Дата: 27.12.10 09:33
Оценка:
Здравствуйте, alpha21264, Вы писали:

A>Бывает бывает.

A>Например индусы искали пересечение двух отрезков.
A>был switch на 8*8=64 ориентации.
A>В двух местах они ошиблись.

Не, с тем, что бывают клинические случаи я не спорю.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[31]: Ультракороткий язык программирования RS
От: ambel-vlad Беларусь  
Дата: 27.12.10 09:33
Оценка:
Здравствуйте, Erop, Вы писали:

AV>>Тебе интересно обсудить именно RS или все таки тензоры и иже с ними? Если второе, то гораздо более продуктивно будет это делать в отдельном топике. И при этом сначала стоит обратить внимание на уже существующие наработки. Те, которые ТС с самого начала назвал говнокодом.

E>А я вот не знаю ничего такого же выразительного.

Всякие там J и компания повыразительнее будут.

AV>>Вот только ценность может меняться в связи с особенностями изложения.

E>Ценность мыслей нет. Доступность -- да.

Абстрактная ценность — да. Реальная? Вряд ли.

AV>>Да, оно больше деструктивное. Это так ужасно? А насчет "извращения", то как иначе назвать то, что предложил ТС? В теории быть может все это и красиво. Но то, что есть на практике иначе я назвать не могу.

E>Что именно тебе кажется неприменимым?

Не непримениным, а то что и как сделано в RS.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[27]: Ультракороткий язык программирования RS
От: ambel-vlad Беларусь  
Дата: 27.12.10 09:33
Оценка:
Здравствуйте, PC_2, Вы писали:

PC_>>>Я предлагаю вместо головастости взять ряд архитектурных задач на себя, проект Опен Сорц.


AV>>Видишь ли в чем проблема. Может я бы и взялся. Но для этого мне надо понять зачем мне это нужно. Пока что я не вижу никакой ценности данного языка. Даже позволю себе несколько более жесткое заявление. Считаю именно эту работу (а не весь Open Source) бессмысленной тратой времени. И еще вижу кучу достаточно плотно расположенных граблей.


PC_>тогда просто не мешай другим.

PC_>Потому что в этом языке ты самая главная грабля и на тебя больше времени уходит
PC_>чем на кодинг

Действительно? Вот уж не думал, что смогу быть главной проблемой
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[23]: Ультракороткий язык программирования RS
От: ambel-vlad Беларусь  
Дата: 27.12.10 09:33
Оценка:
Здравствуйте, PC_2, Вы писали:

AV>>Это образец понятности? А то я, например, ничего не понял. Что значит "SR", что значит "a"?


PC_>это вообще стеб над перлом был.

PC_>Потому что глупо было както несколько страниц сравнивать вызов библиотечной функции в перле
PC_>и не вызов а сам алгоритм сортировки в РС, пришлось обломать перл в его же стиле

Сомневаюсь, что ты кого-то там обломал. Потому что, похоже, ты единственный здесь, кому важно 5 или 8 символов надо ввести. Да и это все ты показываешь на маленьких кусочках кода. А совсем не факт, что эта же картина будет наблюдаться на больших объемах
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.