도전:
정수 목록이 주어지면 가장 큰 단일 숫자로 내림차순으로 정렬하십시오. 가장 큰 자릿수를 가진 숫자의 순서는 두 번째로 큰 자릿수 등으로 정렬됩니다
. 숫자의 중복 자릿수는 무시합니다. 숫자의 모든 숫자가 동일하면 목록에서 해당 숫자의 순서는 원하는 방식으로 지정할 수 있습니다.
예:
Input: [123, 478, -904, 62778, 0, -73, 8491, 3120, 6458, -7738, 373]
Possible outputs: [8491, -904, 62778, 478, -7738, 6458, 373, -73, 3120, 123, 0]
[8491, -904, 62778, 478, -7738, 6458, -73, 373, 3120, 123, 0]
왜? 숫자를 정렬 한 관련 숫자는 다음과 같습니다.
Output:
[8491, -904, 62778, 478, -7738, 6458, 373, -73, 3120, 123, 0 ]
Relevant digits they were sorted on:
[[9,8], [9,4], [8,7,6], [8,7,4], [8,7,3], [8,6], [7,3], [7,3], [3,2,1,0], [3,2,1], [0]]
도전 규칙 :
- 우리는 중복 된 숫자를 무시하므로
478
와-7738
같은 명령을 받게됩니다478, -7738
가장 큰 자리이기 때문에,[8,7,4]
그리고[8,7,3]
, 그리고[8,7,4]
그리고[8,7,7,3]
. - 여러 숫자가 같은 숫자를 가지면 순서는 어느 쪽이든 될 수 있습니다. 그래서
373
과-73
같이 분류 할 수 있습니다 모두373, -73
또는-73, 373
(자리가[7,3]
이 번호 모두). - 숫자에 더 이상 확인할 숫자가 없으면 해당 숫자의 뒷면에 배치됩니다. 그래서
123
와3120
같이 정렬됩니다3120, 123
가장 큰 숫자가 있기 때문에,[3,2,1]
동일하지만0
전에 온다none
. - 입력의 모든 숫자가 범위 내에 있다고 가정 할 수 있습니다
[-999999,999999]
. - 결과적으로 가능한 출력 중 하나만으로 충분하지만 원하는 경우 하위 목록이 순열에있을 수있는 모든 가능한 출력을 출력 할 수 있습니다 (물론 모든 언어로 바이트를 절약 할 수는 없지만).
일반적인 규칙:
- 이것은 code-golf 이므로 바이트 단위의 최단 답변이 이깁니다.
코드 골프 언어가 코드 골프 언어 이외의 언어로 답변을 게시하지 못하게하지 마십시오. ‘모든’프로그래밍 언어에 대한 가능한 한 짧은 대답을 생각해보십시오. - 표준 규칙 은 기본 I / O 규칙으로 답변에 적용 되므로 STDIN / STDOUT, 적절한 매개 변수 및 반환 유형의 전체 프로그램과 함께 함수 / 방법을 사용할 수 있습니다. 당신의 전화.
- 기본 허점 은 금지되어 있습니다.
- 가능하면 코드 테스트와 링크를 추가하십시오 (예 : TIO ).
- 또한 답변에 대한 설명을 추가하는 것이 좋습니다.
테스트 사례 :
Input: [123, 478, -904, 62778, 0, -73, 8491, 3120, 6458, -7738, 373]
Possible outputs: [8491, -904, 62778, 478, -7738, 6458, 373, -73, 3120, 123, 0]
[8491, -904, 62778, 478, -7738, 6458, -73, 373, 3120, 123, 0]
Input: [11, -312, 902, 23, 321, 2132, 34202, -34, -382]
Possible outputs: [902, -382, 34202, -34, -312, 321, 2132, 23, 11]
[902, -382, 34202, -34, 2132, -312, 321, 23, 11]
etc. The sublist [-312, 321, 2132] can be in any permutation
Input: [9, 44, 2212, 4, 6, 6, 1, 2, 192, 21, 29384, 0]
Possible outputs: [29384, 192, 9, 6, 6, 4, 44, 2212, 21, 2, 1, 0]
[29384, 192, 9, 6, 6, 44, 4, 2212, 21, 2, 1, 0]
etc. The sublists [4, 44] and [2212, 21] can be in any permutation
Input: [44, -88, 9, 233, -3, 14, 101, 77, 555, 67]
Output: [9, -88, 67, 77, 555, 14, 44, 233, -3, 101]
답변
05AB1E , 5 바이트
ΣêR}R
설명
Σ } # sort input by
ê # its sorted unique characters
R # reversed (to sort descending)
R # reverse the result (to sort descending)
답변
R , 97 95 바이트
function(x)x[rev(order(sapply(Map(sort,Map(unique,strsplit(paste(x),"")),T),Reduce,f=paste0)))]
이 과제는 R에 비관적 인 것으로 보입니다. 원본 버전에 대한 설명 (1에서 시작하여 해결) :
f <- function(x) {
x[ # 8. Input vector in
rev( # 7. Reversed
order( # 6. Lexicographical order
sapply( # 5. Paste....
Map(sort, # 4. Sort each using...
Map(unique, # 3. Deduplicate each
strsplit( # 2. Split each string into characters
paste(x), # 1. Coerce each number to string
"")),
T), # 4. ...descending sort.
paste,collapse="") # 5. ...back into strings
)
)
]
}
답변
펄 6 , 36 34 33 31 바이트
Jo King 덕분에 -1 바이트
Phil H 덕분에 -2 바이트
*.sort:{sort 1,|set -<<m:g/\d/}
설명
{ } # Map each number, e.g. -373
m:g/\d/ # Extract digits: (3, 7, 3)
-<< # Negate each digit: (-3, -7, -3)
set # Convert to set to remove duplicates
| # Pass as list of pairs: (-3 => True, -7 => True)
1, # Prepend 1 for "none": (1, -3 => True, -7 => True)
sort # Sort (compares 1 and pair by string value): (-7 => True, -3 => True, 1)
*.sort: # Sort lexicographically
답변
파이썬 2 , 60 55 54 바이트
Jonas Ausevicius 덕분에 -1 바이트 .
def f(l):l.sort(cmp,lambda n:sorted(set(`n`))[::-1],1)
언 골프
def f(l):
l.sort( # Sort the list in place
cmp = cmp, # ... compare with the builtin function cmp
key = k, # ... on the function k
reverse = 1 # ... in reverse
) # As the arguments are used in the right order, no names are necessary.
k = lambda n:sorted( # sort
set(`n`) # ... the set of digits
)[::-1] # reverse the result
# As '-' is smaller than the digits,
# it will be sorted to the back and ignored for sorting
답변
답변
Brachylog , 9 바이트
{ȧdṫo₁}ᵒ¹
참고 : brachylog에서 주문이 작동하는 방식으로 인해 숫자에서 올바르게 작동하지 않습니다. 이것은 ṫ
1 바이트의 비용으로 숫자를 문자열 ( )로 캐스팅하여 수정됩니다 .