Бюджет: 1000 UAH Срок: 1 день
Готов с сотрудничеству
Нужны исходники C# функции определения схожести двух слов. На выходе – процент схожести или какая либо другая актуальная мера (обсуждаемо). Например:
joomla и jomla более схожи, чем joomla и jinjo.
Собственно это и должна определять функция. Важно:
1. Используем по возможности только нативные библиотеки .net
2. Поддержка русского и английского языка.
Бюджет: 1000 UAH Срок: 1 день
Готов с сотрудничеству
Бюджет: 300 UAH Срок: 1 день
Реализую на C#. При желании можно обсудить и продумать более сложные и тонкие варианты оценки.
public static int Compute(string s, string t) { int n = s.Length; int m = t.Length; int[,] d = new int[n + 1, m + 1]; // Step 1 if (n == 0) { return m; } if (m == 0) { return n; } for (int i = 0; i <= n; d[i, 0] = i++) { } for (int j = 0; j <= m; d[0, j] = j++) { } for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { int cost = (t[j - 1] == s[i - 1]) ? 0 : 1; d[i, j] = Math.Min( Math.Min(d[i - 1, j] + 1, d[i, j - 1] + 1), d[i - 1, j - 1] + cost); } } return d[n, m]; } double GetSimilarityRatio(String FullString1, String FullString2, out double WordsRatio, out double RealWordsRatio) { double theResult = 0; String[] Splitted1 = FullString1.Split(new char[]{' '}, StringSplitOptions.RemoveEmptyEntries); String[] Splitted2 = FullString2.Split(new char[]{' '}, StringSplitOptions.RemoveEmptyEntries); if (Splitted1.Length < Splitted2.Length) { String[] Temp = Splitted2; Splitted2 = Splitted1; Splitted1 = Temp; } int[,] theScores = new int[Splitted1.Length, Splitted2.Length];//Keep the best scores for each word.0 is the best, 1000 is the starting. int[] BestWord = new int[Splitted1.Length];//Index to the best word of Splitted2 for the Splitted1. for (int loop = 0; loop < Splitted1.Length; loop++) { for (int loop1 = 0; loop1 < Splitted2.Length; loop1++) theScores[loop, loop1] = 1000; BestWord[loop] = -1; } int WordsMatched = 0; for (int loop = 0; loop < Splitted1.Length; loop++) { String String1 = Splitted1[loop]; for (int loop1 = 0; loop1 < Splitted2.Length; loop1++) { String String2 = Splitted2[loop1]; int LevenshteinDistance = Compute(String1, String2); theScores[loop, loop1] = LevenshteinDistance; if (BestWord[loop] == -1 || theScores[loop, BestWord[loop]] > LevenshteinDistance) BestWord[loop] = loop1; } } for (int loop = 0; loop < Splitted1.Length; loop++) { if (theScores[loop, BestWord[loop]] == 1000) continue; for (int loop1 = loop + 1; loop1 < Splitted1.Length; loop1++) { if (theScores[loop1, BestWord[loop1]] == 1000) continue;//the worst score available, so there are no more words left if (BestWord[loop] == BestWord[loop1])//2 words have the same best word { //The first in order has the advantage of keeping the word in equality if (theScores[loop, BestWord[loop]] <= theScores[loop1, BestWord[loop1]]) { theScores[loop1, BestWord[loop1]] = 1000; int CurrentBest = -1; int CurrentScore = 1000; for (int loop2 = 0; loop2 < Splitted2.Length; loop2++) { //Find next bestword if (CurrentBest == -1 || CurrentScore > theScores[loop1, loop2]) { CurrentBest = loop2; CurrentScore = theScores[loop1, loop2]; } } BestWord[loop1] = CurrentBest; } else//the latter has a better score { theScores[loop, BestWord[loop]] = 1000; int CurrentBest = -1; int CurrentScore = 1000; for (int loop2 = 0; loop2 < Splitted2.Length; loop2++) { //Find next bestword if (CurrentBest == -1 || CurrentScore > theScores[loop, loop2]) { CurrentBest = loop2; CurrentScore = theScores[loop, loop2]; } } BestWord[loop] = CurrentBest; } loop = -1; break;//recalculate all } } } for (int loop = 0; loop < Splitted1.Length; loop++) { if (theScores[loop, BestWord[loop]] == 1000) theResult += Splitted1[loop].Length;//All words without a score for best word are max failures else { theResult += theScores[loop, BestWord[loop]]; if (theScores[loop, BestWord[loop]] == 0) WordsMatched++; } } int theLength = (FullString1.Replace(" ", "").Length > FullString2.Replace(" ", "").Length) ? FullString1.Replace(" ", "").Length : FullString2.Replace(" ", "").Length; if(theResult > theLength) theResult = theLength; theResult = (1 - (theResult / theLength)) * 100; WordsRatio = ((double)WordsMatched / (double)Splitted2.Length) * 100; RealWordsRatio = ((double)WordsMatched / (double)Splitted1.Length) * 100; return theResult; }
Аналитический бот для Polymarket US и Kalshi Цель: Создать Telegram-бота, который в реальном времени собирает данные с Polymarket US и Kalshi, анализирует их на основе заданных алгоритмов и присылает уведомления с рекомендациями по ставкам.1. Основные функции (Парсинг и Мониторинг) Сбор данных с Polymarket US & Kalshi: Бот должен отслеживать активные рынки, коэффициенты (цены акций), объемы торгов и изменения ликвидности. Дополнительные источники: Возможность подключения данных из других источников (например, Twitter/X для отслеживания инфоповодов или других бирж прогнозов для сравнения коэффициентов).2. Аналитический блок Вместо того чтобы просто копировать данные, бот должен учитывать: Математическое ожидание (EV): Сравнение текущей цены на Polymarket US & Kalshi с расчетной вероятностью события. Движение "умных денег": Мониторинг крупных сделок (китов), которые могут указывать на инсайдерскую информацию или сильный тренд. Арбитражные ситуации: Поиск разницы в коэффициентах между разными площадками.3. Логика Telegram-уведомлений Бот не должен спамить. В сообщениях должны быть: Название события и ссылка на рынок. Текущий коэффициент и рекомендуемая сторона ставки. Краткое обоснование: Почему бот считает эту ставку выгодной (например: "Резкий рост объема при стабильной цене" или "Отклонение от рыночных ожиданий на 5%").4. Технологический стек (рекомендация для разработчика) Язык программирования: Python (библиотеки Aiogram или Telethon для бота, Requests или Playwright для парсинга). API: Использование официального Polymarket US & Kalshi API (если доступно) для максимально быстрой скорости получения данных.
Ищем опытного Unity-разработчика, который поможет завершить разработку игры. О игре: Жанр: симулятор фермы. Игра уже разрабатывается на Unity. Сначала она создавалась для мобильных устройств, но впоследствии было принято решение выпустить её для Steam (ПК). Что нужно сделать: Доработать игру в соответствии с готовым техническим заданием. Адаптировать существующий функционал под ПК и Steam. Реализовать уже запланированные механики и интерфейс. Что мы предоставляем: Подробное техническое задание. Все необходимые материалы (модели, графика, объекты и т.д.). Фото, видео, скриншоты и записи прохождения оригинальной игры. Готовый план реализации. Мы воссоздаем игру, которая успешно работала более 10 лет назад, поэтому ничего выдумывать или проектировать с нуля не нужно. Все механики, интерфейс и логика уже определены — необходимо качественно реализовать их в Unity. Для ознакомления с проектом добавляем ссылку на один из видеообзоров игры: Вставьте ссылку здесь. Требования: Опыт работы с Unity. Опыт разработки или адаптации игр под ПК/Steam будет преимуществом. Умение работать по готовому техническому заданию. В ответе, пожалуйста, укажите: примеры ваших работ; опыт работы с Unity; ориентировочную почасовую ставку или стоимость выполнения. Один из видеообзоров: https://www.youtube.com/watch?v=5_wKoX7zRc0