Yapma. Hatta. Goz kirpmak


50

görüntü tanımını buraya girin

Hayatınız buna bağlı olabilir. Gözünü kırpma. Gözünü bile kırpma. Göz açıp kapayıncaya kadar ölün. Onlar hızlı. İnanabileceğinden daha hızlı. Arkanı dönme, uzağa bakma ve gözünü kırpma! İyi şanslar.

Ağlayan Melekler , başka bir varlık (hatta başka bir Melek) tarafından gözlemlenirken hareket edemeyen yabancı bir ırktır. Kurbanlarını zamanda geri göndererek beslenirler. Siz ( Doktor ) bir odaya hapsolmuş ve TARDIS'inize gitmeniz gerekiyor.


Görev

Dikdörtgen bir odanın ASCII temsili verildiğinde, sizi güvenliğe götürecek bir yol çıkaran bir program yazın. Herhangi bir Melek, ilerlemeniz sırasında herhangi bir zamanda saldırabilirse , o zaman bu yol güvenli değildir. Bir Melek, siz veya başka bir Melek tarafından görülmezken sizi görebilirse saldırabilir.

Giriş

Giriş iki bölümdür. İlk olarak, karşı karşıya olduğunuz yön (NSEW). Ardından, sonraki satırlarda, odanın bir temsili, başlangıç ​​/ bitiş konumlarını ve tüm Meleklerin konumlarını / yüzlerini gösterir.

Aşağıdaki örnek batıya bakan bir melek olduğunu ve güneye bakmaya başladığınızı göstermektedir.

S
..........
....D.....
..........
..........
..........
..........
..........
..........
.........W
..........
...T......
  • . - Boş alan
  • D - Doktor (başlangıç ​​pozisyonu)
  • T - TARDIS (son konum)
  • N,S,E,W - Belirtilen yöne bakan bir melek (kuzey, güney, doğu, batı)

Görüş Hattı

Karşılaştığınız yönün 45 derecesine sahip herhangi bir alanı görebilirsiniz. Doğrudan yatay, dikey veya 45 derecelik bir diyagonal boyunca başka bir varlık varsa görüş hattı engellenir. Başka diyagonal yok değil görünümü engel. Meleklerin görüş hattı aynı şekilde çalışır. Örneğin, aşağıda, -güneye baktığınızı farz ederek görüş alanınızı temsil eder.

........
...D....
..---...
.-----..
-------.
---N----
---.--N-
---.----

Çıktı

Çıktı, çıkmanız gereken yolu temsil eden bir dizedir. Birden çok güvenli yol varsa, herhangi birini seçin. Hiçbir yol güvenli değilse, çıktı 0. Harita hatalı biçimlendirilmişse, çökmesi de dahil olmak üzere ne istersen yap. Eğer oda dikdörtgen değilse, çıkış vs. yok ise yanlış biçimlendirilmiş sayılır.

Her adım için iki şeyden birini yapabilirsiniz: NSEW yönünde hareket ettirin veya NSEW yönüne dönün (pozisyonları değiştirmeden). Taşımak için, sadece bu yöne ilişkin harfi çıkar. Bir yöne dönük olmak için, çıktısını Fuygun harfle takip edin. Örneğin, aşağıdaki çıktı:

SSFESSSSSSSW

Giriş bölümünde verilen numune için güvenli bir yoldur. İki kez güneye doğru hareket edersiniz, meleği görünürde tutmak için doğuya bakarsınız, daha sonra yedi kez daha güneye ve bir kez daha batıya doğru TARDIS'e girersiniz.

Test Kılıfları

1) TARDIS'e ulaşmak için doğuya bakan Meleğin çevresini dolaşabilirsiniz. Doğrudan aralarına girmediğiniz sürece, birbirlerini yerine kilitlerler, bu nedenle hangi noktada karşılaştığınız önemli değildir.

W
...D....
........
........
........
.E.....W
........
........
...T....

2) Kaybedersiniz. Onları geçmenin yolu yok. Siz aralarına girene kadar birbirlerini görebilirler. Bu noktada, ikisiyle de yüzleşemezsiniz ve işiniz bitmiştir. Belki de gözlerini kapa ve üstesinden gel.

S
...D....
........
........
........
E......W
........
........
...T....

Kazanan

Standart golf kuralları ve boşluklar geçerlidir, en az bayt kazanır. Yakında biraz daha test sınavı almaya çalışacağım, ancak bu arada kendi önerinizi vermekten çekinmeyin.

Resim ve Doktor Kimden Alıntı.


Grafikte yol bulmak için kütüphane kullanabilir miyiz?
Sparr

@Sparr Evet, ancak kütüphaneyi yüklemek / dahil etmek için gereken her şey bayt sayısına eklenmelidir.
Geobits

2
Açıkçası bir girdap manipülatörü kullanın!
Doktor,

4
@Doctor Jack yanına aldı ve haritaların hiçbirinde olmadığını görebiliyorsunuz ( J).
Geobits,

1
@Timmy Standart tanımlardan herhangi biri kullanılabilir.
Geobits

Yanıtlar:


6

Python - 559 565 644 633

M=input()
I=1j
Q={"S":I,"N":-I,"E":1,"W":-1}
A=[]
e=enumerate
for y,l in e(M[2:].split()):
 for x,c in e(l):
    P=x+y*1j
    if c=="D":D=(P,Q[M[0]])
    elif c=="T":T=P
    elif c!=".":A+=[(P,Q[c])]
def s(D,h,r=[]):
 def L(X,p,d):
    S=[p+d*(i+j*I)for i in range(x+y)for j in range(-i+1,i)if j]
    for f in[1,1+I,1-I]:
     i=0
     while i<x+y>1>(S[-1]in[a[0]for a in[D]+A]+[T])*i:i+=1;S+=[p+i*f*d]
    return X[0]in S
 if y>=D[0].imag>=(D[0]in[a[0]for a in A])<all(any(L(a,*b)for b in[D]+A)for a in A if L(D,*a))>(D in r)<=D[0].real<=x:
    r+=[D]
    if D[0]==T:print h;exit()
    for n in"SWEN":s((D[0]+Q[n],D[1]),h+n,r);s((D[0],Q[n]),h+"F"+n,r)
s(D,"")
print"0"

Bu şekilde giriş sağlanmalıdır:

"W\n...D....\n........\n........\n........\nE......W\n........\n........\n...T....\n"

Temel olarak bu yaklaşım , Doktor'un güvenle ulaşabileceği tüm durumları (konum ve yön) bulmak, oraya nasıl geldiğini depolamak ve başarı durumunda yolu yazdırmak için uygulanır. Pozisyonlar ve yönler karmaşık sayılarla gerçekleştirilir.

Sage'in karmaşık sayı aritmetik özelliğini kullanarak bazı karakterleri güvende tutabilirim, ancak bu çok uzun sürecek.

İlk önce Tardis'e ulaştıktan sonra Doktor'un belirli bir yöne dönmesini sağlayarak altı karakter tasarruf edebileceğimi düşündüm, ancak bunun yanlış çözümlere yol açabileceğini anladım. Ayrıca ilk önce kuralları yanlış okudum.

İşte çoğunlukla ungolfed versiyonu:

Map = input()

I = 1j
string_to_dir = {"S":I,"N":-I,"E":1,"W":-1}

Angels = []
Pos = 0
direction = string_to_dir[Map[0]]
for y,line in enumerate(Map[2:].split()):
    for x,char in enumerate(line):
        Pos = x+y*1j
        if char == "D":
            Doctor = (Pos, direction)
        elif char == "T":
            Tardis = (Pos, direction)
        elif char != ".":
            Angels += [(Pos,string_to_dir[char])]

reachables = []

def display(LoS, Doctor):
    string = ""
    for y,line in enumerate(Map[2:].split()):
        for x,char in enumerate(line):
            if x+y*1j == Doctor[0]:
                string += "D"
            elif x+y*1j in LoS:
                if char in ".D":
                    string += "*"
                else:
                    string += "X"
            elif char != "D":
                string += char
            else:
                string += "."

        string += "\n"
    print string

def LoS(angel,Doctor):
    p,d = angel
    Sight = []
    for i in range(x+y):
        for j in set(range(-i+1,i))-{0}:
            Sight += [p+d*i+d*j*I]
    for line in [d, (1+I)*d, (1-I)*d]:
        for i in range(1,x+y):
            Pos = p + i*line
            Sight += [Pos]
            if Pos in [angel[0] for angel in Angels+[Doctor, Tardis]]:
                break
    return Sight

def search(Doctor, history):
    global reachables

    Sight = sum([LoS(angel, Doctor) for angel in [Doctor]+Angels],[])

    if (
                all(angel[0] in Sight for angel in Angels if Doctor[0] in LoS(angel, Doctor))
            and not (Doctor in reachables)
            and (0<=Doctor[0].imag<=y)
            and (0<=Doctor[0].real<=x)
            and (Doctor[0] not in [angel[0] for angel in Angels])
        ):

        reachables += [Doctor]

        if Doctor[0] == Tardis[0]:
            print history
            exit()
        for new_direction in "SWEN":
            search((Doctor[0]+string_to_dir[new_direction], Doctor[1]), history + new_direction)
            search((Doctor[0], string_to_dir[new_direction]), history + "F" + new_direction)

search(Doctor, "")
print "0"

Test Kılıfları

Test durumu 1:

SSSFSWWWSSSSFWEFSEFWE

Test durumu 2:

0

VisualMelson test durumu:

SSFWSSSSSFSWWSSWWWFWEEEEFSEFWEFSE

1
Kodunuzu test etmedim, ancak test durumu 1 için çıktıyı iki kez yapıştırdığınız anlaşılıyor! Ayrıca, önerdiğim test senaryosunu beslerseniz, programınızın ne ürettiğini görmek isterim.
VisualMelon

@VisualMelon: Tespit ettiğiniz için teşekkür ederim ve test vakasını birleştirdim.
Wrzlprmft

10

C # 1771 2034 1962 1887 1347bayt

Engelleyici LOS kontrolünü 1 döngüde yeniden yazdı, daha düzenli hale getirdi ve yaklaşık 450 bayt daha kısa sürdü

using C=System.Console;using T=System.Math;struct P{int x,y,d;static void Main(){int v=C.ReadLine()[0],w,h,i,o=0,x=0,y=0,O,E,F,e=46;var R=C.In.ReadToEnd().Replace("\r","");var M=new int[w=R.IndexOf("\n"),h=(R.Length+1)/(w+1)];for(;o<h;o++)for(i=0;i<w;i++)if((M[i,o]=R[o+o*w+i])==68)M[x=i,y=o]=e;System.Func<int,int,int,bool>S=null;S=(X,Y,D)=>{var Z="SSSE_WNNNE_W___E_W";int I=0,H=0,L=0,J=Y,K=M[X,Y],B;M[X,Y]=D>0?D:K;for(H=0;H<9;H++)for(I=X,J=Y;H!=4&(I+=H%3-1)<w&I>=0&(J+=H/3-1)<h&&J>=0;){if(((B=M[I,J])==Z[H]|B==Z[H+9])&(D<1||!S(I,J,0)))goto W;if(B!=e)break;}for(B=I=-1;++I<w;B=1)for(J=0;J<h;J++)if(I!=X&J!=Y&(((B=M[I,J])==87&I>X&(H=T.Abs(J-Y))<I-X)|(B==69&I<X&H<X-I)|(B==78&J>Y&(L=T.Abs(I-X))<J-Y)|(B==83&J<Y&L<Y-J))&(D<1||!S(I,J,0)))goto W;W:M[X,Y]=K;return B>1;};P a,p=new P{x=x,y=y,d=v};var A=new System.Collections.Generic.List<P>();System.Action q=()=>{if(((E=M[p.x,p.y])==e|E==84)&!A.Contains(p)&!S(p.x,p.y,p.d))A.Add(p);};q();for(o=0;(O=A.Count)!=o;o=O)for(i=O;i-->o;){p=A[i];if((E=M[p.x,p.y])==84)for(R="";;p=a){i=0;n:a=A[i++];O=T.Abs(p.y-a.y)+T.Abs(a.x-p.x);if(O==1&p.d==a.d)R=(a.y-p.y==1?"N":p.y-a.y==1?"S":a.x-p.x==1?"W":"E")+R;else if(O<1)R="F"+(char)p.d+R;else goto n;if(i<2)goto Z;}if(E==e){if(p.x-->0)q();p.x+=2;if(p.x<w)q();p.x--;if(p.y-->0)q();p.y+=2;if(p.y<h)q();p.y--;for(F=0;F<4;q())p.d="NESW"[F++];}}R="0";Z:C.WriteLine(R);}}

Bu, girişin bir EOF ile sonlandırılmasını ve STDIN'e geçirilmesini bekleyen eksiksiz bir programdır. (Umarım) TARDIS'e en kısa yolu, ya da hiçbir yolu yoksa "0" yazar. Mümkün olan tüm rotaları takip etmek için ayakkabılı Breadth First Search'ü kullanır, ardından çıktıyı toplamak için TARDIS'ten Doktor'a geri döner.

Biçimlendirilmiş kod:

using C=System.Console;
using T=System.Math;

struct P
{
    int x,y,d;

    static void Main()
    {
        int v=C.ReadLine()[0],w,h,i,o=0,x=0,y=0,O,E,F,e=46;
        var R=C.In.ReadToEnd().Replace("\r","");
        var M=new int[w=R.IndexOf("\n"),h=(R.Length+1)/(w+1)];

        for(;o<h;o++)
            for(i=0;i<w;i++)
                if((M[i,o]=R[o+o*w+i])==68)
                    M[x=i,y=o]=e;

        System.Func<int,int,int,bool>S=null;
        S=(X,Y,D)=>
        {
            var Z="SSSE_WNNNE_W___E_W";

            int I=0,H=0,L=0,J=Y,K=M[X,Y],B;
            M[X,Y]=D>0?D:K;

            for(H=0;H<9;H++)
                for(I=X,J=Y;H!=4&(I+=H%3-1)<w&I>=0&(J+=H/3-1)<h&&J>=0;)
                {
                    if(((B=M[I,J])==Z[H]|B==Z[H+9])&(D<1||!S(I,J,0)))
                        goto W;
                    if(B!=e)
                        break;
                }

            for(B=I=-1;++I<w;B=1)
                for(J=0;J<h;J++)
                    if(I!=X&J!=Y&(((B=M[I,J])==87&I>X&(H=T.Abs(J-Y))<I-X)|(B==69&I<X&H<X-I)|(B==78&J>Y&(L=T.Abs(I-X))<J-Y)|(B==83&J<Y&L<Y-J))&(D<1||!S(I,J,0)))
                        goto W;
        W:
            M[X,Y]=K;
            return B>1;
        };

        P a,p=new P{x=x,y=y,d=v};
        var A=new System.Collections.Generic.List<P>();
        System.Action q=()=>{if(((E=M[p.x,p.y])==e|E==84)&!A.Contains(p)&!S(p.x,p.y,p.d))A.Add(p);};
        q();

        for(o=0;(O=A.Count)!=o;o=O)
            for(i=O;i-->o;)
            {
                p=A[i];
                if((E=M[p.x,p.y])==84)
                    for(R="";;p=a)
                    {
                        i=0;
                    n:
                        a=A[i++];

                        O=T.Abs(p.y-a.y)+T.Abs(a.x-p.x);
                        if(O==1&p.d==a.d)
                            R=(a.y-p.y==1?"N":p.y-a.y==1?"S":a.x-p.x==1?"W":"E")+R;
                        else if(O<1)
                            R="F"+(char)p.d+R;
                        else goto n;

                        if(i<2)
                            goto Z;
                    }
                if(E==e)
                {
                    if(p.x-->0)q();
                    p.x+=2;if(p.x<w)q();p.x--;
                    if(p.y-->0)q();
                    p.y+=2;if(p.y<h)q();p.y--;

                    for(F=0;F<4;q())
                        p.d="NESW"[F++];
                }
            }
        R="0";
    Z:
        C.WriteLine(R);
    }
}

Örneğin giriş

SFESWSSSSSSS

Test çantası için çıktı 1)

WSWSWSSSESESE

Test çantası 2 için çıktı)

0

İstediğim gibi, yeni bir test durumu sunuyorum:

S
..E..DS....
...........
...........
...........
...........
...........
...........
...........
....SSSSS.W
.......T...

Benim program çıktılarım

SESESESESFNSSSSWW

WozzeC'nin Test Durumu 1:

EEEEFWSSSFNWWN

WozzeC'nin Test Durumu 2:

FSEEEESFWSSSSWFNWWWNFENNEES

X = System.Console olasılığını kullanmayı tamamen kaçırdım. Bunun için teşekkür ederim :)
WozzeC

@WozzeC Eğer kontrol etmek isteyebilirsiniz C # kod golf için ipuçları
VisualMelon

Doktorun başlangıçta test durumunuzla saldırıya girdiğine inanıyorum: S
WozzeC

@WozzeC Güney-Doğu'daki Batı meleği, Kuzey-Batı'daki Doğu meleğini görebilir, bu yüzden Doktor kaçabilir, ancak bu noktada, doktorumun başlangıçta doktora saldırıya uğradığını fark etmiyor. Bu kod neden test etmek bu kadar zor?
VisualMelon

1
Üzgünüm, boşver. Başka bir melek izliyorsa, hareket edemeyecekleri küçük ayrıntıyı kaçırdım.
WozzeC

2

C # 1454, 1396, 1373, 1303 1279

class P{static int x,d,y=x=d=55,o=170,X=0,Y=0,u,k=3;static string[,]t=new string[o,o];static int[,]m=new int[o,o];static string e=" NS ETD W      .",q="0";static void Main(string[]s){m[0,1]=m[1,8]=-1;m[0,2]=m[1,4]=1;u=e.IndexOf(s[0][0]);for(;k<s[0].Length;k++){var c=s[0][k];if(c=='D'){X=x;Y=y;}if(c=='\\'){y++;x=d;k++;}else m[y,x++]=e.IndexOf(c);}k=A(X,Y,1);if((k&u)!=0){W(X,Y,k,"");}System.Console.Write(q);}static void W(int x,int y,int h,string s){t[y,x]=s;for(int i=1;i<9;i*=2){int l=y+m[0,i],g=x+m[1,i];if(m[l,g]==5)q=t[l,g]=s+e[i];else if(m[l,g]==15){m[l,g]=6;m[y,x]=15;int n=A(g,l,1),U;for(int j=1;j<9;j*=2){var z=t[l,g]??s;if((n&h&j)!=0&z.Length>=s.Length){U=u;u=j;W(g,l,n,s+((u!=j)?"F"+e[j]:"")+e[i]);u=U;}}m[y,x]=6;m[l,g]=0;}}}static int A(int x,int y,int L){int r=15,a,b,c,f=0,g,h,R,B;for(a=1;a<d-5;a++){g=1;for(b=y-a;b<=y+a;b++)for(c=x-a;c<=x+a;c++){B=m[b,c];R=0;bool W=(c+a-x)%a==0,V=(b+a-y)%a==0,z=W&V;if(B>0&B<9&B!=6&B!=5&g!=16&!((W|V)&(f&g)!=0)){h=R;if(b==y-a){R=1;if(c==x-a){h=4;R=9;}else if(c==x+a){h=8;R=5;}B&=h&2;}else if(b==y+a){R=2;if(c==x-a){h=4;R=10;}else if(c==x+a){h=8;R=6;}B&=h&1;}else if(c==x-a){B&=4;R=8;}else if(c==x+a){B&=8;R=4;}else B=0;if(B!=0){if(L==1&&A(c,b,0)==15)r&=R;if(L==0)return R;}}if(z){if(B<9&B>0&!(c==x&y==b))f|=g;g*=2;}}}return r;}}

Sağ. Ben de bunu yapmaya karar verdim ve oğlan biraz zaman aldı. Çoğunlukla mantıksal operatörler kullanılarak oluşturulmuştur.

  • Kuzey = 1 = N
  • Güney = 2 = S
  • Doğu = 4 = E
  • Batı = 8 = K
  • Doktor = 6 = D
  • TARDIS = 5 = T
  • 15 =. <-Tüm boş alanlar

Boş vb. Kontrol etmek zorunda kalmamak için [MAX_SIZE * 3] * [MAX_SIZE] * 3 alanını kullanmaya karar verdim ve oyun tahtasını merkeze yaklaştırdım.

Döngü kontrolleri içten ve dıştan 50'ye (MAX_SIZE) kadar yapılır. Yani böyle bir şey:

22222
21112
21D12
21112
22222

Bir EWS veya N bulunduğunda, aynı kontrolleri kendi bölümlerinde yapıyorum. Meleklere (Doktor'a değil) bakarak bir şey bulunursa, serbest geçiş olarak 15 döndürürler. Eğer onlar aranmazlarsa, Doktor güvenli olmak için hangi şekilde yüzleşmeleri gerektiği konusunda geri dönerler. yani N güneye 2 döndürür. NW veya NE olmadığı sürece, bu durumda sırasıyla 6 (2 + 4) ve 10 (2 + 8) döndürür.

Eğer iki melek Doktor'u izliyorsa, bunlardan dönüş değerleri "ANDed" olur, bu nedenle test örneğinde 2 crunchpozisyonları 4 AND 8 0 olur. Bu pozisyonun kötü olduğu ve kaçınılması gerektiği anlamına gelir.

Genişletilmiş kod:

class P
{
    static int x,d,y=x=d=55,o=170,X=0,Y=0,u,k=3;
    static string[,] t = new string[o, o];
    static int[,] m = new int[o, o];
    static string e = " NS ETD W      .", q="0";
    static void Main(string[]s)
    {   
        m[0, 1]=m[1, 8]=-1;
        m[0, 2]=m[1, 4]=1;
        u=e.IndexOf(s[0][0]);
        for (;k<s[0].Length;k++)
        {
            var c = s[0][k];
            if (c == 'D') { X = x; Y = y; }
            if (c == '\\') { y++; x = d; k++; }
            else m[y, x++] = e.IndexOf(c);
        }
        k=A(X,Y,1);
        if ((k&u)!=0)
        {
            W(X, Y, k,"");
        }
        System.Console.Write(q);
    }
    static void W(int x,int y,int h,string s){
        t[y, x] = s;
        for (int i = 1; i < 9; i*=2)
        {
            int l = y+m[0, i], g = x+m[1, i];
            if (m[l, g] == 5)
                q = t[l, g] = s + e[i];
            else if (m[l, g] == 15)
            {
                m[l, g] = 6;
                m[y, x] = 15;
                int n = A(g, l,1),U;
                for (int j = 1; j < 9; j *= 2)
                {
                    var z = t[l, g]??s;
                    if ((n & h & j) != 0 & z.Length>=s.Length)
                    {
                        U = u;
                        u = j;
                        W(g, l, n,s+((u != j) ? "F" + e[j] : "") + e[i]);
                        u = U;
                    }
                }
                m[y, x] = 6;
                m[l, g] = 0;
            }
        }
    }
    static int A(int x, int y,int L)
    {
        int r = 15,a,b,c,f=0,g,h,R,B;
        for (a = 1; a < d - 5; a++)
        {
            g = 1;
            for (b = y - a; b <= y + a; b++)
                for (c = x - a; c <= x + a; c++)
                {
                    B=m[b, c];
                    R=0;
                    bool W=(c+a-x)%a==0,V=(b+a-y)%a==0,z=W&V; 
                    if (B>0&B<9&B!=6&B!=5&g!=16&!((W|V)&(f&g)!=0))
                    {
                        h=R;
                        if (b==y-a)
                        {
                            R=1;
                            if(c==x-a){h=4;R=9;}
                            else if(c==x+a){h=8;R=5;}
                            B&=h&2;
                        }
                        else if (b==y+a)
                        {
                            R=2;
                            if(c==x-a){h=4;R=10;}
                            else if (c==x+a){h=8;R=6;}
                            B&=h&1;
                        }
                        else if(c==x-a){B&=4;R=8;}
                        else if(c==x+a){B&=8;R=4;}
                        else B=0;
                        if (B!=0)
                        {
                            if(L==1&&A(c,b,0)==15)r&=R;
                            if (L==0)return R;
                        }
                    }
                    if (z)
                    {
                        if (B < 9 & B > 0 & !(c==x&y==b))
                           f |= g;
                        g *= 2;
                    }
                }
        }
        return r;
    }
}

Test sonuçları

1 Örnek: FNSSSWNNNWSSSWSSSSENNESES

2 Örnek: Çıkış yok

VisualMelon Örnek: FNSSSSSSSWNNNNNNNWSSSSSSSSSEEEE

Test durumum1: FSSENEEEFWSSFNSWWN

Sınama durumum2: FSEEEESFWSSSSFNWWWWNFENNFSEES

Görüldüğü üzere Doktorum, Meleklere hareket etmenin ne kadar eğlenceli olduğunu göstermek için bir duş gibi dolaşmayı seviyor. Yazılımın en kısa yolu bulmasını sağlayabilirim, ancak daha uzun sürüyor ve daha fazla kod gerekiyor.

Sizler için test durumları

S
D....
..NE.
.WTS.
.S...

Bir diğeri:

E
D....
WNNN.
...E.
.WTE.
.SSE.
.....

1
Golf edilmiş kod derleme durur bir yerde bir boşluk eksik, ama bu düzeltme ile size sadece 1395 bayt sayısı yapmak! Güzel iş bu kadar düşük oluyor ve kullanmanız tamamen adil bir oyundur using S=System.Console;, ya da S kodunu tamamen kaldırabilir ve 6 byte tasarruf edebilirsiniz using System. Şimdi saf yaklaşımımı biraz daha
kısmaya

1
Kaçırılmış bir alan, bununla ben ilgilenmeliyim. Ve elbette S = ... Bunu öğrendiğimde biraz kaygılandım. :)
WozzeC

Bayt almak güzel bir iş geri sayım;)
VisualMelon

Hiç kullanılmamış bir kod buldum. Ayrıca bazı gereksiz gereksiz şeyler.
WozzeC
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.