• Предмет: Информатика
  • Автор: erasylbekm
  • Вопрос задан 5 месяцев назад

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

Ответы

Ответ дал: dan29742
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);

}

}


erasylbekm: а есть ли другое решение на пайтоне
dan29742: хорошо сейчас
dan29742: numbers = [10, 20, 25, 12, 30, 15, 18, 19, 22, 27]
sorted_numbers = sorted(numbers, key=lambda x: 1 if x == 0 else x * (x % 10))
print(sorted_numbers)
dan29742: numbers = [10, 20, 25, 12, 30, 15, 18, 19, 22, 27]
sorted_numbers = sorted(numbers, key=lambda x: 1 if x == 0 else x * (x % 10))
print(sorted_numbers)
dan29742: numbers = [10, 20, 25, 12, 30, 15, 18, 19, 22, 27]
sorted_numbers = sorted(numbers, key=lambda x: 1 if x == 0 else x * (x % 10))
print(sorted_numbers)
erasylbekm: спасибо большое, но нужное другое
Вас заинтересует