@Fsharp_chat

Страница 606 из 772
Vasily
18.06.2018
10:57:34
А в задаче разве локальная оптимизация не прокатит? Сначала пытаемся поделить на три, потом на два, потом вычесть единицу и по новой

Или её нельзя решить через постоянный выбор локального экстремума?

Rustem
18.06.2018
11:00:56
тоесть не 20 / 2 = 10 / 2 = 5 - 1 = 4 / 2 = 2 / 2 = 2 / 2 = 1 а 20 / 2 = 10 - 1 = 9 / 3 = 3 = 3 = 1

Google
Vasily
18.06.2018
11:05:47
Ну тогда надо граф решений строить, получается

Anna
18.06.2018
11:07:12
let p = Array.zeroCreate 10000 for i in 2..p.Length-1 do p.[i] <- p.[i - 1] + 1 if i % 2 = 0 then p.[i] <- min (p.[i / 2] + 1) p.[i] if i % 3 = 0 then p.[i] <- min (p.[i / 3] + 1) p.[i] p.[10..12]
можно идти в другую сторону, чтобы не делить. И забить сразу не нулями, а максимально возможными значениями (точнее, заведомо больше), чтобы на 0 не проверять

Ну тогда надо граф решений строить, получается
Динамическое программирование

Vasily
18.06.2018
11:13:31
Задача похожа на классическую по размену денег, кстати

Хотя сформулирована хитрее

Rustem
18.06.2018
11:15:10
эта задача на Stepikе называется калькулятор

Anna
18.06.2018
11:22:50
еее
я не виновата, что астрологи объявили

не уверен
А какая разница? делим же, если делится. Следовательно, можно крутиться от единицы, прибавляя 1, умножая на 2 и на 3. Получим в итоге решение для любого числа (докуда дойдём)

Pavel
18.06.2018
11:25:23
разница в кол-ве итераций

Ayrat
18.06.2018
11:26:28
их вероятно будет меньше чем идти от числа до 1

Google
Rustem
18.06.2018
11:26:38
можно добавить проверку если (N % 3 - 1) % 2 == 0 и (N % 2 - 1) % 3 == 0 тогда проделать эти действия и прибавить 3 к счётчику действий

Pavel
18.06.2018
11:27:20
O(n)
пример в студию. хот на псевдо коде

Rustem
18.06.2018
11:27:29
O(n)
я вообще не понимаю эту О символику на Степике курс проходил но не понял

Anna
18.06.2018
11:27:46
Всем Кормена, пацаны

Rustem
18.06.2018
11:29:23


Pauline
18.06.2018
11:29:59
так начни с чего-то попроще

Anna
18.06.2018
11:43:57
пример в студию. хот на псевдо коде
могу на псевдо-C++ скинуть, но там будет страшненько, мне лень украшать

Andrey
18.06.2018
11:45:08
Определения через пределы самые понятные.

Roman
18.06.2018
11:46:36
O(n)
ну нет же. Ты после каждого шага в худшем случае создаешь еще три узла которые нужн проверить и каждый потом создаст еще три узла и т.д. и т.п. типа let fsti : int list = checkOneLevel [ \3 ; \2; -1 ] N >fsti : [N\3;N\2;N-1] let sdi = List.map (checkOneLevel [\3; \2; -1]) fsti >sndi : [[N\3\3; N\3\2; N\3 - 1] , [N\2\3; N\2\2; N\2 - 1] , [(N-1)\3; (N-1)\2;(N-1) -1] ] и т.д.

Anna
18.06.2018
11:54:45
На F# сами переписывайте ?

Vlad
18.06.2018
11:55:07
Всем Кормена, пацаны
Я ещё маленький для таких книг

Ayrat
18.06.2018
11:55:45
Далее от 1-го индекса, куда кладём кол-во шагов 0. начинаем заполнять по алгоритму: по всем ненулевым индексам (их будет всё меньше с каждой итерацией): шагни на индекс * 3 и положи туда n+1 (удали из hashtable) шагни на индекс * 2 и положи туда n+1 (удали из hashtable) шагни на индекс + 1 и положи туда n+1 (удали из hashtable) повторять пока все индексы не будут заполнены. Алгоритм терминирующий, т.к. последний шаг будет постоянно выбивать хотя бы одному индексу за итерацию

Rustem
18.06.2018
12:21:05
Ayrat
18.06.2018
12:40:29
Я соглашусь. Но это поможет

Roman
18.06.2018
12:40:52
Я соглашусь. Но это поможет
поможет да, но алгоритм не О(н) )

Anna
18.06.2018
12:41:17
Pavel
18.06.2018
12:51:28
На F# сами переписывайте ?
резервировать памяти в 3 раза больше чем надо? не хочу с++

Google
Anna
18.06.2018
12:57:12
резервировать памяти в 3 раза больше чем надо? не хочу с++
Норм, напишешь проверку на выход за границы массива если чо

Я кишками наружу оставила, считайте инструменты и зашивайте

Evgeniy
18.06.2018
13:29:45
https://safe-stack.github.io/docs/news/#18th-june

Sergey
18.06.2018
13:29:55
только хотел прислать)

Evgeniy
18.06.2018
13:30:00
Хех.

tl;dr > remove Suave as a recommended option on the SAFE stack > Our default recommendation for SAFE stack applications is to use Saturn or Giraffe directly, running on top of Kestel on ASP .NET.

Ayrat
18.06.2018
13:30:30
Топ кек

(Давно пора)

переименуются в GAFE?

Pavel
18.06.2018
13:31:22
SAFE оказался не Safe

Sergey
18.06.2018
13:31:59
не переимеются, под А там так то любой клауд)

Vlad
18.06.2018
13:32:01
Драма.

Ayrat
18.06.2018
13:32:45
Да, Haf себя изолирует от комьюнити

Evgeniy
18.06.2018
13:33:12
Pavel
18.06.2018
13:39:36
Saturn ?
Для меня SAFE звучало как "безопасный стэк" - типо-безопасный язык + опенсорс. А оказалось, что стэк технологий не такой уж и безопансый)

Pavel
18.06.2018
15:08:07
Почему не безопасный?
ну из-за лицензии на логари пострадала репутация автора и всех его проектов, один из которых Suave. Использовать в продакшене Suave я бы сейчас не рискнул

Google
Pavel
18.06.2018
15:13:06
Так safe не только suave
да, но изначально был именно suave

Roman
18.06.2018
15:13:17
S - server

Pavel
18.06.2018
15:13:21
Roman
18.06.2018
15:13:48
но это особо не спасает ситуацию
Я suave после жирафа бы не использовал и так бы

Pavel
18.06.2018
15:13:55
S - server
ну я не про абревиатуру, а про стэк, изначльно там был только suave, а потом добавили жираф

Я suave после жирафа бы не использовал и так бы
я только suave пробовал, мне очень понравился. Жаль, что автор так психанул

Pavel
18.06.2018
15:15:43
ну да, апи честно украденный из suave :)

Roman
18.06.2018
15:17:10
Ну так отличное же решение. Слава богу api не авторским правом не ограничивается

Mikhail
18.06.2018
15:17:47
А кто такой Хаф?

Pavel
18.06.2018
15:18:27
Да. в свете последних событий - слава Богу, что есть жираф. Хотя его появление было одной из причин такого хейта от haf в сторону MS

Anna
18.06.2018
15:19:09
Я какую-то драму пропустила, кажется

Evgeniy
18.06.2018
15:22:22
Я какую-то драму пропустила, кажется
Да тут каждую неделю драма.

Ayrat
18.06.2018
15:25:36
А кто такой Хаф?
в прошлом - герой F# OSS Community https://github.com/haf сейчас отступник и бунтарь :D

Roman
18.06.2018
17:32:55
Одно не лишнее

Pavel
18.06.2018
17:48:39
Одно не лишнее
ну тут тоже как попрет. оракл у гугла бабки хотел чисто за апи отжать

Igor
18.06.2018
18:00:29
Да тут каждую неделю драма.
Я не понял, так suave все еще поддерживается?

Vladimir
18.06.2018
19:33:37
А скажите, юзал кто Canopy? Что-то не могу разобраться как свичнуться на всплывающее окно

Нашел)

Google
Artem
18.06.2018
21:03:45


Evgeniy
18.06.2018
21:13:01
url компилируется в настоящий CIL литерал, а url2 в статический метод.

Evgeniy
18.06.2018
21:15:24
Насколько ты помнишь, гарантируется, что CIL литералы — это константы, и они должны быть заинлайнены во время компиляции.

Artem
18.06.2018
21:16:39
Насколько ты помнишь, гарантируется, что CIL литералы — это константы, и они должны быть заинлайнены во время компиляции.
угу я просто думал что оно и let="..." сразу оптимизирует ну потому что оно всё равно ведь будет иммутабельно (если не оговорено иное)

Artem
18.06.2018
21:16:50
почему так не сделали?)

Evgeniy
18.06.2018
21:20:56
почему так не сделали?)
Чтобы не вводить дополнительные сложные правила, неочевидные программисту.

А то получится, например, что одни значения, связанные через let, можно использовать в паттерн матчинге, а другие почему-то нет.

В спеке есть хороший пример: [<Literal>] let C = 3 match 4 with | C -> sprintf "matched, C = %d" C | _ -> sprintf "no match, C = %d" C

Поведение меняется в зависимости от наличия [<Literal>].

Разве в метод?
С точки зрения CIL. Конечно же, там C# свойство. :)

Григорий
18.06.2018
21:26:47
какие есть библиотеки под dotnet core для работы с postgre sql? Type Provider еще же не завезли в dotnet core?

Evgeniy
18.06.2018
21:30:24
Григорий
18.06.2018
21:31:37
Vlad
18.06.2018
21:36:22
https://github.com/demetrixbio/FSharp.Data.Npgsql Потом расскажешь, как оно. :)
Это, если типы из c# не видны, то это же erased type provider?

Vlad
18.06.2018
21:44:05
Хм, интересно почему jsonprovider erased тогда

Я несколько огорчился этому факту

Evgeniy
18.06.2018
21:44:30
?‍♂️

Страница 606 из 772