Отсортировать страны по количеству медалей в соответствии с достоинством

Captain Fizz

Новичок
Отсортировать страны по количеству медалей в соответствии с достоинством

Чтобы было более наглядно, сформулирую задачу таким образом.

На Олимпийских Играх 2030 года в Бобруйске страны-участники завоевали следующее количество медалей:

PHP:
Белоруссия      - золотых -  2, серебрянных -  3, бронзовых -  1, оловянных - 15, деревянных - 88;
Украина         - золотых - 54, серебрянных -  0, бронзовых -  8, оловянных -  1, деревянных -  7;
Китай           - золотых - 84, серебрянных - 22, бронзовых -  0, оловянных - 41, деревянных -  0;
США             - золотых - 41, серебрянных - 10, бронзовых -  0, оловянных -  0, деревянных - 17;
Зимбабве        - золотых - 18, серебрянных -  6, бронзовых - 14, оловянных - 13, деревянных -  8;
Северная Корея  - золотых -  0, серебрянных -  5, бронзовых -  0, оловянных - 22, деревянных - 12;
Казахстан       - золотых - 25, серебрянных -  0, бронзовых -  8, оловянных - 15, деревянных -  0;
Россия          - золотых - 98, серебрянных -  3, бронзовых -  7, оловянных -  2, деревянных - 10;

Или если представить по-другому:

PHP:
$medals=array(

'Белоруссия'     => array( 2,  3,  1, 15, 88),
'Украина'        => array(54,  0,  8,  1,  7),
'Китай'          => array(84, 22,  0, 41,  0),
'США'            => array(41, 10,  0,  0, 17),
'Зимбабве'       => array(18,  6, 14, 13,  8),
'Северная Корея' => array( 0,  5,  0, 22, 12),
'Казахстан'      => array(25,  0,  8, 15,  0),
'Россия'         => array(98,  3,  7,  2, 10)

);

Требуется расставить все страны по максимальному количеству медалей всех проб одновременно, в убывающем порядке. В случае одинакового количества медалей приоритет имеет проба медали.


Например из двух стран - Китай(84, 22, 0, 41, 0) и Зимбабве(18, 6, 14, 13, 8), Китай должен стоять выше, поскольку он по количеству серебрянных и оловянных медалей имеет первые места, а Зимбабве имеет первое место только по количеству бронзовых медалей.

Если же допустим у Китая(0, 22, 0, 41, 0), а у Зимбабве(0, 22, 0, 41, 8), то выше должна стоять Зимбабве, поскольку Зимбабве стоит выше Китая по количеству деревянных медалей.


Занимаемые странами места по количеству медалей одной пробы в соответствии с массивом $medals:
PHP:
$medals_positons=array(
'Белоруссия'     => array( 7,  5,  5,  3,  1),
'Украина'        => array( 3,  7,  2,  7,  6),
'Китай'          => array( 2,  1,  6,  1,  7),
'США'            => array( 4,  2,  6,  8,  2),
'Зимбабве'       => array( 6,  3,  1,  5,  5),
'Северная Корея' => array( 8,  4,  6,  2,  3),
'Казахстан'      => array( 5,  7,  2,  3,  7),
'Россия'         => array( 1,  5,  4,  6,  4)
);

То есть задача состоит в том, чтобы отсортировать массив $medals по убывающей в соответствии с критериями выше.
 

DiMA

php.spb.ru
Команда форума
и че это? Надо за тебя сделать твое домашнее задание, на должность старшего помощника младшего пхп-дворника?
 

Captain Fizz

Новичок
Автор оригинала: DiMA
и че это? Надо за тебя сделать твое домашнее задание, на должность старшего помощника младшего пхп-дворника?
Бла-бла, мое личное, ищу функцию сортировки, а домашние задания я перестал делать лет 20 назад, в отличие от тебя.

У тебя есть что по сабжу сказать?
 

габриель

Новичок
В общем то DiMA прав, хоть и высказался вспылчево, что свойственно его возврасту. Сабж я ему сам довал, думаю у него остался

Здесь дело не в php. Нужно сначала продумать алгоритм иначе времени много потратите.
 

DiMA

php.spb.ru
Команда форума
конечно есть, что сказать

Пхп здесь не причем. Нужно включить мозг и решить все самому за 30 секунд. На бумажке. А на написание вопроса, если он не скопипизжен из тестового задания для приема на работу, ты затратил много больше.

вариант для начинающей домохозяйки (тот, что за 30 секунд) - отсортируй по одному критерию, однаковые варианты во внутренний массив, потом все вложенные массивы отсортируй

в один проход тоже можно: sprintf("%10d-%10d", 1й критерий, 2й критерий) и обычный ksort
 
Сверху