Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
 Аватар для sysrepos
88 / 81 / 31
Регистрация: 08.08.2013
Сообщений: 467
Записей в блоге: 1

Задача по математике, 3 класс, пять вложенных циклов, делегаты. Есть ли короткое решение?

17.03.2026, 11:27. Показов 7498. Ответов 61
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Есть задача из 3 класса по математике. Задача на картике. №13.

Описание: есть три массива чисел (3, 5, 7, 11) (19, 29, 47, 61) (13, 27, 39, 57). Нужно любое число из 1 массива сложить или вычесть или умножить или разделить на любое число из второго массива и результат сложить или вычесть или умножить или разделить на любое число из третьего массива. И получить в результате 100.

Не знаю как ее нужно решать третьекласникам, возможно методом подобора. Я решил с помощью C#. Код получился примерно на 100 строк. Пять вложенных циклов, делегаты. Часто под такими задачами и такими решениями (на 100 строк) видел решения в пару строк с использованием LINQ, лямбда выражений и прочей магией C#. Можно ли эту задачу решить более коротким способом, чем мой?

C#
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication1
{
    class Program
    {
        public delegate int  MyDelegate (int x, int y);
 
        static public int sum(int x, int y)
        {
            return (x + y);
        }
 
        static public int minus(int x, int y)
        {
            return (x - y);
        }
 
        static public int umn(int x, int y)
        {
            return (x * y);
        }
 
        static public int del(int x, int y)
        {
            return (x / y);
        }
 
        /// <summary>
        /// возвращает символ +-*/
        /// </summary>
        /// <param name="md"></param>
        /// <returns></returns>
        static public string NameOperation(MyDelegate md)
        {
            string rez = "_";
            if (md.Method.Name.ToString() == "sum") return "+";
            if (md.Method.Name.ToString() == "minus") return "-";
            if (md.Method.Name.ToString() == "umn") return "*";
            if (md.Method.Name.ToString() == "del") return "/";
            
            return rez;
        }
 
        static void Main(string[] args)
        {
            
          
            MyDelegate d1_sum=sum;
            MyDelegate d2_minus = minus;
            MyDelegate d3_umn=umn;
            MyDelegate d4_del = del;
 
 
            List<MyDelegate> d_all_operation_1 = new List<MyDelegate>();
            List<MyDelegate> d_all_operation_2 = new List<MyDelegate>();
 
            d_all_operation_1.Add(d1_sum);
            d_all_operation_1.Add(d2_minus);
            d_all_operation_1.Add(d3_umn);
            d_all_operation_1.Add(d4_del);
 
            d_all_operation_2.Add(d1_sum);
            d_all_operation_2.Add(d2_minus);
            d_all_operation_2.Add(d3_umn);
            d_all_operation_2.Add(d4_del);
 
            int rez = 0;
            string mes1 = "";
            string mes2 = "";
            string mes3 = "---";
 
            int[] arr1 = { 3, 5, 7, 11 };
            int[] arr2 = { 19, 29, 47, 61 };
            int[] arr3 = { 13, 27, 39, 57 };
 
            Console.BufferHeight = 2000;
            Console.WriteLine("подсчет");
 
 
            foreach(int i in arr1)
            {
                foreach (int j in arr2)
                {
                    foreach (int k in arr3)
                    {
                        foreach (var v1 in d_all_operation_1)
                        {
                            foreach (var v2 in d_all_operation_2)
                            {
                                rez = v2(v1(i, j), k);
 
                                if (rez == 100)
                                {
                                    mes1 = " (+++решение+++)";
                                }
                                mes2 = string.Format("{0}{1}{2}{3}{4}={5}{6}", i, NameOperation(v1), j, NameOperation(v2), k, v2(v1(i, j), k), mes1);
                                Console.WriteLine(mes2);
                                mes1 = "";
 
                                if (rez == 100)
                                {
                                    mes3 = mes2;
                                }
 
 
                            }
                        }
 
                    }
 
                }
 
            }
 
 
            Console.WriteLine("_");
 
            Console.WriteLine(mes3);
 
            Console.ReadLine();
 
 
        }
    }
}
Миниатюры
Задача по математике, 3 класс, пять вложенных циклов, делегаты. Есть ли короткое решение?   Задача по математике, 3 класс, пять вложенных циклов, делегаты. Есть ли короткое решение?   Задача по математике, 3 класс, пять вложенных циклов, делегаты. Есть ли короткое решение?  

0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.03.2026, 11:27
Ответы с готовыми решениями:

Описать класс с функцией. Объявить делегат. Произвести вызов функции через делегат
Описать функцию Exchange(X, Y), меняющую значения переменных X и Y.

Отличие делегата от делегата с лямбда-выражением
Народ чем отличается Invoke(new Action(() =&gt; button2.IsEnabled = true)); от Invoke(new...

Разница лямбда выражения, делегата (\анонимного делегата), методом (\анонимных методов)
Всё просто: В чём отличия: лямбд, делегатов, анонимных делегатов, методов, анонимных методов? ...

61
dive
 Аватар для I can
4991 / 4751 / 850
Регистрация: 13.04.2015
Сообщений: 9,993
19.03.2026, 12:46
Студворк — интернет-сервис помощи студентам
ой зануда...
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3458 / 2779 / 575
Регистрация: 04.09.2018
Сообщений: 8,739
Записей в блоге: 3
19.03.2026, 12:47
Цитата Сообщение от diadiavova Посмотреть сообщение
вопрос был о более коротком решении
Переведу точнее: автор просил тот же подход (перебор), только описанный инструкциями в более кратком виде. С помощью LINQ например. Это не означает что алгоритм станет производительней и проще. Скорее даже наоборот. Выглядеть будет просто "красивее"..
0
 Аватар для diadiavova
7261 / 2608 / 745
Регистрация: 11.04.2015
Сообщений: 4,155
Записей в блоге: 43
19.03.2026, 12:55
Цитата Сообщение от wizard41 Посмотреть сообщение
только описанный инструкциями в более кратком виде. С помощью LINQ например.
Ну и где все это?
Цитата Сообщение от wizard41 Посмотреть сообщение
автор просил тот же подход (перебор)
А у меня что?
Цитата Сообщение от wizard41 Посмотреть сообщение
Выглядеть будет просто "красивее"..
То есть никто не спорит с тем, что решение с кучей вложенных циклов - это фу?
Цитата Сообщение от I can Посмотреть сообщение
ой зануда..
Ну а как ты хотел, тут в теме все переписывали одно и то же, только с разными финтифлюшками и в теме царила полная идилия. Тут прихожу я с оригинальной идеей и все сразу на меня накинулись. Нормально, так держать! ))
0
Заблокирован
19.03.2026, 13:55
Цитата Сообщение от diadiavova Посмотреть сообщение
Тут прихожу я с оригинальной идеей и все сразу на меня накинулись.
Где то я просмотрел где накидались...
Оригинальную идею в код/студию.
Я хочу посмотреть, как кот будет в аналитику.

А просто немного отсеять перебор, это не такая уж и оригинальная идея.
Не я ничего, просто хочу кота аналитика.

Меня прошу не втягивать в челендж, я в шарпе не няв-няв.
Кликните здесь для просмотра всего текста


0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3458 / 2779 / 575
Регистрация: 04.09.2018
Сообщений: 8,739
Записей в блоге: 3
19.03.2026, 14:56
Цитата Сообщение от diadiavova Посмотреть сообщение
Ну и где все это?
раз, два.
Цитата Сообщение от diadiavova Посмотреть сообщение
А у меня что?
Попытка решить задачу аналитически. В коде это будет означать:
- просмотр массивов на предмет расстановки значений
- где-то собирать и анализировать статистику
- на основании анализа 'предполагать' какие-то шаги
- сохранять кучу промежуточных состояний
- где-то в конце принимать решение об правильных вариантах. Куча if/else...
Теоретически да, кол-во просмотров вариаций массивов может быть чуть меньше, чем перебором. Однако остальная логика такого анализа потянет на пять-десять размеров приведенных выше вариантов. Привет задаче "Проблема рюкзака"...
Цитата Сообщение от diadiavova Посмотреть сообщение
с кучей вложенных циклов - это фу?
Это самое оптимальное и быстрое решение. Решение другими методами и записанными в пару строк - таковыми не являются.
Цитата Сообщение от diadiavova Посмотреть сообщение
и все сразу на меня накинулись
Кто конкретно? Я лишь сказал, что аналитическое решение здесь просто неуместно. Сложность его реализации не коррелирует со сложностью задачи.

Если действовать по принципу "критикуешь - предлагай", то ждем такое решение.. На любом доступном вам языке. Посмотрим
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3458 / 2779 / 575
Регистрация: 04.09.2018
Сообщений: 8,739
Записей в блоге: 3
19.03.2026, 19:17
Подведем итоги...

1-е место занял код собсно автора sysrepos, как и ожидалось;
2-е место занимает мой вариант (тоже весьма ожидаемо);
3-е место - вариант от zhigarartem;
4-е место - от I can (понятно почему он долгий? Из-за DataTable..).

Benchmark

Код автора вопроса sysrepos
C#
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
    public class AuthorOriginClass
    {
        delegate int MyDelegate(int x, int y);
 
        static int sum(int x, int y)
        {
            return (x + y);
        }
        static int minus(int x, int y)
        {
            return (x - y);
        }
        static int umn(int x, int y)
        {
            return (x * y);
        }
        static int del(int x, int y)
        {
            return (x / y);
        }
 
        /// <summary>
        /// возвращает символ +-*/
        /// </summary>
        /// <param name="md"></param>
        /// <returns></returns>
        static string NameOperation(MyDelegate md)
        {
            string rez = "_";
            if (md.Method.Name.ToString() == "sum") return "+";
            if (md.Method.Name.ToString() == "minus") return "-";
            if (md.Method.Name.ToString() == "umn") return "*";
            if (md.Method.Name.ToString() == "del") return "/";
            return rez;
        }
 
 
        public static int Test(int[] arr1, int[] arr2, int[] arr3)
        {
            int result = 0;
            
            MyDelegate d1_sum = sum;
            MyDelegate d2_minus = minus;
            MyDelegate d3_umn = umn;
            MyDelegate d4_del = del;
 
            List<MyDelegate> d_all_operation_1 = new List<MyDelegate>();
            List<MyDelegate> d_all_operation_2 = new List<MyDelegate>();
 
            d_all_operation_1.Add(d1_sum);
            d_all_operation_1.Add(d2_minus);
            d_all_operation_1.Add(d3_umn);
            d_all_operation_1.Add(d4_del);
 
            d_all_operation_2.Add(d1_sum);
            d_all_operation_2.Add(d2_minus);
            d_all_operation_2.Add(d3_umn);
            d_all_operation_2.Add(d4_del);
 
            int rez = 0;
 
            /*
            string mes1 = "";
            string mes2 = "";
            string mes3 = "---";
            */
 
            /*
            int[] arr1 = { 3, 5, 7, 11 };
            int[] arr2 = { 19, 29, 47, 61 };
            int[] arr3 = { 13, 27, 39, 57 };
            */
 
            //Console.BufferHeight = 2000;
            //Console.WriteLine("подсчет");
 
            foreach (int i in arr1)
            {
                foreach (int j in arr2)
                {
                    foreach (int k in arr3)
                    {
                        foreach (var v1 in d_all_operation_1)
                        {
                            foreach (var v2 in d_all_operation_2)
                            {
                                rez = v2(v1(i, j), k);
 
                                if (rez == 100)
                                {
                                    //mes1 = " (+++решение+++)";
                                    result++;
                                }
                                //mes2 = string.Format("{0}{1}{2}{3}{4}={5}{6}", i, NameOperation(v1), j, NameOperation(v2), k, v2(v1(i, j), k), mes1);
                                //Console.WriteLine(mes2);
                                //mes1 = "";
 
                                /*
                                if (rez == 100)
                                {
                                    mes3 = mes2;
                                }
                                */
                            }
                        }
                    }
                }
            }
 
            /*
            Console.WriteLine("_");
            Console.WriteLine(mes3);
            Console.ReadLine();
            */
 
            return result;
        }
    }

Код от I can
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    public class ICanClass
    {
        public static int Test(int[] arr1, int[] arr2, int[] arr3)
        {
            int result = 0;
 
            string[] d = new string[4] { "*", "/", "+", "-" };
            string s = "";
            DataTable dt = new DataTable();
            foreach (int v1 in arr1)
                foreach (int v2 in arr2)
                    foreach (int v3 in arr3)
                        for (int i = 0; i < d.Length; i++)
                            for (int j = 0; j < d.Length; j++)
                            {
                                s = "(" + v1 + d[i] + v2 + ")" + d[j] + v3 + "=100";
                                if (Convert.ToBoolean(dt.Compute(s, "")) == true)
                                    result++;
                            }
 
            return result;
        }
    }

Код от zhigarartem
C#
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
    public class ZhigarArtem
    {
        public static int Test(int[] arr1, int[] arr2, int[] arr3)
        {
            int result = 0;
 
            var a = arr1.Select(x => new Eq(x.ToString(), x));
            var b = arr2;
            var c = arr3;
 
            var results = a.SelectMany(x => b.SelectMany(y => Compute(x, y)))
                           .SelectMany(ab => c.SelectMany(z => Compute(ab, z)));
 
            foreach (var r in results)
                if (r.Res == 100)
                    result++;
 
            return result;
        }
 
        private static IEnumerable<Eq> Compute(Eq eq, int val)
        {
            yield return new Eq($"({eq.Txt}+{val})", eq.Res + val);
            yield return new Eq($"({eq.Txt}-{val})", eq.Res - val);
            yield return new Eq($"({eq.Txt}*{val})", eq.Res * val);
            yield return new Eq($"({eq.Txt}/{val})", eq.Res / val);
        }
    }

Код от wizard41
C#
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
    public class Wizard41Class
    {
        public static int Test(int[] arr1, int[] arr2, int[] arr3) =>
            CalcMany(arr1, arr2, arr3, 100).Count();
 
        public static IEnumerable<string> CalcMany(int[] arr1, int[] arr2, int[] arr3, int target)
        {
            return from a in arr1
                   from b in arr2
                   from c in arr3
                   from op1 in operations
                   from op2 in operations
                   let result = calculate(a, b, c, op1, op2)
                   where result == target
                   select $"{a} {op1} {b} {op2} {c} = {target}";
        }
 
        private readonly static char[] operations = { '+', '-', '*', '/' };
 
        private static int calculate(int a, int b, int c, char op1, char op2)
        {
            var firstResult = applyOperation(a, b, op1);
            return firstResult == 0 ? 0 : applyOperation(firstResult, c, op2);
        }
 
        private static int applyOperation(int x, int y, char op)
        {
            switch (op)
            {
                case '+': return x + y;
                case '-': return x - y;
                case '*': return x * y;
                case '/': return y != 0 ? x / y : 0;
                default: return 0;
            };
        }
    }

MainTestClass
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    public class MainTest
    {
        readonly int[] arr1 = new int[] { 3, 5, 7, 11 };
        readonly int[] arr2 = new int[] { 19, 29, 47, 61 };
        readonly int[] arr3 = new int[] { 13, 27, 39, 57 };
 
 
        [Benchmark]
        public int AuthorOriginMethod() => AuthorOriginClass.Test(arr1, arr2, arr3);
 
        [Benchmark]
        public int ICanMethod() => ICanClass.Test(arr1, arr2, arr3);
 
        [Benchmark]
        public int ZhigarArtemMethod() => ZhigarArtem.Test(arr1, arr2, arr3);
 
        [Benchmark]
        public int Wizard41Method() => Wizard41Class.Test(arr1, arr2, arr3);
    }

C#
1
2
3
4
5
6
7
8
    public class Program
    {
        public static void Main(string[] args)
        {
            BenchmarkRunner.Run<MainTest>();
            Console.ReadLine();
        }
    }

1
wound up as Aussie
516 / 139 / 22
Регистрация: 15.05.2019
Сообщений: 594
20.03.2026, 13:29
Цитата Сообщение от sysrepos Посмотреть сообщение
как ее нужно решать третьекласникам
Я попробовал решить с точки зрения подбора (точно не засекал, но заняло минут 5, правда после второго прочтения, т.к. идея не сразу появилась), но начиная от третьего массива - т.е. возникла идея (попробую объяснить, т.к. всё это было почти на интуитивном уровне), сейчас,.. что должно быть только одно правильное действие (из четырёх) между первыми двумя массивами, причём такое, чтобы результат был "кратен" ( в зависимости от второго действия) с третьим массивом.
Я ориентировался на "единицы" чисел в третьем массиве - после нескольких переборов, увидел, что "деление", "сложение" и "вычитание" можно исключить, т.е. остаётся только умножение, причём для маленьких значений (а они только в первом массиве).
Почти стразу (через несколько минут) сразу совпало:
3 * 29 + 13 ;
(пересчитал на калькуляторе :-) )
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3458 / 2779 / 575
Регистрация: 04.09.2018
Сообщений: 8,739
Записей в блоге: 3
20.03.2026, 13:39
Python_Val, переставляешь массив первый с третьим и ход рассуждений меняется: 39 - 19 * 5 = 100..
0
wound up as Aussie
516 / 139 / 22
Регистрация: 15.05.2019
Сообщений: 594
22.03.2026, 03:15
Цитата Сообщение от wizard41 Посмотреть сообщение
Python_Val, переставляешь массив первый с третьим и ход рассуждений меняется: 39 - 19 * 5 = 100..
Это неправильное решение, т.к. оно не соответствует условию задачи:
Цитата Сообщение от sysrepos Посмотреть сообщение
Описание: есть три массива чисел (3, 5, 7, 11) (19, 29, 47, 61) (13, 27, 39, 57). Нужно любое число из 1 массива сложить или вычесть или умножить или разделить на любое число из второго массива и результат сложить или вычесть или умножить или разделить на любое число из третьего массива. И получить в результате 100.
Правильное это:
3 * 29 + 13 ;
(я правда не могу сказать есть ли второе решение, если строго следовать условию задачи).

ps: к тому же, ход рассуждений не меняется, т.к. Вы ориентировались на 9 из третьего (по сути) массива, как я и сказал в предыдущем посте.
1
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3458 / 2779 / 575
Регистрация: 04.09.2018
Сообщений: 8,739
Записей в блоге: 3
22.03.2026, 03:58
Python_Val, абсолютно верное замечание! Поставлю вам плюс в репутацию.
Конечно же, пример с перестановкой массивов был факультативным. Именно к этой задаче он не имеет отношения. Я лишь хотел показать товарищам "аналитикам", что все их рассуждения рассыпаются, чуть измени условия.
А что, если, нужно найти все возможные варианты совпадений? Вот тут у аналитиков начнутся проблемы... Зато простой перебор найдет все что нужно. ))
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16158 / 11278 / 2891
Регистрация: 21.04.2018
Сообщений: 33,164
Записей в блоге: 2
11.04.2026, 13:07
Цитата Сообщение от sysrepos Посмотреть сообщение
Не знаю как ее нужно решать третьекласникам, возможно методом подобора.
ЛОГИКОЙ
Это же учебник для третьеклассников, а не программистов !
Да сложная задача(звёздочка в задании), но точно не на слепой перебор.

1) Это целочисленная арифметика без отрицательных чисел. Значит на каждом шаге надо убирать операции не дающие целый результат.
Это сразу исключает деление из первой операции и умножение из второй.

2) Все числа нечётны. + и - трёх нечётных чисел всегда даст тоже нечётное. Значит одна из операций + или -, а вторая * или /.

3) все первые числа меньше вторых, значит первая операция это сумма или умножение.

4) Если первая операция сумма, то результат будет чётным. * или / чётного с нечётным всегда дадут нечётное. Значит первая операция это только *, а вторая + или -.

5) Самое маленько 2-е число это 19. Самое большое 3-е это 61. 11 * 19 - 61 > 100. Исключаем 11.

6) Умножение 5 на нечётное число всегда даст 5 в конце. Для получения 0 после + или - с таким числом у второго тоже должна быть в конце. Таких чисел нет. Значит 5 тоже исключаем.

7) 7*9 = 133. 33 нет на третьем круге. Все остальные произведения больше 200, но все третьи меньше 100. Значит 7 тоже не даст нужного результата. 7 тоже исключаем.

8) Остаётся только 3 * х ± у. Здесь уже перебором в уме можно быстро найти нужный результат, так как после первого умножения сразу становится очевидно какое число надо прибавить или отнять, чтобы получить 100.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16158 / 11278 / 2891
Регистрация: 21.04.2018
Сообщений: 33,164
Записей в блоге: 2
11.04.2026, 13:30
Цитата Сообщение от sysrepos Посмотреть сообщение
видел решения в пару строк с использованием LINQ, лямбда выражений и прочей магией C#
Ну, за "пару" вряд ли. Но "любопытства ради" мой вариант:
C#
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
    /// <summary>
    /// Описание: есть три массива чисел (3, 5, 7, 11) (19, 29, 47, 61) (13, 27, 39, 57).
    /// Нужно любое число из 1 массива сложить или вычесть или умножить или разделить
    /// на любое число из второго массива и результат сложить или вычесть или умножить
    /// или разделить на любое число из третьего массива. И получить в результате 100.
    /// </summary>
    public static class Topic322128
    {
        static int[] one = { 3, 5, 7, 11 };
        static int[] two = { 19, 29, 47, 61 };
        static int[] three = { 13, 27, 39, 57 };
        static (char op, Func<int, int, int> func)[] funcs =
        {
            ('+', (x, y) => x+y),
            ('-', (x, y) => x-y),
            ('*', (x, y) => x*y),
            ('/', (x, y) => x/y),
        };
 
        public static void Start()
        {
            var all = one
                .SelectMany(x => funcs, (x, f1) => new { x, f1 })
                .SelectMany(t => two, (t, y) => new { t.x, t.f1, y, res1 = t.f1.func(t.x, y) })
                .SelectMany(t => funcs, (t, f2) => new { t.x, t.f1, t.y, t.res1, f2 })
                .SelectMany(t => three, (t, z) => new { t.x, t.f1, t.y, t.f2, z, final = t.f2.func(t.res1, z) })
                .Where(t => t.final == 100)
                .Select(t => (t.x, t.f1, t.y, t.f2, t.z));
 
            // Вывод результатов
            foreach (var res in all)
            {
                Console.WriteLine($"({res.x} {res.f1.op} {res.y}) {res.f2.op} {res.z} = 100");
            }
        }
    }
Вывод в консоль:
Code
1
(3 * 29) + 13 = 100
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3458 / 2779 / 575
Регистрация: 04.09.2018
Сообщений: 8,739
Записей в блоге: 3
11.04.2026, 15:25
Цитата Сообщение от Элд Хасп Посмотреть сообщение
ЛОГИКОЙ
Да, вот только большие сомнения, что 3-классники уже способны на такие рассуждения. Я показал эту задачу 6-ти и 8 - класснику. "Затупили" оба.. Тут еще проблема в том, что далеко не все могут удержать в голове результаты одного-двух предыдущих действий. То есть они будут реально выписывать каждое действие в строку в тетради. А это и есть самый настоящий перебор.

Задача несколько странноватая для 3 класса, фактически комбинаторика. Основная масса точно ничего не поймет, из 10 учеников один-два от силы.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16158 / 11278 / 2891
Регистрация: 21.04.2018
Сообщений: 33,164
Записей в блоге: 2
12.04.2026, 00:28
Цитата Сообщение от wizard41 Посмотреть сообщение
Да, вот только большие сомнения, что 3-классники уже способны на такие рассуждения
Я тоже думаю что задача сложновата для 3-го класса.
По сути для этого возраста это "олимпиадный" уровень.
Но задача со звёздочкой. Может действительно олимпийцев ищут.
Было бы интересно другие задачи со звёздочками из этого учебника увидеть.
0
Заблокирован
12.04.2026, 01:38
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Было бы интересно другие задачи со звёздочками из этого учебника увидеть.
"Математика 3 класс Л.Г.Петерсон часть 1, 2, 3 ФГОС"
1
 Аватар для sysrepos
88 / 81 / 31
Регистрация: 08.08.2013
Сообщений: 467
Записей в блоге: 1
12.04.2026, 12:26  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Было бы интересно другие задачи со звёздочками из этого учебника увидеть.
вот несколько задач со звездочкой из этого учебника
Миниатюры
Задача по математике, 3 класс, пять вложенных циклов, делегаты. Есть ли короткое решение?  
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16158 / 11278 / 2891
Регистрация: 21.04.2018
Сообщений: 33,164
Записей в блоге: 2
12.04.2026, 13:48
Цитата Сообщение от sysrepos Посмотреть сообщение
вот несколько задач со звездочкой из этого учебника
На мой взгляд, тут все задачи не уровня третьего класса. Для всех требуются хорошие навыки построения логических рассуждений и/или знания уровня классов на 3-5 выше.

Добавлено через 2 минуты
Цитата Сообщение от 000d60 Посмотреть сообщение
"Математика 3 класс Л.Г.Петерсон часть 1, 2, 3 ФГОС"
Какого уровня задачи со звёздочками в этом учебнике ?
Задачи со звёздочками в учебниках Людмилы Петерсон считаются повышенным уровнем сложности. Если говорить проще, это задачи «на засыпку», которые выходят за рамки стандартной школьной программы.
Вот что их отличает:

1. Логика, а не алгоритм: В обычных задачах ребенок действует по образцу, а здесь нужно самому догадаться, какую стратегию применить.
2. Олимпиадный уклон: Многие из этих заданий встречаются в математических конкурсах («Кенгуру», «Медвежонок» и др.). Они тренируют нестандартное мышление.
3. Комбинаторика и геометрия: Часто встречаются задачи на перебор вариантов, разрезание фигур или сложные логические цепочки.
4. Проверка «на прочность»: Они не обязательны для всех, но важны для тех, кому математика дается легко, чтобы не становилось скучно.

Для третьеклассника такие задачи — это отличный способ развить гибкость ума, но они часто требуют помощи взрослого или коллективного обсуждения в классе.
2
Заблокирован
12.04.2026, 15:46
Цитата Сообщение от sysrepos Посмотреть сообщение
вот несколько задач со звездочкой из этого учебника
Некоторые задачи похожи на задачи из тестов на IQ, для взрослых.
Также, подобные тесты, иногда, проводят для определения пригодности для обучения на те или иные специальности.
Но Шелдону, персонажу сериала, было бы скучно)

Но это же должно быть понятно сразу(и мне было понятно).
И использования таких учебников и задач со звездочками, полностью ложится на преподавателя.
Для одного класса можно их задавать всем как домашние задания, дополнительное, и обсуждать решения в классе.
В других, задавать индивидуально, если таковые ученики имеются.

Другое дело, когда молодые учителя не бум-бум и задают такие задачи всему классу как обязательные к решению с последующим оцениваем = бред. А это бывает очень часто.
К чему эта вся лирика?
Что подобные учебники - плохой выбор для планового обучения\тестирования. Это реальность.
А Петерсон и/или заказчики - это из области теории.

Добавлено через 2 минуты
wizard41, я ещё тогда написал вариант на С++.
И он сравним по скорости с самым лучшим результатом на C#.
А по сложности написания и знания самого ЯП - ну ты сам можешь догадаться)
Не говоря уже про строчки кода.
0
 Аватар для sysrepos
88 / 81 / 31
Регистрация: 08.08.2013
Сообщений: 467
Записей в блоге: 1
12.04.2026, 16:17  [ТС]
задание с лабиринтом было задано всему классу как обычное домашнее задание. Школа обычная, класс якобы с математическим уклоном. (как по мне, то просто обычный класс с обычными детьми). Не в восторге от учителя, но что имеем, то имеем.
0
Заблокирован
12.04.2026, 16:46
sysrepos, значит я правильно всё понял с самого твоего поста и причины его появления.
Хоть и вопрос был лишь о стиле решения через программирование.

Ещё добавлю, когда искал источник, видел ГДЗ для 3 класса, и там были те же задания, по сути, но более легкие, включая такой же "лабиринт".
Кажется издатель - "Школа России".
Мне лично попалась задачка, в двоюродной племянницы(место не Россия) где задача даже для меня(тогда лет 20-22 было) была сложная.
И без всяких звездочек.
Ещё и поэтому я затронул эту проблему, проблему составления учебного плана и материалов.
Наверное МинОбр всех стран экспериментируют.
Нужно делать скидку и так же уметь защищать своих детей если на них оказывают высокое давление.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.04.2026, 16:46

Максимально короткая программа с использованием делегата
Помогите пожалуйста:нужно написать максимально короткую программу с использованием делегата....

Есть ли специальные библиотеки для решения задач высшей математики
подскажите пожалуйста есть ли для c# специальные библиотеки для решения задач высшей математики...

Создать класс для реализации методов решения квадратного уравнения (Нужен максимально короткий код)
Нужен максимально короткий код линк использовать можно НА ВСЕ НЕ БОЛЕЕ 25 МИНУТ!!! 1.Пусть...

Статический класс и делегаты
Есть статический public класс, в котором создано несколько делегатов. Чтоб делегаты объявлены тоже...

Метод для клика по кнопке и ошибка "требуется класс, делегат или структура"
Кода добавляю метод для клика по кнопке пишет такие ошибки: &quot;Требуется &quot;}&quot;&quot;(хотя там вроде все...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения. https:/ / habr. com/ ru/ sandbox/ 295048/ По ссылке 403. Не очень информативно такую ссылку постить. Запись от Usaga размещена Сегодня в 06:46 . . .
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru