数を推測する


10

説明文

完全に機能する「数字を推測する」ゲームを作成します。ゲームは次のように2人のプレーヤーでプレイされます。

  1. プレーヤーは1からNの間の数字(A)を選択します
  2. プレーヤー2が同じ範囲の数字(B)を選択してAを推測しようとする
  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. 2番目に投票数の多いエントリより3票以上前に投票した場合、最も高い投票数のエントリが勝ちます。
  2. 最短のエントリーが勝ちます。

私はそのAIにAIが必要であることを明示的に読みませんでした。両方のプレイヤーが人間であることを確認できますか?
JB

@JB:すみません:/ AI 必要です。私は今、質問を更新しています...
Eelvex

2
各ステップの説明文は与えられるべきだと思います。さもなければ、答えを比較するのは難しいです。
ジョーイ

@Joey間違い
サイモン・トス

ユーザー入力の検証は重要ですか?
zzzzBov 2011年

回答:


3

Windows 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推測をチェックするためのチェーンの代わりに、負の値、正の値、ゼロの値に異なる値を持つフォーマット文字列を使用します。たくさん節約できます。
  • 2011-02-23 02:16 (306)等価ではなく減算を使用しています。
  • 2011-03-12 02:27 (289) Rubyソリューションと同じレベルの基本的なユーザー操作に削減されました。もちろんそれよりも短いです。

9

TRS-80 BASIC、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の1行に最も興味深いプログラムを収めようとする試みです。それは私の最初のワンライナーであり、ひどく印象的ではありませんでした。(あちこちに浮かぶ素晴らしいワンライナーがいくつかありました。)

TRS-80 BASICの行は255文字に制限されていましたが、オーバーヘッドのカップルを除いています。トークン化後の実際の制限は255バイトだったため、これを超えることもありましたが、エディターはトークン化の前に 255文字を超える行を切り捨て、リテラル制御文字を挿入するために行エディターでトリックを使用する必要がありました文字列への改行のような。

そして、はい、明確にするために、リスト内のそれらの改行は文字通りの改行文字です。(コード内でそれらを取得するために、行の実行C中にhangeコマンドを使用する必要がありましたEDIT。非常に苦労しましたが、8文字以上+CHR$(13)を1 文字に置き換える価値はあります。)

くそー、私は長い間ゴルフをしてきた。


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 2014年

タイプが指定されていない変数は整数です
Ethiraric

4

C#:

文字数:スペースあり: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);
    }

編集 は「後藤」(震え)になりました


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;}
  • 2011/11/23 16:44:00 883素敵で居心地の良い
  • 24/11/2011 09:38:00 616修正&短縮
  • 2011/11/24 11:52:00 555短縮

1
将来これを書いたの?それはとても賢いです!
mikera

3

JavaScript

新しい縮小バージョン(通話の切断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

@Eelvex:あなたがそれを実行しようとしている間、私の解決策は現在再び受け入れられているよりも短いです。そして、ユーザーと対話するときに使用する正確な文字列を実際に指定する必要があります。基本的に、Magnusが行ったことのすべては、より簡潔な相互作用を使用することでしたが、もちろんそれはより短いものです。
Joey

私はそれを正しく見ていますか?このプログラムは人間がプレイヤー1である場合を正しく処理しませんか?少なくとも、AIが数字を推測し、プレーヤーが»higher«、»lower«、または»correct«を入力するコードがどこにもない...
Joey

@ジョーイ、私は人間のプレイヤーが最初に行くなら、彼らは数を選ぶだけでよいという印象を受けました。なぜ人間のプレーヤーがより高く、より低く、そして正しい選択をするのか、私は少し
ぼやけてい

プレイヤー1と2の指示に従ってください。1つは人間で、もう1つはコンピューターです。ただし、プロトコルに違いはありません。また、「コンピューターが数字を推測しようとする必要があります」という文は、コンピューターが数字を推測する必要があることを意味します。
ジョーイ

3

Python 2.7 334 335 327 314 300キャラクター (初めてのゴルフ)

(335)改行をエスケープするのを忘れました。

(327)randintの冗長100を削除しました。文字列全体ではなく、応答の最初の文字の比較。

(314)勝者を更新した印刷。

(300)プレーヤーがプレーヤー1であったときに変更:コンピューターとしての数の推測を変更

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

BASIC、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のようなものを想定し、それらを完全に省略します。
nyuszika7h 14

@ nyuszika7hコードゴルフよりも人気コンテストの方が多いので、より一般的な百の範囲の数値を選びます。
JB

そうですか?さて、それはタグ付けされていcode-golfます。
nyuszika7h 14

具体的かつ明示的な(そしてお粗末な、私見)勝利条件。
JB

ああ、私はそれを見ましたが、それを忘れました。
nyuszika7h 2014

2

Lua 360 Chars

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

Javascript

これは約800文字で、コンピュータープレーヤーの半分の基本的なバイナリ選択「AI」が含まれています。私がすべてを取り除くと、おそらくいくつかの文字を保存できますvarコードゴルフ中にも変数をリークしたくありません。また、「これは正しいですか?」/「これは高いですか?」という2つのステップを実行しました。プロンプトポップアップを表示して「正しい」/「高い」/「低い」を確認するのではなく、ポップアップを確認することで、一部の文字を保存できる可能性もありますが、実際には確認しませんでした。

また、私はそれをFirefox 4でのみテストしたので、私がやっていることの一部が一貫してwp機能するかどうか、特にNaNとして解析された無効な入力を関数のデフォルト値に合体するかどうかわかりません。

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

Java、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には複数行の文字列がないため、コンパイルすらできません。文字列の途中で改行することは期待できません。
ジョーイ

わかりました。画面上で見栄えをよくすることをやめ、1行だけ貼り付けました。
Joe Zitzelberger

1
さらに(括弧内の節約):クラスには1文字(40)で名前を付けることができます。そこには不要な空白がたくさんあります(80)。int a=5,b=10(34)のように、同じタイプの複数の変数の宣言を折りたたむことができます。コンストラクタ内の引数には、回避するフィールドとは異なる名前を付けることができますthis.(10)。L常に1(4)のままなので、完全に削除できます。あなたはの初期化を残すことができますHし、Gこれは(6)とにかく、コンストラクタでセットを取得します。すべての変数とメソッドに1文字の名前を使用できます(235)。
ジョーイ

確かに、しかしそれは完全に読めないでしょう。これが、コードゴルフがコードボウリングになりつつあるところです。でも時間があれば、今夜は磨きます。
Joe Zitzelberger

1
前の図の修正:(272)。fuzzify条件演算子(20)を使用して書き換えることができます。あなたは、インライン可能BufferedReadergetInt(19)。とで(48)String#matchesを回避するために使用できます。条件演算子も使用できます(30)。私は今ダウン代わりに初期の1953年の1360年までだPatternMatchergetIntprocessGuess
ジョーイ

2

目覚まし時計付きラジオ、5756ビット(2159バイト)

お近くの目覚まし時計にもうすぐ! 改行は読みやすくするためのものです。画面上のリテラル数値表示の代わりに、ASCII値が時々使用されます。スペックに適合。Aおよびのデフォルトを使用しIます。最初の入力では、推測値としてNULLを使用します。それ以外の場合は、数値を設定します。PADSIZEは4でなければなりません!セルは7ビットでラップする必要があります!チューリング完成!出力higherlowercorrectyou won、とyou lost

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

1

Ruby 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 2011年

1

Javaを正義にする必要性を感じました。:)

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.