• Дан массив из 10 элементов (числа от 10 до 30). Осортировать список по произведению цифр в числе.​

Ответы 1

  • Ответ:

    Я не знаю какой код программирования, но я написал на нескольких основных языках

    Объяснение:

    Решение на python:

    def sort_by_product(arr):

    arr.sort(key=lambda x: reduce(lambda a, b: a*b, [int(i) for i in str(x)]))

    return arr

    arr = [10, 15, 20, 25, 30, 12, 24, 36, 48, 60]

    print(sort_by_product(arr))

    Решение на JavaScript:

    function sortByProduct(arr) {

    arr.sort(function(a, b) {

    a = a.toString().split("").reduce(function(a, b) { return a * b; });

    b = b.toString().split("").reduce(function(a, b) { return a * b; });

    return a - b;

    });

    return arr;

    }

    var arr = [10, 15, 20, 25, 30, 12, 24, 36, 48, 60];

    console.log(sortByProduct(arr));

    Решение на C++:

    #include <iostream>

    #include <algorithm>

    #include <functional>

    #include <numeric>

    int product(int x) {

    int result = 1;

    while (x > 0) {

    result *= x % 10;

    x /= 10;

    }

    return result;

    }

    int main() {

    int arr[] = {10, 15, 20, 25, 30, 12, 24, 36, 48, 60};

    int n = sizeof(arr) / sizeof(arr[0]);

    std::sort(arr, arr + n, [](int x, int y) { return product(x) < product(y); });

    for (int i = 0; i < n; i++) {

    std::cout << arr[i] << " ";

    }

    return 0;

    }

    Решение на C#:

    using System;

    using System.Linq;

    class Program {

    static void Main(string[] args) {

    int[] arr = { 10, 15, 20, 25, 30, 12, 24, 36, 48, 60 };

    Array.Sort(arr, (x, y) => GetProduct(x).CompareTo(GetProduct(y)));

    Console.WriteLine(string.Join(" ", arr));

    }

    static int GetProduct(int x) {

    return x.ToString().ToCharArray().Select(c => (int)char.GetNumericValue(c)).Aggregate((a, b) => a * b);

    }

    }

  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years