ahhhh! জন্তুরা এইচএইচএইচ এইচ হিয়ার!


19

আমরা যেমন আইবিএম পিসি এটি, ইউটিউব (ভিডিও দেখুন) , উইকিপিডিয়া (নিবন্ধটি দেখুন) এবং তিল স্ট্রিট থেকে শিখেছি :

চিঠি Hহয় বর্ণমালার সবচেয়ে নির্দয় চিঠি !

( কোড পৃষ্ঠা 437- তে আসলে দুটি উপাদান থেকে তৈরি হয়ে গেলেও এটি আসলে আরও নির্দয় that

এলিয়েনদের মতো, আহ ... এর ... এলিয়েন , জন্তুরা তাদের ডিমের কাছে আসতে সাহস করবে এমন সমস্ত লোক নিরলসভাবে তাড়া করে। তাদের সাথে কোনও যুক্তি নেই। যদি না ঘটে তবে আপনাকে অবশ্যই তাদের স্কোয়াশ করতে হবে।

4 এইচ ক্লাবের সাথে একটি ভীতিজনক মুখোমুখি

এই দৃশ্যের জন্য আমরা ধরে নেব যে আপনি আপনার শেষ জীবনে চলে যাচ্ছেন, এবং আপনি কোনও ভূখণ্ডে ডিম নেই (উইকিপিডিয়া স্ক্রিনশট হিসাবে) সমতল জন্তুদের সাথে দেখা করেছেন। আপনার কাছে একটি সংখ্যার কীপ্যাড নেই এবং কেবল সরাসরি উপরে / নীচে / বাম / ডানদিকে চলে যেতে পারেন ... তবে পশুর কাছে দৃশ্যত একটি রয়েছে এবং তাদের পালাটি তির্যকভাবে স্থানান্তর করতে পারে।

তার বিকল্পগুলির মধ্যে একটি বিস্টের চলাচলের পছন্দটি প্লেয়ারের থেকে দূরত্বকে হ্রাস করে। যদি দূরত্বগুলি সমান হয় তবে টাই ব্রেকিং ডানদিকে + বামদিকে + নীচে অনুকূলে করা হবে, তবে এটি সম্পর্কে স্পষ্ট করার জন্য এখানে বিশৃঙ্খলা ম্যাট্রিক্স ... টাই-ব্রেকের সর্বনিম্ন সংখ্যা:

1 3 4
2 H 5
6 8 7

একটি জন্তু কখনও ঘুমায় না, তবে তারা ভাগ্যক্রমে প্লেয়ারের তুলনায় কিছুটা ধীর। তারা অন্য প্রতিটি পালা সরিয়ে দেয় (প্লেয়ারকে দ্বিতীয় বারে পরিবর্তিত করে শুরু করে) head কোনও পদক্ষেপ সম্ভব হলে তাদের অবশ্যই স্থানান্তরিত হতে হবে, প্লেয়ারের কাছ থেকে তাদের আরও গ্রহণ করে কিনা তা নির্বিশেষে।

আপনি যদি কোনও জন্তুটিকে চুরমার করেন তবে আপনি যদি স্থাবর প্রাচীরের একটি ট্রেন যেখানে একটি বন্ধ ফাঁক হয়ে বসেছিলেন সেখানে যান move এই সরল পশুর মাথা 2 পয়েন্ট মূল্যবান।

ইনপুট

  1. একটি সংখ্যক পূর্ণসংখ্যার পরে কলামগুলিতে কলামগুলিতে মানচিত্রের আকার নির্দেশ করে।

  2. ইনপুট রেখার সারি গণনা, প্রতিটি কলামের আকার ... একটি শক্ত প্রাচীর ( #), একটি চলমান প্রাচীর ( ~), একটি জন্তু ( H), প্লেয়ার ( O) বা কেবল একটি স্থান রয়েছে।

  3. ইনপুট যা হয় হয় ইউ, ডি, এল, আর হবে প্লেয়ার দ্বারা চেষ্টা করা চালানোর ইঙ্গিত দেয় ... বা ডাব্লু কেবল অপেক্ষা করতে হবে। নোট করুন যে অস্থাবর একটি অস্থাবর প্রাচীর ধাক্কা দেওয়ার চেষ্টা করা বৈধ ইনপুট, এটি কেবল কোনও পদক্ষেপ নেবে না।

আউটপুট

  1. aHHHH! যদি জানোয়াররা প্লেয়ারকে মেরে ফেলে ... বা খেলোয়াড়টি কোনও জন্তু না রেখে জয়ী হয় তবে কিছুই না

  2. হিসাব

(দ্রষ্টব্য: ডিবাগিং উদ্দেশ্যে এবং / বা বিনোদন এর জন্য, আপনি সম্ভবত প্রতিটি পদক্ষেপে রাজ্যকে আউটপুট দিতে সক্ষম হতে চাইবেন; তবে এখানে পোস্ট করতে খুব দীর্ঘ সময় লাগবে))

ব্যাখ্যা

  • দৃ Maps় প্রাচীর দ্বারা আবদ্ধ হওয়ার মানচিত্রের গ্যারান্টিযুক্ত।

  • কারা ঘুরে দাঁড়ায় তার ক্রমটি ফলাফলের জন্য গুরুত্বপূর্ণ। এইভাবে: প্লেয়ার সর্বদা প্রথমে যায়, তবে আপনি যদি স্ক্রিনের উপরে নীচে বাম থেকে ডানদিকে ঝাঁপিয়ে পড়ছিলেন তবে জন্তুটিকে তাদের প্রাথমিক মানচিত্রের ভিত্তিতে অর্ডার দেওয়া হবে । (একটি সারিতে 1 জন্তু একটি সারিতে 2 জন্তুটির আগে চলে এবং একই সারিতে দুটি জন্তু এটি সর্বনিম্ন কলাম সংখ্যার সাথে এক হবে যা অন্যটির আগে চলে যাবে)

  • তির্যক চলমান জন্তুগুলি যে কোনও উন্মুক্ত সংলগ্ন তির্যক স্থানে চলে যেতে পারে, এটি প্রাচীরের মধ্যে সঙ্কুচিত হওয়া প্রয়োজন কিনা তা বিবেচনা না করেই।

  • কোনও প্লেয়ার অন্য প্রান্তে স্থান বা জন্তু থাকতে পারে এমন এক লাইনে প্রচুর চলমান দেয়াল চাপতে পারে। কিন্তু দেয়ালের একটি ট্রেনটিকে এমন কোনও জানোয়ারে ঠেলে দেওয়ার চেষ্টা করা যা প্রাচীরের মধ্যে পিন করা হয়নি Be বিস্টটিকে প্রাচীর হিসাবে গণ্য করে এবং সরানোর অনুমতি দেবে না।

  • মোড়ের সময় বিস্টের পদক্ষেপের সিদ্ধান্তটি টার্নের শুরুতে প্লেয়ারের অবস্থানের ভিত্তিতে হয় । এটি "কাকের সাথে উড়ে যাওয়ার" গণনার মাধ্যমে "খেলোয়াড়ের দূরত্বের" এর কাঙ্ক্ষিত অপ্টিমাইজেশন। এর স্কোয়ারের মাঝামাঝি থেকে প্লেয়ারের স্কোয়ারের কেন্দ্রে যে পরিমাণ ফলাফল পরিমাপ করা হয় তার সমান ফলাফল দেয় তবে তা ঠিক আছে।

  • যদি কোনও জন্তুটি না ঘুরতে পারে তবে এটি তার প্রথম পছন্দসই পদক্ষেপটি কী হতে পারে কারণ একটি উচ্চ অগ্রাধিকার বিস্টটি তার জায়গাটি নিয়েছে, তবে এটি স্থানে থাকার বিপরীতে তার পরবর্তী সেরা পছন্দটি গ্রহণ করবে (যদি কোনও পদক্ষেপ এখনও সম্ভব হয়)।

নমুনা মামলা

সাধারণ ক্রাশ

ইনপুট

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

আমার দ্বারা সরবরাহিত মানচিত্র, চালানো এবং আউটপুটটি @ বব্বেল, আমার এবং @ অ্যালবার্ট দ্বারা সংযুক্ত।

বিজয়ী মানদণ্ড

আমি মনে করি এটি গল্ফযোগ্য, তাই লোকেদের অভিযোগ না করা পর্যন্ত আমি কোড গল্ফ নিয়মগুলি নিয়ে যাব।

অতিরিক্ত ক্রেডিট

চিত্রের সাথে সাদৃশ্য পেতে ডাবল-প্রশস্ত অক্ষরের সাথে প্লেযোগ্য খেলতে পেল ইউনিকোড বাস্তবায়ন!


কি তির্যক নড়াচড়া দেয়ালগুলির অ্যান্টিডিজোনাল লাইনের উপর দিয়ে যায়? এটি দেওয়া যে একটি প্রাণী প্রতিটি পালা করে একটি পদক্ষেপ নিয়ে আসে, এটি দুটি অনুভূমিক চাল বা দুটি উল্লম্ব চালগুলির মধ্যে দূরত্বের সম্পর্ককে কীভাবে ভেঙে দেয়? প্লেয়ারটি মোড় শুরুর শুরুতে বা প্লেয়ারের চলাফেরার পরে কোথায় গিয়েছিল? আপনি যখন "অস্থাবর দেয়ালের ট্রেন" বলছেন, তার অর্থ কি এই যে প্লেয়ারটি অন্য প্রান্তে কোনও জায়গা বা একটি জন্তু রয়েছে এমন একটি লাইনে কোনও স্থাবর প্রাচীরকে ধাক্কা দিতে পারে?
পিটার টেলর

2
আমি যদি সঠিকভাবে বুঝতে পারি তবে দ্বিতীয় উদাহরণটি ভুল, কারণ পেস্টবিন.ইন.রাউ.এফপি ? I =CqPJPjTR
ডুরকনব

1
@ ডাঃ রেব্মু: সাধারণত আমি আপনার কাজটি খুব পছন্দ করি, তবে জিজ্ঞাসা করার জন্য অনেকগুলি প্রশ্ন রয়েছে। স্পষ্ট করার জন্য ধন্যবাদ! সুতরাং, পরবর্তী: এই দ্বি-জন্তু পরিস্থিতি সম্পর্কে কী: পেস্টবিন.com / raw.php ? i=FENVAkCH আমার ধারণাটি কি সঠিক?
বববেল

1
আরেকটি প্রশ্ন: আপনি যদি কোনও পশুর দেওয়ালের ট্রেনটি 'পিন্ড ডাউন' না করে থাকেন তবে কী হবে? পেস্টবিন.com
raw.php?i=

3
@ বুবল ম্যান, প্রশ্নগুলি লেখার সমাধান করা তার চেয়ে শক্ত লেখা! :-) আমি বলছি যে বীস্টদের এখনও না থাকার জন্য প্রবণতা দেওয়া হয়েছে, তারা যদি তাদের অগ্রসর অগ্রগতির পরিবর্তে উপলব্ধ থাকে তবে তাদের পরবর্তী সেরা পদক্ষেপ গ্রহণ করবে, যদি উচ্চতর অগ্রাধিকার বিস্ট তাদের আদর্শ স্থানটি গ্রহণ করে। ব্যাখ্যা।
ডাঃ রেবমু

উত্তর:


3

পার্ল 6: 741 অক্ষর, 758 বাইট

গল্ফযুক্ত সংস্করণটি নীচে রয়েছে, কারণ এটি মূলত লিনেনাইজ ise এর উপরে আমার পূর্ব-গল্ফ সংস্করণ রয়েছে। উভয়ই ইন্টারেক্টিভ হয় (তারা যতটা পারে ইনপুট ফাইল থেকে যতগুলি কমান্ড পড়বে এবং তারপরে কমান্ডগুলি পাওয়ার জন্য 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;

শুভ ইস্টার!


এটি কোড গল্ফের নিয়মাবলী, তাই এটি দেওয়া আপনার সমাধান জিততে পারে ... এমনকি আমি যদি পার্লকে খুব বেশি পছন্দ না করি তবেও। ;-) কনসোল এবং রঙ সঙ্গে ভাল কাজ!
ডক্টর রেবমু

14

জাভা, 1,843

জাভা দিয়ে এই ধাঁধাটি সমাধান করার জন্য আমার প্রথম চেষ্টা। আমি জানি, এটি খাটো করার জন্য অনেক উন্নতি হয়েছে। কিন্তু শেষ পর্যন্ত এটি আপাতত কাজ করে।

এটি চেষ্টা করার জন্য, আপনাকে একটি ক্লাস তৈরি করতে হবে 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>

কোনও পশুর খেলোয়াড়কে খাওয়ার আগে সর্বশেষ বড় দৃশ্যের আউটপুট:

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

নির্বোধ লাইনের স্পেস ছাড়াই: 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

ইউটিউবে দেখুন: http://youtu.be/jXPzL88TU2A


1
HHHa! :-) খুব ঠান্ডা. এতক্ষণ আপনি এটি অর্জন করার পরে, কয়েকটি গেমস খেলতে এবং সেই মানচিত্রে আরও পরীক্ষার কেস ডেটা দেওয়ার বিষয়ে যত্নশীল?
ডঃ রেবমু

আমি আসল মানচিত্র এবং বিভিন্ন পদক্ষেপ সহ একটি নতুন দৃশ্যাবলী যুক্ত করেছি। তবে আপনি সত্যিই এই পদক্ষেপগুলি অনুসরণ করতে পারবেন না, কারণ আমি পেস্টবিনে সমস্ত 75 টি পদক্ষেপ পেস্ট করতে চাইনি :)
বববেল

সুতরাং, ফলাফলটি অ্যানিমেশন হিসাবে দেখতে আমি একটি ভিডিও যুক্ত করেছি!
বববেল

ভাল ভিডিও ... যদিও দেখে মনে হচ্ছে যে জন্তুগুলি খুব মজাদার হতে খুব তাড়াতাড়ি চলাফেরা করে! আমাদের কি নিয়মটি পরিবর্তন করা উচিত যাতে তারা প্রতিটি মোড়ের পরিবর্তে প্রতিটি অন্য ঘুরিয়ে নিয়ে যায়?
ড। রেবমু

আমি কিছু মনে করি না। আমার জন্য আরও দশ বাইট! তবে আমি পুরোপুরি একমত। এটি এখন যেমন জিততে পারে তেমন শক্ত :)
বববেল

5

সি - 1004 984 917

আহ, সি এর সৌন্দর্য অন্য উত্তরের চেতনা অনুসরণ করে আমি আমারও ফর্ম্যাট করার চেষ্টা করেছি :)

আমি কল্পনা করি এখানে এবং এখানে এখনও কিছু উন্নতি হয়েছে, তবে এটি লিখতে এবং গল্ফটিতে সত্যিই মজাদার ছিল। অক্ষর গণনায় সমস্ত প্রয়োজনীয় স্থান এবং নতুন লাইন অন্তর্ভুক্ত।

#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 বড় মানচিত্রে, আপনি 6 তিনি 8. সে পায় যখন পেতে একটি ভিডিও তৈরি , আপনি সম্ভবত কোন প্রতিটি পদক্ষেপ এবং চেহারা ব্যতিক্রম প্রিন্ট পারে ...
ডাঃ Rebmu

(অবশ্যই লক্ষ্য করছি যে আমি যখন
বিড়ালদের

সত্যি কথা বলতে: আমি নিশ্চিত নই, আমার সমাধানটি যদি 100% সঠিকভাবে কাজ করে তবে। তবে এটি আমার কাছে দেখে মনে হচ্ছে :)
বববেল

@ ডাঃ রেবেমু বুঝতে পেরেছিলাম যে আপনি আমার পোস্ট করার সময় একই সময়ে প্রশ্নটি সম্পাদনা করেছিলেন। সুতরাং আমি কেবল একটি দ্রুত হ্যাক করেছি যা আপাতদৃষ্টিতে কাজ করেছে। আমি এই সপ্তাহান্তে এটি আবার যাচাই করে আপডেট করব। আমি একটি "দুর্দান্ত" সংস্করণও পোস্ট করব যাতে অন্য কোনও ব্যক্তির
দ্বারাও

এফডব্লিউআইডাব্লু আমি আজই রেবলে এটি সমাধান করেছি এবং 8 টিরও বববেলের উত্তর পাচ্ছি।
ডঃ রেবমু
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.