Форум программистов, компьютерный форум, киберфорум
F# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 01.02.2019
Сообщений: 99
1

Вывод списка

28.12.2020, 00:21. Просмотров 1589. Ответов 13
Метки нет (Все метки)

Доброй ночи.

Решил ознакомиться с функциональным программированием и для начала порешать простые задачки.

Найти сумму кубов N чисел.

//Пока всё делаю в FSI
F#
1
2
3
4
5
6
7
8
9
let cubes x = x*x*x;;
 
let sum1 numbers = 
    numbers
    |> List.map cubes
    |> List.sum;;
 
> sum1 [1;2;3;];;
val it : int = 36
Работает как надо.

Далее захотел сделать красивенький вывод, типа "Сумма кубов чисел равна = 36"
Почему конструкция |> List.sum (printf "%A ") не работает?

И ещё хотел поинтересоваться, как заполнить список случайными значениями?

Благодарю.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.12.2020, 00:21
Ответы с готовыми решениями:

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

Удаление элемента списка/вывод нового списка
В общем, в 3м массиве у меня по идее должен был собраться новый список но выводится он чего-то не...

Вывод списка
Как выводить список var doctorList = new List<doctor>(); от класса public class doctor ...

Корректный вывод списка
Здравствуйте всем помогите с проблемой. Есть список в текстовом файле при добавлении в combobox...

13
5312 / 2049 / 605
Регистрация: 11.04.2015
Сообщений: 3,487
Записей в блоге: 41
28.12.2020, 01:59 2
Цитата Сообщение от IchStudiereC Посмотреть сообщение
Почему конструкция |> List.sum (printf "%A ") не работает?
Потому что то, что перед скобками возвращает число, а ты пытаешься передать ему аргумент, как будто это функция.
F#
1
2
3
4
5
6
    let cubes x = x * x * x
    let numbers = [1..5]
    numbers
    |> List.map cubes
    |> List.sum
    |> printfn "Сумма равна %i"
Цитата Сообщение от IchStudiereC Посмотреть сообщение
И ещё хотел поинтересоваться, как заполнить список случайными значениями?
Нужно использовать System.Random
F#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
open System
 
let rnd = Random()
let rlist min max count = 
    Seq.initInfinite (fun _ -> rnd.Next(min, max)) 
    |> Seq.take count
    |> List.ofSeq
[<EntryPoint>]
let main argv =
    let cubes x = x * x * x
    let numbers = [1..5]
    numbers
    |> List.map cubes
    |> List.sum
    |> printfn "Сумма равна %i"
    // Список из пяти чисел от 1 до 8
    rlist 1 8 5 |> printfn "%A"
    Console.ReadKey() |> ignore
    0 // return an integer exit code
Добавлено через 8 минут
IchStudiereC, еще функцию rlist можно реализовать, например, так
F#
1
let rlist min max count = [for _ = 1 to count do rnd.Next(min, max)]
То есть, тут есть варианты, но суть та же.
1
1 / 1 / 0
Регистрация: 01.02.2019
Сообщений: 99
28.12.2020, 11:20  [ТС] 3
Цитата Сообщение от diadiavova Посмотреть сообщение
Потому
Спасибо. А как сделать так, чтобы элементы были не жёстко заданы, а был доступен ввод в FSI?
Пр:
> Введите символы:
> 1 2 3 4 5
> Ответ: 225

В примере 2, с рандомом используются последовательности, я до них ещё не дошёл
Когда написано - выглядит понятно, но сам бы пока такое не написал)

На данный момент остановился на стр. 93 книги "Программирование на F#" К. Смита. Хочу попробовать применить всё вышенаписанное, а потом только двигаться дальше.
В связи с этим вопрос: есть ли где-то список задач для F# ("под F#"), чтобы можно было постепенно перемещаться от простого к сложному и задействовать все особенности данного языка.

Благодарю.
0
5312 / 2049 / 605
Регистрация: 11.04.2015
Сообщений: 3,487
Записей в блоге: 41
28.12.2020, 16:20 4
Цитата Сообщение от IchStudiereC Посмотреть сообщение
А как сделать так, чтобы элементы были не жёстко заданы, а был доступен ввод в FSI?
Вместо строки
F#
1
    let numbers = [1..5]
Нужно ввести
F#
1
2
    printfn "Введите целые числа, разделяя пробелами: "
    let numbers = Console.ReadLine().Split(' ') |> Array.map int |> List.ofArray
Цитата Сообщение от IchStudiereC Посмотреть сообщение
В примере 2, с рандомом используются последовательности, я до них ещё не дошёл
Ну я же показал вариант с list comprehension
Цитата Сообщение от IchStudiereC Посмотреть сообщение
В связи с этим вопрос: есть ли где-то список задач для F# ("под F#"), чтобы можно было постепенно перемещаться от простого к сложному и задействовать все особенности данного языка.
Вот чего не знаю... ))
Есть несколько интересных ресурсов по языку, ссылки есть в закрепленных темах раздела. Но вот то, что ты хочешь, это надо искать либо книгу, написанную подобным образом, либо какой-то учебный курс. Но я тут вряд ли смогу помочь.

Добавлено через 3 минуты
Цитата Сообщение от diadiavova Посмотреть сообщение
Нужно ввести
Кстати, превращать это в список не обязательно, модуль Array имеет все те же функции. Я уж так написал, чтобы можно было получить результат, внеся минимум изменений.
0
1 / 1 / 0
Регистрация: 01.02.2019
Сообщений: 99
28.12.2020, 23:50  [ТС] 5
Цитата Сообщение от diadiavova Посмотреть сообщение
Но вот то, что ты хочешь, это надо искать либо книгу, написанную подобным образом, либо какой-то учебный курс.
Спасибо. Пока не вижу таких.
Придётся самому придумывать задачки и потом "партиями" проверять на форуме на функциональное решение (чтобы ни капли императивщины ). Оживим данный подраздел
0
Модератор
2740 / 1900 / 411
Регистрация: 26.03.2015
Сообщений: 7,065
29.12.2020, 10:05 6
Можно найти какой-нибудь сайт с задачами (без связи с конкретным языком) и решать их.
К сожалению, лучший способ - отвечать на вопросы в разделе "для начинающих" - не работает из-за низкой активности в F# ветке. Но можно пойти, например, в C# ветку и решать (на F#) задачи оттуда.
0
1 / 1 / 0
Регистрация: 01.02.2019
Сообщений: 99
29.12.2020, 14:47  [ТС] 7
Shamil1, а вот отсюда подойдёт?
Кликните здесь для просмотра всего текста
http://www.itmathrepetitor.ru/zadachi-po-programmirovaniyu/

Не по теме:

А как часто Вам приходится применять F# в своей профессиональной деятельности, если не секрет?

0
Модератор
2740 / 1900 / 411
Регистрация: 26.03.2015
Сообщений: 7,065
29.12.2020, 15:40 8
Цитата Сообщение от IchStudiereC Посмотреть сообщение
а вот отсюда подойдёт?
Нет. Нужна какая-то обратная связь - чтобы решения как-то проверялись и/или рейтинг считался.
Например, можно было бы отсюда https://www.diofant.ru/ , но там все задачи на одну тему (насколько я понял).
0
Shamil1
29.12.2020, 15:42
  #9

Не по теме:

Цитата Сообщение от IchStudiereC Посмотреть сообщение
А как часто Вам приходится применять F# в своей профессиональной деятельности, если не секрет?
Практически, никогда, но видел вакансии в Москве на 250+ тыс. рублей.

0
1 / 1 / 0
Регистрация: 01.02.2019
Сообщений: 99
29.12.2020, 16:36  [ТС] 10
Цитата Сообщение от Shamil1 Посмотреть сообщение
чтобы решения как-то проверялись
Обещаю, что наглеть не буду, но иногда буду тревожить экспертов раздела F# своими вопросами

Цитата Сообщение от Shamil1 Посмотреть сообщение
но видел вакансии в Москве на 250+ тыс. рублей.

Не по теме:

Понятно, значит, вряд ли когда-то пригодится. Хотя, меня один раз знание азов CLIPS'a выручило :hihi:



Добавлено через 28 минут
Цитата Сообщение от Shamil1 Посмотреть сообщение
https://www.diofant.ru/
Прикольный сайт, однако. Некоторые логические задачи меня уже напрягли
0
Модератор
2740 / 1900 / 411
Регистрация: 26.03.2015
Сообщений: 7,065
29.12.2020, 16:49 11
Цитата Сообщение от IchStudiereC Посмотреть сообщение
Некоторые логические задачи меня уже напрягли
Там сверху выбор Математика, Информатика, ...
0
1 / 1 / 0
Регистрация: 01.02.2019
Сообщений: 99
29.12.2020, 23:09  [ТС] 12
Цитата Сообщение от Shamil1 Посмотреть сообщение
Там сверху выбор Математика, Информатика, ...

Не по теме:

Если б раньше узнал про такой сайт, был бы несомненно сообразительнее на данный момент, благодарю. Заставляет извилины двигаться)

0
Shamil1
30.12.2020, 11:42
  #13

Не по теме:

IchStudiereC,
После того, как решишь и твоё решение примет система, можно в закрытом (для решивших) обсуждении задачи сравнивать своё решение с другими. Это самая полезная фича (перенимаешь опыт). Поэтому просто решать задачи из учебника - не то.

0
IchStudiereC
31.12.2020, 15:49  [ТС]     Вывод списка
  #14

Не по теме:

Shamil1, спасибо! С наступающим! :dance:

0
31.12.2020, 15:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.12.2020, 15:49
Привет! Вот еще темы с ответами:

Вывод списка результатов
Имеется такой список студентов: class Student { public string Name { get; set; } public...

Вывод списка процессов и их Id
Помогите плиз хочу вывести полный список процессов, а выводит только 1 процесс. В listBox вообще не...

Вывод информации с списка
Доброго времени суток, не могу вывести информацию со списка. Делаю так: public static void...

Вывод списка ответов
Друзья, нужна ваша помощь. Сделал лабу по ЧМ, программа выводить приблизительное значение функции,...

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

Вывод значений многоуровневого списка
Имеется задача: Создать список в котором будет храниться списки объектов типа Word. Как вывести на...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.