Они говорили в LISP много скобок… Да, порой действительно много, но они всегда одинаковые – обычные круглые скобки.
А вот Erlang 🙂
jiffy:encode([{[{<<"a">>,1}]}]).
В одном коротеньком предложении уйма скобок всех возможных видов 🙂
Они говорили в LISP много скобок… Да, порой действительно много, но они всегда одинаковые – обычные круглые скобки.
А вот Erlang 🙂
jiffy:encode([{[{<<"a">>,1}]}]).
В одном коротеньком предложении уйма скобок всех возможных видов 🙂
Существует официальный баг в Game Center API, когда из списка не удаляется GKTurnBasedMatch. Баг достаточно распространенный, он происходит главным образом тогда, когда активный участник покидает игру (вызов participantQuitInTurnWithOutcome:…) и удаляет ее из своего списка матчей. Игра получает какое-то неверное состояние, после чего остальные игроки не могут ее удалить из списка. Причем не могут как из интерфейса матч-мэйкера, так и вызовом removeWithCompletionHandler:… Возвращается ошибка номер 17 (Error=17) о том, что какие-то параметры заданы неверно. При этом сам матч может иметь уже статус завершенного GKTurnBasedMatchStatusEnded!
Как я уже отметил, Apple призналась в баге, но не исправила до сих пор.
Баг замечен, например, в игре Ой Ё. Об этом было сказано в их блоге. Мы тоже достаточно быстро столкнулись с этой проблемой, и она висела нерешенной почти два месяца. Тут, наконец-то, изучая многочисленные форумы мне удалось найти решение.
Суть в том, чтобы несмотря на завершенность матча попытаться (в случае возникновения ошибки) завершить свой ход, передав его любому другому участнику, затем выйти из игры ВНЕ хода и снова отправить запрос на завершения матча. Этот workaround помог мне со всеми неудаляемыми играми!
Вот код:
- (void) removeGameFromGC
{
[_match removeWithCompletionHandler:
^(NSError *error) {
if(!error)
{
DLog(@"match removed!");
}
else
{
[self reportError:error];
GKTurnBasedParticipant *nextParticipant = nil;
for (GKTurnBasedParticipant *participant in _match.participants)
{
participant.matchOutcome = GKTurnBasedMatchOutcomeTied;
if(![TurnBasedHelper isHeLocal:participant.playerID])
nextParticipant = participant;
}
[_match endTurnWithNextParticipants:@[nextParticipant]
turnTimeout:GKTurnTimeoutDefault
matchData:nil
completionHandler:
^(NSError *error)
{
if (error)
{
[self reportError:error];
}
[_match participantQuitOutOfTurnWithOutcome:GKTurnBasedMatchOutcomeQuit
withCompletionHandler:
^(NSError *error)
{
if (error)
{
[self reportError:error];
}
[_match removeWithCompletionHandler:^(NSError *error)
{
if (error)
{
[self reportError:error];
}
}];
}];
}];
}
}];
}
Мне лень писать что-то, так что копирую оттуда.
Всем привет.
Мне тут вздумалось погрузиться в дебри нейросетей и запилить быстренько приложение, которое позволяет распозновать рукописные (нарисованные на сенсорном экране пальцем или еще чем-то) цифры. Самая простая идея: игра – обучение/тренировка арифметике. Игроку предлагается некий простенький пример, он решает его и пишет ответ, система распознает и говорит «верно»/»неверно». Можно еще добавить очки или ограничить время. Тут недавно была похожая тема, но у меня акцент именно на рукописном способе ввода.
Название: Study Maths (рабочее, возможно, сменится)
Жанр: обучающая головоломка
Начало разработки: 19 февраля 2013 года
Текущий статус: есть демка с базовым функционалом
Язык, API: Obj-C, Cocos2D-iPhone
Пока поддерживаются операции сложения (от 0 до 19), вычитания (без отрицательных), умножения (до 10 * 10), деления (на ноль нельзя!).
На алгоритм распознавания потратил очень много времени: почти неделю. Но пока он далек от совершенства. Я использую 5 слойную сверточную нейросеть, наученную на базе рукописных цифр (MNIST, 600000 цифр). Отсюда вытекает главная проблема: в базе цифры написаны ручкой на бумаге, потом отсканированы. У меня же они пишутся пальцем на экране, рендерятся в текстуру и идут на нейросеть. После нейросети есть еще пара хаков: например, моя рукописная 6 всегда почти распознается, как 5. Пришлось использовать некоторые свойства кривых, чтобы различать их. И то, не всегда успешно. Также алгоритм разделения кривых на цифры, который я придумал сегодня утром, иногда сбоит и нуждается в явной доработке. Хочу добавить еще знаки «+» и «-«, позже «.».
Еще есть концептуальная идея прикрутить к этому делу CMU Sphinx и какой-нить text-to-speech, получим, таким образом, и чисто голосовой вариант. Игра читает игроку пример, игрок отвечает голосом, получает одобрение или наоборот. Обязательно попробую в скором времени, если пойдет гладко (справлюсь менее, чем за неделю), то 100% включу в проект.
Дневник разработки:
19.02.2013 Начало
26.02.2013 Добавлена озвука примеров и результата на аглийском Flite text-to-speech
27.02.2013 Добавлена поддержка распознования голоса (см. видео со звуком):
К сожалению, результат меня сильно не устраивает. Слишком мала точность, требуется тишина, трудно сделать русский язык, приложение очень сильно разбухает в объеме. Так что в первом релизе скорее всего распознования голоса не будет. Я пока не знаю, как улучшить распознования голоса, т.к. использую сторонний API.