Số lớn nhất và nhỏ nhất có thể


16

Bài tập

Cho một mảng các số không âm, xuất ra số lớn nhất và nhỏ nhất có thể được hình thành bằng cách nối chúng.

Quy tắc

Đầu vào, đầu ra có thể ở bất kỳ định dạng thuận tiện.

Mảng có thể có nhiều nhất là 1 số thập phân.

Ví dụ

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

Đây là mã golf nên mã ngắn nhất sẽ thắng.


1
Đầu ra đầu tiên có phải là: 4422333355.55, 55.5544333322 không? Những cái đó nhỏ hơn và lớn hơn tương ứng.
ngerak

@urdyak, bạn phải xuất sản lượng lớn nhất và nhỏ nhất.
Vedant Kandoi

1
Nevermind, xem nó bây giờ. Đã nhầm lẫn với vị trí thập phân.
ngerak

Sẽ [[55.55,22,33,33,44],[44,33,33,22,55.55]]là một định dạng đầu ra chấp nhận được?
Xù xì

1
Mọi cách đều ổn cả @Jordan
Vedant Kandoi 16/11/18

Câu trả lời:



3

05AB1E , 11 byte

œJΣ'.¡ï}Á2£

Hãy thử trực tuyến! hoặc như một bộ thử nghiệm

Giải trình

 œ             # 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

Quá tệ, chúng tôi không có a cast to float. Tôi nhớ có một cái trong Legacy, nhưng tôi chỉ nhìn lên và rõ ràng nó là một stringified cast to floatthứ khá vô dụng vì bạn muốn phao thay vì dây để sắp xếp .. xD
Kevin Cruijssen

@KevinCruijssen: Vâng. Chúng tôi đã có một is_numbernhưng rất tiếc không có to_number.
Emigna

3

JavaScript (ES6), 68 66 byte

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

Hãy thử trực tuyến!

Làm sao?

Chúng tôi sử dụng thử nghiệm sau đây để so sánh hai giá trị trong mảng đầu vào:

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

x % 1 || xxxx

Biểu thức [x % 1 || x] + yép kết quả trên thành một chuỗi và nối nó với giá trị khác.

Nếu có một số thập phân trong danh sách, nó phải luôn được coi là giá trị nhỏ nhất. Bằng cách áp dụng chuyển đổi của chúng tôi, một số thập phân được biến thành một chuỗi bắt đầu bằng "0.", được sắp xếp theo thứ tự từ vựng trước mọi thứ khác.

Ví dụ:

  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

Japt, 14 11 byte

á m¬ñn é v2

Thử nó

Lưu 1 byte nhờ Luis , xin vui lòng +1giải pháp của anh ấy.

á               :Permutations
  m             :Map
   ¬            :  Join
    ñ           :Sort by
     n          :  Converting each to a number
       é        :Rotate right
         v2     :Remove & return the first 2 elements

Ok, điều này tốt hơn !! chỉ trích!! điều đó éđã bị ẩn suốt thời gian này !!
Luis felipe De jesus Munoz

3

Japt , 14 11 10 byte

á m¬ñn gJò

Hãy thử trực tuyến!


Đẹp một. Tôi đã có á ®¬nÃndòng đầu tiên - tự đá mình mà tôi không nghĩ theo cách của bạn.
Shaggy

12 byte , sử dụng -hcờ.
Xù xì

11 byte , sử dụng -gcờ. Cũng làm việc với íthay vì ï.
Xù xì

@Shaggy Tuyệt vời! Cảm ơn!!
Luis felipe De jesus Munoz

Đăng! Hình như tôi đã từ bỏ sớm; hoàn thành rất tốt.
Shaggy

3

Thạch , 6 byte

Œ!VṢ.ị

Hãy thử trực tuyến!

Giải trình:

Œ!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)

Tôi không bao giờ lập trình trong Jelly, nhưng .ịlà một cách khá hay để có được cả mục đầu tiên và mục cuối cùng của danh sách. Câu trả lời tốt đẹp! +1 từ tôi.
Kevin Cruijssen

1
@KevinCruijssen Nó thực sự có được mục cuối cùng và đầu tiên. : P
Erik the Outgolfer 15/11/18

Tôi cũng chưa bao giờ lập trình trong Jelly, nhưng tôi bối rối không biết cách .ịhoạt động. Nếu tôi đọc tài liệu một cách chính xác, tôi sẽ nghĩ có được yếu tố y ở tầng (x) và trần (x), và .0.5. Điều đó không có nghĩa là nó sẽ lấy các phần tử của y ở chỉ số 0 và 1?
Cowabunghole

Là Jelly 1 dựa trên chỉ mục? Điều đó sẽ giải thích hành vi này nhưng tôi không thấy gì về điều đó trong các tài liệu.
Cowabunghole

1
@Cowabunghole Có, Jelly là 1 chỉ mục.
Erik the Outgolfer 15/11/18

3

Ruby , 56 45 byte

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

Hãy thử trực tuyến!

-11 byte, cảm ơn Jordan


1
Công việc tốt đẹp! Bạn có thể lưu 2 byte bằng cách bỏ các dấu ngoặc đơn xung quanh đối số của bạn ( ->a{...) và 9 khác bằng cách sử dụng minmaxphương thức tiện dụng : tio.run/ Kẻ
Jordan

2

Bình thường, 13 12 byte

hM_BSvsM.p`M

Đầu ra dưới dạng [smallest, largest]. Dùng thử trực tuyến tại đây hoặc xác minh tất cả các trường hợp thử nghiệm cùng một lúc tại đây .

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

Chỉnh sửa: Đã lưu một byte bằng cách lấy chuỗi ra khỏi chức năng ánh xạ. Phiên bản trước: hM_BSmvs`Md.p


2

Perl 6 , 41 byte

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

Hãy thử trực tuyến!

Lựa chọn thay thế:

{.max,.min}o+<<*.permutations.map:{.join}
{.max,.min}o{[map +*.join,.permutations]}
{.max,.min}o{+<<map *.join,.permutations}

1

Husk , 10 byte

§,▼▲morṁsP

Hãy thử trực tuyến hoặc xác minh tất cả!

Giải trình

§,▼▲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)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.