숫자를 추측


10

기술

완벽하게 작동하는 "숫자 추측"게임을 만듭니다. 이 게임은 다음과 같이 두 명의 플레이어가 진행합니다.

  1. 플레이어 1은 1과 N 사이의 숫자 (A)를 선택합니다
  2. 선수 2는 A가 같은 범위에서 숫자 (B)를 선택하려고 시도합니다.
  3. 첫 번째 플레이어는 "higher" if A > B , "lower" if A < B 또는 "correct"로 응답합니다 if A = B.
  4. 2-3 단계는 I 번 또는 "올바른"응답이 나타날 때까지 반복 됩니다.
  5. "올바른"소리가 들리면 2 번이 이깁니다.

명세서

유효한 출품작에 대한 최소 사양 :

  • 사용자는 플레이어 1 또는 플레이어 2로 플레이 할 수 있습니다.
  • 컴퓨터가 다른 역할을합니다.
  • 컴퓨터는 실제로 플레이어 2로 플레이하는 동안 숫자를 추측하려고 시도해야합니다 (따라서 주어진 데이터를 추측하거나 주어진 데이터를 무시하는 것은 부정 행위입니다)
  • N = 100 또는 사용자가 입력 (선택)
  • I = 5 또는 사용자가 입력 (선택)
  • 프로그램은 마지막에 승자를 발표해야합니다.
  • 각 단계에서해야 할 일에 대한 사람이 읽을 수있는 전체 지시 사항 (예 : "플레이어 1 또는 플레이어 2로 플레이?" , "다른 추측 입력 :" 등)-이 항목에 대해 간과하지 마십시오. 간단하게 유지하십시오.

승리 조건

그와 같은 순서로:

  1. 최고는 항목 승리를 선정 하는 경우 는 앞서 가장 높은 항목을 선정 번째 적어도 3 표를합니다.
  2. 최단 참가작이 승리합니다.

나는 분명히 우리가 AI에 AI가 필요하다는 것을 읽지 못했습니다. 두 선수 모두 인간임을 확인할 수 있습니까?
JB

@JB : 죄송합니다 : / AI 필요합니다. 질문을 지금 업데이트하고 있습니다.
Eelvex

2
각 단계에 대한 지침 텍스트를 제공해야한다고 생각합니다. 그렇지 않으면 답변을 비교하기가 어렵습니다.
Joey

@Joey 확실히
Šimon Tóth

사용자 입력 유효성 검사가 중요합니까?
zzzzBov

답변:


3

윈도우 PowerShell, 289

nal ^ Read-Host
filter p{"Player $_ wins.";exit}
$p=1-(^ Player 1 or 2)
$n=($x=1)..($y=99)|random
if($p){$n=^ Enter number}1..5|%{if($p){'{0:"higher";"lower";"correct";2|p}'-f($n-(^ Guess))|iex}else{"Guessing, "+($g=$x..$y|random);@{104='$x=$g+1';108='$y=$g-1';99='2|p'}[+(^)[0]]|iex}}
1|p

역사:

  • 2011-02-21 18:44 (620) Ungolfed.
  • 2011-02-21 19:15 (365) 골프의 첫 라운드.
  • 2011-02-21 19:31 (359) 일부 인라인.
  • 2011-02-21 19:38 (340) 일부 줄이 짧아졌습니다.
  • 2011-02-21 19:44 (339) whilefor
  • 2011-02-21 19:53 (331) 일부 중복 문자열이 변수로 가져 왔습니다.
  • 2011-02-21 19:53 (330) 다른 변수가 인라인되었습니다.
  • 2011-02-21 19:53 (328) 루프 조건을 최적화했습니다. 하지만 파이프 라인을 사용할 수 없습니다.
  • 2011-02-22 01:57 (326) else{if...}elseif– 가새를 저장합니다.
  • 2011-02-22 12:42 (325)switch 루프 이름 지정을 피하기 위해 대신 해시 테이블을 사용하여 많은 것을 이동했습니다 . 이제 그냥 break파이프 라인도 사용할 수 있습니다 . 당첨자 발표는 exit중단없이 필터를 사용 했습니다.
  • 2011-02-23 01:23 (308)elseif 추측을 확인 하는 체인 대신 음수, 양수 및 0 값에 다른 값을 가진 형식 문자열을 사용합니다. 많이 절약합니다.
  • 2011-02-23 02:16 (306) 평등 대신 빼기 사용.
  • 2011-03-12 02:27 (289) Ruby 솔루션과 동일한 수준의 기초적인 사용자 상호 작용으로 줄었습니다 . 물론 더 짧습니다.

9

TRS-80 기본, 249 자

사이트가 존재 하기 전에이 사이트에 대한 답변을 제출 한 것은 이번이 처음 일 수 있습니다 .

0 CLS:RANDOM:A=1:B=1E3:Q=RND(1E3):FORX=1TO8E9:PRINTA"-"B:INPUT"
 Guess";C:IFC<AORC>B,X=X-1:NEXTELSEIFC<QPRINT"Too low":A=C+1:NEXTELSEIFC>QPRINT"Too high":B=C-1:NEXTELSEPRINTC"is right!!
 It took you"X"tries.
":X=9E9:NEXT:FORX=0TO0:X=INKEY$="":NEXT:RUN

사실, 전 세계 웹이 존재하기 전에 썼습니다. 1980 년대에 TRS-80이 무의미했던 것처럼.

이것은 "한 줄짜리"의 한 예입니다-가장 흥미로운 프로그램을 한 줄의 BASIC에 맞추려는 시도입니다. 내 첫 번째 라이너 였고별로 인상적이지 않았습니다. (놀라운 원 라이너가 거기에 떠있었습니다.)

TRS-80 BASIC 라인은 255 자로 제한되어 있으며 오버 헤드를 위해 한 쌍을 뺀 것입니다. 토큰 화 실제 한계가 255 바이트이기 때문에 때때로이 값을 초과 할 수 있지만, 편집기는 토큰 화 전에 255자를 초과하는 행을 자르고 리터럴 제어 문자를 삽입하려면 행 편집기에서 트릭을 사용해야했습니다. 줄 바꿈처럼.

그리고 분명히, 목록에서 그 줄 바꿈은 문자 그대로의 줄 바꿈 문자입니다. (코드로 가져 오려면 행 C을 처리 EDIT하는 동안 hange 명령 을 사용해야했습니다 . 총 고통이지만 8 개 이상의 문자를 +CHR$(13)하나로 대체 할만한 가치가 있습니다 .)

젠장, 나는 오랫동안 골프를 쳤다.


6

C 397 자

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);}

더 읽기 쉬운 형태로.

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);
}

@Joey가 수정되었습니다.
fR0DDY

글쎄, 나는 완전한 C를 모른다. 그러나 타입 지정자가없는 변수가있는 프로그램이 어떻게 컴파일되는지 설명 할 수 있습니까?
MAKZ

유형이 지정되지 않은 변수는 정수입니다.
Ethiraric

4

씨#:

문자 수 : 공백 포함 : 575 공백 없음 : 464

    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);
    }

편집 하는 동안 이제는 "Goto"( 떨림 )


3

좋은 오래된 평야 C

#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 단축

1
당신은 미래에 이것을 썼습니까? 매우 영리합니다!
mikera

3

자바 스크립트

새로운 축소 버전 ( 전화 끊기 var및 축소 alert:

268 자

function g(m){n=u(confirm('Player pick?'));function u(p){if (p){do{n=parseInt(prompt('Number'))}while(isNaN(n)||!n||n>m)}else{n=parseInt(Math.random()*m)+1}return n}while(g!==n){do{g=parseInt(prompt('Guess'))}while(isNaN(g));alert(g<n?'higher':g>n?'lower':'correct')}}

call을 실행하기 위해 g(100);자체 실행은 변수 수의 문자 (275 자)를 추가하므로 계산되지 않습니다 g(100);.

원본 (공백 포함 약 600 자) :

function guessTheNumber(m)
{
  var n = getNum(confirm('Player pick the number?')), g;

  function getNum(p)
  {
    var n;
    if (p)
    {
      do
      {
        n = parseInt(prompt('What number?'));
      } while(isNaN(n) || !n || n > m);
    }
    else
    {
      n = parseInt(Math.random() * m) + 1;
    }
    return n;
  }

  while(g!==n)
  {
    do
    {
      g = parseInt(prompt('Take a guess!'));
    } while(isNaN(g));
    if (g < n)
    {
      alert('higher');
    }
    else if (g > n)
    {
      alert('lower');
    }
    else
    {
      alert('correct!');
    }
  }
}

축소 (312) :

function g(m){var g,n=u(confirm('Player pick?'));function u(p){var n;if (p){do{n=parseInt(prompt('Number'))}while(isNaN(n)||!n||n>m)}else{n=parseInt(Math.random()*m)+1}return n}while(g!==n){do{g=parseInt(prompt('Guess'))}while(isNaN(g));if(g<n) alert('higher');else if(g>n) alert('lower');else alert('correct')}}

죄송합니다. 최신 코드를 맨 위에 두십시오. (또한 제대로 실행할 수 없습니다 :-/)
Eelvex

@ Elelx : 당신이 그것을 실행하려고 시도하는 동안 내 솔루션은 현재 다시 허용되는 것보다 짧습니다. 그리고 실제로 사용자와 상호 작용할 때 사용할 정확한 문자열을 지정해야합니다. 기본적으로 Magnus가 수행 한 모든 작업은 더 짧은 간결한 상호 작용을 사용하는 것이 었습니다.
Joey

내가 올바르게 보고이 프로그램이 인간이 플레이어 1 인 경우를 처리하지 못합니까? 적어도 AI가 숫자를 추측하고 플레이어가 어디서나»higher«,»lower«또는»correct«를 입력하는 코드가 보이지 않습니다.
Joey

@Joey, 나는 인간 플레이어가 먼저 가면 숫자 만 골라야한다는 인상을 받았다. 나는 왜 인간 플레이어가 더 높고, 더 낮고, 정확한지를 선택하는지에 대해 약간 안개가
났다고 생각

플레이어 1과 2의 지시를 따르십시오. 그 중 하나는 인간이고 다른 하나는 컴퓨터입니다. 그러나 프로토콜에는 차이가 없습니다. 또한 "컴퓨터"는 플레이어 2로 플레이하는 동안 숫자를 추측하려고 시도해야합니다«는 컴퓨터가 숫자를 추측해야 함을 의미합니다.
Joey

3

파이썬 2.7 334 335 327 314 300 문자 (내 처음 골프)

(335) 줄 바꿈을 피하는 것을 잊었다.

(327) randint에 대한 중복 100을 제거했습니다. 전체 문자열 대신 응답의 첫 문자 비교

(314) 누가 이겼는지 인쇄가 업데이트되었습니다.

(300) 플레이어가 플레이어 일 때 변경됨 : 컴퓨터의 숫자를 추측하여 변경 함

from random import*
i=input
s="Enter number:"
p=i("Player 1/2:")-1
h=100
N=(i(s),randint(1,h))[p]
b=l=0
for _ in[0]*5:
 exec("g=(h+l)/2;r=raw_input('Guessing '+`g`+':')[0];exec('h=g','l=g')[r=='l'];b=r=='c'","g=i(s);b=g==N;print(('higher','lower')[N<g],'correct')[b]")[p]
 if b:break
print 1+b,"won"

2

기본, 184

100 INPUT "P1 NUMBER? ";
200 FOR I%=1 TO 5
300 INPUT "P2 GUESS? ";G%
400 INPUT "P1 SENTENCE? ";S$
500 IF S$="CORRECT" THEN 800
600 NEXT I%
700 PRINT "WINNER 1":END
800 PRINT "WINNER 2"

AI 버전이 없습니다.


나는 이것이 오래된 대답이라는 것을 알고 있지만 나는 그때 이것을 몰랐고 나는 이것을 우연히 발견했다 .1, 2, 3 등과 같은 짧은 줄 번호를 사용하거나 QBASIC / FreeBASIC과 같은 것을 가정 할 수있다. 완전히 생략하십시오.
nyuszika7 시간

@ nyuszika7h 코드 골프보다 인기있는 경연 대회보다 더 일반적인 백 범위 숫자를 사용하려고합니다.
JB

그것은? 글쎄, 태그되었습니다 code-golf.
nyuszika7 시간

구체적이고 명백한 (그리고 IMHO) 당첨 조건.
JB

아 맞다, 나는 그것을 보았지만 잊었다.
nyuszika7h

2

루아 360 문자

i=io.read p=print I=5 N=100 math.randomseed(os.time())r=math.random p"Play as player one or two?"o=i"*n">1 _=o and p("Input number between 1 and",N)n=o and i"*n"or r(I,N)l,u=1,N for k=1,I do p"Guess!"g=o and r(l,u)or i"*n"p("Guessed",g)if n==g then p"Correct"break elseif n>g then p"Higher"l=g else p"Lower"u=g end end p(o and"I"or"You",n==g and"Won"or"Loose")

골프 용이 아닌 버전 :

i=io.read
p=print
I=5
N=100
math.randomseed(os.time())      -- Make things less predictable
r=math.random                   
p"Play as player one or two?"
o=i"*n">1
_=o and p("Input number between 1 and",N) -- if one, ask for number
n=o and i"*n"or r(I,N)          -- get number from user or random
l,u=1,N                         -- boundaries for doing "smart" guessing
for k=1,I do
    p"Guess!"
    g=o and r(l,u)or i"*n"      -- get guess (random or input)
    p("Guessed",g)
    if n==g then p"Correct!"break -- break loop if guessed correctly
    elseif n>g then             -- if guess to low
    p"Higher"l=g else           -- print + update boundaries
    p"Lower"u=g end
end
p(o and"I"or"You",n==g and"Won"or"Loose") -- Determine outcome!

2

자바 스크립트

이것은 약 800 자이며 컴퓨터 플레이어 절반을위한 기본 바이너리 선택 'AI'를 포함합니다. 내 모든 것을 제거하면 아마도 몇 개의 문자를 저장할 수는 var있지만 코드 골프 중에도 변수 누출을 ​​좋아하지 않습니다. 나는 또한 "이것이 맞습니까?"/ "이보다 높습니까?"라는 두 단계를 수행했습니다. 프롬프트 팝업을 표시하고 "올바른"/ "더 높은"/ "더 낮은"을 확인하는 대신 확인 팝업을 사용하여 문자를 저장할 수도 있지만 실제로 확인하지는 않았습니다.

또한 Firefox 4에서만 테스트했기 때문에 내가하고있는 일 중 일부가 일관되게 작동하는지, 특히 NaN으로 구문 분석 된 유효하지 않은 입력을 내 wp기능 의 기본값으로 병합하는지 모르겠습니다 .

function game(N, I) {
    var wa=function(a){window.alert(a)};
    var wc=function(s){return window.confirm(s)};
    var wp=function(s){return window.prompt(s)};
    var ri=function(s,d){return parseInt(wp(s),10)||d};
    var m=function(l,h){return Math.round((h+l)/2)};
    N = N || pd("Highest possible number?",100);
    I = I || pd("How many guesses?",5);
    var p = wc("Be player 2?");
    var s = [1,N];
    var a = p?Math.ceil(Math.random()*N):Math.min(N,Math.max(1,ri("Pick a number from 1 to " + N,1)));
    var w = 0;
    var g = 0;
    if(p) while(I--){while(!(g = ri("Guess:",0)));if(g==a){wa("correct");w=p+1;break;}else{wa(g<a?"higher":"lower")}}
    else while(I--){g = m(s[0],s[1]);if(wc("Is "+g+" correct?")) { w=p+1;break;} else if (wc("Is "+g+" higher?")){s=[s[0],g];}else{s=[g,s[1]];}}
    if(!w)w=!p+1;
    wa("Player " + w + " wins!");
}
game(100,5);

2

자바, 1886 자

import java.io.*;import java.util.*;import java.util.regex.*;public class GuessGame {int L=1;int H=100;int G=5;int N;String HS="higher";String LS="lower";String CS="correct";public static void main(String[] args){if (args.length==2)new GuessGame(Integer.parseInt(args[0]),Integer.parseInt(args[1])).play();else if(args.length==0)new GuessGame(100,5).play();else System.out.println("usage GuessGame HighInteger NumberGuess");}GuessGame(int H,int G){this.H = H;this.G = G;}void play(){int pNum=getInt("Play As Player 1 or Player 2?","1|2");if(pNum==1)playP2();else playP1();System.out.println("The number was "+N);}int getInt(String pmpt,String val){BufferedReader cin=new BufferedReader(new InputStreamReader(System.in));int i=0;Pattern p=Pattern.compile(val);boolean fnd=false;String ln="";try{while(!fnd){System.out.println(pmpt);ln=cin.readLine();Matcher m=p.matcher(ln);fnd=m.find();}i=Integer.parseInt(ln);} catch (Exception ex) {}return i;}String processGuess(int g){if(N>g)return HS;else if(N<g)return LS;else return CS;}void playP1(){N=new Random().nextInt(H);for(;G>0;G--){String rslt=processGuess(getInt("Player 2, enter your guess:","\\d?"));System.out.println(rslt);if(rslt.equals(CS)){System.out.println("Player 2 wins!");break;}}}void playP2() {N=getInt("Player 1, enter your number:", "\\d+");int max=H;int min=L;int nextGuess=min+(max-min)/2;for (;G>0;G--){System.out.println("Player 2, enter your guess:" + nextGuess);String rslt=processGuess(nextGuess);System.out.println(rslt);if(rslt.equals(HS)){min=nextGuess+1;nextGuess=fuzzify(nextGuess+(max-nextGuess)/2,min,max);}if (rslt.equals(LS)){max=nextGuess-1;nextGuess=fuzzify(nextGuess-(nextGuess-min)/2,min,max);}if(rslt.equals(CS)){System.out.println("Player 2 wins!");break;}}}int fuzzify(int i,int mn,int mx){int fz=new Random().nextInt(3);if(fz==1)return Math.max(mn,--i);if(fz==2)return Math.min(mx,++i);return i;}}

골프 이외의 버전 :

import java.io.*;
import java.util.*;
import java.util.regex.*;
public class GuessGame {
    int L = 1;
    int H = 100;
    int G = 5;
    int N;
    String HS = "higher";
    String LS = "lower";
    String CS = "correct";
    public static void main(String[] args) {
        if (args.length == 2)
            new GuessGame(Integer.parseInt(args[0]), Integer.parseInt(args[1])).play();
        else if (args.length == 0)
            new GuessGame(100, 5).play();
        else
            System.out.println("usage GuessGame HighInteger NumberGuess");
    }
    GuessGame(int H, int G) {
        this.H = H;
        this.G = G;
    }
    void play() {
        int pNum = getInt("Play As Player 1 or Player 2?","1|2");
        if (pNum == 1)
            playP2();
        else
            playP1();
        System.out.println("The number was " + N);
    }
    int getInt(String pmpt, String val) {
        BufferedReader cin = new BufferedReader(new InputStreamReader(System.in));
        int i = 0;
        Pattern p = Pattern.compile(val);
        boolean fnd = false;
        String ln = "";
        try {
            while (!fnd) {
                System.out.println(pmpt);
                ln = cin.readLine();
                Matcher m = p.matcher(ln);
                fnd = m.find();
            }
            i = Integer.parseInt(ln);
        } catch (Exception ex) {}
        return i;
    }
    String processGuess(int g) {
        if (N > g)
            return HS;
        else if (N < g)
            return LS;
        else
            return CS;
    }
    void playP1() {
        N = new Random().nextInt(H);
        for (; G > 0; G--) {
            String rslt = processGuess(getInt("Player 2, enter your guess:", "\\d?"));
            System.out.println(rslt);
            if (rslt.equals(CS)) {
                System.out.println("Player 2 wins!");
                break;
            }
        }
    }
    void playP2() {
        N = getInt("Player 1, enter your number:", "\\d+");
        int max = H;
        int min = L;
        int nextGuess = min + (max - min) / 2;
        for (; G > 0; G--) {
            System.out.println("Player 2, enter your guess:" + nextGuess);
            String rslt = processGuess(nextGuess);
            System.out.println(rslt);
            if (rslt.equals(HS)) {
                min = nextGuess + 1;
                nextGuess = fuzzify(nextGuess + (max - nextGuess) / 2, min, max);
            }
            if (rslt.equals(LS)) {
                max = nextGuess - 1;
                nextGuess = fuzzify(nextGuess - (nextGuess - min) / 2, min, max);
            }
            if (rslt.equals(CS)) {
                System.out.println("Player 2 wins!");
                break;
            }
        }
    }
    int fuzzify(int i, int mn, int mx) {
        int fz = new Random().nextInt(3);
        if (fz == 1)
            return Math.max(mn, --i);
        if (fz == 2)
            return Math.min(mx, ++i);
        return i;
    }
}

우선 : Java에는 여러 줄 문자열이 없으므로 컴파일조차되지 않습니다. 문자열 중간에서 줄 바꿈을 기대할 수 없으며 작동합니다.
Joey

좋아, 나는 화면에서보기 좋게 보이려고 노력하지 않고 한 줄을 붙여 넣었습니다.
Joe Zitzelberger

1
또한 (괄호로 절약) : 클래스는 단일 문자 (40)로 이름을 지정할 수 있습니다. 거기에 불필요한 공백이 많이 있습니다 (80). 같은 유형의 여러 변수 선언을 축소 할 수 있습니다 int a=5,b=10( 예 : (34)). 피하기 위해 필드와 다른 생성자의 인수 이름을 지정할 수 있습니다 this.(10). L항상 1(4)로 유지되므로 완전히 제거 할 수 있습니다 . 어쨌든 생성자 (6)의 초기화 HG설정을 생략 할 수 있습니다 . 모든 변수 및 메소드에 한 문자 이름을 사용할 수 있습니다 (235).
Joey

사실이지만 완전히 읽을 수는 없습니다. 이것이 코드 골프가 실제로 코드 볼링이되는 시점입니다. 하지만 시간을 찾으면 오늘 밤에 마무리하겠습니다.
Joe Zitzelberger

1
이전 그림에 대한 수정 : (272). fuzzify조건부 연산자 (20)를 사용하여 다시 작성할 수 있습니다 . (19) BufferedReader에서 인라인 할 수 있습니다 getInt. 당신은 사용할 수 있습니다 String#matches피하기 위해 PatternMatcher에서 getInt(48). 조건부 연산자도 사용할 수 있습니다 processGuess(30). 나는 지금 당신의 초기 1953 대신 1360으로 떨어졌습니다.
Joey

2

알람 시계 라디오, 5756 비트 (2159 바이트)

가까운 알람 시계로 곧옵니다! 개행은 가독성을 위해서만 제공됩니다. 화면에 리터럴 숫자 표시 대신 ASCII 값이 사용되는 경우가 있습니다. 사양에 맞습니다. A및의 기본값을 사용합니다 I. 첫 번째 입력에서 NULL을 추측 자로 사용하십시오. 그렇지 않으면 숫자를 설정합니다. 패드 크기는 4 여야합니다! 셀은 7 비트 및 랩이어야합니다! 튜링 완료! 출력 higher, lower, correct, you won,와 you lost.

}+>,[,>>+++++++[>>>>>>>+++++++>+++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++]>>>>>>>++++++.>>>>>>>++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++[+++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++>+++>>>>>>>]>++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++.++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.++++++.++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++[++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++>+>>>>>>>]>+++.+++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++[
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++>++++>>>>>>>]>+++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++.+++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++.[+]+][++++[+++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++>,[+[+++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++>++>>>>>>>]>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++.++++++++.[+
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++>+++>>>>>>>]>.+++++++++++++.[+
]+][++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++[++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++>+>>>>>>>]>++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
++++++++++++.+++..++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++.++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++.+++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++[+
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++>+>>>>>>>]>+++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++.>>>>>>>[+]>>>>>>>+++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++]]][>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++[++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++>+++>>>>>>>]>+++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++.+++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.++++++.+++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++[+++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++>+>>>>>>>]>+++.++[+++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+
+>>>>>>>]>.+++.++++.+.>>>>>>>[+]+][+++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++[++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++>+++>>>>>>>]>+++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++.+++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
++++++.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++[+++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++>+>>>>>>>]>+++.++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++[+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>++++>>>>>>>]>++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++.++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.]

1

루비 1.9 (298)

b=->f{puts "> "+f;gets}
a=->f{b[f].to_i}
q=a["Player 1 or 2?"]
i,j,g=100,1
n=q<2?a["Enter number:"]:rand(i)+j
5.times{q<2?(g=j+(i-j)/2
c=b["Guessing, #{g}"]
c[0]==?c?break: c[0]==?h?j=g :i=g):(
g=a["Guess:"]
puts g==n ?"correct":g<n ?"higher":"lower"
g==n&&break)}
puts "Player #{g==n ?2:1} won!"

그러나 매우 친절한 지침은 아닙니다.


아주 좋아요! AI가 플레이어 2 일 때 무작위 배정을했다면
Eelvex

@Eelvex, 30 자 초과
zzzzBov

1

Java를 정의해야 할 필요성을 느꼈습니다. :)

자바 - 486 437 421 414

골프

import java.util.*;class GuessANumber{static<T>void p(T p){System.out.println(p);}static int i(){return new Scanner(System.in).nextInt();}public static void main(String[]a){int c,g,f=101,i=0;p("Pick (1) or guess (2)?");c=i();if(c==1)p("Pick a number (1-100)");g=c==1?i():new Random().nextInt(100);while(f!=g&&i++<5){p("Guess:");f=c==2?i():f>g?f/2:f+f/2;if(c==1)p(f);p(f>g?"lower":"higher");}if(f==g)p("correct");}}

약간 골퍼

import java.util.*;

class a{

    static<T>void p(T p){
        System.out.println(p);
    }

    static int i(){
        return new Scanner(System.in).nextInt();
    }

    public static void main(String[]a){
        int c,g,f=101,i=0;
        p("Pick (1) or guess (2)?");
        c=i();
        if(c==1)p("Pick a number (1-100)");
        g=c==1?i():new Random().nextInt(100);
        while(f!=g&&i++<5){
            p("Guess:");
            f=c==2?i():f>g?f/2:f+f/2;
            if(c==1)p(f);
            p(f>g?"lower":"higher");
        }
        if(f==g)p("correct");
    }
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.