Zilustruj formacje drużyn piłkarskich na boisku

13

Piłka nożna to sport, w którym gracze kopią piłkę, a nie ją noszą. Niektóre zdezorientowane osoby mogą nazwać tę piłkę nożną.


Drużyna piłkarska ma jednego bramkarza i 10 graczy na boisku. W piłce nożnej jest wiele formacji , które określają, gdzie powinien być każdy gracz (gracz oczywiście się porusza, ale jest to pozycja podstawowa).

Najczęstszą formacją jest 4-4-2, co oznacza, że ​​jest 4 obrońców, 4 pomocników i dwóch atakujących. Inne formacje to („obrońcy, pomocnicy, napastnicy” lub „obrońcy, pomocnicy, pomocnicy, napastnicy”):

  • 4-4-2
  • 4-3-3
  • 5-3-2
  • 3-4-3
  • 3-5-2
  • 4–5–1
  • 5-4-1
  • 4-4-1-1
  • 4-3-1-2
  • 4–1–2–3
  • 4–1–3–2
  • 4-3-2-1
  • 3-4-1-2
  • 3-3-3-1

Wyzwanie polega na zebraniu dwóch danych wejściowych, po jednym dla każdej z dwóch drużyn i przesłaniu przeglądu graczy na boisku.

Ogólnie: większość informacji na temat układu ASCII-art można znaleźć na rycinach (zdjęcie mówi więcej niż 1000 słów). Szczegółowo wyjaśniono tylko sposób umieszczenia 10 graczy na boisku:

  • Opiekun i pole karne zajmuje 3 rzędy znaków ASCII
    • Układ i liczbę spacji można znaleźć na poniższym rysunku
  • Pomiędzy polem karnym a obrońcami nie ma pustego rzędu
  • Jeśli formacja zawiera 3 liczby (np. 4-4-2, 4-3-3 itd. Nie 4-3-2-1):
    • Pomiędzy obrońcami a pomocnikami nie ma pustego rzędu
    • Pomiędzy pomocnikami i napastnikami jest jeden pusty rząd
  • Jeśli formacja zawiera 4 liczby (np. 4-3-2-1, 3-3-3-1 itd. Nie 4-4-2):
    • Pomiędzy obrońcą a pierwszym rzędem pomocników nie ma pustego rzędu
    • Pomiędzy pierwszym rzędem pomocników a drugim nie ma pustego rzędu
    • Pomiędzy drugim rzędem pomocników a napastnikami nie ma pustego rzędu
  • Pomiędzy atakującymi a linią środkową nie ma pustych wierszy
  • Drużyna w górnej połowie jest oznaczona jako x, a drużyna w drugiej połowie jest oznaczona jako o.
  • Każdy rząd graczy jest rozmieszczony na boisku, jak pokazano na poniższych rysunkach. Liczbę spacji można zobaczyć na rysunku.

Poniższy rysunek nie przedstawia prawidłowej formacji, ale służy do zilustrowania układu i liczby wymaganych odstępów między poszczególnymi graczami. Wejście do tego byłoby 2 3 4 5i 5 4 2:

+-----------------+
|     |  x  |     |
|     +-----+     |
|     x     x     |
|    x   x   x    |
|  x   x   x   x  |
|  x  x  x  x  x  |
+-----------------+
|     o     o     |
|                 |
|  o   o   o   o  |
|  o  o  o  o  o  |
|     +-----+     |
|     |  o  |     |
+-----------------+ 

Prawidłowe przykłady:

Input:
4 4 2, 5 3 1 1


+-----------------+
|     |  x  |     |
|     +-----+     |
|  x   x   x   x  |
|  x   x   x   x  |
|                 |
|     x     x     |
+-----------------+
|        o        |
|        o        |
|    o   o   o    |
|  o  o  o  o  o  |
|     +-----+     |
|     |  o  |     |
+-----------------+

Input:
3 5 2, 4 4 1 1


+-----------------+
|     |  x  |     |
|     +-----+     |
|    x   x   x    |
|  x  x  x  x  x  |
|                 |
|     x     x     |
+-----------------+
|        o        |
|        o        |
|  o   o   o   o  |
|  o   o   o   o  |
|     +-----+     |
|     |  o  |     |
+-----------------+

Zasady:

  • Dane wejściowe mogą być w dowolnym dogodnym formacie, niezależnie od siebie. Format może składać się z pojedynczego łańcucha ( 5311), cyfr oddzielonych przecinkami ( 5,3,1,1) itp.
    • Dane wejściowe nie powinny zawierać żadnych innych informacji niż dwie formacje
  • Dane wyjściowe powinny wyglądać dokładnie tak, jak na przykładowych liczbach, ale końcowe spacje i znaki nowej linii są prawidłowe.
  • Możesz założyć, że podano tylko prawidłowe dane wejściowe (zostaną użyte tylko formacje z listy).
  • Pełny program lub funkcja

To jest kod golfowy, więc wygrywa najkrótszy kod w bajtach.

Stewie Griffin
źródło
1
Piłka nożna to ta z kijami, prawda?
Mego
Nie, to shuffleboard. Chcesz tego z kucykami.
Geobits
1
Nie, to ujeżdżenie. Chcesz tego z celami.
Morgan Thrapp,
4
Co! Brak koła w środku pola?
Luis Mendo
2
@LuisMendo, po prostu załóżmy, że w Stoke jest deszczowy dzień! Koło środkowego pola jest często trudne do znalezienia = P
Stewie Griffin

Odpowiedzi:

1

JavaScript (ES6), 258 262

Funkcja anonimowa, przyjmująca 2 parametry jako tablice numeryczne

(a,b,H=f=>(f[3]||f.push(0,f.pop()),[z='+-----------------+',...[6,7,...f].map(x=>`|${'98,8o8,5o5o5,4o3o3o4,2o3o3o3o2,2o2o2o2o2o2,5|2o2|5,5+-----+5'.replace(/\d/g,x=>' '.repeat(x)).split`,`[x]}|`),'']))=>H(a).join`
`.replace(/o/g,'x')+z+H(b).reverse().join`
`

Test

F=(a,b,
   H=f=>(
    f[3]||f.push(0,f.pop()),
    [z='+-----------------+',...[6,7,...f].map(x=>`|${'98,8o8,5o5o5,4o3o3o4,2o3o3o3o2,2o2o2o2o2o2,5|2o2|5,5+-----+5'.replace(/\d/g,x=>' '.repeat(x)).split`,`[x]}|`),'']
   )
)=>
  H(a).join`\n`.replace(/o/g,'x')+z+H(b).reverse().join`\n`

  
function test() {
  var f1=F1.value.match(/\d+/g),f2=F2.value.match(/\d+/g)
  O.textContent=F(f1,f2)
}

test()
x <input id=F1 value='4,4,2' oninput='test()'><br>
o <input id=F2 value='4,3,1,2' oninput='test()'><br>
<pre id=O>

edc65
źródło
2

Python 2, 401 377 bajtów

def g(x,o):
 r=lambda r:["|"+"  x"*5+"  |","|        x        |","|     x     x     |","|    x   x   x    |","|  x   x   x   x  |"][r%5];d="+"+"-"*17+"+";h=[d,"|     |  x  |     |","|     +-----+     |"]+map(r,x);b=map(lambda r:r.replace("x","o"),[s for s in h[:3]]+map(r,o))[::-1];e="|"+" "*17+"|"
 if len(x)-4:h.insert(5,e)
 if len(o)-4:b.insert(1,e)
 print"\n".join(h+[d]+b)

Wersja bez golfa ze środowiskiem testowym tutaj !

Funkcja, która przyjmuje dwie listy formatu [obrońcy, pomocnicy, pomocnicy, atakujący], podczas gdy jeden numer pomocnika jest opcjonalny. Drużyna X (na górze) jest na pierwszym miejscu, drużyna O (na dole) na drugim miejscu.

Denker
źródło
jest bezużyteczna przestrzeń w jednym z Twojego lambda lambda a:r(a), x)^^
Erwan
@Erwan Dzięki, dobry połów!
Denker
myślę, że najgorsze jest zdefiniowanie, t=lambda a:r(a) kiedy używasz go 2 razy
Erwan
lepsze rozwiązanie usuń wszystkie przypadki lambda a:r(a)zastąpienia go przezr
Erwan
@Erwan Dzięki, też tego przegapiłem!
Denker
1

Perl, 360 332 324 bajty

sub f{$q="";($_,$p)=@_;@x=/\S+/g;splice@x,2,0,0if@x<4;for(@x) {$s=(17-$_)/($_+1);$s=$=+1if($s!=($==$s));$x=$"x$=;@a=();push@a,$p for 1..$_;$q.=$_==0?"|$u$u$u  |\n":"|$x".join($"x$s,@a)."$x|\n"}$q}($k,$j)=<>;$u=$"x5;$^="-"x17;$i="|$u+-----+$u|";say"x$^x\n|$u|  x  |$u|\n$i\n".f($k,x)."+$^+".(reverse f$j,o)."\n$i\n|$u|  o  |$u|\nx$^x"

Wymaga -E| -M5.010:

$ echo $'4 4 2\n4 4 1 1' | perl -M5.010 football.pl
x-----------------x
|     |  x  |     |
|     +-----+     |
|  x   x   x   x  |
|  x   x   x   x  |
|                 |
|     x     x     |
+-----------------+
|        o        |
|        o        |
|  o   o   o   o  |
|  o   o   o   o  |
|     +-----+     |
|     |  o  |     |
x-----------------x

Nieco golfisty:

sub f{
    $q="";
    ($_,$p)=@_;
    @x=/\S+/g;
    splice@x,2,0,0if@x<4;
    for(@x) {
        $s=(17-$_)/($_+1);
        $s=$=+1if($s!=($==$s));
        $x=" "x$=;
        @a=();
        push@a,$p for 1..$_;
        $q.=$_==0?"|$u$u$u  |\n":"|$x".join(" "x$s,@a)."$x|\n"
    }
    $q
}

($k,$j)=<>;
$u=" "x5;
$^="-"x17;
$i="|$u+-----+$u|";
say"x$^x\n|$u|  x  |$u|\n$i\n".f($k,x)."+$^+".(reverse f$j,o)."\n$i\n|$u|  o  |$u|\nx$^x"
andlrc
źródło
@ edc65 To tylko moje przykładowe wyjście, które jest niepoprawne: S
andlrc