Наибольшее и наименьшее возможное число

16

задача

Учитывая массив неотрицательных чисел, выведите наибольшее и наименьшее возможное число, которое можно сформировать, присоединившись к ним.

правила

Вход, выход может быть в любом удобном формате.

Массив может содержать не более 1 десятичного числа.

Примеры

input:[22,33,44,55.55,33]
output:4433332255.55,55.5522333344

input:[34,900,3,11,9]
output:990034311,113349009

input:[99.93,9,3,39]
output:939399.93,99.933399

input:[45.45,45,45,45]
output:45454545.45,45.45454545

input:[12,21,34,43,45.1]
output:4334211245.1,45.112213443

Это код-гольф, поэтому выигрывает самый короткий код.

Ведант Кандой
источник
1
Не будет ли первый вывод: 4422333355.55, 55.5544333322? Те меньше и больше соответственно.
октября
@ouflak, вы должны вывести наибольшее и наименьшее.
Ведант Кандой
1
Не важно, посмотри сейчас. Запутался с десятичным знаком.
ouflak
Будет [[55.55,22,33,33,44],[44,33,33,22,55.55]]ли приемлемый формат вывода?
Лохматый
1
В любом случае хорошо @Jordan
Ведант Кандой

Ответы:

3

05AB1E , 11 байт

œJΣ'.¡ï}Á2£

Попробуйте онлайн! или как тестовый набор

объяснение

 œ             # get permutations of input
  J            # join each
   Σ    }      # sort by
    '.¡        # splitting into [before decimal, after decimal]
       ï       # and converting each to int
         Á     # rotate the result right
          2£   # and take the first 2 values
Emigna
источник
Жаль, что у нас нет cast to float. Я помню, что был один в Legacy, но я только что посмотрел его, и, очевидно, это был a stringified cast to float, который довольно бесполезен, так как вы хотите, чтобы сортировки
плавали
@KevinCruijssen: Да. У нас было , is_numberно, к сожалению, нет to_number.
Эминья
3

JavaScript (ES6), 68 66 байт

a=>[1,-1].map(n=>a.sort((a,b)=>[a%1||a]+b<[b%1||b]+a?n:-n).join``)

Попробуйте онлайн!

Как?

Мы используем следующий тест для сравнения двух значений во входном массиве:

[a % 1 || a] + b < [b % 1 || b] + a

Выражение x % 1 || xвозвращает десятичную часть Икс если Икс - десятичное число, или оставляет Икс неизменным в противном случае.

Выражение [x % 1 || x] + y приводит приведенный выше результат к строке и объединяет его с другим значением.

Если в списке есть десятичное число, оно всегда должно рассматриваться как наименьшее значение. Применяя наше преобразование, десятичное число превращается в строку, начинающуюся с"0." , которая лексикографически упорядочена раньше всего.

Примеры:

  a |   b | [a%1||a]+b | [b%1||b]+a
----+-----+------------+------------
  4 |   5 | "45"       | "54"
 10 |  11 | "1011"     | "1110"
  8 |  80 | "880"      | "808"
  7 | 9.5 | "79.5"     | "0.57"
Arnauld
источник
3

Japt, 14 11 байт

á m¬ñn é v2

Попытайся

Благодаря Луису спасен 1 байт , пожалуйста, +1его решение тоже.

á               :Permutations
  m             :Map
   ¬            :  Join
    ñ           :Sort by
     n          :  Converting each to a number
       é        :Rotate right
         v2     :Remove & return the first 2 elements
мохнатый
источник
Ок, это лучше !! черт!! это éбыло спрятано все это время !!
Луис Фелипе Де Иисус Муньос
3

Japt , 14 11 10 байт

á m¬ñn gJò

Попробуйте онлайн!

Луис Фелипе Де Иисус Муньос
источник
Хороший. Я был á ®¬nÃnна первой строчке - пнул себя, что не думал о твоем пути.
Лохматый
12 байтов , используя -hфлаг.
Лохматый
11 байт , используя -gфлаг. Также работает с íвместо ï.
лохматый
@ Шэгги Отлично! Благодарность!!
Луис Фелипе Де Иисус Муньос
Dang! Похоже, я сдался в ближайшее время; очень красиво сделано.
Лохматый
3

Желе , 6 байт

Œ!VṢ.ị

Попробуйте онлайн!

Объяснение:

Œ!VṢ.ị Arguments: x
Œ!     Permutations of x
  V    Concatenate the representations of each permutation's elements and evaluate the result as Jelly code
   Ṣ   Sort
    .ị Get element at index 0.5, i.e. elements at indices 0 (last) and 1 (first)
Эрик Outgolfer
источник
Я никогда не программирую в Jelly, но .ịэто довольно крутой способ получить как первый, так и последний элемент списка. Хороший ответ! +1 от меня.
Кевин Круйссен
1
@KevinCruijssen На самом деле получает последний и первый элемент. : P
Эрик Outgolfer
Я также никогда не программировал на желе, но я не понимаю, как это .ịработает. Если я правильно читаю документы, я думаю, что получает элемент y в floor (x) и ceil (x), и .есть 0.5. Не значит ли это, что он получит элементы y с индексами 0 и 1?
Cowabunghole
Индексируется ли Jelly 1? Это объяснило бы это поведение, но я не вижу ничего об этом в документации.
Cowabunghole
1
@ Cowabunghole Да, желе имеет 1 индекс.
Эрик Outgolfer
3

Рубин , 56 45 байт

->a{a.permutation.map{|p|p.join.to_f}.minmax}

Попробуйте онлайн!

-11 байт, спасибо Джордан

Travis
источник
1
Хорошо сделано! Вы можете сэкономить 2 байта, убрав скобки вокруг аргумента ( ->a{...) и еще 9, используя удобный minmaxметод: tio.run/…
Иордания
2

Pyth, 13 12 байт

hM_BSvsM.p`M

Выходы в форме [smallest, largest]. Попробуйте онлайн здесь или проверьте все тестовые примеры сразу здесь .

hM_BSvsM.p`MQ   Implicit: Q=eval(input())
                Trailing Q inferred
          `MQ   Stringify all elements of Q
        .p      Generate all permutations of the above
      sM        Concatenate each permutation
     v          Evaluate each as a number
    S           Sort them
  _B            Pair the sorted list with its reverse
hM              Take the first element of each, implicit print

Редактировать: Сохранить байт, убрав строковое преобразование из функции отображения. Предыдущая версия: hM_BSmvs`Md.p

Sok
источник
2

Perl 6 , 41 байт

{.max,.min}o+<<*.permutations.map(*.join)

Попробуйте онлайн!

Альтернативы:

{.max,.min}o+<<*.permutations.map:{.join}
{.max,.min}o{[map +*.join,.permutations]}
{.max,.min}o{+<<map *.join,.permutations}
nwellnhof
источник
1

Шелуха , 10 байт

§,▼▲morṁsP

Попробуйте онлайн или проверьте все!

объяснение

§,▼▲m(rṁs)P  -- example input: [2,3,1.1]
          P  -- permutations: [[2,3,1.1],[3,2,1.1],[1.1,3,2],[3,1.1,2],[1.1,2,3],[2,1.1,3]]
    m(   )   -- map the following
                (example with [1.1,2,3])
       ṁs    -- | show each and join: "1.123"
      r      -- | read: 1.123
             -- : [231.1,321.1,1.132,31.12,1.123,21.13]
§,           -- fork and join as tuple
  ▼          -- | min: 1.123
   ▲         -- | max: 321.1
             -- : (1.123,321.1)
ბიმო
источник