카테고리 보관물: 코딩

코딩

순환 번호입니까? 수입니다. 정수 입력이

사이 클릭 숫자는 “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))

온라인으로 사용해보십시오!

숫자를 문자열로 입력하십시오.


답변

PHP, 64 바이트

for(;$i++<9;)$r+=($c=count_chars)($argn)==$c($argn*$i);echo$r>1;

온라인 버전


답변

하스켈, 36 33 32 45 바이트

c n=let l=length n in(10^l-1)`div`read n==l+1

사용법 예 :

*Main> c "142857"
True

이 알고리즘에는 설명이 필요하지 않다고 생각합니다.

TOL

제안 해 주셔서 감사합니다 : 일반 표시 이름, 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

TOL

설명 : 내 Haskell 제출과 동일한 알고리즘입니다.

편집 아니오, “33”에서 실패합니다.


답변

Mathematica, 81 바이트

Length@Union@PadLeft[Sort/@IntegerDigits[ToExpression@#*Range@StringLength@#]]<2&

온라인으로 사용해보십시오!

입력 문자열

입력

“010309278350515463917525773195876288659793814432989690721649484536082474226804123711340206185567”

산출

참된