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

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


PC_>Чтожь, представляю тебе решение которое сносит лимонный пароль по твоим экзо условиям


PC_>
PC_>!x='а'..'z'   //остальные разряды идут по полному алфавиту
PC_>i<7?a+='+x'+i
PC_>^('s+=1;s==1000000?p=' + a)
PC_>p
PC_>

Operators: x=а..z
Operator: ..
Error: Index was outside the bounds of the array.


завтра в школу с родителями
Re[126]: Ультракороткий язык программирования RS
От: PC_2 http://code.google.com/p/rsinterpretator/
Дата: 27.12.10 17:07
Оценка:
PC_>>!x='а'..'z' //остальные разряды идут по полному алфавиту

Ты наверное копипастил, там буква "а" русская, замени на английскую

S>завтра в школу с родителями


а тебя на курсы Продвинутый пользователь ПК.
Чтоб обьяснили, нахренаж она нужна, эта загадочная оперативка в ПК
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Re[127]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 27.12.10 17:09
Оценка:
Здравствуйте, PC_2, Вы писали:

PC_>>>!x='а'..'z' //остальные разряды идут по полному алфавиту


PC_>Ты наверное копипастил, там буква "а" русская, замени на английскую


S>>завтра в школу с родителями


Operators: ^Expression
Object reference not set to an instance of an object.

И еще дедушек и бабушек. А то окажется что родители такие же

PC_>а тебя на курсы Продвинутый пользователь ПК.

PC_>Чтоб обьяснили, нахренаж она нужна, эта загадочная оперативка в ПК
Ты снчала результат покажи, а я там сам на курсы метнусь
Re[128]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 27.12.10 17:12
Оценка:
Здравствуйте, samius, Вы писали:

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


PC_>>>>!x='а'..'z' //остальные разряды идут по полному алфавиту


PC_>>Ты наверное копипастил, там буква "а" русская, замени на английскую


S>>>завтра в школу с родителями


S>
S>Operators: ^Expression
S>Object reference not set to an instance of an object.
S>

i=8;
8<7

9<7?a+=+x+9
i=9;
9<7

^(s+=1;s==1000000?p=+a)

Expression

s+=1;s==1000000?p=+a

На всякий
Re[57]: Ультракороткий язык программирования RS
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 27.12.10 17:33
Оценка: 2 (1)
Здравствуйте, samius, Вы писали:

S>
S>let rec p xs = function 
S>    | 0 -> seq [seq []]
S>    | n -> seq { for x in xs do
S>                     for r in p (Seq.filter ((<>)x) xs) (n-1) -> 
S>                         Seq.append [x] r }
S>


Я кстати, совершенно забыл о, хоть пока и не ленивых, но list comprehensions в немерле С их использованием, получение списка размещений выглядит так:

с повторениями
def p(l, n)
{
    if (n==0) $[[]] else $[x :: y | x in l, y in p(l, n - 1)]
}


без них:
def p(l, n)
{
    if (n==0) $[[]] else $[x :: y | x in l, y in p(l, n - 1), !y.Contains(x)]
}

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[58]: Ультракороткий язык программирования RS
От: PC_2 http://code.google.com/p/rsinterpretator/
Дата: 27.12.10 17:37
Оценка: :)
Здравствуйте, kochetkov.vladimir, Вы писали:

Спасибо Владимир,
ваше решение слило по гибкости и по размеру. Кстате по размеру
более в чем три раза.

KV>
KV>def p(l, n)
KV>{
KV>    if (n==0) $[[]] else $[x :: y | x in l, y in p(l, n - 1)]
KV>}
KV>
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Re[59]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 27.12.10 17:38
Оценка: +1
Здравствуйте, PC_2, Вы писали:

PC_>Здравствуйте, kochetkov.vladimir, Вы писали:


PC_>Спасибо Владимир,

PC_>ваше решение слило по гибкости и по размеру. Кстате по размеру
PC_>более в чем три раза.

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

S>Видишь — опять. Ты этим хочешь привлечь людей для разработки? Самоутверждаешься и только.


Сеня, я не понимаю, если бы решение РС было в три раза длинее и не понятнее чем Ф Шарп или Немерел, то что ктото бы приступил к разработке ?

Вот обьясни мне логику, накой развивать язык, например тот же Немерле, который сливает томуже Шарпу, Ф Шарпу и программы
которого длинее, тоесть банально больше время на кодинг ?

Для чего, это у Немерле реклама такая ?


я понимаю так.
Предлогаешь что-то — докажи профиты.
Докажешь — гуд.
Не докажешь — нафиг эту идею.

Так или не так ?
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Re[61]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 27.12.10 17:46
Оценка:
Здравствуйте, PC_2, Вы писали:

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


S>>Видишь — опять. Ты этим хочешь привлечь людей для разработки? Самоутверждаешься и только.


PC_>Сеня, я не понимаю, если бы решение РС было в три раза длинее и не понятнее чем Ф Шарп или Немерел, то что ктото бы приступил к разработке ?


PC_>Вот обьясни мне логику, накой развивать язык, например тот же Немерле, который сливает томуже Шарпу, Ф Шарпу и программы

PC_>которого длинее, тоесть банально больше время на кодинг ?
Это ты пишешь после того как Nemerle предоставил самую короткую в классе программу?
У тебя линейка не только короткая, она еще и кривая

PC_>я понимаю так.

PC_>Предлогаешь что-то — докажи профиты.
PC_>Докажешь — гуд.
PC_>Не докажешь — нафиг эту идею.

PC_>Так или не так ?


Так. Ну и все тут ждали от тебя доказательств профитов. Ты доказал только ограниченность классов задач РС-а и что не собираешься расширять этот класс.
Re[59]: Ультракороткий язык программирования RS
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 27.12.10 17:48
Оценка:
Здравствуйте, PC_2, Вы писали:
PC_>Здравствуйте, kochetkov.vladimir, Вы писали:

PC_>Спасибо Владимир,


Не за что, мое сообщение предназначалось не вам.

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[62]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 27.12.10 17:50
Оценка:
Здравствуйте, samius, Вы писали:

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


PC_>>я понимаю так.

PC_>>Предлогаешь что-то — докажи профиты.
PC_>>Докажешь — гуд.
PC_>>Не докажешь — нафиг эту идею.

PC_>>Так или не так ?


S>Так. Ну и все тут ждали от тебя доказательств профитов. Ты доказал только ограниченность классов задач РС-а и что не собираешься расширять этот класс.


Не договорил.
Обозвал всех хорьками и быдлокодерами, оставив в теме тех, кто поставил целью доказать тебе что ты сам такой. за исключением Егора, который терпимо относится к твоим выходкам. И Владимира, который тут по другим причинам, но видимо тоже удовольствия не испытывает от процесса изысканий.
Re[78]: Ультракороткий язык программирования RS
От: ambel-vlad Беларусь  
Дата: 27.12.10 17:54
Оценка:
Здравствуйте, PC_2, Вы писали:

AV>>Посмотрел внимательно. И что же мы видим, по условиям задачи на вход подаются два массива, а у тебя фактически — 1. Правда тебе пришлось задействовать и второй массив. Но это потому что тебе пришлось эмулировать кортеж. И на выходе ожидается массив, а у тебя скаляр. Ты и дальше будешь упорствовать в том, что ты предложил решение задачи?


PC_>вот когда будут кортежи тогда и будет решение с кортежем, кстате больше ровно на 4 байта


Дык замени кортежи тем, что у тебя есть. Как вариант, вместо массива кортежей можно использовать двумерный массив.

Черт, работы на минуту (а то и меньше), а столько отмазок.

Чтобы тебе было проще писать приведу тебе питоновский код

def process(data, control):
    result = []
    for slices in control:
        worker_args = []
        for (start, end) in slices:
            worker_args = worker_args + data[start-1:end]
        result.append(worker(worker_args))

    return result

def worker(data):
    sum = 0
    for number in data:
        sum = sum + number

    return sum

data = [1,12,63,564,533,61,7,8,91,101]
control = [((2,5),), ((1,2), (1,7), (10, 10)), ((1,9),)]
res = process(data, control)
print res


Последние четыре строки мои. А две функции написал человек только начавший писать на Питоне. Кстати, это даже не просто пример кода, а полноценные функции, которые могут использоваться в других местах. Если тебе хочется, то я могу еще где-то на треть сократить
Re[58]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 27.12.10 17:56
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

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


KV>Я кстати, совершенно забыл о, хоть пока и не ленивых, но list comprehensions в немерле С их использованием, получение списка размещений выглядит так:


Спасибо, увидел как это в Nemerle.
Кстати, в F# вычислительные выражения привязаны к типам обрамшяющими скобками. Так seq{} — это ленивость, [] — список. Можно подключать свои типы.

Но не очень удобно менять типы по коду.


Я тут занялся психоанализом и нравоучениями ТС-а. Переполняют эмоции
Подозреваю я где-то на грани правил форума, если не за ней. Готов понести ответственность, если что, но сдержаться не могу.
Re[79]: Ультракороткий язык программирования RS
От: ambel-vlad Беларусь  
Дата: 27.12.10 20:13
Оценка:
Здравствуйте, PC_2, Вы писали:

PC_>Могу еще такое решение предложить, где роль кортежей выполняет двумерный массив


PC_>
PC_>x=1,12,63,564,533,61,7,8,91,101 //ряд
PC_>y = 2d5
PC_>y.0=2,5 //элемент кортежа
PC_>y.1=5,7 //элемент кортежа
PC_>y.2=8,9 //элемент кортежа

PC_>s=0,0 //сумма

PC_>y.j.0<i & i<y.j.1 ? s.j=s.j+x.i

PC_>s + 0
PC_>


И снова решение не до конца. Для получения одного значения результата может потребоваться несколько входных кортежей. Я тебе привел такой вариант при описании задачки. Питоновское решение я привел здесь — Re[78]: Ультракороткий язык программирования RS
Автор: ambel-vlad
Дата: 27.12.10
.

Так что там с окончательным решением задачки? Можешь не обращать внимание на то, что индексы у нас начинаются с 1, а у тебя с 0. Это не существенно.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[62]: Ультракороткий язык программирования RS
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 27.12.10 20:38
Оценка: 4 (2) +1
Здравствуйте, samius, Вы писали:

S>Это ты пишешь после того как Nemerle предоставил самую короткую в классе программу?


Я только одного понять не могу, почему он ее негибкой обозвал. Ибо:

def p(l,n,f)
{
        if (n==0) $[[]] else $[x::y | x in l, y in p(l,n-1,f), f(x,y)]
}

def l = $['a'..'c'];

// А теперь следим за руками...
WriteLine(p(l,2, _ => true)); // Размещения l по n с повторениями
WriteLine(p(l,2, (x,y) => !y.Contains(x))); // Размещения l по n без повторений
WriteLine(p(l,l.Length,(x,y) => !y.Contains(x))); // Перестановки l по n
WriteLine(p(l,2,(x,y) => {x::y != (x::y).Sort((i,j) => if (i > j) 0 else 1) || (x::y).Length < 2})); // Сочетания l по n


Куда уж гибче-то?
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[25]: Ультракороткий язык программирования RS
От: anonymous Россия http://denis.ibaev.name/
Дата: 27.12.10 20:50
Оценка:
Здравствуйте, PC_2, Вы писали:

A>>http://rsdn.ru/forum/flame.comp/4090343.1.aspx
Автор: anonymous
Дата: 23.12.10

PC_>Ты отстал от жизни, есть задача уже поинтересней.

Там речь совсем не об этом.

PC_>Напомню условия задачи,

PC_>есть динамически задаваемый алфавит, к примеру от a-z
PC_>есть динамически задаваемая длина пароля, допустим 4 символа.
PC_>Сгенерить все строки от aaaa до zzzz
PC_>Давай Перлист, присоединяйся

Да, не понятно, но работает:
my @c = ('a' .. 'z');
my $n = 4;
my @s = glob(('{' . join(',', @c) . '}') x $n);
print() for @s;

Твой ход. (:
Re[63]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 27.12.10 22:18
Оценка: 1 (1)
Здравствуйте, kochetkov.vladimir, Вы писали:

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


S>>Это ты пишешь после того как Nemerle предоставил самую короткую в классе программу?


KV>Я только одного понять не могу, почему он ее негибкой обозвал. Ибо:


KV>
KV>def p(l,n,f)
KV>{
KV>        if (n==0) $[[]] else $[x::y | x in l, y in p(l,n-1,f), f(x,y)]
KV>}

KV>def l = $['a'..'c'];

KV>// А теперь следим за руками...
KV>WriteLine(p(l,2, _ => true)); // Размещения l по n с повторениями
KV>WriteLine(p(l,2, (x,y) => !y.Contains(x))); // Размещения l по n без повторений
KV>WriteLine(p(l,l.Length,(x,y) => !y.Contains(x))); // Перестановки l по n
KV>WriteLine(p(l,2,(x,y) => {x::y != (x::y).Sort((i,j) => if (i > j) 0 else 1) || (x::y).Length < 2})); // Сочетания l по n
KV>


KV>Куда уж гибче-то?

Да почти некуда. Одно худо — однобуквенные идентификаторы не читаются и рябят в глазах среди запятых, скобок, пробелов.


Сижу разгребаю вот это
!x='a'..'z'   //остальные разряды идут по полному алфавиту
i<7?a+='+x'+i
^('s+=1;s==1000000?p=' + a)
p

Чем дальше ковыряюсь, тем больше ощущения что это просто отписка. Ибо
!x='a'..'z'  
i<7?a+='+x'+i
a             // здесь +x0+x1+x2+x3+x4+x5+x6

Что нам дает выполнение этого выражения?
^('p=' + a)   // Operators: ^Expression Object reference not set to an instance of an object.

Мда. Копируем содержимое a в прямо в интерпретатор, что бы обойти евал
p=+x0+x1+x2+x3+x4+x5+x6 // Error: Name x0 doesn't resolved.

Предсказуемый результат. Исправляем
i<7?a+='+x.'+i
p=+x.0+x.1+x.2+x.3+x.4+x.5+x.6 // Operators: p=a.0+a.1+a.2+a.3+a.4+a.5+a.6
                               // Operator: .
                               // Error: 'Point' operation for the RS.DOM.Types.String doesn't support.

Фиг с ним с багами, пытаемся понят смысл в коде
Судя по всему выражение
^('s+=1;s==1000000?p=' + a)

Должно пробежать по s, на каждой итерации сделать
p=+x.0+x.1+x.2+x.3+x.4+x.5+x.6

Раз тип x — массив строк (не важно пока что '123'..'456' не скомпилируется), то оператор + судя по всему их конкатенирует.
На каждой итерации к p должна прибавиться 'a'+'b'+...'g', или 'abcdefg'
Забьем что контекст s не определен и допустим что s пробегает по всему диапазону Int32 (а может диапазон найдет мудрый оптимизатор). На миллионной итерации мы получим миллион повторений 'abcdefg' в одной строке p.

Печально что это выдается за некий псевдо рабочий код. Было бы там просто 40 багов — фиг с ним. Но даже если вылизать все баги и наделить интерпретатор оптимизатором, в результате получим миллион 'abcdefg'

Зато короче Немерловского — этого не отнять.
Зато если мы поправим код что бы он брал символы из всего алфавита (думается что это концептуально можно и без eval-а). То этот код будет занимать несколько больше символов. Насколько — сложно представить.



Однако, интересную идею нащупал Егор. При некоторых предположениях о работе интерпретатора код действительно будет рабочим и даже выполняться с оптимальной алгоритмической сложностью. То есть что-то в идее все-таки есть.

Сейчас думаю нужен ли вообще сам язык для исследования этого подхода?
И мнение мое следующее. Язык РС нужен лишь для того что бы записывать решения наикратчайшим образом.
Альтернативное решение — библиотечное. Допустим будет библиотека неких примитивных конструкций (пусть некие счетчики/итераторы, подсаживаемые на встроенные в дотнет структуры данных, комбинаторы над ними) ну и метод Eval, куда передаем скомбинированное Eval-дерево.
Что мы получаем?
  1. Возможность комбинации примитивов для решения задачи методом любимого языка C#/Nemerle/F#/VB со всеми лямбдами, замыканиями, рекурсиями, обобщенными типами, екстеншн методами, монадами и прочим, включая весь FCL и не только. Можно делать такую библиотеку и для других языков, но вряд ли на стадии исследований.
  2. Строковый Eval по строке не нужен, т.к. примитивы комбинируются средствами любимого языка.
  3. отсутствие языка дает возможность не сосредотачивать внимание на синтаксисе этого языка и экспериментировать лишь с семантикой решений. Если что выгорит — синтаксис вытечет более простыми усилиями.
  4. Возможность комбинации примитивов для решения через Expression Trees. На стадии исследования оно не надо, а если что выгорит (оптимизма не испытываю), можно будет сделать запись на ET более короткой, чем вручную вызывать комбинирующие функции.
  5. Библиотеке не нужно быть самодостаточной для решения всех задач, поэтому в исследованиях можно сделать акцент на действительно интересные и перспективные вещи, а не попытку решить через этот механизм все задачи, вплоть до поиска корней методом Ньютона, чего на РС мы так и не увидели.
  6. При некотором успехе можно будет дополнить библиотеку неким DSL, который будет трансформироваться в Eval-дерево. Получится возможность комбинировать дерево как кодом используемого язка, так и DSL-ем.

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

Сам настроен скорее скептически. Т.е. если бы передо мной встала задача генерации размещений и была бы под рукой такая библиотека, то я не уверен, что я бы ей воспользовался для решения.
По сути если мы из записи Егора (извиняюсь, плохо помню а искать доллго)
C!=D? + (E!=C &&E!=D?E) ...
Уберем декларативные описания условий на вход в итерацию и заменим их явными вызовами комбинаторов
new []
{
   C=Range('a'..'z'),
   D=C.ExceptCurrentValue(), или
   E=D.Where(d => d != D.Current),
}

(выразил через поля анонимного типа, возможны и другие варианты. Т.е. это объявление служит для декларации блока выражений для вычислений)
То фактически облегчится задача оптимизирующего перебора значений счетчиков. Написано как бы то же (только длинее), но есть явные инструкции по копированию и фильтрации значений перебора "взять значения перебора из C кроме текущего значения".

Так вот, если бы был такой аппарат, то я совсем не уверен, заюзал бы его для решения размещений. Скорее нет чем да. По мне — так это теже самые декларации циклов, как если бы их написали через for-ы.
Но может кому такое и сгодится. Некоторую пользу можно найти от рантайм комбинирования Eval-дерева ...

Я не пытаюсь продвинуть себя в качестве идеолога. Лишь предложил альтернативный путь развития, который потенциально ближе к использованию и исследованиям чем РС, потому что встраиваем и комбинируем с возможностями платформы. Только вот короткого синтаксиса на первых порах не предвидится.
Re[67]: Ультракороткий язык программирования RS
От: Ночной Смотрящий Россия  
Дата: 27.12.10 22:43
Оценка:
Здравствуйте, PC_2, Вы писали:

НС>>А сколько ты хочешь? Интересует не часовой рейт, а общая сумма.


PC_>Решили с майтоном скинуться ?


Ты на вопрос ответь.
Re[97]: Ультракороткий язык программирования RS
От: Erop Россия  
Дата: 28.12.10 04:40
Оценка:
Здравствуйте, samius, Вы писали:

S>Аха, как с 30^5


Не ссорьтесь, горячие финские парни! Тем более из-за ерунды.
Я так думаю, что 30^5 от 30*29*28*27*26 отличается процентов на 20...
Так что в качестве оценки 30^5 очень даже ничего...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[103]: Ультракороткий язык программирования RS
От: Erop Россия  
Дата: 28.12.10 04:47
Оценка:
Здравствуйте, samius, Вы писали:

S>Чего это за хрень? Продолжи с номера 42 что ли


Я вот не пойму, зачем вообще по номерам позиционироваться? Начать с заданной строки НАМНОГО ПРОЩЕ...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.