나는 보조 택시입니까?


13

배경

라마 잔의 번호 인 1729 는 하디가 택시를 타고 택시에 타기 때문에 택시에 전화를 걸었 습니다.

그 후 "탁시 카브 수"로 알려진 정수 클래스 중 가장 유명한 것으로 알려져 있는데, 이는 2 가지 (또는 때로는 'k') 다른 방식으로 2 번째 제곱 (양의 정수)의 합으로 표현할 수 있습니다.

1729는 2 개의 다른 큐브의 합으로 표현할 수있는 가장 작은 자연수이며, 첫 번째 "3,2"택시 번호 (일반적으로 "n, k")입니다.

도전

숫자가 주어지면, "3,2" "2 차 택시 번호"인지 결정하십시오. 즉, 1729 (2 개의 큐브의 고유 한 합계)와 동일한 제한 조건을 충족하지만 "3의 정수 중 가장 작은 정수일 필요는 없습니다" , 2 "클래스 (물론 1729).

사례 예 :

1729 = 10 ^ 3 + 9 ^ 3 = 12 ^ 3 + 1 ^ 3

4104 = 15 ^ 3 + 9 ^ 3 = 16 ^ 3 + 2 ^ 3

13832 = 2 ^ 3 + 24 ^ 3 = 18 ^ 3 + 20 ^ 3

뿐만 아니라 20683, 32832, 39312 ...

채점

이것은 이므로 각 언어에서 가장 짧은 답변이 이깁니다.

무차별 대입으로 다른 사례를 찾는 거친 Matlab 코드 :

for k = 1729:20000
    C = sum(round(mod(real((k-[1:ceil(k^(1/3))].^3).^(1/3)),1)*10000)/10000==1);
    if C > 1
        D = (mod(C,2)==0)*C/2 + (mod(C,2)==1)*((C+1)/2);
        disp([num2str(k),' has ',num2str(D),' solns'])
    end
end

PPCG에 오신 것을 환영합니다! 좀 더 명확하게하기 위해 귀하의 질문을 약간 편집했습니다. 테스트 사례를 추가 하시겠습니까?
musicman523

네, 저는 직장에 있고 Matlab을 가지고 있지 않기 때문에 고군분투했지만 옥타브를 온라인으로 일하고 4104 = 16 ^ 3 + 4 ^ 3 = 15 ^ 3 + 9 ^ 3
DrQuarius


1
숫자를 쓰려면 정확히 두 가지 방법이 필요합니까, 아니면 적어도 두 가지가 필요합니까?
John Dvorak

2
사람은 택시에 대한 답변 작성해야 bigzaphod.github.io/Taxi
SaggingRufus

답변:


4

05AB1E , 9 바이트

코드 (매우 느림)

L3mãOQO3›


코드 (훨씬 빠름), 12 바이트

tL3mDδ+˜QO3›

05AB1E 인코딩을 사용합니다 . 온라인으로 사용해보십시오!

설명

t                # Square root (not necessary but added for speed)
 L               # Create a list [1 .. sqrt(input)]
  3m             # Raise to the power of 3
    D            # Duplicate
     δ+          # 2 dimensional addition
       ˜         # Deep-flatten the entire list
        Q        # Check which are equal to the input
         O       # Sum up to get the number of equalities
          3›     # Checks whether there are 4 or more equalities. In order for a number
                   to be a secondary taxicab number, there are at least two distinct
                   ways to get to that number and 4 ways when you also take reversed
                   arguments in account.

2
반드시 제곱근을 제거하여 바이트를 절약 할 수 있습니다. 이것은 가장 빠른 코드가 아니라 코드 골프입니다.
산란

@Christian 나는 느린 버전의 코드를 추가했다.
Adnan

6

젤리 , 9 바이트

아웃 골퍼 에릭에게 크레딧.

Œċ*3S€ċ>1

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

너무 느려서 1729온라인 에서도 작동하지 않습니다 .

훨씬 빠른 12 바이트

Dennis에게 크레딧.

R*3fRŒċS€ċ>1

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


방금 이것을 "4104"로 테스트했고 통과했습니다. :) 아직 이것을 넘어선 것은 없지만 번개가 빨리 왔습니다!
DrQuarius

Ðf⁸될 수 있습니다 fR. 두 번째 는 제거 할 수 있습니다.
Dennis

두 번째 ⁸는 실제로 제거 할 수 있지만 fR 스왑은 실패로 이어집니다.
DrQuarius

그건 그렇고, 이것은 코드 골프 이므로 속도는 신경 쓰지 않지만 TIO 링크에는 빠른 버전을 포함시킬 수 있습니다.
user41805

1
속도를 신경 쓰지 않아도됩니다 Œċ*3S€ċ>1.
Outgolfer Erik

5

Mathematica, 35 바이트

Count[#^3+#2^3&~Array~{#,#},#,2]>2&

양의 정수를 취 True하거나 또는를 반환하는 순수 함수 False.

#^3+#2^3&~Array~{#,#}1과 입력 값 사이의 두 정수의 큐브 합을 모두 표로 표시합니다. (이것은 입력의 큐브 루트와 같이 큐브로 정해질 정수에 대한 합리적인 경계로 훨씬 빠를 것이지만 귀중한 바이트가 필요합니다. 코드는 입력에서 약 30 초가 걸리고 13832적어도 2 차적으로 확장됩니다 입력에서.) Count[...,#,2]는 입력이 네스트 레벨 2에서이 목록에 나타나는 횟수를 계산합니다. 이 숫자가보다 큰 경우 2, 입력은 semi-taxicab 숫자입니다 (a ^ 3 + b ^ 3 및 b ^ 3 + a ^ 3은 별도로 계산되므로 1보다 크지 않고 2보다 큼).


3

수학, 38 37 바이트

Tr[1^PowersRepresentations[#,2,3]]>1&

@GregMartin 덕분에 -1 바이트

항상 그렇듯이 모든 것에 Mathematica가 내장되어 있습니다.


1
OP가 2 이상의 표현으로 괜찮다고 가정하면 Tr[1^...]대신에 작동 한다고 생각 합니다 Length@.
Greg Martin

2

자바 스크립트 (ES7), 63 바이트

부울을 반환하는 비교적 빠른 재귀 함수입니다.

f=(n,k,r=0,x=n-k**3)=>x<0?r>3:f(n,-~k,r+=(x**(1/3)+.5|0)**3==x)

데모


2

매스 매 티카, 48 바이트

Length@Solve[x^3+y^3-#==0<x<y,{x,y},Integers]>1&

입력

[4104]

산출

진실


참고 #!=1729&&더 이상 필요 이제 사양이 명확하게되었다는 없습니다.
Greg Martin

Solve오히려 사용할 수 Reduce있습니까?
Ian Miller

물론 ... 1 바이트는 1 바이트입니다!
J42161217 2016 년

와 약간의 재 배열 Length@Solve[x^3+y^3-#==0<x<y,{x,y},Integers]>1&을 대체하는 바이트를 하나 더 저장할 수 있습니다. &&-
이안 밀러


1

MATL ( 16 15 바이트) ( 13 12 이상)

.4^:3^2XN!sG=sq

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

설명:

'Leaky Nun'의 젤리 솔루션을 기반으로, MATL로 변환되었으며, 일부는 중복되어 개선 될 수 있습니다.

.4^  % rough cube root of input, as maximum potential integer N.
:3^   % create array of all cubes from 1^3 up to N^3.
2XN   % do nchoosek on cube array, creating all possible pairs (k=2) to add.
!s    % transpose array and add all pairs to find sums.
G=    % find all pairs that equal the original input.
sq   % if there is more than one solution, then pass the test.

참고 : 허위 출력에는 0과 -1이 포함되며 정확한 출력은 1입니다. "s1>"을 "sq"로 대체하여 여분의 바이트를 저장 한 Luis Mendo에게 감사합니다.

이상적으로 ( 13 12 바이트) :

:3^2XN!sG=sq

... 충분하지만 숫자가 클수록 tio.run의 페이지에서 충돌이 발생합니다.


원본 : MATL (19 바이트) =============== XH.34 ^ : 3 ^ 2XN! sH = s1>
DrQuarius

1
어떤 truthy 출력이 유효한 경우, 당신은 대체 할 수 있습니다 1>q. 또한 설명 H대신에 G있습니다. 많은 수의 프로그램이 충돌한다는 사실은 대개 점수와 관련이 없습니다. 도전이 달리 명시하지 않는 한 충분한 시간과 기억력이 주어진다면,
Luis Mendo

1
고마워 루이스! 나는 "truthy"출력을 처음 사용하지만 이제는 잘 작동합니다. 수정하도록 수정되었습니다. 또한 재미 있고 사용하기 쉬운 esolang을 만들어 주셔서 감사합니다!
DrQuarius


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