首页
学习
活动
专区
圈层
工具
发布

猜数字
EN

Code Golf用户
提问于 2011-02-21 16:21:26
回答 9查看 2.1K关注 0票数 10

描述

创建一个充分发挥作用的“猜数字”游戏。该游戏由两名玩家进行,具体如下:

  1. 玩家一在1和N之间选择一个数字(A)
  2. 第二人试图猜测A在相同范围内选择一个数字(B)
  3. 第一个玩家响应“较高”if A > B、“较低”if A < B或“正确”if A = B
  4. 步骤2-3被重复I次或直到“正确”被回应。
  5. 如果听到“正确”,第二名选手就会赢,否则他就会输。

规范

有效条目的最低规格:

  • 用户可以作为第一名玩家或第二名玩家。
  • 计算机扮演着另一个角色。
  • 计算机必须在扮演第二玩家时真正尝试猜出数字(因此,根据给定的数据猜测或忽略给定的数据就是作弊)。
  • N= 100或由用户输入(您的选择)
  • I=5或用户输入(您的选择)
  • 节目必须在最后宣布胜利者。
  • 关于在每一步中该做什么的完整的人类可读的说明(例如“作为第一名玩家或第二名玩家?”、“输入另一个猜测:”等等)--不要在这个步骤上发狂,只要保持简单。

获胜条件

按照这一顺序:

  1. 得票率最高的参赛选手如果比第二高的参赛选手领先至少3票,就会获胜。
  2. 最短的入场胜利。
EN

回答 9

Code Golf用户

发布于 2011-02-22 11:32:27

C 397字符

代码语言:javascript
复制
N,H=99,L=0,c=0,w=1;main(){char s[9];puts("Play as player 1 or 2: ");scanf("%d",&N);if(N-1){getchar();do{N=rand()%(H-L)+L+1;printf("My guess: %d\n",N);gets(s);if(*s=='c'){w=2;break;}if(*s-'l')H=N-1;else L=N-1;c++;}while(c<5);}else{N=rand()%99+1;while(c<5){puts("Enter guess: ");scanf("%d",&H);if(H==N){puts("correct");break;}else puts(H>N?"higher":"lower");c++;}if(c==5)w=2;}printf("Winner %d",w);}

以一种更易读的形式。

代码语言:javascript
复制
main()
{
        int i,N,H=100,L=0,c=0,w=1;
        char s[10];
        puts("Play as player 1 or 2: ");
        scanf("%d",&i);
        if(i-1)
        {
                getchar();
                do{
                        N=rand()%(H-L)+L+1;
                        printf("My guess: %d\n",N);
                        gets(s);
                        if(s[0]=='c')break;
                        else if(s[0]=='h')H=N-1;
                        else L=N-1;
                        c++;
                }while (c<5);
                if(c<5)w=2;
        }
        else
        {
                N=rand()%99+1;
                while (c<5)
                {
                        puts("Enter another guess: ");
                        scanf("%d",&H);
                        if(H==N){printf("correct\n");break;}
                        else if(H>N)printf("higher\n");
                        else printf("lower\n");
                        c++;
                }
                if(c==5)w=2;
        }
        printf("Winner %d",w);
}
票数 6
EN

Code Golf用户

发布于 2011-03-09 12:52:17

C#:

字符计数:带空格: 575无空格: 464

代码语言:javascript
复制
    static void Main()
    {
        Action<object> w = s => Console.WriteLine(s);
        Func<object, byte> r = t => { w(t); var s = Console.ReadLine(); return Convert.ToByte(s); };
        var p = r("Player (1/2):");
        int N = 100, g, i = 0, c, d;
        var q = new List<int>(Enumerable.Range(0, N));
        Func<Guid> x = Guid.NewGuid;
        c = p == 1 ? r("Number:") : q.OrderBy(j => x()).First();
        m: i++;
        g = p == 2 ? r("Guess:") : q.OrderBy(j => x()).First();
        d = g < c ? -1 : (g > c ? 1 : 0);
        w(d == -1 ? "Higher" : (d == 1 ? "Lower" : "correct"));
        q = q.Where(n => d == -1 ? n > g : n < g).ToList();
        if(c != g && i < 5) goto m;
        r(g);
    }

编辑do而现在是"Goto“(颤抖)

票数 4
EN

Code Golf用户

发布于 2011-02-23 15:44:48

好的老平原C

代码语言:javascript
复制
#include <stdio.h>
#define x(s) puts(s)
main(){int c,i,l,h,g;srand(time(NULL));p:x("You want to guess (1) or should I (2)?");scanf("%d",&c);i=5;if(c==2){x("Think a number 1..100");h=100;l=1;goto t;}if(c==1){x("Guess a number 1..100");h=rand()%100+1;goto g;}return 0;t:if(!i--)goto u;printf("%d (1)higher (2)lower (3)correct",g=rand()%(h-l)+l);scanf("%d",&c);if(c==1)l=g;if(c==2)h=g;if(c==3)goto c;goto t;g:if (!i--)goto c;scanf("%d",&g);if(g>h)x("lower");if(g<h)x("higher");if(g==h){x("correct");goto u;}goto g;u:x("You win");goto p;c:x("I win");goto p;}
  • 23/11/2011 16:44:00 883漂亮舒适
  • 2011年11月24日09:38:00 616固定和缩短
  • 2011年11月24日11:52:00 555
票数 3
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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