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

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


E>>>Не понятно, зачем вообще уметь нумеровать варианты любого переборщика.

S>>Для Paging-а хотя бы

E>Пока не понял о чём ты?

Постраничный вывод сгенерированных паролей. На странице 50 штук, надо показать 2500-ую страницу. Все пароли генерить не надо.
Re[110]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 28.12.10 08:18
Оценка:
Здравствуйте, Erop, Вы писали:

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


S>>Да, а потом посмотрим, может ли его решение без изменений продолжать с любого номера


E>С любого номера продолжать неудобно, да и дорого. Надо сами номера считать, а потом от номера к позициям счётчика перейти...

E>А если ты о коде, который будет продолжать с любого места, то его не сильно сложнее написать, чем с abcde...
E>А в некотором смысле, даже проще

Да, вот еще что. Алфавит может быть задан не последовательно, и не только из одних букв.
['1'..'4'] + ['z'..'a'] + '-#%&*$@!~_+'
Так что с номером будет попроще.
Re[27]: Ультракороткий язык программирования RS
От: ambel-vlad Беларусь  
Дата: 28.12.10 09:38
Оценка:
Здравствуйте, samius, Вы писали:

S>Ему даже отрицательные числа не по-зубам кроме как в форме X:=0-1.


Да?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[28]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 28.12.10 09:41
Оценка:
Здравствуйте, ambel-vlad, Вы писали:

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


S>>Ему даже отрицательные числа не по-зубам кроме как в форме X:=0-1.


AV>Да?

Это на той версии интерпретатора, с которой начинали. Уже по зубам.
Re[29]: Ультракороткий язык программирования RS
От: ambel-vlad Беларусь  
Дата: 28.12.10 09:46
Оценка:
Здравствуйте, samius, Вы писали:

S>>>Ему даже отрицательные числа не по-зубам кроме как в форме X:=0-1.


AV>>Да?

S>Это на той версии интерпретатора, с которой начинали. Уже по зубам.

Уже понял.

Кстати, раз у тебя есть интерпретатор и ты с ним играешься, то можешь ответить на один вопрос. Как создавать многомерные (достаточно двумерного) массивы строк?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[30]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 28.12.10 09:57
Оценка: 3 (1)
Здравствуйте, ambel-vlad, Вы писали:

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


AV>Кстати, раз у тебя есть интерпретатор и ты с ним играешься, то можешь ответить на один вопрос. Как создавать многомерные (достаточно двумерного) массивы строк?


public enum TokenType
    {
        None,
        Area,
        Bracket,
        Number,
        NumberCollection,
        StringCollection,
        NumberCollections,
        Float,
        String,
        Item,
        Operator,
        Name,
        MutableName,
        Bool,
        Len,
        New,
        Strategy,
        Me,
        Mutable,
        Null,
        SubExpression,
        Rational
    }


Боюсь что никак. NumberCollections заложено, а StringCollections — нет. Массив Float-ов даже одномерный не создать.
Re[31]: Ультракороткий язык программирования RS
От: ambel-vlad Беларусь  
Дата: 28.12.10 10:12
Оценка:
Здравствуйте, samius, Вы писали:

AV>>Кстати, раз у тебя есть интерпретатор и ты с ним играешься, то можешь ответить на один вопрос. Как создавать многомерные (достаточно двумерного) массивы строк?


S>
S>public enum TokenType
S>    {
S>        None,
S>        Area,
S>        Bracket,
S>        Number,
S>        NumberCollection,
S>        StringCollection,
S>        NumberCollections,
S>        Float,
S>        String,
S>        Item,
S>        Operator,
S>        Name,
S>        MutableName,
S>        Bool,
S>        Len,
S>        New,
S>        Strategy,
S>        Me,
S>        Mutable,
S>        Null,
S>        SubExpression,
S>        Rational
S>    }
S>


S>Боюсь что никак. NumberCollections заложено, а StringCollections — нет. Массив Float-ов даже одномерный не создать.


Нда, как говорится, мать-мать-мать. Привычно послышалось эхо.

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

PC_>>>>Ну какими макросами Немерла такое реализуешь ?


M>>>Такое даром никому не надо.

S>>Явно имеется в виду неявное распространение NULL. Частично реализовано в C#; для полного щастя надо бы реализовать lifted member access operator, известный под псевдонимом ".?". Который вместо бросания NRE возвращает null.
S>>Народ его жаждет довольно-таки часто, т.к. это позволяет намного реже писать явные сравнения с null.

PC_>Это не тот NULL который null в шарпе.


PC_>Это, стащено с баз данных.

PC_>Т.е.

PC_>NULL!=NULL


PC_>NULL+1 -> NULL

PC_>1+10*100-NULL -> NULL

PC_>arr:=1..5

PC_>arr.10000 -> NULL

PC_>и так далее.

PC_>Очень удобно, если условие гдето оборачивается в NULL не нужно нигде писать ифы, проверки и тд.
PC_>Результирующее условие будет NULL, тоесть будет пропущено. Ибо любая операция с NULL дает NULL

Угу, а потом думай, где же собака порылась, то бишь проблема возникла.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[32]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 28.12.10 10:27
Оценка:
Здравствуйте, ambel-vlad, Вы писали:

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


AV>>>Кстати, раз у тебя есть интерпретатор и ты с ним играешься, то можешь ответить на один вопрос. Как создавать многомерные (достаточно двумерного) массивы строк?


S>>Боюсь что никак. NumberCollections заложено, а StringCollections — нет. Массив Float-ов даже одномерный не создать.


AV>Нда, как говорится, мать-мать-мать. Привычно послышалось эхо.


AV>Большое спасибо тебе

Не за что. Можно так же отметить, что неясно как создать одномерный массив строк указанной длины. Создание через 'a'..'z' для этого явно не подходит.
Оператор 'Dimension' (D) определен только для Number.
Вообще синтаксис объявлений выглядит затычкой для укорачивания синтаксиса, а не сколько-нибудь продуманным решением.
Re[33]: Ультракороткий язык программирования RS
От: ambel-vlad Беларусь  
Дата: 28.12.10 11:18
Оценка:
Здравствуйте, samius, Вы писали:

AV>>>>Кстати, раз у тебя есть интерпретатор и ты с ним играешься, то можешь ответить на один вопрос. Как создавать многомерные (достаточно двумерного) массивы строк?


S>>>Боюсь что никак. NumberCollections заложено, а StringCollections — нет. Массив Float-ов даже одномерный не создать.


AV>>Нда, как говорится, мать-мать-мать. Привычно послышалось эхо.


AV>>Большое спасибо тебе

S>Не за что. Можно так же отметить, что неясно как создать одномерный массив строк указанной длины. Создание через 'a'..'z' для этого явно не подходит.
S>Оператор 'Dimension' (D) определен только для Number.

Тогда еще один вопрос позволю себе. Насколько я понял 3D4 создает двумерный массив. А трехмерных будет 3D4D6?

S>Вообще синтаксис объявлений выглядит затычкой для укорачивания синтаксиса, а не сколько-нибудь продуманным решением.


Угу, аналогично. Кстати, насколько я понимаю, то на инициализации многомерных массивов РС по краткости проиграет тому же Питону. В Питоне ведь можно и так нарисовать — "data = [1,2], [2,3], [4,5]]". А в РС так не выкрутишься. Мои рассуждения верны?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[9]: Ультракороткий язык программирования RS
От: ambel-vlad Беларусь  
Дата: 28.12.10 11:33
Оценка: +2
Здравствуйте, Mamut, Вы писали:

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


PC_>>
PC_>>!x='0','1'
PC_>>i<5?a+='+x'+i
PC_>>^('s,=' + a)
PC_>>s.8 //получили двоичное число для 8
PC_>>


PC_>>а вот так получился конвертор с десятичной системы в шестнадцетиричную


PC_>>
PC_>>!x='0'..'9', 'a'..'f'
PC_>>i<3?a+='+x'+i
M>PC_>^('s,=' + a)
PC_>>s.500 //вывели 1f4
PC_>>


M>Зачем тут нужен eval?


Ну как же без евала. Это ж такая мегафича, что ее можно использовать повсюду
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[34]: Ультракороткий язык программирования RS
От: samius Япония http://sams-tricks.blogspot.com
Дата: 28.12.10 11:53
Оценка: 4 (2)
Здравствуйте, ambel-vlad, Вы писали:

AV>Тогда еще один вопрос позволю себе. Насколько я понял 3D4 создает двумерный массив. А трехмерных будет 3D4D6?

Увы, не удалось заставить работать даже 3D4. Заниматься реверс-инженерингом по коду интерпретатора лень. Так что

S>>Вообще синтаксис объявлений выглядит затычкой для укорачивания синтаксиса, а не сколько-нибудь продуманным решением.


AV>Угу, аналогично. Кстати, насколько я понимаю, то на инициализации многомерных массивов РС по краткости проиграет тому же Питону. В Питоне ведь можно и так нарисовать — "data = [1,2], [2,3], [4,5]]". А в РС так не выкрутишься. Мои рассуждения верны?

Верны ли — . Но соглашусь с ними.
Я бы вообще посоветовал остерегаться с экспериментами:
1..4\+                  // 11   
1..4\*                  // 24 это похоже на правду, но
1..4\+ + 1..4\*         // 24
1,2,3,4\+ + 1,2,3,4\*   // 576 Видимо считается как 1,2,3,4,(+(+1)),2,3,4\*
1+1,2+2                 // 3

Т.е. выражения не проработаны чуть более чем полностью, куда там более сложные конструкции с использованием выражений (такие как инициализация чего-либо).
Поучительный пример интерпретации языка без грамматики
Re[35]: Ультракороткий язык программирования RS
От: ambel-vlad Беларусь  
Дата: 28.12.10 12:04
Оценка:
Здравствуйте, samius, Вы писали:

AV>>Тогда еще один вопрос позволю себе. Насколько я понял 3D4 создает двумерный массив. А трехмерных будет 3D4D6?

S>Увы, не удалось заставить работать даже 3D4. Заниматься реверс-инженерингом по коду интерпретатора лень. Так что

Надо будет попробовать у автора распросить.

S>>>Вообще синтаксис объявлений выглядит затычкой для укорачивания синтаксиса, а не сколько-нибудь продуманным решением.


AV>>Угу, аналогично. Кстати, насколько я понимаю, то на инициализации многомерных массивов РС по краткости проиграет тому же Питону. В Питоне ведь можно и так нарисовать — "data = [1,2], [2,3], [4,5]]". А в РС так не выкрутишься. Мои рассуждения верны?

S>Верны ли — . Но соглашусь с ними.


S>Я бы вообще посоветовал остерегаться с экспериментами:

S>
S>1..4\+                  // 11   
S>1..4\*                  // 24 это похоже на правду, но
S>1..4\+ + 1..4\*         // 24
S>1,2,3,4\+ + 1,2,3,4\*   // 576 Видимо считается как 1,2,3,4,(+(+1)),2,3,4\*
S>1+1,2+2                 // 3
S>


Нда.

S>Поучительный пример интерпретации языка без грамматики


Согласен.

Большое спасибо.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[35]: Ультракороткий язык программирования RS
От: ambel-vlad Беларусь  
Дата: 28.12.10 12:06
Оценка: :))
Здравствуйте, samius, Вы писали:

AV>>Тогда еще один вопрос позволю себе. Насколько я понял 3D4 создает двумерный массив. А трехмерных будет 3D4D6?

S>Увы, не удалось заставить работать даже 3D4.

Это потому что у тебя Lite версия.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[57]: Ультракороткий язык программирования RS
От: Erop Россия  
Дата: 28.12.10 12:37
Оценка:
Здравствуйте, Mamut, Вы писали:

E>>Да? Объясни, что было конструктивного в твоём сообщении о том, что для того, чтобы ввести в язык RND PC_2 понадобилось её как-то назвать?


M>Вы явно клоны. Перчитай внимательно мое сообщение. Там говорится о том, что PC_2 обсирает другие языки, в частности, из-за того, что там много встроенных функций, в ответ на что я говорю что? Иди читай


А что в этом конструктивного?

Суть вашего диалога:
Ты: А вызови функцию RND
Он: Ну так будет
Ты: А! Функция! Функция!

А ещё ты синус мог попросить вычислить, например...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[109]: Ультракороткий язык программирования RS
От: Erop Россия  
Дата: 28.12.10 12:58
Оценка:
Здравствуйте, samius, Вы писали:

S>Но разница есть между входом в любое место дерева и фильтрацией всех паролей.

Тоже нет.
Вообще, для твоей задачи -- остановить/продолжить перебор -- уметь считать итерации не надо.

S>Но элементарная логика декомпозиции задач генерации перестановок и фильтрации намекает на то что должны быть отдельные решения для перестановок и фильтрации, и что если их соединить, получится алгоритм поиска размещений. Это нормальная практика — комбинировать решения. Ты же вместе с ТС предлагаешь для решения задачи размещений создать решение для перестановок, извратить его фильтрацией, а для задачи получения перестановок (которую возможно нужно будет решать) использовать другой код. Это негибко. Я к этому не привык. Я привык к декомпозиции решений. Ну и зарапортовался малость.


Про другой код не понимаю. Тебя всё время сносит на обсуждение каких-то процедурных аспектов перебора. В частности вопрос "а в каком порядке вы перебираете" -- он очень процедурный, однако. На самом деле УДОБНОЙ конструкции, чтобы задать такой вопрос в RS сейчас нет. Насколько я понимаю задумку PC_2 в окончательной версии будет можно сказать что-то типа "перебирай параллельно пары чисел и строк, пока не встретишь строку, которой соответствует 1000000"
S>Красиво поступил Владимир — использовал функции высшего порядка, решив одновременно несколько задач.
У него получилась всё та же фильтрация в последнем итераторе...

S>Есть еще один ответ на твой вопрос. Все пароли фильтровать можно эффективнее. Но это все равно хуже, чем не получать ненужные.

Это я тоже не понимаю.

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

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


S>>Но разница есть между входом в любое место дерева и фильтрацией всех паролей.

E>Тоже нет.
E>Вообще, для твоей задачи -- остановить/продолжить перебор -- уметь считать итерации не надо.

Уже отвечал на полностью идентичное сообщение
Re[12]: Ультракороткий язык программирования RS
От: Пацак Россия  
Дата: 28.12.10 13:18
Оценка:
Здравствуйте, hardcase, Вы писали:

H>А Вы кстати откройте для себя HQ9+ — PC чем-то не него смахивает.


Скорее на brainfuck после gzip'а.
Ку...
Re[82]: Ультракороткий язык программирования RS
От: Erop Россия  
Дата: 28.12.10 13:57
Оценка:
Здравствуйте, ambel-vlad, Вы писали:

E>>Я так тебя понял, что ты просишь описать переборщик каких-то частичных сумм в двумерном массиве. Только я не понял, каких именно...

E>>Если список сумм по первой/второй координате, то это вообще не проблема, однако. Что-то типа

E>>x.I.J\J\+


E>>Но ты хочешь какую-то другую сумму. Только я не понял, зачем ты хочешь её от ТС. Сам, что ли не можешь записать?


AV>Вот условие Re[60]: Ультракороткий язык программирования RS
Автор: ambel-vlad
Дата: 24.12.10


AV>Вот решение — Re[78]: Ультракороткий язык программирования RS
Автор: ambel-vlad
Дата: 27.12.10


Ты можешь понятно объяснить, что ты хочешь вот в этой фразе:

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


Ну нет в RS кортежей. Если вдруг бы были, то код бы был какой-то такой.
x -- первый массив (массив значений)
y -- второй массив (массив индексов к ним)

Для начала выразим концепцию "сумма отрезка x с позиции p по позицию q"
В зависимости от ума интерпретатора это будет либо (x.(I>p&I<q?I))\I\+

Либо (x.(p..q))\+ Я буду вторым вариантом пользоваться, так как он компактнее.

Дальше, если z -- это пара (p, q), то наше выражение будет таким:
(x.(z.1..z.2))\+

Если у нас в языке таки есть кортежи, то у нас бывает строчка таких пар. Пусть w обозначает такую строчку.
Тогда сумма для всей строчки пар будет выглядеть так:
(x.(w.I.1..w.I.2))\+

Осталось добавить итерацию по всем строкам кортежа. Сейчас в RS это сделать неудобно. Но я давно уже предлагаю придумать способ ссылаться на конкретные куски выражения. На конкретные позиции переборщика, на переборщики и т. д.

Хороший синтаксис для этой штуки пока не нашёлся, в том числе и потому, что нет до конца понятной семантики.
Но, если предположить, например, что после любого куска в скобках можно написать : и потом в скобках какое-то выражение, ЗНАЧЕНИЕ которого позволит сослаться на тот кусок, например заключив его в (:тут ID

То можно будет написать так:
(x.(y.J.I.1..y.J.I.2)::'k')\(:'k' I\+

Это, собственно, всё...


AV>Пусть тебя не смущает, что индексы считаются с 1. Это несущественный момент. Если захочешь, то внесу изменения для того, чтобы индексы считались с 0.

Меня лично смущает совсем другое...
Стиль ведения дискуссии С ОБЕИХ СТОРОН
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[6]: Ультракороткий язык программирования RS
От: Пацак Россия  
Дата: 28.12.10 14:42
Оценка:
Здравствуйте, PC_2, Вы писали:

PC_>Не просто параметрического. Это инстанцирование классов в зависимости от обстоятельств.


Угу. Захотелось поделить что-то на числа от 1 до 100000 — инстанцировали массив из миллиона элементов. Очень удобно, да.
Ку...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.