εVтLIàgãεYSym}OIyKå}˜P
입력을 목록으로 가져옵니다 (예 :) [526,853]
.
온라인으로 시도 하거나 범위 내에서 대부분의 테스트 사례를 확인 [1,999]
하십시오 .
[1,n]
목록에 하드 코딩 된 것을 제외하고 아래의 이전 답변과 비슷하며 [1,100]
각 입력 매핑에 대해 한 번만 카티 전 목록을 두 번 만듭니다. 이는 성능 측면에서 주요 병목 현상입니다.
이전 26 바이트는 성능에 더 적합합니다.
Z©bgL®gãUεVXεYSym}OsN>èå}P
이 버전에서는 성능을 훨씬 향상시키기 위해 약간의 바이트로 교환 [1,1000]
하여 쉽게 실행할 수 있습니다 . 범위 내의 숫자를 포함하는 테스트 사례 [1,9999]
는 TIO에서 약 1 초 안에 수행됩니다. [10000,99999]
TIO에서 약 10-15 초 범위의 테스트 사례 . 그보다 시간이 초과됩니다.
온라인으로 시도 하거나 범위 내의 숫자로 모든 테스트 사례를 확인하십시오[1,9999]
.
설명:
Z # Push the max of the (implicit) input-list (without popping)
# i.e. [526,853] → 853
© # Store it in the register (without popping)
b # Convert to binary
# i.e. 853 → 1101010101
g # Take its length
# i.e. 1101010101 → 10
L # Pop and push a list [1, n]
# i.e. 10 → [1,2,3,4,5,6,7,8,9,10]
® # Push the max from the register
g # Take its length
# i.e. 853 → 3
ã # Cartesian product the list that many times
# i.e. [1,2,3,4,5,6,7,8,9,10] and 3
# → [[1,1,1],[1,1,2],[1,1,3],...,[10,10,8],[10,10,9],[10,10,10]]
U # Pop and store it in variable `X`
ε } # Map both values of the input list:
V # Store the current value in variable `Y`
Xε } # Map `y` over the numbers of variable `X`
Y # Push variable `Y`
S # Convert it to a list of digits
# i.e. 526 → [5,2,6]
ym # Take each digit to the power of the current cartesian product sublist
# i.e. [5,2,6] and [3,9,3] → [125,512,216]
O # Take the sum of each inner list
# i.e. [[5,2,6],[5,2,36],[5,2,216],...,[125,512,216],...]
# → [13,43,223,...,853,...]
s # Swap to push the (implicit) input
N> # Push the index + 1
# i.e. 0 → 1
è # Index into the input-list (with automatic wraparound)
# i.e. [526,853] and 1 → 853
å # Check if it's in the list of sums
# i.e. [13,43,223,...,853,...] and 853 → 1
P # Check if it's truthy for both both (and output implicitly)
# i.e. [1,1] → 1
17 2401 -> false
. 나는 이것에 거의 걸려 넘어졌다.