사이 클릭 숫자는 “n”자릿수이며, 1, 2, 3, … n을 곱하면 같은 자릿수이지만 다른 순서로 나타납니다.
예를 들어 숫자 142,857은 142,857 x 2 = 285,714, 142,857 x 3 = 428,571, 142,857 x 4 = 571,428 등이므로 순환 수입니다. 정수 입력이 주어진 경우, 정확한 값을 출력하고 그렇지 않은 경우 거짓 값을 출력하여 순환 숫자인지 판별하십시오.
또한 명확하게하기 위해 입력에는 선행 0이 포함될 수 있습니다. 예 : 0344827586206896551724137931
숫자에 선행 0이 허용되지 않으면 142857은 10 진수의 유일한 순환 숫자이기 때문입니다.
코드 골프이므로 바이트 단위의 최단 답변이 이깁니다!
답변
05AB1E , 9 6 바이트
3 바이트를 절약 한 Emigna 에게 감사드립니다 !
ā*€{ïË
설명:
ā # Push range(1, len(input) + 1)
* # Multiply by the input
€{ # Sort each element
ï # Convert to int to remove leading zeros
Ë # Check if all elements are equal
05AB1E 인코딩을 사용합니다 . 온라인으로 사용해보십시오!
답변
실제로 18 바이트
;;ru@≈*♂$♂S♂≈╔@S≈=
온라인으로 사용해보십시오! (견적 된 입력을 예상합니다)
설명:
;;ru@≈*♂$♂S♂≈╔@S≈=
;; duplicate input twice
ru range(1, len(input)+1)
@≈ convert input to an integer
* multiply input by each element in range
♂$♂S♂≈ convert each product to a string, sort the digits, and convert back to int
╔ uniquify: remove duplicate elements
@S≈ sort input and convert to int
= compare equality
답변
파이썬, 86 바이트
lambda n:all(sorted(n)==sorted(str(int(n)*i).zfill(len(n)))for i in range(2,len(n)+1))
숫자를 문자열로 입력하십시오.
답변
답변
하스켈, 36 33 32 45 바이트
c n=let l=length n in(10^l-1)`div`read n==l+1
사용법 예 :
*Main> c "142857"
True
이 알고리즘에는 설명이 필요하지 않다고 생각합니다.
제안 해 주셔서 감사합니다 : 일반 표시 이름, Laikoni.
정정 주셔서 감사합니다 : Antony Hatchkins.
편집 아니오, “33”에서 실패합니다.
답변
dc, 24 25 바이트
[1]sa0?dZd10r^1-r1+/rx=ap
숫자가 순환 적이 지 않으면 “0”을 인쇄하고 그렇지 않으면 “1”을 인쇄합니다. 숫자를 문자열로 입력해야합니다.
사용법 예 :
$ echo "[052631578947368421]" | dc -e '[1]sa0?dZd10r^1-r1+/rx=ap'
1
$ echo "[052631578947368422]" | dc -e '[1]sa0?dZd10r^1-r1+/rx=ap'
0
설명 : 내 Haskell 제출과 동일한 알고리즘입니다.
편집 아니오, “33”에서 실패합니다.
답변
Mathematica, 81 바이트
Length@Union@PadLeft[Sort/@IntegerDigits[ToExpression@#*Range@StringLength@#]]<2&
입력 문자열
입력
“010309278350515463917525773195876288659793814432989690721649484536082474226804123711340206185567”
산출
참된