직무
음수가 아닌 숫자의 배열이 주어지면 가능한 한 가장 큰 숫자와 가장 작은 숫자를 결합하여 출력하십시오.
규칙
입력, 출력은 편리한 형식 일 수 있습니다.
배열은 최대 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
이것은 코드 골프 이므로 가장 짧은 코드가 승리합니다.
답변
파이썬 2 , 84 80 78 76 바이트
lambda a:[''.join(sorted(a,key=lambda s:'.'in s or s+s)[::i])for i in[-1,1]]
Arnauld 덕분에 -2 바이트
답변
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
답변
자바 스크립트 (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
은 위의 결과를 문자열로 강제 변환하고 다른 값과 연결합니다.
목록에 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"
답변
apt, 14 11 바이트
á m¬ñn é v2
Luis 덕분에 1 바이트가 절약 +1
되었습니다. 그의 솔루션도 바랍니다 .
á :Permutations
m :Map
¬ : Join
ñ :Sort by
n : Converting each to a number
é :Rotate right
v2 :Remove & return the first 2 elements
답변
답변
젤리 , 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)