관련없는 번호 찾기


20

음수가 아닌 정수 2 개를 입력으로 받으면 2 개의 입력에서 수학 연산자를 통해 생성 할 수없는 음이 아닌 정수를 출력합니다.

예를 들어, 입력을 부여 2하고 3, 6, 0, 5, 1, 9, 8, 23, 2모든 출력은 무효이다.

고려해야 할 작업은 다음과 같습니다.

Addition        (a + b)
Subtraction     (a - b) and (b - a)
Multiplication  (a * b)
Division        (a / b) and (b / a)
Modulus         (a % b) and (b % a)
Exponentiation  (a ** b) and (b ** a)
Bitwise OR      (a | b)
Bitwise XOR     (a ^ b)
Bitwise AND     (a & b)
Concatenation   (a.toString() + b.toString()) and (b.toString() + a.toString())

조작이 정수가 아닌 경우 (예 : 2/3) 항상 바닥입니다. 그래서2 / 3 = 0

유효하지 않은 조작 (예 : 0으로 나누기)이 0이라고 가정하십시오.

입력

음이 아닌 정수 2 개

표준 I / O 방법 이 허용됩니다

입력이 주어진 언어에 대해 항상 처리 가능한 범위 내에 있다고 가정 할 수 있지만 표준 허점은 여전히 적용됩니다.

산출

2 개의 입력에 대해 위의 조작을 통해 생성 할 수없는 음이 아닌 정수.

테스트 케이스

Input  -> Invalid outputs
2, 3   -> 0, 1, 2, 3, 5, 6, 8, 9, 23, 32
0, 0   -> 0
17, 46 -> 0, 2, 12, 17, 29, 63, 782, 1746, 4617, 18487710785295216663082172416, 398703807810572411498315063055075847178723756123452198369
6, 6   -> 0, 1, 6, 12, 36, 66, 46656
1, 1   -> 0, 1, 2, 11

채점

이것은 이므로 가장 적은 바이트가 이깁니다!



이 문제를 해결하는 한 가지 방법은 (a + b)보다 큰 소수를 찾는 것입니다.
Dead Possum

1
@DeadPossum은 아마도 유일한 해결책 일 것입니다. 그러나 아마도 가장 골치 거리는 아닙니다.)
Skidsdev

나는 몇 바이트로 그것을 할 수있는 멋진 언어가 있다고 확신합니다 : D
Dead Possum

답변:


20

망막 , 3 바이트

.
1

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

공백 (또는 개행 문자 이외의 단일 문자)으로 구분하여 입력을받습니다.

모든 숫자를로 바꾸고 1결과 숫자를 다른로 바꿉니다 1.

정확성 증명

마틴 엔더의 의례


기술적으로 이것은 결과 숫자를 다른 숫자와 결합하지 않고 1단순히 공백으로 구분 된 2 개의 숫자로 구성된 문자열로 입력하고 모든 문자를 1로 대체합니다. .. 아직
Skidsdev

@Mayube는 물론 그렇기 때문에 하나의 공백으로 구분 된 두 개의 숫자로 구성된 문자열뿐만 아니라 모든 문자열에서 작동 할 수 있습니다. 나의 설명은 "2 개의 입력 숫자"추상화에 관한 것이다.
Leo

2
"기지 10의 파충류가 완벽한 힘이 될 수 없다는 것은 [sic] [...]입니다." 지정된리스트에서 지수 이외의 조작은 입력 숫자의 총 수보다 많은 자릿수를 초래할 수 있으므로 유효해야합니다.
마틴 엔더

건방진 버거! +1
Fund Monica의 소송

QuadR 에서도 작동합니다 !
Adám

11

젤리 , 3 바이트

+Æn

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

설명:

+Æn Arguments: x, y
+                            x + y.
 Æn Find a prime larger than

나는 이것이 유효 하다고 생각한다 .
Erik the Outgolfer

나는 이것이 입력을 합하고 합계보다 큰 첫 번째 소수를 출력한다고 가정합니까?
Skidsdev

1
@DeadPossum 나는 하나를 쓰려고했습니다. 나는 그것을 잘 골프 희망.
아웃 골퍼 Erik

1
베르트랑의 가정은 연결 작업을 증명할만큼 충분히 좋을 것입니다. 오른쪽에 작은 숫자 b를 연결하면 a..b> = 10a> 4a> 2 (a + b)가되고 왼쪽에 작은 숫자 b를 연결하면 b..a> (b + 1)가됩니다. 에이. 여기서 유일하게 흥미롭지 않은 유일한 사례는 b = 1이어야하며, 여기서 우리는 1..a> 2a = 2 (a + b)-2입니다.이 경계가 가장 엄격한 곳은 a = 9.입니다. 9. 이것은 Bertrand의 가정에 문제가 될 수있는 작은 사례가 아닌 유일한 사례입니다. 그러나 같은 더 나은 결과가 mathoverflow.net/questions/2724은
tehtmi

1
나는 모든 것을 위해 작동 해야하는 증명 n <p <2n-2의 Bertrand의 가정 버전이 있다고 생각합니다. 나는 n <p <2n을 생각하고 있었다.
tehtmi

9

파이썬 2 , 8 바이트

'1'.join

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

두 개의 숫자 문자열 목록을 입력으로 받아서 단일 숫자 문자열을 출력합니다. 1중간에 숫자를 연결합니다 .

결과에 지수 이외의 숫자가 너무 많습니다. 에 대한 출력 (x,y)에는 또는 0이 아닌 한 더 많은 숫자가 x있고 y결합되어 있습니다. 지수의 경우,이 의미가 절대 일치하지 않는지 확인합니다 .xyx**y

  • 경우 x0 또는 1, 다음 그렇습니다 x**y너무 작하는,
  • 만약 y<=1다음, x**y<=x너무 작
  • 경우 y==2, 다음 x**2이상의 이상의 숫자가 있어야합니다 x. 이것은까지 발생하며 x=316해당 작업을 확인할 수 없습니다.
  • 경우 y==3, 다음 x**3이상의 이상의 숫자가 있어야합니다 x. 이것은 최대 발생합니다 x=21. 우리는 그 중 어느 것도 작동하지 않는 것을 확인할 수 있습니다.
  • 경우 3<y<13, 다음 x**y신속하게 너무 오래 가져옵니다. 에 대한 올바른 자릿수 만 있으며 x<=25,이를 확인할 수 있습니다.
  • 경우 y>=14, 다음 x**y도 가능한 가장 작은 너무 길다 x==2.

7

CJam (7 문자)

{+))m!}

이것은 (a+b+2)!거의 모든 경우에 가장 큰 관련 수보다 큰 수 를 만듭니다 .

그것은 가장 큰 관련 번호 중 하나 여야한다는 매우 분명 a ** b, b ** a, concat(a, b), concat(b, a).

대수를 고려하면

  • log(a ** b) = b log a
  • log(concat(a, b)) ~= (log a) + log (b)
  • log((a + b + 2)!) ~= (a + b + 2) log (a + b + 2) - (a + b + 2)

따라서 무의식적으로는 더 크며 작은 경우에 대해서만 걱정하면됩니다. 실제로, 값 출력이 모든 관련 숫자보다 크지 않은 유일한 경우는 0, 1(또는 1, 0) 6이며, 가장 큰 관련 숫자는 10입니다.


3

자바 스크립트 (ES6), 15 바이트

카레 구문으로 입력을받습니다.

a=>b=>a*a+b*b+2

a² + b² + 13² + 5² + 1 = 35 또는 7² + 26² + 1 = 726 (연결) 과 같은 많은 항목에서 실패합니다 . a² + b² + 2 는 안전해야합니다. 이것은 0 ≤ a ≤ b ≤ 50000에 대해 철저히 테스트되었다 .

데모


1
연결로부터 안전해야합니다. b는 오른쪽에 연결된 숫자라고하자. b를 고치면 a ^ 2 + b ^ 2 + 2-10 ^ k * a-b = 0에 대한 2 차 방정식을 풀 수 있습니다. 2 차의 판별은이 방정식이 정수 해를 갖기위한 완벽한 제곱이어야합니다. . 판별은 10 ^ 2k-4 (b ^ 2-b + 2) = 10 ^ 2k-(2b-1) ^ 2-7. 모듈로 9를 고려하십시오. 비.
tehtmi

3

파이썬, 115 95 79 바이트

바보 같은 간단한 해결책. 자유롭게 나가세요.

x,y=input()
f=lambda x,y:[x+y,x*y,x**y,int(`x`+`y`)]
print max(f(x,y)+f(y,x))+1

바보 때문에 +12 바이트 x/0.
@RobinJames에 -20 바이트 감사 @tehtmi에
-16 바이트 감사


X / Y 다른 y를 0 미만이거나 X * x의 Y, Y 음이 아닌 동일 내가 다시 그 12 바이트를 가질 수 있다고 생각 있도록 플러스 다른 3한다면
로빈 제임스 Kerrison

@RobinJames 아 그래, 난 바보입니다. 감사.
HyperNeutrino

1
더 많은 경우를 제거 할 수 있어야한다고 생각합니다. 1) x-y <= x <= x + y; 2) x % y <= y <= x + y; 3,4,5) x | y = x ^ y + x & y <= x ^ y + 2 * (x & y) = x + y. (마지막으로 XOR은 캐리없이 add와 같으며 AND는 캐리 할 비트를 찾습니다. OR은 (1,1)-> 2 대신 (1, 1)-> 1을 실제로 더하는 것처럼 가져옵니다.)
tehtmi

2

파이썬, 27 바이트

lambda a,b:(a+b+9)**(a+b+9)

모든 관련 숫자보다 큰 숫자를 출력합니다.

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

Kevin Cruijssen 덕분에 -1 바이트.
Dead Possum 덕분에 -2 바이트


TIO 링크가 비어 있습니다. 또한 :실수하지 않으면 공간을 제거 할 수 있다고 생각합니다 .
Kevin Cruijssen

@KevinCruijssen Whoops, 고마워요!
Ankoganit

당신은 제거 할 수 있습니다 f=-명명되지 않은 람다는 허용됩니다
Dead Possum

@DeadPossum 몰랐어요, 고마워요!
Ankoganit

아마 두 개의 아홉 중 하나 (및 해당하는 +) 를 제거하는 것으로 할 수는 있지만 완전히 확신 할 수는 없습니다.
Theo

2

파이썬 2, 25 바이트

lambda x,y:int(`x`+`y`)+3

3을 연결하고 더합니다

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


x와 y가 모두 3 인 경우 작동합니까?
Robert Benson

@RobertBenson해야 할 일, afaik은 3과 3에서 36을 만들 수 없습니다
Skidsdev

아마 나에게 괜찮을 것 같습니다. 역 연쇄는 다른 잔기 모듈로 9를 가져야합니다. 지수화의 경우, 지수화 결과가 xnor의 Python 답변 행을 따라 너무 많은 자릿수를 갖기 전에 고려해야 할 유한 한 수의 사례가 있습니다. 나는 충돌을 보지 못했습니다 (+2는 2 ** 6 = 62 + 2이지만 +1은 아닙니다).
tehtmi

@tehtmi +1은 x = y = 0에서 실패합니다. 온라인 연결 시도는 [0,400] 범위에서 x와 y의 모든 조합에 대해 테스트합니다.
TFeld

2

JS (ES6), 12 바이트

x=>x.join`1`

이 파이썬 답변 과 동일한 알고리즘 입니다. 입력을 정수 배열로받습니다.






1

QBIC , 8 바이트

이 숫자를 가져와 관련이없는 숫자를 얻는 멋진 방법이 많이 있습니다. QBIC이 어떻게 유지되는지 확인하기 위해 몇 가지를 시도해야했습니다. 가장 짧은 것은 xnor의 Python 답변 포트이며 숫자를 중간에 1로 연결합니다.

?;+@1`+;

레오 레티 나의 항구는 모두 다음과 같습니다.

[0,_l;|+_l;||Z=Z+@1

다음으로 큰 소수를 찾는 것 :

c=:+:+1≈µc|+1|c=c+1]?c



1

05AB1E , 2 4 바이트

+ØDm

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

젤리 답변과 동일, 합계 후 소수를 찾습니다. 1 바이트 더 짧은 :)

편집 : 이제 예외로 충분하도록 자체 권한으로 올립니다.


실제로 동일한 알고리즘은 아니지만, 이것은 a+b'프라임'을 찾는 반면, 나의 가장 작은 프라임은보다 큽니다 a+b.
Outgolfer Erik

어느 쪽이든, 그것은 작동해야합니다.
Neil A.

3
6443, 3에 실패합니다 (소위 64433, 연결을 제공함).
tehtmi

@tehtmi가 맞습니다. 실패합니다.
스키드 데브

내 편집을 참조하십시오, 이제 작동합니다
닐 A.에게

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