ああ!獣はHHHです!


19

IBM PC AT、YouTube(ビデオを参照)Wikipedia(記事を参照)、およびSesame Street から学んだように:

手紙Hアルファベットの中で最も容赦ない手紙です!

(実際にコードページ437の 2つの要素で構成されている場合でも、実際にはそのように無慈悲です。)

エイリアンのように、ええと... エイリアン、ビーストはたまらなく卵の近くに来る人すべてを執pursueに追い求めます。彼らには理由はありません。滅びないようにするには、それらをつぶさなければなりません。

4Hクラブとの恐ろしい出会い

このシナリオでは、あなたはあなたの最後の生命まで落ちており、卵のない地形で平野の獣に会ったと仮定します(Wikipediaのスクリーンショットのように)。数字キーパッドはなく、直接上下左右に移動することしかできません...しかし、獣には明らかに1つがあり、ターン中に斜めに移動できます。

ビーストの選択肢の中からの移動の選択は、プレイヤーからの距離を最小にするものになります。距離が等しければ、タイブレークは左+上より右+下を優先して行われますが、明確にするための曖昧さ除去マトリックスは...

1 3 4
2 H 5
6 8 7

獣は眠ることはありませんが、幸いにもプレイヤーより少し遅いです。彼らは1ターンおきに移動します(2ターン目に交替を開始することにより、プレーヤーに有利なスタートを与えます)。移動が可能であれば、プレイヤーからさらに遠ざかるかに関係なく、移動する必要があります。

閉じた隙間に座っていた可動壁の列を移動すると、獣をつぶします。これらの普通の獣は、頭に2ポイントの価値があります。

入力

  1. 列と行でマップのサイズを示す整数のペア。

  2. 入力の行の行数。各列サイズは、固体壁(#)、可動壁(~)、獣(H)、プレイヤー(O)、またはスペースのみを含みます。

  3. プレイヤーが移動しようとしたことを示すU、D、L、R、または単に待機するWの入力。ブロックされている可動壁を押し込もうとすることは合法的な入力であり、アクションを起こさないことに注意してください。

出力

  1. aHHHH! 獣がプレイヤーを殺した場合...またはプレイヤーが獣を残さずに勝った場合は何もありません

  2. スコア

(注:デバッグや娯楽のために、各ステップで状態を出力できるようにしたい場合がありますが、ここに投稿するには長すぎます。)

明確化

  • マップは、固体の壁で囲まれていることが保証されています。

  • 誰が順番に移動するかは、結果にとって重要です。したがって、プレイヤーは常に最初に移動し、画面上を左から右にスイープしている場合、獣には最初のマップ位置に基づいた順序が与えられます。(行1の獣は行2の獣の前に移動し、同じ行の2つの獣は、列番号が最も小さいものが他方の前に移動します)

  • 斜めに動く獣は、壁の間を絞る必要があるかどうかに関係なく、開いている隣接する斜めのスペースに移動できます。

  • プレイヤーは、もう一方の端にスペースまたは獣がある限り、任意の数の可動壁を一列に押すことができます。しかし、壁の間に固定されていない獣に壁の列を押し込もうとすると、獣は壁として扱われ、移動は許可されません。

  • ターン中の獣の移動の決定は、ターン開始時のプレイヤーの位置に基づきます。「プレーヤーまでの距離」の望ましい最適化は、「カラスが飛ぶように」計算によるものです。正方形の中心からプレーヤーの正方形の中心までを測定した場合と同じ結果が得られる近似は問題ありません。

  • 優先順位の高いビーストがスポットを奪ったために、ビーストがそのターンで最初に好まれた動きをすることができない場合、その場所にとどまるのではなく、次の最良の選択をします(動きがまだ可能である場合)。

サンプルケース

シンプルクラッシュ

入力

5 3
#####
#O~H#
#####
R

出力

2

優先マトリックス->死

入力

5 5
#####
#O  #
# ~ #
#  H#
#####
WWDW

出力

aHHHH!
0

優先マトリックス->勝利

入力

5 5
#####
#O  #
# ~ #
#  H#
#####
WRD

出力

2

死神を待つ

入力

5 5
#####
#O  #
# ~ #
#  H#
#####
WWW

出力

aHHHH!
0

ウィキペディアのシナリオで成功した敗北

入力

40 23
########################################
#~      ~ ~~  ~  ~ ~~   ~ ~~    ~ ~ ~~ #
#~~ ~          ~~   ~   ~ ~~         ~ #
#~# ~~   ~~~~      ~  ~~~~  ~    ~~~  ~#
# ~        ~   ~ ~~ #~~       ~        #
#~~  ~~~   ~ ~ ~      ~ ~~ ~  ~  ~  ~  #
#     ~~  ~  ~ ~ ~~~       H    ~  #~  #
#  O~  ~  #  ~~~ ~      ~ ~~  ~  ~ ~~  #
#       ~ ~H~~   ~~ ~ #        ~~   ~  #
# ~~         ~ ~~~  ~~   ~~~~      ~  ~#
#~  ~    ~~~  ~   ~        ~   ~ ~~  ~~#
#     ~      # ~ ~~  ~~~   ~ ~ ~ #    ~#
#~ ~ ~~  ~  ~   H     ~~  ~~ ~ ~ ~~~   #
#       ~   ~   ~   ~  ~     ~~~ ~     #
# ~~  ~  ~ ~~   ~       ~ ~ ~     ~    #
#      ~~   ~   ~  ~         ~      ~~ #
#~ ~     #    ~~~~  ~    ~~~H   # ~    #
#  ~   ~ ~   ~        ~          ~~  ~ #
#  ~   ~     #~  ~   ~~  ~  ~         ~#
# ~~ ~ ~  ~~                ~   ~      #
#    ~~~        ~ ~~  ~  ~  ~   ~      #
# ~ ~     ~            ~~   ~   ~  ~   #
########################################
RRRUWWWRRRURWWWWRDRRWWRDWWWWD

出力

8

私から提供されたマップ、@ bobbelによる移動と出力、自分と@Allbeertによる裏付け。

受賞基準

これはゴルフに適していると思うので、人々が文句を言わない限り、私はコードゴルフのルールを使います。

追加クレジット

画像に似た倍幅文字を使用した再生可能なUnicode実装!


対角線の動きは、壁の反対角線を飛び越えますか?獣が1ターンごとに動きをする場合、2つの水平方向の動きまたは2つの垂直方向の動きの距離の関係をどのように破りますか?それは、プレイヤーがターンの開始時にいた場所に向かって移動しますか、それともプレイヤーの移動後に移動しますか?「可動壁の列」と言うとき、それはプレイヤーが反対側にスペースまたは獣がある限り、ラインで任意の数の可動壁を押すことができることを意味しますか?
ピーターテイラー14

2
pastebin.com/raw.php?i=CqPJPjTRであるため、私が正しく理解している場合、2番目の例は間違っています。
ドアノブ

1
@ Dr.Rebmu:一般的に私はあなたの仕事がとても好きですが、多くの質問があります。明確にしてくれてありがとう!だから、次:Two-Beastの状況についてはどうでしょう:pastebin.com/raw.php ? i = FENVAkCH私の仮定は正しいですか?
ボベル14

1
別の質問:壁の列を「固定」されていない獣に移動するとどうなりますか?pastebin.com/raw.php?i=isN4L6pJ
Claudiu 14

3
@bobbel Man、質問を書くことはそれらを解決するよりも難しいです!:-)ビーストが静止しない傾向があることを考えると、優先順位の高いビーストが理想的な場所を選んだ場合、そのターンの動きに先行するのではなく、可能な限り次のベストムーブを取るでしょう。明確にした。
レブム博士14

回答:


3

Perl 6:741文字、758バイト

基本的にラインノイズなので、ゴルフバージョンは一番下にあります。その上は私のゴルフ前のバージョンです。両方ともインタラクティブです(入力ファイルからできるだけ多くのコマンドを読み取り、STDINを使用してコマンドを取得します)。彼らは元の文字と色を使用しようとします。

使用方法はperl6 beast.p6 beast-input次のとおりです。

use Term::ANSIColor;
class BeastGame {
    enum BeastParts <None Player Beast M-Wall S-Wall>;

    has @.board;
    has Int $.turn = 0;
    has Int $.score = 0;

    method indices (\matcher) {
        @.board.pairs.map: {
            .key*i X+ .value[].pairs.map: {
                .key if .value ~~ matcher
            }
        }
    }
    multi postcircumfix:<[ ]> (BeastGame \SELF, Complex \c) is rw { SELF.board[c.im][c.re] }

    has Complex $!player;
    method player { $!player = $.indices(Player)[0] }
    method Bool { so $.indices(Player) & $.indices(Beast) }

    method new (@lines) {
        my @board = @lines.map:
            {[ %(' ',<O H ~ #> Z=> None, Player, Beast, M-Wall, S-Wall){ .comb } ]}

        self.bless: :@board
    }
    method gist {
        state @symbol-map = map {colored .key, .value~' on_black'},
            ('  ',<◄► ├┤ ▒▒ ██> Z=> <default cyan red green yellow>);

        @.board.map({ @symbol-map[@$_].join }).join("\n")
    }

    method step ($d) {
        my $direction = %(:W(0), :L(-1+0i), :R(1+0i), :U(-1i), :D(1i)){$d};
        $direction // return self;
        self.move($.player,$direction);

        if ++$!turn %% 2 {
            for $.indices(Beast).eager -> $c {
                for (-1-1i,-1+0i,-1i,1-1i,1+0i,-1+1i,1+1i,1i,0i)\
                        .sort({abs $c + $^d - $!player})
                {
                    last if self.move($c, $_).defined;
                }
            }
        }

        self;
    }
    method move ($cur, $by) {
        return $cur if $by == 0;

        my $to = $cur + $by;
        my &cur-is  = { self[$cur] ~~ $^o }
        my &next-is = { self[$to]  ~~ $^o }
        return if cur-is S-Wall;
        (self[$to], self[$cur]) = (self[$cur], None)
            if next-is None
            # Move wall
            or cur-is Player | M-Wall and next-is M-Wall and self.move($to, $by)
            # Kill Player
            or cur-is Beast  and next-is Player
            # Squish Beast
            or cur-is M-Wall and next-is Beast  and self[$to+$by] ~~ M-Wall|S-Wall and $!score += 2
    }
}
my $width = get.words[1];
my $game  = BeastGame.new(lines[^$width]);
my @commands = '',lines.comb,{$*IN.get.comb}...*;

while $game {
    $game.step: @commands.shift;
    print "\e[2J";
    print "\e[H";
    say $game;
}

say "aHHHH!" unless $game.player;
say $game.score;

ゴルフバージョン:

my ($u,$s,$m)=0,0;my@b=lines[^get.words[1]].map:{[%(' ',<O H ~ #>Z=>^5){.comb}]}
my@a='',lines.comb,{$*IN.get.comb}...*;sub g(\c)is rw {@b[c.im][c.re]}
my&n=->\o{@b.kv.map:{$^k*i X+$^v[].kv.map:{$^l if $^w==o}}}
my&p={$m=n(1)[0]}
my&M=->$c,$b{my$t=$c+$b;my&c={$^o==g $c}
my&x={$^o==g $t}
c(4)??0!!$b??(($c,$t)».&g=(0,g $c)
if x(0)||c(1|3)&&x(3)&&M($t,$b)||c(2)&&x(1)||c(3)&&x(2)&&2 <g($t+$b)&&($s+=2))!!1}
while n(1)&n(2) {for 1
{M p,%(:W(0),:L(-1),:R(1),:U(-1i),:D(1i)){@a.shift}//last;if $u++%2
{for n(2).eager ->$c{last if M $c,$_
for(-1-1i,-1+0i,-1i,1-1i,1+0i,-1+1i,1+1i,1i,0i).sort({abs $c+$_-$m})}}}
say "\e[2J\e[H",join "\n",map {[~]
(map {"\e[$^v;40m$^k\e[0m"},'  ',<39 ◄► 36 ├┤ 31 ▒▒ 32 ██ 33>)[@$_]},@b}
say "aHHHH!" if !p;say $s;

イースター、おめでとう!


それはコードゴルフルールです。そのため、Perlがあまり好きではない場合でも、あなたのソリューションが勝ちます。;-)コンソールと色をうまく使用してください!
レブム博士14

14

Java、1,843

このパズルをJavaで解決する最初の試み。短くするために多くの改善があることを知っています。しかし、最終的には今のところ機能します。

試すには、クラスを作成しCてコードを貼り付ける必要があります。 args[0](厳密に言えばa[0])は入力用です。地図の印刷方法は、パズルの出力には必要ないため、含まれていません。

class C{static char                    [][]C;static int A=
0,B=0,D=0,E=0,F=0,G                    = 0 ; public static
void main(String[]a                    ){String []b= a[0].
split("\n");int c =                    Byte. decode(b [0].
split(" ")[1]); G=a                    [ 0 ] . replaceAll(
"[^H]","").length()                    ; String d = b [ b.
length - 1 ] ;C=new                    char[c][];for(int e
=1;e<b.length-1;e++                    ) C [ e - 1 ]=b[e].
toCharArray ( ) ; f                    ();boolean X= 0> 1;
for ( char  g : d .                    toCharArray ( ) ) {
switch(g){case 'U':                    h(0,-1);break; case
'D':h(0, 1); break;                    case 'L':h( -1, 0);
break;case'R':h(1,0                    );}if(X)i();X=!X;f(
);}System.out.print                    (D);}static void f(
){for(int a= 0;a<C.                    length;a++)for( int
b=0;b<C[a].length;b                    ++)if(C[a][b]=='O')
{A=b;B= a;}}static void h(int x,int y){E =x;F =y;switch(C[
B +y][A +x]){case 'H':g();break;case ' ':j(A,B);break;case
'~':k();}}static void i(){if(G<1){return;}int[][]l=new int
[G][];int m=0;for(int r=0;r<C.length;r++){for(int c=0;c<C[
r].length; c++){if(C[r][c]=='H'){l[m++]=new int[]{c,r};}}}
for(int[]n:l){o(n[0],n[1]);}} static void o(int a, int b){
int[]c=d (a,b);E=c[0];F =c[1];if(E !=0||F !=0){ j(a,b);} }
static int[]d(int a,int b){int[][]d={{1,3,4},{2,0,5},{6,8,
7},};int[]e=new int[]{0,0};double f=999;for(int r=-1;r<2;r
++){for(int c=-1;c<2;c++){if(C[b+r][a+c]==' '||C[b+r][a+c]
=='O'){int g=a+c-A;                    int h=b+r-B; double
i=Math.sqrt(g*g+h*h                    );if(i<f){e=new int
[]{ c,r};f =i;}else                    if(i==f){if(d[r+1][
c+1]<d[e[1]+1][e[0]                    +1]){e=new int[]{c,
r};}}} }}return e;}                    static void k(){if(
p(E,F,false)){q(E,F                    );} }static void q(
int x,int y){switch                    (C[B+y][A+x]){ case
'~':q(x+E,y+F);case                    'H':case ' ':j(A+x-
E,B+y- F);}} static                    boolean p(int x,int
y,boolean h){switch                    (C[B+y][ A+x]){case
' ':return !h; case                    '~':return h?h:p(x+
E,y +F, false);case                    'H':return h?!h:p(x
+E , y+ F, true) ;}                    return h&&C[B+y][A+
x] == '#' ; }static                    void j(int a,int b)
{char c=C[b][a];if(                    C[b+F][a+E]=='O'){g
();}else if(C[b+F][                    a+E]=='H'){D+=2;G--
;c=C[b][a];C[b][a]=                    ' ';}else{C[b][a]=C
[b+F][a+E];}C[b+F][                    a+E]=c;}static void
g () { System .out.                    print("aHHHH!\n"+D)
;     System      .                    exit  ( 0  ) ;  } }

実行するには、たとえば次を試してください:

root@host:/cygdrive/c/workspace/project/bin> java C "5 5
> #####
> #O  #
> # ~ #
> #  H#
> #####
> WWDW"
aHHHH!
0
root@host:/cygdrive/c/workspace/project/bin>

獣がプレイヤーを食べる1ターン前の最後の大きなシナリオの出力:

████████████████████████████████████████████████████████████████████████████████
██▓▓            ▓▓  ▓▓▓▓    ▓▓    ▓▓  ▓▓▓▓      ▓▓  ▓▓▓▓        ▓▓  ▓▓  ▓▓▓▓  ██
██▓▓▓▓  ▓▓                    ▓▓▓▓      ▓▓      ▓▓  ▓▓▓▓                  ▓▓  ██
██▓▓██  ▓▓▓▓      ▓▓▓▓▓▓▓▓            ▓▓    ▓▓▓▓▓▓▓▓    ▓▓        ▓▓▓▓▓▓    ▓▓██
██  ▓▓                ▓▓      ▓▓  ▓▓▓▓  ██▓▓▓▓              ▓▓                ██
██▓▓▓▓    ▓▓▓▓▓▓      ▓▓  ▓▓  ▓▓            ▓▓  ▓▓▓▓  ▓▓    ▓▓    ▓▓    ▓▓    ██
██          ▓▓▓▓    ▓▓    ▓▓  ▓▓  ▓▓▓▓▓▓                        ▓▓    ██▓▓    ██
██          ▓▓▓▓    ██    ▓▓▓▓▓▓  ▓▓            ▓▓  ▓▓▓▓    ▓▓    ▓▓  ▓▓▓▓    ██
██              ▓▓  ▓▓  ▓▓▓▓      ▓▓▓▓  ▓▓  ██                ▓▓▓▓      ▓▓    ██
██  ▓▓▓▓                  ▓▓  ▓▓▓▓▓▓    ▓▓▓▓  ├┤  ▓▓▓▓▓▓▓▓            ▓▓    ▓▓██
██▓▓    ▓▓    ├┤◄►▓▓▓▓▓▓├┤  ▓▓      ▓▓                ▓▓      ▓▓  ▓▓▓▓    ▓▓▓▓██
██          ▓▓            ██  ▓▓  ▓▓▓▓    ▓▓▓▓▓▓      ▓▓  ▓▓  ▓▓  ██        ▓▓██
██▓▓  ▓▓  ▓▓▓▓    ▓▓    ▓▓                  ▓▓▓▓    ▓▓▓▓  ▓▓  ▓▓  ▓▓▓▓▓▓      ██
██              ▓▓      ▓▓      ▓▓      ▓▓    ▓▓├┤        ▓▓▓▓▓▓  ▓▓          ██
██  ▓▓▓▓    ▓▓    ▓▓  ▓▓▓▓      ▓▓              ▓▓  ▓▓  ▓▓          ▓▓        ██
██            ▓▓▓▓      ▓▓      ▓▓    ▓▓                  ▓▓            ▓▓▓▓  ██
██▓▓  ▓▓          ██        ▓▓▓▓▓▓▓▓    ▓▓        ▓▓▓▓▓▓        ██  ▓▓        ██
██    ▓▓      ▓▓  ▓▓      ▓▓                ▓▓                    ▓▓▓▓    ▓▓  ██
██    ▓▓      ▓▓          ██▓▓    ▓▓      ▓▓▓▓    ▓▓    ▓▓                  ▓▓██
██  ▓▓▓▓  ▓▓  ▓▓    ▓▓▓▓                                ▓▓      ▓▓            ██
██        ▓▓▓▓▓▓                ▓▓  ▓▓▓▓    ▓▓    ▓▓    ▓▓      ▓▓            ██
██  ▓▓  ▓▓          ▓▓                        ▓▓▓▓      ▓▓      ▓▓    ▓▓      ██
████████████████████████████████████████████████████████████████████████████████

愚かな行スペースなし:http : //pastebin.com/raw.php?i=QhpxKcCT

したがって、RRDDDRRRWW最後のWアイトでは、左側の獣がプレイヤーを食べるために右側に移動するため、プレイヤーの方法は移動後に終了します。


元の大きな地図の別の例ですが、異なる動き:

http://pastebin.com/raw.php?i=nBWjC3PZ

このアニメーションをご覧ください:http : //youtu.be/0DIhEhjWd6s


そして、元のマップと異なる動きの最後の例(新しい獣の動きのルールによる):

http://pastebin.com/raw.php?i=NNmgzx7U

YouTubeで見る:http : //youtu.be/jXPzL88TU2A


1
ハハ!:-) とてもかっこいい。あなたがそれを手に入れたのであれば、いくつかのゲームをプレイし、そのマップ上でより多くのテストケースデータを提供することに注意してください
レブム博士14

元のマップとさまざまな動きの新しいシナリオを追加しました。ただし、手順を実際に実行することはできません
。75の

そこで、結果をアニメーションとして見るためのビデオを追加しました!
ボベル14

良いビデオ...けれど、獣はあまりにも速く動きすぎて面白くないようです!ルールを変更して、すべてのターンではなく1ターンおきに移動する必要がありますか?
レブム博士14

私は気にしません。私にとっては約10バイトです!しかし、私は完全に同意します。今のように勝つことは難しいです:)
ボベル14

5

C- 1004 984 917

ああ、Cの美しさ。他の答えの精神に従って、私も私のフォーマットを試してみました:)

あちこちでいくつかの改善がまだあると思いますが、これは書くこととゴルフをするのが本当に楽しかったです。文字数には、必要なすべてのスペースと改行が含まれます。

#define M(y,x,c) {t[y][x]=32;t[p][q]=c;y=p;x=q;}
   #define E {printf("aHHHH!\n%d",Z);exit(0);}
    #define A sqrt(pow(X-Q,2)+pow(Y-P,2))*30
           #define L (char)(m[s]>>8)
            #define G (char)(m[s])
             #define B(b) if(T==b)
              #define J M(Y,X,79)
               #define T t[P][Q]

r,c,X,Y,H,i,j,k,Z,p,q,P,Q,u,v,s,w,m[99],b[8]={
-1,255,65280,65281,1,511,257,256},t[999][999],
x[99],y[99];main(){char N[99];m[85]=b[2];m[68]
=256;m[76]=255; m[82]=1; scanf("%d %d",&c,&r);
for(;P<r;P++)                    for(Q=0;Q<c&&
scanf("%c",&T                    );T-10&&T-13?
Q++:Q){B(79){                    Y=P;X=Q;}B(72
){y[H]=P ;x[H                    ++]=Q;}}scanf
("%s",N);for(                    ;i<strlen(N);
i++){s=N[i];P                    =p=Y+L;Q=q=X+
G;B(32)J B('~')                  {while(P+=L,Q
+=G,T=='~');B                    (72){u=P+L;v=
Q+G;if(t[u][v]                   ==35||t[u][v]
=='~'){Z+=2;T=                   '~';J}}B(32){
T='~';J}}else                    B(72)E if(r=!r)
for(j=0;j<H;j                    ++){P=y[j];Q=
x[j];if(T-72)continue;v=A;s=0;for(k=0;k<8;k++)
{P=y[j]+(char)(b[k]>>8);Q=x[j]+(char)(b[k]);u=
A;B(32)if((c=v-u+99)>s){s=c;q=Q;p=P;}B(79)E}if
(s)M(y[j],x[j],72)}}printf("%d",Z);}//////////

これをすべてのサンプルケースといくつかのサンプルケースでテストしましたが、正常に動作しているようです。誰かが適切に答えられない状況を見つけたら、私に知らせてください。

入力は標準入力から、出力は標準出力になります。誤った入力のチェックはありません。そして、プレイヤーが食べられた場合、またはすべての動きが実行された後にプレイヤーが生きている場合(まだH周囲にある場合でも)スコアを返します。

ゴルフされていないバージョン:

#define M(y,x,c) {t[y][x]=32;t[p][q]=c;y=p;x=q;}
#define E {printf("aHHHH!\n%d",Z);exit(0);}
#define A sqrt(pow(X-Q,2)+pow(Y-P,2))*30
#define L (char)(m[s]>>8)
#define G (char)(m[s])
#define B(b) if(T==b)
#define J M(Y,X,79)
#define T t[P][Q]

r, c, X, Y, H, i, j, k, Z, p, q, P, Q, u, v, s, w, m[99], b[8] = { -1, 255,
        65280, 65281, 1, 511, 257, 256 }, t[999][999], x[99], y[99];
main() {
    char N[99];
    m[85] = b[2];
    m[68] = 256;
    m[76] = 255;
    m[82] = 1;
    scanf("%d %d", &c, &r);
    for (; P < r; P++)
        for (Q = 0; Q < c && scanf("%c", &T);T-10&&T-13?Q++:Q) {
            B(79) {
                Y=P;
                X=Q;
            }
            B(72) {
                y[H]=P;
                x[H++]=Q;
            }
        }

    scanf("%s", N);
    for (; i < strlen(N); i++) {
        s = N[i];
        P = p = Y + L;
        Q = q = X + G;
        B(32)
            J
        B('~') {
            while (P += L, Q += G, T=='~');
            B(72) {
                u=P+L;
                v=Q+G;
                if(t[u][v]==35||t[u][v]=='~') {
                    Z+=2;
                    T='~';
                    J
                }
            }
            B(32) {
                T='~';
                J
            }
        } else B(72)E
        if (r = !r)
            for (j = 0; j < H; j++) {
                P = y[j];
                Q = x[j];
                if (T-72)
                continue;

                v = A;
                s = 0;

                for (k = 0; k < 8; k++) {
                    P = y[j] + (char) (b[k] >> 8);
                    Q = x[j] + (char) (b[k]);
                    u = A;
                    B(32)
                        if ((c = v - u + 99) > s) {
                            s = c;
                            q = Q;
                            p = P;
                        }

                    B(79)
                        E
                }
                if (s)
                    M(y[j], x[j], 72)
            }
    }
    printf("%d", Z);
}

いいね!かかわらず、@ bobbelの入力 RRRUWWWRRRURWWWWRDRRWWRDWWWWD、彼は彼が8を取得しながら、大型マップ上の、あなたは6を得るビデオを作った、あなたはおそらく何らかの異常...のための各ステップと見て印刷することができ
博士Rebmu

(もちろん、獣が1ターンおきに動くようにルールを変更したことに気づいたとき、獣が動くたびにプレイできないことを見て...!)
レブム博士14

正直に言うと、私のソリューションも100%適切に機能するかどうかはわかりません。しかし、それは私のように見えます:)
bobbel 14

@ Dr.Rebmu私が投稿したのと同じ頃に、あなたが質問を編集したことに気付きました。だから、私は一見うまくいったように簡単なハックをしました。今週の週末に再確認し、更新します。また、他の人がエラーを見つけやすくするために、「素敵な」バージョンを投稿します。:)
Allbeert 14

FWIW今日、これをRebolで解決し、@ bobbelの回答も8になっています。
レブム博士14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.