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

Задача о восьми ферзях

13.04.2016, 19:16. Показов 4633. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ни у кого нет кода реализации задачи о восьми ферзях?(на f# офк)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.04.2016, 19:16
Ответы с готовыми решениями:

Задача о восьми ферзях
Всем доброго времени суток! Прошу помочь разобраться что к чему и для чего в языке программы, какая процедура за что отвечает и так...

Задача о восьми ферзях
Может кто-нибудь дать код решения с пояснениями: эвристическим алгоритмом (можно найти на википедии) или поиском с возвратом.

Задача о восьми ферзях
Есть у меня массив из 8 случайных чисел от 0 до 7. Мне нужно найти количество атакующих друг друга пар ферзей. Моя функция вроде считает,...

31
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
18.04.2016, 06:01
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
Меня "напугало" что мутабельные переменные нельзя использовать в генераторах списков (массивов, ...), хотя ссылки можно.
нельзя т.к. потом начинаются вопросы "а почему у меня все значения в массиве одинаковые". с#перы этим постоянно страдают - их компилятор по рука не бьет. ссылки кстати тоже нельзя - будет тоже самое. а вот значения ссылок можно - если аккуратно.
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
KolodeznyDiver, в F#4.0 тоже нельзя?
тоже нельзя. т.е. написать и откомпилить то можно, но на самом деле просто включается компилермажик и якобы мутабельные значения в IL коде оказываются ссылками с соотвествующими потерями в памяти и скорости.
1
Модератор
 Аватар для Curry
5164 / 3519 / 536
Регистрация: 01.06.2013
Сообщений: 7,655
Записей в блоге: 9
18.04.2016, 08:57
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
KolodeznyDiver, в F#4.0 тоже нельзя?
Поскольку в приведённой мной ссылке говорится о Visual Studio 2015 (у меня до сих пор Visual Studio 2013 community), то, наверно да.
0
Модератор
 Аватар для Curry
5164 / 3519 / 536
Регистрация: 01.06.2013
Сообщений: 7,655
Записей в блоге: 9
20.04.2016, 01:33
Поставил VS2015. Теперь оно разрешает использовать мутабельную переменную в генераторе списка.
Та же задача про 8 ферзей. Скорость низкая, но работает правильно.
Кликните здесь для просмотра всего текста
F#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
let solveBits2 () = 
    let rec gen brd cs n = 
        if n=8 then [brd] else
            let nn=n+1
            [ let mutable m = 1  
              for c= 0 to 7 do
                if (cs &&& m (* (1<<<c) *) )=0 then
                    let rec chk y l r = 
                        if y=0 then true else
                            let yn=y-1                            
                            let x=getX brd yn
                            let ln=l-1
                            if x=ln then false else
                                let rn=r+1
                                if x=rn then false else chk yn ln rn
                    if chk n c c then
                        yield! (gen (setX brd n c) (cs ||| m (* (1<<<c) *)) nn)
                m <- m <<< 1
            ]
    gen 0 0 0 |> List.map (fun b -> new ChessBoard(b))
0
Заблокирован
20.04.2016, 01:42
Цитата Сообщение от pycture Посмотреть сообщение
тоже нельзя. т.е. написать и откомпилить то можно, но на самом деле просто включается компилермажик и якобы мутабельные значения в IL коде оказываются ссылками с соотвествующими потерями в памяти и скорости.
pycture, если код выше работает правильно, то можно увидеть пример "неожиданного" поведения с мутабельной переменной ?
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
20.04.2016, 05:52
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
если код выше работает правильно
какой именно код, их там много. и что значит "неожиданного"?

Добавлено через 3 минуты
а.. этот код... там нет мутабельного значения в генераторе там по факту ссылка. с F#4 мутабельное значение в генераторе или в замыкании в принципе нельзя получить. комипилятор их на автомате ссылками делает
2
Заблокирован
20.04.2016, 11:40
Цитата Сообщение от pycture Посмотреть сообщение
с F#4 мутабельное значение в генераторе или в замыкании в принципе нельзя получить. комипилятор их на автомате ссылками делает
pycture, ну вот об этом я и говорил Значит неправильно понял ваш ответ из сообщения #21
0
Модератор
 Аватар для Curry
5164 / 3519 / 536
Регистрация: 01.06.2013
Сообщений: 7,655
Записей в блоге: 9
20.04.2016, 13:49
Цитата Сообщение от pycture Посмотреть сообщение
а вот значения ссылок можно - если аккуратно
А как можно не аккуратно работать со значениями ссылок в генераторе?
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
20.04.2016, 14:18
на так к примеру
F#
1
2
3
4
5
6
7
8
9
10
> let r = ref 0;;
 
val r : int ref = {contents = 0;}
 
> [0..10] |> List.map (fun _ -> r := !r + 1; r);;
val it : int ref list =
  [{contents = 11;}; {contents = 11;}; {contents = 11;}; {contents = 11;};
   {contents = 11;}; {contents = 11;}; {contents = 11;}; {contents = 11;};
   {contents = 11;}; {contents = 11;}; {contents = 11;}]
>
Добавлено через 4 минуты
или так
F#
1
2
3
type X() = member val x = 0 with get, set
let r = ref (X(x = 0))
[0..10] |> List.map (fun _ -> (!r).x <-(!r).x + 1; !r)
Добавлено через 3 минуты
примеры конечно не вполне коррктные, но показывают, что заблудиться в принципе можно

Добавлено через 2 минуты
еще так можно
F#
1
2
3
4
let r = ref 0
[0..10] 
|> List.map (fun _ -> r := !r + 1; lazy !r)
|> List.map (fun o -> o.Value)
0
Модератор
 Аватар для Curry
5164 / 3519 / 536
Регистрация: 01.06.2013
Сообщений: 7,655
Записей в блоге: 9
20.04.2016, 14:40
Тут всё очевидно. В первом примере пропущен !. Во втором нужно учитывать что сам объект передаётся по ссылке. Если (fun _ -> (!r).x <-(!r).x + 1; (!r).x), то всё ок. В третьем, лень тоже по ссылке.
Я думал, в генераторах какие то специфические ошибки.
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
20.04.2016, 15:44
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
Я думал, в генераторах какие то специфические ошибки.
ну нет конечно, ошибок в самих генераторах нет. это и есть примеры весьма неаккуратного обращения с ссылками.
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
25.04.2016, 11:57
Tomas Petricek and Phillip Trelford - F# Deep Dives - 2014
пролистал по диагонали. ересь. для изучения/обучения сей рекламный буклет непригоден
0
Заблокирован
27.04.2016, 15:58
Цитата Сообщение от pycture Посмотреть сообщение
пролистал по диагонали. ересь. для изучения/обучения сей рекламный буклет непригоден
pycture, соглашусь, хотя книгу в свое время очень ждал
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.04.2016, 15:58

Задача о восьми ферзях
Во время практики в колледже мне задали задание написать программу о восьми ферзях,то есть чтобы восемь королев не могли бить друг друга на...

Пример о восьми ферзях
вот накропал но проверить возможности сейчас нет да и интересно посмотреть предложения и ваши варианты :) Uses CRT; Const N = 8; ...

Ошибка в задаче о восьми ферзях
Суть задачи заключается в том, что нужно суметь расставить на шахматной доске (8 х 8) восемь ферзей так, чтобы они не находились под боем...

Исправить программу для решения задачи о восьми ферзях,не правильно отображается на схеме
unit Unit1; {$mode objfpc}{$H+} interface uses Classes,Unit2,Unit3, SysUtils, FileUtil, Forms, Controls, Graphics,...

В рекурсивной программе о восьми ферзях подсчитать, сколько было сделано возвратов назад
Помогите, пожалуйста, написать код к задаче Условие задачи: В программе о восьми ферзях (рекурсивной) подсчитайте, сколько было...


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

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru