독립적 인 힘


13

integer가 주어지면 부분 문자열로 포함 되는 1보다 큰 n최소 지수를 출력하십시오 .en^en

예를 들어,에 대한 25답이 있어야 2로서 25 ^ 2 = 625포함하는 25문자열로서, 그러나 대한 대답 13되어야이 10같은 13 ^ 10 = 137858491849때문에 10결과에 포함되는 최저 지수 인 13문자열로.

규칙

  • 표준 I / O 규칙
  • 표준 허점 적용
  • 바이트 단위의 최단 코드 승리
  • n 항상보다 큰 정수입니다 0

테스트 사례

1 => 2   (1 ^ 2 = 1)
2 => 5   (2 ^ 5 = 32)
3 => 5   (3 ^ 5 = 243)
4 => 3   (4 ^ 3 = 64)
5 => 2   (5 ^ 2 = 25)
6 => 2   (6 ^ 2 = 36)
7 => 5   (7 ^ 5 = 16807)
8 => 5   (8 ^ 5 = 32768)
9 => 3   (9 ^ 3 = 729)
10 => 2  (10 ^ 2 = 100)
11 => 11 (11 ^ 11 = 285311670611)
12 => 14 (12 ^ 14 = 1283918464548864)
13 => 10 (13 ^ 10 = 137858491849)
14 => 8  (14 ^ 8 = 1475789056)
15 => 26 (15 ^ 26 = 3787675244106352329254150390625)
16 => 6  (16 ^ 6 = 16777216)
17 => 17 (17 ^ 17 = 827240261886336764177)
18 => 5  (18 ^ 5 = 1889568)
19 => 11 (19 ^ 11 = 116490258898219)
20 => 5  (20 ^ 5 = 3200000)
25 => 2  (25 ^ 2 = 625)
30 => 5  (30 ^ 5 = 24300000)
35 => 10 (35 ^ 10 = 2758547353515625)
40 => 3  (40 ^ 3 = 64000)
45 => 5  (45 ^ 5 = 184528125)
50 => 2  (50 ^ 2 = 2500)
55 => 11 (55 ^ 11 = 13931233916552734375)
60 => 2  (60 ^ 2 = 3600)
65 => 17 (65 ^ 17 = 6599743590836592050933837890625)
70 => 5  (70 ^ 5 = 1680700000)
75 => 3  (75 ^ 3 = 421875)
80 => 5  (80 ^ 5 = 3276800000)
85 => 22 (85 ^ 22 = 2800376120856162211833149645328521728515625)
90 => 3  (90 ^ 3 = 729000)
95 => 13 (95 ^ 13 = 51334208327950511474609375)
100 => 2 (100 ^ 2 = 10000)

처음 1000 개의 답변을 생성하는 Python 스크립트



답변:



4

R , 69 44 바이트

function(n,i=2){while(!grepl(n,n^i))i=i+1;i}

익명의 기능. BigZ로 변환 i될 때 크게 작동합니다 n(TIO 참조). 주세페와 digEmAll을 가르쳐 주셔서 감사합니다!

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


61 바이트 -여분의 공간이 n, ?n^i있고 기본적으로 다음 과 같이 paste변환됩니다 character:-)
Giuseppe

56 바이트 -리턴 i이 충분해야합니다.
주세페

2
44 바이트 붙여 넣기가 필요하지 않습니다. grepl은 기본적으로 문자로 변환합니다. :)
digEmAll

문제는 지수의 부동 소수점 정확도와 큰 숫자가 과학적 표기법으로 문자열로 변환된다는 사실 때문에 지수가 커지면 "결함"입니다. 예를 들어 15는 26이어야하지만 17을 반환합니다. 이론적으로는 이것이 효과가 있지만 실제로는 Big Integer 패키지 또는 이와 유사한 것을
사용해야

1
@digEmAll for BigInt 당신은 입력을 gmp에서 BigZ와 같은 bigInt로 강제 할 수 i있으며 bigZ로 변환 하는 것을 제외하고는 여전히 작동해야 합니다
Giuseppe

3

파이썬 2 , 42 41 바이트

Ørjan Johansen 덕분에 -1 바이트 (반환 y)

f=lambda x,y=2:y*(`x`in`x**y`)or f(x,y+1)

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

설명 / 비 골프

우리가 성공할 때까지 에서 시도하는 재귀 함수 :2,3

# Start recursion with y=2
def f(x,y=2):
    # If we succeed, we arrived at the desired y
    if `x` in `x**y`:
        return y
    # Else we try with next y
    else:
        return f(x, y+1)

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



@ ØrjanJohansen : 이상하게도, 내가 놓친 것을 정확히 알지 못해서 시도했다고 생각했습니다. 고마워요!
ბიმო

공간을 피하기 위해 곱셈을 바꿔야 했습니까?
Ørjan Johansen 님이

@ ØrjanJohansen : 아마 그랬습니다.
ბიმო

3

자바 스크립트 (ES6 / Node.js),  41  40 바이트

@Shaggy 덕분에 1 바이트 절약

입력을 숫자 ( ) 또는 BigInt 리터럴로 사용합니다.n<15

n=>(g=x=>`${x*=n}`.match(n)?2:-~g(x))(n)

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



@Shaggy 큰 정수를 사용해야합니다. 그렇지 않으면 일부 테스트 사례에서 정답을 반환하지 않습니다. 끝에서 동일한 bytecount는의가 n=>(g=x=>$ {X * = N}.match(n)?2n:-~g(x))(n)
루이스 펠리페 드 예수님 무 노즈

1
@LuisfelipeDejesusMunoz, 일반적으로 정밀 문제에 대해 걱정할 필요는 없지만 BigInts에서도 작동합니다.
Shaggy

사소한 것이지만 이것이 BigInt를 사용하는 경우 제목이 JavaScript (Node.js)가 아니어야합니까? ES6에는 아직 BigInt가 없습니다.
Shieru Asakoto

@ShieruAsakoto 당신이 맞아요. 처음 의도는 숫자 또는 BigInt와 함께 작동한다고 설명하는 것이 었습니다. 이제 명확 해졌다.
Arnauld

3

APL (Dyalog Unicode) , 25 23 17 바이트

@Erik the Outgolfer 덕분에 -2 바이트

@ngn 덕분에 -6 바이트

코드를 사용자 정의하지 않아도 만드는 @ H.PWiz 덕분에 ⎕pp(인쇄 정밀도)

⊢⍟×⍣(∨/(⍕÷)⍷0⍕⊣)⍨

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

⊢⍟×⍣(∨/(⍕÷)⍷0⍕⊣)⍨
  ×⍣(          )⍨ generates a geometric progression by repeatedly multiplying the argument
                   by its original value
     ∨/(⍕÷)⍷0⍕⊣   the progression stops when this function, applied between the new and the
                   last old member, returns true
         ÷        the original argument (ratio between two consecutive members)
                 formatted as a string
                 occurrences within...
            0    ...the formatted (with 0 digits after the decimal point)...
                 ...new member
     ∨/           are there any?
⊢⍟                use logarithm to determine what power of  we reached

1717 ^ 14 = 1.6837782655940093E17에서 찾을 수 있기 때문에 17에 실패 하지만 정밀 응답이 지원해야하는 내용에 대해 idk
user41805

@Cowsquack 난 그냥 임의로 조정해야 ⎕PP겠어요
Quintec

오, 그것은 작동하지 않습니다 기다립니다
Quintec






2

SAS, 71 66 바이트

편집 : ;run;입력의 끝으로 암시되므로 끝에서 제거 되었습니다.

data a;input n;e=1;do until(find(cat(n**e),cat(n)));e+1;end;cards;

다음 cards;과 같이 명령문 뒤에 입력 데이터가 입력됩니다 .

data a;input n;e=1;do until(find(cat(n**e),cat(n)));e+1;end;cards;
1
2
3
4
5
6
7
8
9
10
11
12
13
14

a입력 n및 출력을 포함 하는 데이터 세트 를 생성합니다 e.

여기에 이미지 설명을 입력하십시오


이것은 함수 정의 또는 이와 동등한 것으로 보입니다 (실제로는 "매크로"라고 가정합니다) 이것은 인수 (예 :)를 사용하여 호출 해야하는 %p(n)것은 완전히 괜찮지 만 출력은 macroSAS의 s가 값을 반환 할 수 있는지 여부에 달려 있습니다. 그들이 반환 할 수 있다면, "출력"은 결과를 반환함으로써되어야합니다. 그렇지 않으면 표준 출력 방법이 지원되는 모든 방법으로 출력해야합니다
Skidsdev

@Skidsdev 피드백 주셔서 감사합니다! SAS는 약간 이상합니다. 매크로는 실제로 기능하는 것이 아니라 컴파일 할 때 '실제'SAS 코드를 생성하는 텍스트 대체 언어 일뿐입니다. 다른 사람들이 codegolf에서 SAS에 대한 I / O를 수행 한 방법을 살펴보고 그에 따라 내 답변을 편집하여 매크로 문을 제거했습니다.
Josh Eller



1

자바 (OpenJDK 8) , 84 바이트

숫자를 나타내는 문자열로 입력을 받아서 int를 출력합니다.

대부분의 바이트 BigDecimal는 많은 수를 처리하는 데 필요한 자세한 정보에서 나옵니다 .

n->{int i=1;while(!(new java.math.BigDecimal(n).pow(++i)+"").contains(n));return i;}

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


작동 원리

이것은 매우 간단하지만 후손에 대한 설명을 포함하겠습니다.

n->{                                    // Lamdba taking a String and returning an int
    int i=1;                            // Initialises the count
    while(!                             // Loops and increments until
        (new java.math.BigDecimal(n)    // Creates a new BigDecimal from the input n
            .pow(++i)+"")               // Raises it to the power of the current count
            .contains(n)                // If that contains the input, end the loop
    );
    return i;                           // Return the count
}




0

, 19 바이트

W∨‹Lυ²¬№IΠυθ⊞υIθILυ

온라인으로 사용해보십시오! 링크는 자세한 버전의 코드입니다. 설명:

W∨‹Lυ²¬№IΠυθ⊞

목록 길이가 2 이상이고 해당 제품에 입력 값이 포함될 때까지 반복하십시오.

⊞υIθ

... 입력을 정수로 캐스트하고 목록으로 푸시하십시오.

ILυ

목록의 길이를 문자열로 캐스트하고 내재적으로 인쇄하십시오.


0

파이썬 3 , 63 58 바이트

def f(n,e=2):
	while str(n)not in str(n**e):e+=1
	return e

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

Python2는 더 짧을 지 모르지만 3을 사용하는 것을 좋아합니다. 람다로 올라 오는 것은 어렵지만 몇 가지 시도하고 있습니다.


나는 파이썬을 모르지만 람다를 사용하는 것이 더 짧지 않습니까?
루이스 felipe 드 예수 Munoz

@LuisfelipeDejesusMunoz 나는 그것을 시도하기 시작했지만 IDLE while은 람다에 맨손 이 있다고 불평했습니다 . 다른 방법으로 시도해 볼 수도 있습니다.
Gigaflop

재귀 함수일까요?
Luis felipe De jesus Munoz

2
정의 e인수 목록 (예.에 def f(n,e=2)) 및 n**e일부 바이트를 저장해야합니다, 파이썬이 실제로 것 꽤 바이트 저장.
ბიმო

@LuisfelipeDejesusMunoz Lambdas는 함수와 다릅니다. 람다의 오른쪽은 하나의 표현이어야하며 흐름 제어 명령은 작동 for하거나 while작동하지 않습니다.
James

0

MathGolf , 10 바이트

ôkï⌠#k╧▼ï⌠

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

설명

이는 입력을 명시 적으로 두 번 읽고 루프 카운터를 두 번 증가시켜야하는 매우 낭비입니다.

ô            start block of length 6
 k           read integer from input
  ï          index of current loop, or length of last loop
   ⌠         increment twice
    #        pop a, b : push(a**b)
     k       read integer from input
      ╧      pop a, b, a.contains(b)
       ▼     do while false with pop
        ï    index of current loop, or length of last loop
         ⌠   increment twice


0

C # (. NET 코어) , 104 89 바이트

a=>{int i=2;while(!(System.Numerics.BigInteger.Pow(a,i)+"").Contains(a+""))i++;return i;}

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

-1 바이트 : 루프 for while으로 변경되었습니다 ( Skidsdev 덕분에 )
-14 바이트 : C #의 이상한 문자열 처리를 악용하여 호출 을 제거했습니다.ToString()

표준 숫자 C # 유형 (int, double, long, ulong 등)이 일부 더 큰 숫자 (12, 15 및 17 포함)에 실패 하므로 C #의 BigInteger 라이브러리 를 사용해야 합니다.

언 골프 드 :

a => {
    int i = 2;                                          // initialize i

    while( !(System.Numerics.BigInteger.Pow(a,i) + "")  // n = a^i, convert to string
                                .Contains(a + ""))      // if n doesn't contain a
        i++;                                                // increment i

    return i;
}




0

PowerShell (V3 +), 67 바이트

function f{param($n)$i=1;do{}until([math]::pow($n,++$i)-match$n)$i}



0

Oracle SQL, 68 바이트

select max(level)+1 from dual,t connect by instr(power(x,level),x)=0

소스 번호가 테이블에 저장되어 있다고 가정합니다 t(x). 예 :

with t as (select 95 x from dual)

SQL * Plus에서 테스트

SQL> with t as (select 95 x from dual)
  2  select max(level)+1 from dual,t connect by instr(power(x,level),x)=0
  3  /

MAX(LEVEL)+1
------------
          13
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.