Форум программистов, компьютерный форум, киберфорум
F# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 14.10.2015
Сообщений: 11

Нормальный алгоритм Маркова

18.11.2015, 14:51. Показов 1756. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Требуется построить НАМ, вычисляющий f(x)=x/3 с округлением в меньшую сторону, с пошаговой демонстрацией работы. Работа в windows forms, важен лишь красивый адекватный интерфейс)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.11.2015, 14:51
Ответы с готовыми решениями:

Нормальный алгоритм Маркова
Дано число в унарной системе, записанное с помощью символов «|». Построить НАМ, записывающий это число в десятичной системе счисления. ...

Нормальный алгоритм Маркова: f(x)=3x+1
Составьте нормальный алгоритм Маркова, вычисляющий функцию (в скобках указана система счисления): f(x)=3x+1, (5)

Нормальный алгоритм Маркова
A={a,b} Перевернуть слово Р (например abb->bba). ... что-то не могу хоть убей. была как-то на форуме, но не решили.хелп

12
Заблокирован
18.11.2015, 14:58
butterfly2006,
1. Можно реализовать не на Windows Forms, а на WPF?
2. Есть какие-то требования/пожелания к внешнему виду?
0
0 / 0 / 0
Регистрация: 14.10.2015
Сообщений: 11
18.11.2015, 15:39  [ТС]
1) Да, можно)
2) Нет, лишь чтобы все было просто и понятно)
0
Заблокирован
26.11.2015, 21:28
Небольшая теоретическая база:

по алгоритмам:
http://www.intuit.ru/studies/c... cture/1522

по конкретному алгоритму делению двух чисел есть статья:
http://habrahabr.ru/post/110004/
правда тут не только деление на 3... Но, думаю, это не так важно. В крайнем случае можно второе число зафиксировать.

F#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
module Calculate = 
    let xs = [| ("%*", "*%");("%|", "%*");("*|", "**");("|*", "t");("t*", "*t");("t%", "%t");
                ("%t", "%v|");("t", "|");("%v", "?d");("?d", "d?");("|d", "d|");("?", "%");("*d", "h");("h*", "oh");
                ("h%", "h");("h", "");("*", "");("d", "|_");("/|", "-k");("k|","kk");("k", "|+");("+|", "|+");("-", "ey");
                ("|e", "e|");("y", "%");("eo", "0o");("e", "");("|_", ".a");("a.", ".a");("..", ".");(".aaaaaaaaaa", "a,.");
                (",a", "a,");(".aaaaaaaaa", "9");(".aaaaaaaa", "8");(".aaaaaaa", "7");(".aaaaaa", "6");(".aaaaa", "5");
                (".aaaa", "4");(".aaa", "3");(".aa", "2");(".a", "1");(".", "0");(",", "");("a", ".a");
                ("o", "p||||||||||");("|p", "p|");("pp", "p");("%", "u");("u+", "u");("u", "_");("|+", "|)+");(")", "(>");
                (">+", "+>");("+", "{");("{", "|");(">>>>>", "=");("|=", "=");("(=", "=");("(", "/");("p=", "=<");
                ("<0", "0<");("<1", "1<");("<2", "2<");("<3", "3<");("<4", "4<");("<5", "5<");("<6", "6<");("<7", "7<");
                ("<8", "8<");("<9", "9<");("<<<<<", "$");("0$", "$0");("1$", "$1");("2$", "$2");("3$", "$3");("4$", "$4");
                ("5$", "$5");("6$", "$6");("7$", "$7");("8$", "$8");("9$", "$9");("=$", ".FIN");("0=", "=0");("1=", "=1");
                ("2=", "=2");("3=", "=3");("4=", "=4");("5=", "=5");("6=", "=6");("7=", "=7");("8=", "=8");("9=","=9");
                ("_>", "");("0>", ">0");("1>", ">1");("2>", ">2");("3>", ">3");("4>", ">4");("5>", ">5");("6>", ">6");
                ("7>", ">7");("8>", ">8");("9>", ">9");("p>", "");("p", ".FIN");("_", ".FIN") |]
 
    let divide str = 
        let rec recdivide (str:string) (acc:string) (count:int) = 
            if count = -1 then str, acc else
            let key = xs |> Array.tryFindIndex(fun x -> str.IndexOf (fst x) <> -1)
            match key with
            |Some(x) -> 
                let from, rep = xs.[x];
                let acc = acc + sprintf " %i: %A (%A => %A)\n" count str (fst xs.[x]) rep 
                let start = str.IndexOf from
                let nstr = str.Substring(0, start) + rep + str.Substring(start + from.Length) 
                if nstr.Contains("FIN") then nstr.Replace("FIN",""), acc else recdivide nstr acc (count+1)
            |None -> str,acc
        recdivide str "" 0
 
module UConvert = 
    let int_ufrom10 (x:int) = 
        let str = x.ToString()
        String.Concat(Array.create x '|')
 
type MainView = XAML<"MainWindow.xaml", true>
 
type MainViewModel() as self = 
    inherit ViewModelBase()    
 
    let first = self.Factory.Backing(<@ self.First @>, 1)
    let second = self.Factory.Backing(<@ self.Second @>, 2)
    let result = self.Factory.Backing(<@ self.Result @>, "")
    let fullresult = self.Factory.Backing(<@ self.FullResult @>, "")
 
    let calculate() = 
        let a = UConvert.int_ufrom10 first.Value
        let b = UConvert.int_ufrom10 second.Value
        let r, fr = (Calculate.divide(a + "/" + b))
        result.Value <-  r 
        fullresult.Value <- fr 
 
    let rescommand = self.Factory.CommandSync(calculate)
 
    member self.ResultCommand = rescommand
    member self.First with get() = first.Value and set(v) = first.Value <- v
    member self.Second with get() = second.Value and set(v) = second.Value <- v
    member self.Result with get() = result.Value and set(v) = result.Value <- v
    member self.FullResult with get() = fullresult.Value and set(v) = fullresult.Value <- v
Архив прикрепил к сообщению.

Не понимаю, какой смысл вы вкладываете в "красивый адекватный интерфейс", поэтому подскажите, что нужно добавить. Может что-то цветом выделить и т.п. ?


Этот алгоритм сам по себе медленный, да и, реализация, увы, далека от оптимальной по быстродействию. Поэтому:

pycture, можете подсказать, как увеличить скорость работы?
Вложения
Тип файла: rar FsNAM.rar (1.24 Мб, 6 просмотров)
1
Заблокирован
27.11.2015, 19:05
Чуть изменил - Через StringBuilder и String.Format намного быстрее.

F#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    let divide str = 
        let rec recdivide (str:string) (acc:StringBuilder) (count:int) = 
            if count = -1 then str, acc.ToString() else
            let key = xs |> Array.tryFindIndex(fun x -> str.IndexOf (fst x) <> -1)
            match key with
            |Some(x) -> 
                let from, rep = xs.[x];
                let acc = acc.AppendLine(String.Format(" {0}: {1} ({2} => {3})",count, str, from, rep))
                let start = str.IndexOf from
                let nstr = str.Substring(0, start) + rep + str.Substring(start + from.Length) 
                if nstr.Contains("FIN") then nstr.Replace("FIN",""), acc.ToString()
                else recdivide nstr acc (count+1)
            |None -> str,acc.ToString()
        let sb = new StringBuilder()
        recdivide str sb 0
И привязки нет смысла делать TwoWay:

F#
1
2
    member self.Result with get() = result.Value
    member self.FullResult with get() = fullresult.Value
FsNAM.rar
1
0 / 0 / 0
Регистрация: 14.10.2015
Сообщений: 11
28.11.2015, 01:25  [ТС]
Ev_Hyper, все прекрасно) разве что нет пошаговой демонстрации( можно просто добавить кнопку "шаг" и подсвечивать цветом команду, которая выполняется?
0
Заблокирован
28.11.2015, 12:27
butterfly2006, там есть вывод информации на каждой итерации алгоритма. Или под "пошаговой демонстрацией" вы имеете ввиду, чтобы данные добавлялись с определенным временным промежутком?
0
0 / 0 / 0
Регистрация: 14.10.2015
Сообщений: 11
28.11.2015, 19:28  [ТС]
Ev_Hyper, да, но не с определенным временным промежутком, а по желанию пользователя, так сказать. ну вообще можно добавить две кнопки - "шаг", которая каждый раз добавляет новую строчку и выделяет ее цветом, и "завершить", которая выводит сразу все
0
Заблокирован
30.11.2015, 02:26
Обновил:
Вложения
Тип файла: rar FsNAM.rar (1.25 Мб, 7 просмотров)
1
0 / 0 / 0
Регистрация: 14.10.2015
Сообщений: 11
30.11.2015, 20:32  [ТС]
Ev_Hyper, да) то что нужно) а можете объяснить как зафиксировать 3-ку в знаменателе?
0
Заблокирован
30.11.2015, 21:51
butterfly2006, если нужно установить начальное значение, то просто измените строчку:

F#
1
let second = self.Factory.Backing(<@ self.Second @>, 2)
на
F#
1
    let second = self.Factory.Backing(<@ self.Second @>, 3)
Второй параметр - это значение по умолчанию

Если нужно убрать возможность менять знаменатель, то нужно заменить в xaml:
XML
1
            <TextBox Margin="10" Text="{Binding Second}" MinWidth="40" FontSize="30"></TextBox>
на
XML
1
            <TextBlock Margin="10" Text="{Binding Second}" MinWidth="40" FontSize="30"></TextBlock>
и изменить тип переменной с наблюдаемого значения на обычный int.

Если хотите, могу добавить ProgressBar, чтобы интерфейс не зависал.
1
0 / 0 / 0
Регистрация: 14.10.2015
Сообщений: 11
30.11.2015, 22:01  [ТС]
Ev_Hyper, всеее) спасибо большое) буду на неделе пробовать сдать
0
30.11.2015, 22:07

Не по теме:

Цитата Сообщение от butterfly2006 Посмотреть сообщение
Ev_Hyper, всеее) спасибо большое) буду на неделе пробовать сдать
butterfly2006, удачи =)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.11.2015, 22:07
Помогаю со студенческими работами здесь

Нормальный Алгоритм Маркова
Здравствуйте, помогите пожалуйста с решением следующей задачи, с помощью алгоритмов Маркова... Условие: U={1,если U=111 {0,в...

Нормальный алгоритм Маркова
Составить нормальный алгоритм Маркова по утроению букв в слове. Алфавит {a,b,c,d,a0}

Нормальный алгоритм Маркова
Вот такая задача: Построить НАМ, реализующий умножение двух чисел, представленных символами 1. Например, из 111*111 должно получиться...

Нормальный алгоритм Маркова
Помогите решить задачу. Дан алфавит A = {a, b, c}. Если входное слово P содержит букву a то написать a, иначе Λ.

Нормальный алгоритм Маркова: f=3x+5
Здравствуйте, помогите решить Построить Нормальный алгоритм Маркова интерпретирующий функцию f=3x+5. и ответ записать в 8-ой системе...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru