Здравствуйте, PC_2, Вы писали:
AV>>Вот только первоначально был несколько другой код, у которого очень интересно поведение. В двух соседних строках одна и та же переменная является разными сущностям. И ладно бы сначала была массивом, а потом на его базе (не)явно строилась последовательность. Но в примерах последовательность ни с того ни с сего превращается в массив.
PC_>о_О
Кстати, есть еще один вопрос. Положим есть уже готовый массив из 100 элементов. Мне надо возвести в квадрат первый элемент и другие которые удовлетворяют определенному условию. Например, индексы этих элементов являюся квадратами целых чисел. Как это будет выглядеть?
S>понимаешь, когда ты говоришь что у меня здесь используются генераторы — это не велосипед. Когда ты говоришь что изобрел переборщики — то это велосипед, причем без сидения.
Ну опять 25. Это велосипед без сиденья, но зато запишется короче и понятней ...
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
AV>Кстати, есть еще один вопрос. Положим есть уже готовый массив из 100 элементов. Мне надо возвести в квадрат первый элемент и другие которые удовлетворяют определенному условию. Например, индексы этих элементов являюся квадратами целых чисел. Как это будет выглядеть?
x=1..100
(sqrt(I)*sqrt(I)==I?
х.I*=х.I)
так. Правда функции корня у меня нету
Ну и на каком языке это будет еще короче ?
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Здравствуйте, samius, Вы писали:
S>Вот как ляжет (I>10?I)? Сам I придется получать из некого индекса вычислителя, так?
Так. По идее у тебя будет код, который добывает I. (он в КУДЕ уже есть)
Потом сравним, и маскируем те из вычичлителей, кому не надо. А если можно упростить ещё до запуска параллельного кода, то можно и проредить.
S>Результат генератора так же можно получить из индекса вычислителя ничуть не хуже чем I, только число итераций будет известно заранее. Смотрим на Range генератора и знаем сколько раз надо зарядить вычислители.
Нет, ты не понимаешь, все вычичлители выполняют ОДИН И ТОТ ЖЕ КОД. Просто с разными данными. И ещё паттерны доступа к памяти важны.
Руками писать там не так уж и просто. Очень низкоуровнево получается. Можно на mp, но при больших ограничениях зело.
Но это всего лишь один из примеров применения такой фигни.
S>(I%10000+42==0?) S>Погонишь по всему диапазону?
Это не прогонишь. Ну и что. Зато многое другое прогонишь...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, samius, Вы писали:
S>>Вот как ляжет (I>10?I)? Сам I придется получать из некого индекса вычислителя, так? E>Так. По идее у тебя будет код, который добывает I. (он в КУДЕ уже есть) E>Потом сравним, и маскируем те из вычичлителей, кому не надо. А если можно упростить ещё до запуска параллельного кода, то можно и проредить.
S>>Результат генератора так же можно получить из индекса вычислителя ничуть не хуже чем I, только число итераций будет известно заранее. Смотрим на Range генератора и знаем сколько раз надо зарядить вычислители. E>Нет, ты не понимаешь, все вычичлители выполняют ОДИН И ТОТ ЖЕ КОД. Просто с разными данными. И ещё паттерны доступа к памяти важны.
Я это прекрасно понимаю.
Вот представь что вместо сравнивания и маскирования ты прибавляешь к индексу вычислителя 10 и ничего не сравниваешь. E>Руками писать там не так уж и просто. Очень низкоуровнево получается. Можно на mp, но при больших ограничениях зело.
Что значит руками писать?
E>Но это всего лишь один из примеров применения такой фигни.
S>>(I%10000+42==0?) S>>Погонишь по всему диапазону? E>Это не прогонишь. Ну и что. Зато многое другое прогонишь...
а смысл? Если нужные значения получаются из индекса вычислителя нехитрыми действиями.
Вместо (I>10?I) можно писать (I+10). Даже короче
Здравствуйте, ambel-vlad, Вы писали:
AV>Кстати, есть еще один вопрос. Положим есть уже готовый массив из 100 элементов. Мне надо возвести в квадрат первый элемент и другие которые удовлетворяют определенному условию. Например, индексы этих элементов являюся квадратами целых чисел. Как это будет выглядеть?
А что тут сложного?
E X = 1..100
E !Y = 1..10
E X.(Y*Y) = X.(Y*Y) * X.(Y.Y)
Тебе это было надо?
А ведь, наверное, можно и так:
E !Y = 1..10
E !Z = (Y > 0 ? Y*Y)
E X.Z = X.Z * X.Z
А было бы круто, если бы было можно и так:
E !Z = Y*Y
E X.Z = X.Z*X.Z
Или ты хочешь в виде: (I-полный квадарат? I*I : I)?
Если так, то я не знаю, как просто записать предикат "является квадратом целого"
Ну и потом не совсем понятно, зачем такие вещи вообще надо уметь удобно записывать...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, samius, Вы писали:
S>Вот представь что вместо сравнивания и маскирования ты прибавляешь к индексу вычислителя 10 и ничего не сравниваешь.
Ну то есть последовательность I мы заменяем на 10*I? Или на I + 10?
И то и то несложно сделать...
E>>Руками писать там не так уж и просто. Очень низкоуровнево получается. Можно на mp, но при больших ограничениях зело. S>Что значит руками писать?
На КУДАшном компиллере С.
S>Вместо (I>10?I) можно писать (I+10). Даже короче
так в RS так можно.
Все эти (I>10?I) появились потому, что надо было менять ЧАСТЬ массива...
Если ты можешь описать прямо переборщик этой части, то тоже можно...
Должно быть что-то вроде:
E X = 1..100
E !V = 10..100
E X.V = ... что-то ещё...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, ambel-vlad, Вы писали:
AV>>Кстати, есть еще один вопрос. Положим есть уже готовый массив из 100 элементов. Мне надо возвести в квадрат первый элемент и другие которые удовлетворяют определенному условию. Например, индексы этих элементов являюся квадратами целых чисел. Как это будет выглядеть?
E>А что тут сложного? E>E X = 1..100 E>E !Y = 1..10 E>E X.(Y*Y) = X.(Y*Y) * X.(Y.Y)
1000 итераций вместо 10и?
E>Тебе это было надо? E>А ведь, наверное, можно и так: E>E !Y = 1..10 E>E !Z = (Y > 0 ? Y*Y) E>E X.Z = X.Z * X.Z
А массив где?
E>А было бы круто, если бы было можно и так: E>E !Z = Y*Y E>E X.Z = X.Z*X.Z
E>Или ты хочешь в виде: (I-полный квадарат? I*I : I)? E>Если так, то я не знаю, как просто записать предикат "является квадратом целого" E>Ну и потом не совсем понятно, зачем такие вещи вообще надо уметь удобно записывать...
Здравствуйте, samius, Вы писали:
E>>А что тут сложного? E>>E X = 1..100 E>>E !Y = 1..10 E>>E X.(Y*Y) = X.(Y*Y) * X.(Y.Y) S>1000 итераций вместо 10и?
Почему? 10 итераций.
E>>Тебе это было надо? E>>А ведь, наверное, можно и так: E>>E !Y = 1..10 E>>E !Z = (Y > 0 ? Y*Y) E>>E X.Z = X.Z * X.Z S>А массив где?
Массив -- X.
Описан выше в предыдущем примере
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, samius, Вы писали:
S>>Вот представь что вместо сравнивания и маскирования ты прибавляешь к индексу вычислителя 10 и ничего не сравниваешь. E>Ну то есть последовательность I мы заменяем на 10*I? Или на I + 10? E>И то и то несложно сделать...
Вроде про + речь шла, ну да ладно.
S>>Вместо (I>10?I) можно писать (I+10). Даже короче E>так в RS так можно.
E>Все эти (I>10?I) появились потому, что надо было менять ЧАСТЬ массива... E>Если ты можешь описать прямо переборщик этой части, то тоже можно... E>Должно быть что-то вроде: E>E X = 1..100 E>E !V = 10..100 E>E X.V = ... что-то ещё...
Это генераторы, а не переборщики. Переборщик — это как я понимаю, генератор + условие, попал или нет.
И заслуги RS в этом нет, т.к. он всего лишь десятитысячный язык с генератором, только с ущербным. Даже в C# генератор гибче и сильнее.
Здравствуйте, PC_2, Вы писали:
PC_>кароче это, сделал я круглые скобки как обещал. Правда слегка помучался. PC_>Реально синтаксис стал проще и лучше, можно писать вот так:
PC_>
Здравствуйте, PC_2, Вы писали:
S>>Повеяло лиспом
PC_>Ну нормальненько так, это кошерней чем подчеркивание при переносе строки Васика, PC_>или быдлоточка с запятой в конце каждой Си строки
А выражения в одной строке чем разделять?
Здравствуйте, samius, Вы писали:
S>Здравствуйте, PC_2, Вы писали:
S>>>Повеяло лиспом
PC_>>Ну нормальненько так, это кошерней чем подчеркивание при переносе строки Васика, PC_>>или быдлоточка с запятой в конце каждой Си строки S>А выражения в одной строке чем разделять?
ничем
По умолчанию одна строчка = одно выражение
Если выражение живет на двух и более строчках, то добавляем обычные скобки.
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
S>Это генераторы, а не переборщики. Переборщик — это как я понимаю, генератор + условие, попал или нет. S>И заслуги RS в этом нет, т.к. он всего лишь десятитысячный язык с генератором, только с ущербным. Даже в C# генератор гибче и сильнее.
Ну так как генерить пароли произвольной длины на гибком шарп генераторе ?
Джедайская методика через рекурсию для особо смекалистых ?
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Здравствуйте, PC_2, Вы писали:
S>>А выражения в одной строке чем разделять?
PC_>ничем
PC_>По умолчанию одна строчка = одно выражение
По умолчанию "E " работал разделителем. Теперь ты его выпилил PC_>Если выражение живет на двух и более строчках, то добавляем обычные скобки.