last day (527 days later) » 

4:25 PM
Добрый вечер
 
Добрый вечер
 
можно узнать какой у вас часовой пояс?
 
Екб
 
мне сейчас нужно идти, но можно согласовать время
 
+2часа к московскому времени
 
4:26 PM
т.е. у вас сейчас 21:26?
 
Хорошо, я буду здесь онлайн всю ночь и утро :)
да
 
отлично
тогда вернусь и будем разбираться с задачами
 
А когда Вы примерно вернетесь?
хорошо, спасибо большое!
 
точно не знаю, но не позже чем через 3 часа
скорее всего намного раньше
с какой задачи начнем?
кроме этих двух у вас много л.р. осталось?
 
4:44 PM
здесь все задачи по л/р: dropmefiles.com/UReNV
I. Решить любые 3 из 5 заданий. Каждое задание оценивается в 1 балл.
1. Найти корни квадратного уравнения, заданного своими коэффициентами. Предусмотреть все возможные случаи (два действительных корня, один корень, нет корней).
2. Реализовать функцию, вычисляющую число сочетаний из m по n.
3. Реализовать функцию Эйлера. Для натурального числа n значение функции Эйлера (n) равно количеству натуральных чисел, меньших n и взаимно простых с ним. При этом число 1 считается взаимно простым со всеми натуральными числами. Например, (10) = 4 (числа 1, 3, 7, 9).
Решить любые 3 из 6 заданий. Каждое задание оценивается в 1 балл.
1. Расстояния между городами заданы списком троек (город, город, расстояние). Определить, какие города расположены ближе всего друг к другу. Учесть, что таких пар городов может быть несколько.
2. Определить длину максимальной ветви в бинарном дереве.
3. Определить число вершин в бинарном дереве.
4. Родственные отношения заданы списком пар (отец, сын). Определить всех прямых и косвенных потомков указанного индивида.
5. Положения ферзей на шахматной доске заданы списком пар (горизонталь, вертикаль). Определить, имеется ли пара
Индивидуальное задание (по вариантам) (4 балла).
1. Связный граф задан списком ребер. Каждое ребро представляет собой тройку (вершина, вершина, длина). Граф неориентированный. Найти минимальное остовное дерево (в виде списка образующих его ребер).
вот все задачи
л/р состоит из трех частей
нужно решить 7 задач
 
5:35 PM
@Gadget сколько из них нужно сделать до завтра?
 
Хотя бы две из первой части и две из второй части
 
сколько из них уже сделаны?
 
1 часть : 1-ая задача - кусок кода, который не работает, почему-то возникает ошибка,
 
отлично, тогда с неё и начнем
 
2 задача - помогли здесь
 
5:42 PM
давайте посмотрим что там за ошибка
 
1
A: F# Реализовать функцию, вычисляющую число сочетаний из m по n

PashaPashРешение по формуле, без использования функций списка let factorial n = let rec loop i acc = match i with | 0 | 1 -> acc | _ -> loop (i-1) (acc * i) loop n 1 let combinations_count m n = (factorial m) / (factorial (m-n)) Можно немного улучить, сведя к произв...

 
отлично, тогда давайте идти последовательно. Вы можете показать тот код, который у вас сейчас есть для первой задачи?
если у вас нет наработок, т.е. вы даже не знаете как подступиться к решению проблемы - тоже ничего страшного
 
// Дополнительные сведения о F# см. на http://fsharp.org
// Дополнительную справку см. в проекте "Учебник по F#".
let solve a b c =
if a=0.0 then None else
let D= b*b-4.0*a*c
if n<0 then None else
some ((-b+sqrt(D))/(2*a),
(-b-sqrt(D))/(2*a))

[<EntryPoint>]
let main argv =
printfn "%Sum" argv
0 // возвращение целочисленного кода выхода
 
отлично
 
даже если так сделать всё равно выдает ошибку :
// Дополнительные сведения о F# см. на http://fsharp.org
// Дополнительную справку см. в проекте "Учебник по F#".
let solve a b c =
if a=0.0 then None else
let D= b*b-4.0*a*c
if n<0 then None else
some ((-b+sqrt(D))/(2*a),
(-b-sqrt(D))/(2*a))

[<EntryPoint>]
let main argv =
printfn "%Sum" (solve a b c)
0 // возвращение целочисленного кода выхода
 
5:50 PM
у вас все практически правильно получилось
есть только несколько небольших неточностей
для начала - F# ЯП со строгой типизацией (действительно строгой :)), так что в отличие от C# тут нет автоматического преобразования типа int к float
вместо if n<0 then None вы вероятно хотел написать if D < 0.0 then None else
т.о. исправив эти неточности получим примерно следующее:
let solve a b c =
    if a = 0.0 then None else
    let D = b * b - 4.0 * a * c
    if D < 0.0 then None else
    ((-b + sqrt D) / (2.0 * a), (-b - sqrt D) /(2.0 * a))
    |> Some
мне не очень нравится подобное форматирование, но тут дело привычки
 
А как лучше переписать этот блок "[<EntryPoint>]
let main argv =
printfn "%Sum" (solve a b c)
0 // возвращение целочисленного кода выхода"
что здесь не так?
 
можно убрать совсем
 
а если всё же не убирать, как можно записать вывод правильно?
 
^ пример
как видите, в Main нет необходимости
или вам нужно обязательно с точкой входа?
 
нет, не обязательно с точкой входа
просто хотелось разобраться
Спасибо большое, что помогли!
теперь хоть одну задачку можно показать
 
6:04 PM
@Gadget так это замечательно, посмотрите внимательно: printfn "%Sum" (solve a b c)
чего тут быть не должно?
 
printfn "%Sum" (solve 1 2 3) ?
 
да, тут есть кое-что лишнее
 
просто значения?
 
нет, не это :)
должно быть вот так:
printfn "%A" (solve a b c)
Подробнее о спецификациях формата можно прочитать тут: msdn.microsoft.com/ru-ru/library/ee370560(v=vs.100).aspx
room topic changed to F#: Место для изучения и обучения [f#]
Если какой-то момент в коде остался непонятным - не стесняйтесь спрашивать
 
printfn "%A" (solve a b c) -- если так писать, то компилятор подчеркивает a,b,c
 
6:16 PM
правильно, скорее всего вы не задали значения для a,b,c:
 
Спасибо, теперь ясно по этой задаче!
 
отлично - можете оформлять код как ответ ;)
 
6:29 PM
дальше можно переходить к следующей
предлагаю остановится на:
0
Q: F# Описать функцию, удаляющую из списка каждый второй элемент

GadgetКак описать функцию, удаляющую из списка каждый второй элемент, если нельзя пользоваться встроенными функциями модуля List?

вы пытались её решить или даже не знаете как подступиться?
 
 
1 hour later…
7:35 PM
@Alexandr Kuzyaev, привет
 
 
2 hours later…
9:19 PM
@Gadget позвольте продолжить тут ;) Какие задачи у вас остались?
 

  last day (527 days later) »