Рубрика «Программирование» - 885

Как выигрывать в игре камень ножницы бумага? (реализация оптимальной стратегии в Wolfram Mathematica)

Перевод поста Джона Маклуна (Jon Mcloone, директор департамента международного бизнеса и стратегического развития Wolfram Research). Оригинал поста: How to Win at Rock-Paper-Scissors
Скачать пост в виде документа Mathematica

С точки зрения математики игра камень-ножницы-бумага (см. Дополнение 1 в конце) не является особо интересной. Стратегия равновесия Нэша очень проста: случайно и с одинаковой вероятностью выбирайте из трех вариантов, и при условии проведения большого числа игр ни вы, ни ваш соперник не сможете одержать победу. Хотя, при обсчитывании стратегии при помощи компьютера всё ещё возможно выиграть у человека после большого числа игр.
Читать полностью »

Многие слышали о мультиклеточной архитектуре, процессорах и даже первых устройствах на них. Особенно продвинутые пользователи опробовали свои алгоритмы. Были проведены первые простые тесты производительности, а также пользователь Barsmonster, вытравил кристалл процессора Р1. Сейчас уже проходит первые проверки процессор R1 и скоро будет доступен всем. Но ответ на вопрос о том, как работает мультиклеточная архитектура и в чём её отличие, знают не все. Попытаемся сейчас ввести в курс дела.

Читать полностью »

Привет всем!

В этом материале мы постараемся написать приложение защищенное Spring Security с применением Java Config (подхода на основе использования аннотаций и классов для настройки контекста Spring приложения) вместо XML.

Используемые Технологии

  • Spring 4.0.5 Release
  • Spring Boot 1.0.1
  • Spring Security 3.2.3 Release
  • Maven
  • Tomcat 8
  • Servlet Api 3.1
  • Java 1.8

Это будет очень простое веб приложение, Hello World на базе Spring MVC и Spring Security. Все настройки мы осуществим используя только Java классы, без единой строчки конфигурации в XML.

Читать полностью »

Эта статья базируется на главе Zvals книги PHP Internals Book, переводом которой на русский язык я сейчас занимаюсь [1]. Книга ориентирована в первую очередь на C-программистов, желающих писать свои расширения для PHP, но, я уверен, что она окажется полезной и для PHP-разработчиков, так как описывает внутреннюю логику работы интерпретатора. В статье я оставил только базовую теорию, которая должна быть понятна всем разработчикам (даже не знакомым с PHP или C). За более полным изложением материала обратитесь к книге.

Задачка для привлечения внимания. Каким будет результат выполнения следующего кода?

$obj1 = new StdClass();
$obj2 = new StdClass();

$obj1->value = 1;
$obj2->value = 1;

function f1($o) {
  $o = 100;
}

function f2($o) {
  $o->value = 100;
}

f1($obj1);
f2($obj2);

var_dump($obj1);
var_dump($obj2);
Ответ

object(stdClass)#1 (1) { [«value»]=> int(1) }
object(stdClass)#2 (1) { [«value»]=> int(100) }

Если вы точно определили ответ и можете объяснить почему он будет именно таким, то, наверное, вы не узнаете из этой статьи ничего нового, иначе — вам определенно стоит прочитать эту статью, чтобы углубить свои знания.
Читать полностью »

image
Будущее начинается с нас самих. Не с кикстартера или биткоинов. Не с 3Д-принтеров или башен Тесла, а с нас. Те кто говорят «невозможно» не должны мешать тем кто это делает.
Итак суть — предлагаю обсудить (и осуществить) возможность слабослышащим увидеть звук настолько хорошо, чтобы понимать речь и научиться разговаривать.
Читать полностью »

К сожалению, в стандартной библиотеке языка С++ нет никаких средств для работы с протоколом HTTP. Возможно, в будущем появятся, но на данный момент каждый раз при необходимости дёрнуть какой-нибудь REST-сервис, пропарсить веб-страничку, написать простенького бота или краулера приходится задаваться вопросами «А какую же библиотеку взять, так чтобы побыстрее и попроще?». Иногда проект уже использует какой-то фреймворк (а иногда даже несколько) и тогда приходится вспоминать «А как же сделать HTTP-запрос имеющимися средствами?». Чтобы не путаться я решил написать для себя шпаргалку с примерами HTTP-запросов на С++ с применением разных библиотек. А самое удобное место для хранения подобных шпаргалок — Хабр: и сам не потеряешь, и другим может пригодиться.

Будут рассмотрены:

  • WinInet
  • Casablanca
  • Qt
  • POCO
  • wxWidgets
  • Boost.Asio
  • libcurl
  • neon
  • .NET (С++/CLI)
  • IXMLHTTPRequest
  • HappyHttp
  • cpp-netlib

Читать полностью »

Квантовый поиск при помощи алгоритма ГровераСегодня вслед за первыми квантовыми алгоритмами, которые мы уже рассмотрели (см. алгоритм Дойча и алгоритм Дойча-Йожи — если кто-то ещё не читал эти статьи, то предлагаю предварительно с ними ознакомиться, поскольку без этого изложение может показаться несколько туманным), предлагаю изучить алгоритм Гровера для неструктурируемого квантового поиска. Этот алгоритм был разработан американским математиком Ловом Гровером в 1996 году (уже намного позже того, как модель квантовых вычислений стала в моде). Этот алгоритм использует свойство квантовой интерференции для того, чтобы решать крайне насущную задачу по поиску значения некоторого параметра, на котором заданная функция выдаёт определённый результат.

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

Эта статья является продолжением в цикле статей по модели квантовых вычислений, поэтому если начать читать её без ознакомления с предыдущими статьями цикла, что-то может показаться непонятным. Так что читателя, который впервые набрёл на эти мои заметки, я отправляю к первым статьям: 1, 2, 3, 4.

Итак, если кто-то заинтересовался, то как обычно добро пожаловать под кат.

Читать полностью »

Вторая российская конференция «Wolfram технологии»: рассказ и материалы

3 июня 2014 г. в Санкт-Петербургском государственном экономическом университете (СПбГЭУ) прошла уже вторая по счету Российская конференция Wolfram технологии, в которой мне посчастливилось участвовать в качестве одного из докладчиков.

К слову сказать, первая конференция проходила там же годом ранее, 13 июня 2013 г., причем открывал ее лично сам Стивен Вольфрам, CEO компании Wolfram Research (выступления и презентации той конференции вы можете найти здесь). Первая конференция была знаковым событием, ее посетило множество людей и на протяжении 3-х с лишним часов участники конференции не отпускали Стивена, задавая ему все новые и новые вопросы, касавшиеся то Wolfram|Alpha, то фундаментальных основ Mathematica, то темы, которой Стивен Вольфрам занимается очень давно — клеточных автоматов.

Думаю ни для кого не секрет, что компания уже скоро выпустит 10-ю версию системы Mathematica, которая, по моему глубокому ощущению, станет если уж не самым, то одним из самых мощных скачков Mathematica. Сейчас, когда я пишу эти строки, код системы уже заморожен и уже во всю ведется подготовка к релизу. О языке Wolfram, который является также языком всех продуктов Wolfram, на Хабрахабре уже шла речь, скажем в переводе на русский язык выступления Стивена на SXSW 2014, также этому языку была посвящена и большая доля конференции. Думаю многим будет интересно также, что сейчас стартовал конкурс "Выиграй Mathematica 10", победитель которого получит 10-ю версию сразу после релиза.

На картинке в начале этой заметки (см. Дополнение 1 в конце) вы можете видеть те продукты Wolfram, о которых на ней шла речь. Это, собственно, Язык Wolfram, его главные носители — Mathematica 10, Облако Wolfram и Wolfram|Alpha, а также ряд других продуктов, таких как CDF, SystemModeler и Raspberry Pi. Ссылка к Raspberry идет пунктиром потому что это, безусловно, не продукт Wolfram, но с ноября 2013 г. язык Wolfram и Mathematica предустановлены на этих одноплатных компьютерах, причем это бесплатно.
Читать полностью »

golang gopher
Продолжаем знакомство с языком программирования Go (golang). В прошлый раз мы посмотрели основные конструкции языка. В этой статье я хочу показать использование горутин и каналов. И, конечно, продемонстрировать все это на реальном приложении, в данноcм случае многопользовательской игре. Рассматривать будем не всю игру, а только ту часть бэкэнда, которая отвечает за сетевое взаимодействие между игроками посредством WebSoket.

Игра пошаговая, для двух игроков. Однако, описанные ниже приемы можно применять для создания других игр, от покера до стратегий.
Читать полностью »

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

Я с детства стал увлекаться созданием сайтов. С 6го класса делал первый сайт для своей школы, учил HTML и вставлял различные готовые ЯваСкриптпы в свои мелко-сайты. Начал покупать полезную литературу и осваивать CSS и HTML. Позже в 9м классе учился программировать на Делфи. Школьный паскаль указывать не буду — это все проходили.

Потом на это дело я все таки забил, несколько лет занимался бизнесом и решил вспомнить молодость и пойти учиться в Компьютерную Академию. Два с половиной года потратил на обучение на веб-дизайнера. Программирование с++ мне вообще не далось, сколько не пытался его в курить — ни как не получалось. Зато пхп очень понравился, особенно в то время я был захвачен выводом из баз данных информации и начал развиваться в этом направлении. Сделал одному клиенту сайт на своем движке (что написал по книгам наших программистов) — интернет-каталог, вложил пол года в раскрутку. Сайт начал приносить прибыль причем большую и я стал опять заниматься коммерцией, забив на программирование.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js