我是二手出租车吗?


13

背景

Ramanujan的电话号码(1729)被称为出租车出租车号码,这是因为(很可能是伪造的)Hardy登上出租车去医院看Ramanujan的传说,这个电话号码对他来说似乎很平淡。

从那以后,它被称为“计程车编号”一类整数中最著名的,它可以以两种(有时是“ k”)不同的方式表示为(正整数的)n个n次幂之和。

1729是可通过2种不同方式表示为2个立方的总和的最小自然数,使其成为第一个“ 3,2”出租车分类号(一般为“ n,k”)。

挑战

给定一个数字,请确定它是否为“ 3,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,但是设法使Octave在线工作,并发现4104 = 16 ^ 3 + 4 ^ 3 = 15 ^ 3 + 9 ^ 3
DrQuarius


1
是否需要有两种确切的数字写方法,或者至少有两种?
约翰·德沃夏克

2
有人应该在出租车上写下答案bigzaphod.github.io/Taxi
SaggingRufus

Answers:


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字节

归功于Outgolfer的Erik。

Œċ*3S€ċ>1

在线尝试!

这太慢了,甚至无法1729在线使用。

快得多,只有12个字节

感谢丹尼斯。

R*3fRŒċS€ċ>1

在线尝试!


我刚刚用“ 4104”进行了测试,它通过了。:)除此之外,还没有发现任何东西,但是那快如闪电!
DrQuarius

Ðf⁸可以成为fR。第二个可以删除。
丹尼斯,

确实可以删除第二个⁸,但是fR交换会导致失败。
DrQuarius

顺便说一下,这是代码高尔夫球,所以我们不在乎速度;),但您仍然可以在TIO链接中包括快速版本。
user41805

1
您无需关心速度,只需执行即可Œċ*3S€ċ>1
暴民埃里克(Erik the Outgolfer)

5

Mathematica,35个字节

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

接受正整数并返回True或的纯函数False

#^3+#2^3&~Array~{#,#}列出介于1和输入之间的两个整数的所有立方和。(这将更快地对要立方化的整数进行合理的绑定,例如输入的立方根;但这将占用宝贵的字节。实际上,代码在输入上花费约30秒的时间,13832并且至少按平方缩放在输入中。)Count[...,#,2]计算输入在此列表中嵌套层2出现的次数;如果此数字大于2,则输入为半计程车数字(大于2,而不是大于1,因为a ^ 3 + b ^ 3和b ^ 3 + a ^ 3被分别计算)。


3

Mathematica,38 37字节

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

-1个字节感谢@GregMartin

与往常一样,所有内容都内置了Mathematica。


1
假设OP可以使用2个以上的表示形式,那么我相信Tr[1^...]可以代替Length@
格雷格·马丁

2

JavaScript(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

Mathematica,48个字节

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

输入

[4104]

输出

真正


请注意,#!=1729&&既然规范已明确,则不再需要。
格雷格·马丁

您能使用Solve而不是Reduce
伊恩·米勒

当然... 1个字节就是1个字节!
J42161217

能救一个多字节用Length@Solve[x^3+y^3-#==0<x<y,{x,y},Integers]>1&它取代了&&-和重新排列的一点点。
伊恩·米勒


1

MATL(16 15字节)(理想情况下为13 12)

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

在线尝试!

说明:

基于“泄漏尼姑”的Jelly解决方案,它刚刚转换为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。感谢Luis Mendo在这里节省了一个额外的字节,用“ sq”替换了“ s1>”。

理想情况下(13 12字节):

:3^2XN!sG=sq

...就足够了,但是对于更大的数字,这会在tio.run的页面上崩溃。


原文:MATL(19个字节)============== XH.34 ^:3 ^ 2XN!sH = s1>
DrQuarius

1
如果有任何truthy输出是有效的,可以更换1>q。另外,您H不必G在解释中。程序大量崩溃的事实通常与计分无关。如果它工作给予足够的时间和内存这是可以接受的,除非挑战另有规定
路易斯Mendo

1
谢谢路易斯!我对“真实的”输出是陌生的,但是现在效果很好。编辑修改。另外,感谢您创造了这样一个有趣且易于使用的esolang!
DrQuarius

0

Ruby,52个字节

->n{r=*1..n;r.product(r).count{|i,j|i**3+j**3==n}>1}

在线尝试!

由于此版本创建了大量的n 2大小的数组,因此它在所有大于的真实测试用例上均失败1729,这是一个修改后的版本,其数组大小较小,约为n 2/3,可以成功检查至少31392个。

在线尝试!(改性)


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.