Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Комбинации алфавита 
V
    Опции темы
BlackRu
Дата 18.7.2014, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 14.9.2009

Репутация: нет
Всего: 4



Доброго дня, всем. Такой вопрос.
Есть алфавит из трех символов a b c, нужно вывести все возможные комбинации, в смысле abc. Т.е. примено так: 
aaa
aab 
...
acb
....
ccc
т.е. 27 их вроде бы получается


--------------------
Удалена администрацией форума
PM MAIL WWW Skype   Вверх
baldina
Дата 18.7.2014, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



это размещения

а проблема в чем?
PM MAIL   Вверх
BlackRu
Дата 18.7.2014, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 14.9.2009

Репутация: нет
Всего: 4




cut



Пойду, подумаю еще... 

Видимо, нужно размещение с повторением.
3 элемента по 3

Это сообщение отредактировал(а) BlackRu - 18.7.2014, 17:25


--------------------
Удалена администрацией форума
PM MAIL WWW Skype   Вверх
baldina
Дата 18.7.2014, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



да. есть несложный рекурсивный алгоритм.
PM MAIL   Вверх
BlackRu
Дата 18.7.2014, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 14.9.2009

Репутация: нет
Всего: 4



baldina, буду благодарен за любой пример по этой теме. 
только на php 

update: Нашел

Это сообщение отредактировал(а) BlackRu - 18.7.2014, 20:50


--------------------
Удалена администрацией форума
PM MAIL WWW Skype   Вверх
baldina
Дата 18.7.2014, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



что-то вроде http://ideone.com/TimRl3
PM MAIL   Вверх
BlackRu
Дата 19.7.2014, 05:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 14.9.2009

Репутация: нет
Всего: 4



Круто. Я без рекурсии нашел, но ваш вариант интереснее. 

Это сообщение отредактировал(а) BlackRu - 19.7.2014, 05:17


--------------------
Удалена администрацией форума
PM MAIL WWW Skype   Вверх
BlackRu
Дата 19.7.2014, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 14.9.2009

Репутация: нет
Всего: 4



  Эх, я часто понимаю общий смысл, но не могу вникнуть в чужие скрипты.  

Из чужого скрипта. Очень долго медитировал перед этой строчкой:
Код

echo strtr(str_pad(base_convert($i, 10, $b), $N, "0",
        STR_PAD_LEFT), $base, $A),"\r\n";

У меня глаза рабегаются, когда вижу три функции в одной строчке.

Кстати, будет ли правильно назвать такую строчку лямбдой?


В итоге, чтобы понять, написал так:

Код

<?
$a=-1;
while($a++<26) {
   $c=str_pad(base_convert($a, 10, 3), 3, "0", STR_PAD_LEFT);
 $b=strtr($c, "012", "abc");
       echo "$b\r\n";
}
?>

Не совсем так, но  светлые лучи стали видны. 

Это сообщение отредактировал(а) BlackRu - 19.7.2014, 12:46


--------------------
Удалена администрацией форума
PM MAIL WWW Skype   Вверх
baldina
Дата 19.7.2014, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



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

очевидно используется нерекурсивный алгоритм, основанный на том, что есть взаимно-однозначное соответствие между искомым множеством и множеством представлений чисел, записанных в позиционной системе счисления по основанию равному мощности алфавита.
последовательно строятся все числа, в их представлении цифры заменяются на символы алфавита.
base_convert строит представление числа, str_pad дополняет слева нулями, strtr заменяет цифры на символы алфавита

Добавлено через 1 минуту и 39 секунд
зы. вот в моем примере - лямбда
PM MAIL   Вверх
BlackRu
Дата 19.7.2014, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 14.9.2009

Репутация: нет
Всего: 4



baldina, Многократно спасибо. Когда переделал, стало понятно. 



Это сообщение отредактировал(а) BlackRu - 19.7.2014, 15:57


--------------------
Удалена администрацией форума
PM MAIL WWW Skype   Вверх
BlackRu
Дата 20.7.2014, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 14.9.2009

Репутация: нет
Всего: 4




Цитата

зы. вот в моем примере - лямбда 


Я так понял, имеется в виду тут:

Код

PermutationsRep (['a','b','c'], function ($p){




--------------------
Удалена администрацией форума
PM MAIL WWW Skype   Вверх
baldina
Дата 20.7.2014, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



да

PM MAIL   Вверх
BlackRu
Дата 21.7.2014, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 14.9.2009

Репутация: нет
Всего: 4



 Я так понимаю лямбда и callback это одно и то же.

Цитата

Об обратном вызове можно думать как о действии, передаваемом некоторой основной процедуре в качестве аргумента. И это действие может рассматриваться как:

    подзадача и использоваться для обработки данных внутри этой процедуры;
 

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



--------------------
Удалена администрацией форума
PM MAIL WWW Skype   Вверх
baldina
Дата 21.7.2014, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



есть вполне себе определение: это анонимная функция, обычно объявленная по месту использования, часто допускает замыкания.
в php определено так же, и называется анонимной функцией

т.е.
Код

function echo_result_of ($function) {
  echo $function ();
}

// не лямбда
function foo () {
  return 'foo';
}

echo_result_of ('foo');

// лямбда
echo_result_of  (function () {
  return 'anonymous';
});

// с замыканием
$str = 'some string';
echo_result_of  (function () use ($str) {
  return $str;
});



Это сообщение отредактировал(а) baldina - 21.7.2014, 14:02
PM MAIL   Вверх
BlackRu
Дата 21.7.2014, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 14.9.2009

Репутация: нет
Всего: 4



baldina, спасибо. Очень доходчиво. 
Я набрел на такую статью:
http://it.kgsu.ru/Lisp/lisp0001.html
Она меня и натолкнула на некоторые мысли.

Кстати, оттдуа. 
Цитата

  Например, ряд языков программирования обладает (быть может, без прямого намерения своих создателей) чертами, навеянными лямбда-исчислением.


Но в php лямбда - этот не совсем то же самое что и в lisp?!



--------------------
Удалена администрацией форума
PM MAIL WWW Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0579 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.