首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最短的7-11码

最短的7-11码
EN

Code Golf用户
提问于 2011-06-17 12:47:27
回答 5查看 1.6K关注 0票数 7

7-11问题是找到4个正数(带有两个十进制数,A.BC),使得它们的和等于它们的乘积,等于7.11。

代码语言:javascript
复制
a + b + c + d = a * b * c * d = 7.11
0 < a <= b <= c <= d

编写最短的程序来计算所有不递减的四倍。不允许预先计算值。

EN

回答 5

Code Golf用户

回答已采纳

发布于 2011-06-18 06:33:37

Ruby,105个字符

不幸的是,我没有得到低于100分。它只是强迫所有可能的元组和检查之后。尽管如此,它仍然在有限的时间内完成。

代码语言:javascript
复制
(1..m=711).map{|a|(a..m).map{|b|(b..m).map{|c|d=m-a-b-c;p [a/u=1e2,b/u,c/u,d/u]if d>=c&&a*b*c*d==m*1e6}}}

格式化的版本如下所示:

代码语言:javascript
复制
(1..m=711).map{ |a|
  (a..m).map{ |b|
    (b..m).map{ |c|
      d=m-a-b-c
      p [a/u=1e2,b/u,c/u,d/u] if d>=c && a*b*c*d==m*1e6
    }
  }
}
票数 5
EN

Code Golf用户

发布于 2011-06-17 18:36:49

Haskell - 121

(增加额外的换行符以提高可读性)

代码语言:javascript
复制
h=711
main=mapM(print.map((/100).realToFrac))
     [[a,b,c,d]|a<-[1..h],b<-[a..h],c<-[b..h],let d=h-a-b-c,c<=d,a*b*c*d==h*10^6]

这通过只处理两个十进制数的数字来满足要求。它使用整数算法计算解决方案(其中只有一个),并将其缩放为100。浮点算法太不可信了。

票数 3
EN

Code Golf用户

发布于 2011-06-17 21:34:01

C (229个字符)

祭品:

代码语言:javascript
复制
#include<stdio.h>
int main(void){int a,b,c,d;for(a=1;a<=711/4;++a)for(b=a;b<=711/4;++b)for(c=b;c<=711/4;++c){d=711-(a+b+c);if(d<c)break;if(a*b*c*d==711000000)printf("a=%.2f,b=%.2f,c=%.2f,d=%.2f\n",a/100.,b/100.,c/100.,d/100.);}}

为了可读性而重新格式化:

代码语言:javascript
复制
#include <stdio.h>

int main()
{
    int a, b, c, d;

    for (a = 1; a <= 711 / 4; ++a)
        for (b = a; b <= 711 / 4; ++b)
            for (c = b; c <= 711 / 4; ++c)
            {
                d = 711 - (a + b + c);
                if (d < c) break;
                if (a * b * c * d == 711000000)
                    printf("a = %.2f, b = %.2f, c = %.2f, d = %.2f\n", a / 100., b / 100., c / 100., d / 100.);
            }
}
票数 1
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/2884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档