एक पिच पर फुटबॉल टीम के फॉर्मेट का चित्रण करें


13

फुटबॉल वह खेल है, जहां खिलाड़ी गेंद को लात मारते हैं, उसे नहीं ले जाते। कुछ भ्रमित व्यक्ति इस फ़ुटबॉल को बुला सकते हैं।


एक फुटबॉल टीम में एक गोलकीपर, और पिच पर 10 खिलाड़ी होते हैं। फ़ुटबॉल में कई फॉर्मेशन का इस्तेमाल किया जाता है, जो यह तय करता है कि प्रत्येक खिलाड़ी को कहाँ होना चाहिए (बेशक खिलाड़ी चारों ओर घूमता है, लेकिन यह आधार स्थिति है)।

सबसे आम गठन 4-4-2 है, जिसका अर्थ है कि 4 रक्षकों, 4 मिडफ़ील्डर और दो हमलावर हैं। अन्य सूत्र हैं ("रक्षक, मिडफ़ील्डर, हमलावर" या "रक्षक, मिडफ़ील्डर, मिडफ़ील्डर, हमलावर)":

  • 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

चुनौती दो इनपुट लेने की है, दो टीमों में से प्रत्येक के लिए एक और मैदान पर खिलाड़ियों के अवलोकन का उत्पादन करना है।

सामान्य तौर पर: एएससीआईआई-कला के लेआउट के बारे में अधिकांश जानकारी आंकड़ों में पाई जा सकती है (एक तस्वीर 1000 से अधिक शब्द कहती है)। मैदान पर 10 खिलाड़ियों को रखने का केवल तरीका विस्तार से बताया गया है:

  • रक्षक और दंड क्षेत्र ASCII- वर्णों की 3 पंक्तियों को लेता है
    • लेआउट और रिक्त स्थान की संख्या नीचे की आकृति में पाई जा सकती है
  • दंड क्षेत्र और रक्षकों के बीच कोई खाली पंक्ति नहीं है
  • यदि गठन में 3 संख्याएँ हैं (जैसे 4-4-2, 4-3-3 आदि। 4-3-2-1 नहीं):
    • रक्षकों और मिडफील्डरों के बीच कोई खाली पंक्ति नहीं है
    • मिडफील्डर्स और हमलावरों के बीच एक खाली पंक्ति है
  • यदि गठन में 4 संख्याएँ हैं (जैसे 4-3-2-1, 3-3-3-1 आदि। 4-4-2 नहीं):
    • रक्षक और मिडफ़ील्डर की पहली पंक्ति के बीच कोई खाली पंक्ति नहीं है
    • मिडफील्डर्स की पहली पंक्ति और दूसरी के बीच कोई खाली पंक्ति नहीं है
    • मिडफील्डर्स और हमलावरों की दूसरी पंक्ति के बीच कोई खाली पंक्ति नहीं है
  • हमलावरों और केंद्र रेखा के बीच कोई खाली पंक्तियां नहीं हैं
  • ऊपरी आधे पर टीम के रूप में चिह्नित किया जाता है x, और दूसरी छमाही पर टीम के रूप में चिह्नित किया जाता है o
  • खिलाड़ियों की प्रत्येक पंक्ति पिच पर वितरित की जाएगी जैसा कि नीचे दिए गए आंकड़ों में दिखाया गया है। आंकड़े में रिक्त स्थान की संख्या देखी जा सकती है।

निम्नलिखित आंकड़ा एक वैध गठन का प्रतिनिधित्व नहीं करता है, लेकिन प्रत्येक खिलाड़ी के बीच आवश्यक रिक्त स्थान के लेआउट और संख्या को चित्रित करने के लिए उपयोग किया जाता है। इसके लिए इनपुट 2 3 4 5और होगा 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  |     |
+-----------------+ 

मान्य उदाहरण:

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

नियम:

  • इनपुट किसी भी सुविधाजनक प्रारूप पर हो सकता है, हालांकि आप चाहते हैं कि अलग हो। प्रारूप एक एकल स्ट्रिंग ( 5311), अल्पविराम से अलग किए गए अंक ( 5,3,1,1), आदि हो सकते हैं।
    • इनपुट में दो संरचनाओं के अलावा कोई अन्य जानकारी नहीं होनी चाहिए
  • आउटपुट बिल्कुल नमूने के आंकड़ों के रूप में दिखना चाहिए, लेकिन रिक्त स्थान और नए लिंक ठीक हैं।
  • आप मान सकते हैं कि केवल वैध इनपुट दिया गया है (सूची में केवल फॉर्मेशन का उपयोग किया जाएगा)।
  • पूरा कार्यक्रम या समारोह

यह कोड गोल्फ है, इसलिए बाइट्स में सबसे छोटा कोड जीत है।


1
फुटबॉल एक लाठी के साथ है, है ना?
Mego

नहीं, वह फेरबदल है। आप टट्टू के साथ एक चाहते हैं।
भूत

1
नहीं, वह ड्रेसेज है। आप लक्ष्यों के साथ एक चाहते हैं।
मॉर्गन थ्रैप

4
क्या! कोई मध्य क्षेत्र सर्कल नहीं?
लुइस मेंडो

2
@LuisMendo, मान लें कि यह स्टोक में एक बारिश का दिन है! मध्य-क्षेत्र चक्र को खोजने में अक्सर मुश्किल होता है = P
स्टीवी ग्रिफ़िन

जवाबों:


1

जावास्क्रिप्ट (ईएस 6), 258 262

अनाम फ़ंक्शन, संख्यात्मक सरणियों के रूप में 2 पैरामीटर ले रहा है

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

परीक्षा

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

पायथन 2, 401 377 बाइट्स

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)

यहाँ परीक्षण वातावरण के साथ असम्बद्ध संस्करण !

फंक्शन जो प्रारूप की दो सूचियों को लेता है [रक्षक, मिडफ़ील्डर, मिडफ़ील्डर, हमलावर] जबकि एक मिडफ़ील्डर नंबर वैकल्पिक है। टीम एक्स (शीर्ष) पहले, टीम ओ (नीचे) दूसरे नंबर पर आती है।


आपके लैम्ब्डा में एक बेकार जगह है lambda a:r(a), x)^ ^
एरवान

@ इरावन धन्यवाद, अच्छी पकड़!
डेनकर

मुझे लगता है कि इसे परिभाषित करना सबसे खराब है t=lambda a:r(a) क्योंकि आप इसे 2 बार उपयोग करते हैं
एरवान

बेहतर समाधान lambda a:r(a)सिर्फ इसे प्रतिस्थापित करने की सभी घटनाओं को दूर करता हैr
एरवन

@ इरावन धन्यवाद, वह भी याद किया!
डेन्कर

1

पर्ल, 360 332 324 बाइट्स

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"

की आवश्यकता -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

कुछ असम्बद्ध:

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 यह सिर्फ मेरा उदाहरण आउटपुट है जो गलत है: S
andlrc
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.