Minh họa đội hình bóng đá trên sân


13

Bóng đá là môn thể thao mà người chơi đá bóng chứ không phải mang nó. Một số cá nhân bối rối có thể gọi bóng đá này.


Một đội bóng đá có một thủ môn và 10 cầu thủ trên sân. Có rất nhiều đội hình được sử dụng trong bóng đá, chỉ ra rằng mỗi cầu thủ nên ở đâu (người chơi dĩ nhiên di chuyển xung quanh, nhưng đó là vị trí cơ sở).

Đội hình phổ biến nhất là 4-4-2, có nghĩa là có 4 hậu vệ, 4 tiền vệ và hai cầu thủ tấn công. Các dạng khác là ("hậu vệ, tiền vệ, kẻ tấn công" hoặc "hậu vệ, tiền vệ, tiền vệ, kẻ tấn công"):

  • Sơ đồ cơ
  • 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

Thách thức là lấy hai đầu vào, một cho mỗi trong hai đội và đưa ra một cái nhìn tổng quan về các cầu thủ trên sân.

Nói chung: Hầu hết thông tin về bố cục của nghệ thuật ASCII có thể được tìm thấy trong các hình (một bức tranh nói hơn 1000 từ). Chỉ có cách để đặt 10 cầu thủ trên sân được giải thích chi tiết:

  • Người giữ và khu vực hình phạt chiếm 3 hàng ký tự ASCII
    • Bố cục và số lượng không gian có thể được tìm thấy trong hình dưới đây
  • Không có hàng trống giữa vòng cấm và các hậu vệ
  • Nếu có 3 số trong đội hình (ví dụ: 4-4-2, 4-3-3, v.v. Không phải 4-3-2-1):
    • Không có hàng trống giữa các hậu vệ và tiền vệ
    • Có một hàng trống giữa các tiền vệ và những kẻ tấn công
  • Nếu có 4 số trong đội hình (ví dụ 4-3-2-1, 3-3-3-1, v.v. Không phải là 4-4-2):
    • Không có hàng trống giữa hậu vệ và hàng tiền vệ đầu tiên
    • Không có hàng trống giữa hàng tiền vệ đầu tiên và hàng thứ hai
    • Không có hàng trống giữa hàng tiền vệ thứ hai và những kẻ tấn công
  • Không có hàng trống giữa những kẻ tấn công và đường trung tâm
  • Đội ở nửa trên được đánh dấu là x, và đội ở nửa sau được đánh dấu là o.
  • Mỗi hàng cầu thủ sẽ được phân phối trên sân như trong hình dưới đây. Số lượng không gian có thể được nhìn thấy trong hình.

Hình dưới đây không đại diện cho một đội hình hợp lệ, nhưng được sử dụng để minh họa bố cục và số lượng không gian cần thiết giữa mỗi người chơi. Đầu vào cho điều này sẽ là 2 3 4 55 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  |     |
+-----------------+ 

Ví dụ hợp lệ:

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  |     |
+-----------------+

Quy tắc:

  • Đầu vào có thể ở bất kỳ định dạng thuận tiện, tách biệt theo cách bạn muốn. Định dạng có thể là một chuỗi đơn ( 5311), chữ số được phân tách bằng dấu phẩy ( 5,3,1,1), v.v.
    • Đầu vào không được chứa bất kỳ thông tin nào khác ngoài hai dạng
  • Đầu ra sẽ trông chính xác như các số liệu mẫu, nhưng dấu cách và dòng mới là OK.
  • Bạn chỉ có thể giả sử đầu vào hợp lệ được đưa ra (chỉ các hình thức trong danh sách sẽ được sử dụng).
  • Chương trình đầy đủ hoặc chức năng

Đây là mã golf, vì vậy mã ngắn nhất tính bằng byte sẽ thắng.


1
Bóng đá là một trong những gậy, phải không?
Mego

Không, đó là shuffleboard. Bạn muốn một với ngựa con.
Geobits

1
Không, đó là cách ăn mặc. Bạn muốn một trong những mục tiêu.
Morgan Thrapp

4
Gì! Không có vòng tròn giữa trường?
Luis Mendo

2
@LuisMendo, cứ cho rằng đó là một ngày mưa ở Stoke! Vòng tròn giữa trường thường rất khó tìm = P
Stewie Griffin

Câu trả lời:


1

JavaScript (ES6), 258 262

Hàm ẩn danh, lấy 2 tham số làm mảng số

(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`
`

Kiểm tra

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>


2

Python 2, 401 377 byte

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)

Phiên bản Ungolfed với môi trường thử nghiệm ở đây !

Chức năng có hai danh sách định dạng [hậu vệ, tiền vệ, tiền vệ, kẻ tấn công] trong khi số một tiền vệ là tùy chọn. Đội X (trên cùng) đứng đầu, đội O (dưới) thứ hai.


có một không gian vô dụng trong một trong lambda của bạn lambda a:r(a), x)^^
Erwan

@Erwan Cảm ơn, bắt tốt!
Denker

Tôi nghĩ rằng đó là điều tồi tệ nhất để định nghĩa t=lambda a:r(a) khi bạn sử dụng nó 2 lần
Erwan

giải pháp tốt hơn loại bỏ tất cả sự xuất hiện của việc lambda a:r(a)thay thế nó chỉ bằngr
Erwan

@Erwan Cảm ơn, đã bỏ lỡ điều đó quá!
Denker

1

Perl, 360 332 324 byte

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"

Yêu cầu -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

Hơi vô dụng:

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"

@ edc65 Chỉ là đầu ra ví dụ của tôi sai: S
andlrc
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.