可能な最大数と最小数


16

仕事

非負の数の配列が与えられた場合、それらを結合することで形成できる最大数と最小数を出力します。

ルール

入力、出力は任意の便利な形式にすることができます。

配列には最大1つの10進数を含めることができます。

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

@ouflak、最大と最小を出力する必要があります。
ヴェダントカンドー

1
気にしないで、今すぐ見てください。小数点以下の桁と混同しました。
ouflak

思い[[55.55,22,33,33,44],[44,33,33,22,55.55]]許容出力形式も?
シャギー

1
@Jordan
Vedant Kandoi

回答:



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

残念cast to floatです。私は1つがレガシーにあった覚えているが、私はちょうどそれを見て、明らかにそれがあったstringified cast to floatあなたの代わりに... xDでのソートに文字列の山車をしたいので、かなり無用である、
ケビンCruijssen

@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``)

オンラインでお試しください!

どうやって?

次のテストを使用して、入力配列の2つの値を比較します。

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

x % 1 || xxxx

[x % 1 || x] + yは、上記の結果を文字列に強制し、他の値と連結します。

リストに10進数がある場合は、常に最小値と見なす必要があります。変換を適用することにより、10進数はで始まる文字列に変換され、"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"


3

Japt14 11 10バイト

á m¬ñn gJò

オンラインでお試しください!


良いですね。私はá ®¬nÃn最初の行のために-私はあなたの方法を考えていない自分自身を蹴りました。
シャギー

-hフラグを使用して12バイト
シャギー

-gフラグを使用して11バイト。のí代わりにでも動作しますï
シャギー

@Shaggy Excellent!ありがとう!!
ルイスフェリペデジェススムニョス

ダン!すぐにあきらめたようです。とてもうまくできました。
シャギー

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)

私はゼリーでプログラムすることはありません.ịが、リストの最初と最後の両方の項目を取得するのに非常にクールな方法です。いい答え!私から+1。
ケビンクルーイッセン

1
@KevinCruijssen実際に最後の最初のアイテムを取得します。:P
エリック・ザ・アウトゴルファー

私もゼリーでプログラミングしたことはありませんが、どのように.ị機能するかについて混乱しています。私が正しくドキュメントを読んでいる場合は、私が思うだろう床(x)とはceil(x)の時、yの要素を取得し、.です0.5。それは、インデックス0と1でyの要素を取得することを意味しませんか?
Cowabunghole

Jelly 1ベースのインデックスは作成されますか?それはこの動作を説明しますが、ドキュメントにはそれについて何も表示されません。
Cowabunghole

1
@Cowabungholeはい、Jellyは1から始まります。
エリックアウトゴルファー


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



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)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.