काउंट मिल्स इन नाइन मेन्स मॉरिस


21

परिचय

नाइन मेन्स मॉरिस (जिसे मिल्स भी कहा जाता है) दो खिलाड़ियों के लिए एक बोर्ड गेम है जो निम्नलिखित बोर्ड (लिंक विकिपीडिया-पृष्ठ से ली गई छवि) पर खेला जाता है:

मिल का बोर्ड

प्रत्येक खिलाड़ी में 9 पुरुष, काले और सफेद रंग के होते हैं। इस चुनौती के लिए ठोस नियम महत्वपूर्ण नहीं हैं, लेकिन यदि आप रुचि रखते हैं तो विकिपीडिया-पृष्ठ देखें

चुनौती

एक ग्रिड को इनपुट के रूप में देखते हुए, जो एक निश्चित बोर्डस्टेट का प्रतिनिधित्व करता है, कुल मिल गिनती के mसाथ आउटपुट 0<=m<=8
एक ही रंग के तीन पुरुष एक चक्की बनाते हैं जब वे जुड़े बिंदुओं की एक सीधी पंक्ति में होते हैं। b2करने के लिए f2एक चक्की के बाद से पुरुषों अलग रंग के हैं नहीं है। इसके अलावा d2करने के लिए d5के बाद से तीन अंक जुड़े होने की एक चक्की के रूप में नहीं होगा।
ऊपर की छवि में बोर्ड में उदाहरण के लिए दो मिलें हैं। से एक f2करने के लिए f6और से एक e3करने के लिए e5

इनपुट

बोर्ड को 24 अंकों के साथ 2 डी ग्रिड के रूप में दर्शाया गया है जो ऊपर दिए गए उदाहरण चित्र में दिखाए गए अनुसार जुड़े हुए हैं। उदाहरण a-gस्तंभों और संख्याओं 1-7के लिए पंक्तियों के लिए अक्षरों का उपयोग करता है , लेकिन आप किसी भी उचित इनपुट प्रारूप का चयन कर सकते हैं जब तक कि यह निम्न में से किसी एक राज्य के लिए 24 अद्वितीय निर्देशांक मैप करता है:

  • खाली
  • काले द्वारा लिया गया
  • सफेद द्वारा लिया गया

ठोस प्रतिक्षेप आपके ऊपर है कि आप रंगों के लिए "b" या "w" तक सीमित नहीं हैं।

इसके अलावा, आपके इनपुट में कोई अतिरिक्त जानकारी नहीं हो सकती है।

अतिरिक्त नोट्स

  • आपको किसी भी प्रकार के मानों के अनुसार अंकों को मैप करने की आवश्यकता नहीं है। यदि आप इनपुट को 2D सरणी के रूप में लेना चाहते हैं, तो यह ठीक है। लेकिन ध्यान रखें कि वहाँ सभी बिंदुओं का उपयोग नहीं किया जाता है और आपको उनके बीच के कनेक्शन पर विचार करना होगा।
  • इनपुट खाली हो सकता है, जिस स्थिति में आपको शून्य (खाली बोर्ड -> कोई मिल नहीं) का उत्पादन करना होगा।
  • चूंकि प्रत्येक खिलाड़ी में 9 पुरुष होते हैं, इसलिए इनपुट में कभी भी 18 से अधिक अंक नहीं होंगे।
  • आप इनपुट में एमटीपी अंक छोड़ सकते हैं और इसलिए केवल इनपुट बिंदु जो लिए जाते हैं।
  • किसी भी तरह से इनपुट का आदेश दिया जा सकता है। आप किसी विशिष्ट आदेश पर भरोसा नहीं कर सकते।
  • आप मान सकते हैं कि इनपुट हमेशा मान्य होगा। इसका मतलब है कि प्रत्येक रंग के 9 से अधिक पुरुष नहीं होंगे और प्रत्येक बिंदु अद्वितीय होगा।

नियम

  • स्पष्ट करें कि आप अपने समाधान में किस इनपुट प्रारूप का उपयोग करते हैं। अपने कार्यक्रम का एक उदाहरण प्रदान करना हाईलाइट को प्रोत्साहित करना है।
  • कार्य या पूर्ण कार्यक्रम की अनुमति है।
  • इनपुट / आउटपुट के लिए डिफ़ॉल्ट नियम
  • मानक खामियां लागू होती हैं।
  • यह , इसलिए सबसे कम बाइट-काउंट जीतता है। टाईब्रेकर पहले जमा करना है।

परीक्षण के मामलों

इनपुट प्रारूप यहाँ निर्देशांक के साथ tuples की एक सूची है जैसा कि पहले तत्व के ऊपर उदाहरण में है और बिंदु दूसरे तत्व की स्थिति है। सफेद द्वारा लिए गए एक बिंदु को "डब्ल्यू" के रूप में चिह्नित किया जाता है और एक बिंदु को "बी" के रूप में काले रंग से लिया जाता है। अन्य सभी बिंदु बाहर रह गए हैं और खाली हैं।

[( "ए 4", "डब्ल्यू"), ( "बी 2", "ख"), ( "बी 4", "ख"), ( "सी 4", "ख"), ( "d1", "डब्ल्यू") , ( "d2", "डब्ल्यू"), ( "E3", "डब्ल्यू"), ( "इ 4", "डब्ल्यू"), ( "E5", "डब्ल्यू"), ( "F2", "ख") , ("f4", "b"), ("f6", "b"), ("g4", "w")] -> 2
[( "A1", "बी"), ( "ए 4", "ख"), ( "ए 7", "ख"), ( "बी 4", "ख"), ( "सी 4", "ख") , ("डी 3", "डब्ल्यू"), ("डी 2", "डब्ल्यू"), ("डी 1", "डब्ल्यू")] -> 3
[] -> ०
[("बी 4", "बी"), ("ए 4", बी "), (" सी 4 ", डब्ल्यू")] -> 0
[("बी 4", "बी"), ("ए 4", बी "), (" सी 4 ", बी")] -> 1
[("ए 1", "बी"), ("ए 4", "बी"), ("ए 7", "बी"), ("बी 2", "बी"), ("बी 4", "बी") , ("बी 6", "बी"), ("सी 3", "बी"), ("सी 4", "बी"), ("सी 5", "बी"), ("ई 3", "डब्ल्यू") , ("e4", "w"), ("e5", "w"), ("f2", "w"), ("f4", "w"), ("f6", "w") , ("जी 1", "डब्ल्यू"), ("जी 4", "डब्ल्यू"), ("जी 7", "डब्ल्यू")] -> 8

हैप्पी कोडिंग!



मुझे लगता है कि रंगों को संरेखित करने के साथ-साथ संरेखित होना चाहिए, लेकिन यह थोड़ा अस्पष्ट है। उदाहरण के लिए d2, d3, d5 एक ही रंग का एक मिल होगा?
रॉबर्ट बेन्सन

@RobertBenson नहीं, क्योंकि यह जुड़ा नहीं होगा d3और d5जुड़ा नहीं है। नियम कहते हैं Three men of the same color form a mill when they are in a straight row of connected points.:। मैंने इसे स्पष्ट करने के लिए इस खंड में कुछ उदाहरण जोड़े, टिप्पणी के लिए धन्यवाद!
डेनकर

जवाबों:


4

एपीएल (डायलॉग क्लासिक) , 26 25 बाइट्स

-1 FrownyFrog के लिए धन्यवाद

≢{|∊(+/⍵⍪↓⍵),⊢/4 2⍴+⌿⍵}∩≢

इसे ऑनलाइन आज़माएं!

तर्क एक 3x3x3 सरणी 1(काला), ¯1(सफेद), और 0(खाली) है। पहला आयाम संकेंद्रित वर्गों की घोंसले की गहराई के साथ है। अन्य दो आयाम ऊर्ध्वाधर और क्षैतिज अक्ष के साथ हैं।

000---------001---------002
 |           |           |
 |  100-----101-----102  |
 |   |       |       |   |
 |   |  200-201-202  |   |
 |   |   |       |   |   |
010-110-210     212-112-012
 |   |   |       |   |   |
 |   |  220-221-222  |   |
 |   |       |       |   |
 |  120-----121-----122  |
 |           |           |
020---------021---------022

हमारे पास एक चक्की है जब भी किसी भी अक्ष के साथ योग एक 3या उपज देता है ¯3, सिवाय इसके कि हमें पहली धुरी के साथ जोड़ते समय चार कोनों को छोड़ना चाहिए।

{} अंतर्निहित तर्क के साथ एक समारोह है

↓⍵है विभाजन - हमारे मामले में यह नेस्टेड लंबाई -3 वैक्टर की एक 3x3 मैट्रिक्स में एक 3x3x3 घन बदल जाता है

⍵⍪↓⍵ मूल घन लेता है और इसके नीचे 3-वैक्टर के 3x3 मैट्रिक्स को glues करता है, इसलिए हमें स्केलर और वैक्टर के 4x3x3 मिश्रित सरणी मिलती है

+/अंतिम अक्ष के साथ रकम; इसमें अंतिम अक्ष के साथ मूल घन को जोड़ने का संयुक्त प्रभाव है ( +/⍵) और हमने जो विभाजन किया है, उसके कारण मध्य अक्ष के साथ इसे जोड़ दें ( +/↓⍵)

अब हमें पहले अक्ष के लिए विशेष मामले का ध्यान रखना चाहिए।

+⌿⍵ पहली धुरी के साथ, 3x3 मैट्रिक्स लौटाता है

4 2⍴ लेकिन हमें कोनों की गिनती नहीं करनी चाहिए, इसलिए हम इसे 4x2 मैट्रिक्स की तरह आकार देते हैं:

ABC      AB
DEF  ->  CD
GHI      EF
         GH  ("I" disappears)

अब हम केवल अंतिम कॉलम ( BDFH) में रुचि रखते हैं , इसलिए हम मुहावरे का उपयोग करते हैं⊢/

,BDFH2 और 3 अक्ष के लिए पहले प्राप्त मैट्रिक्स को संघटित करता है ( BDFHऔर मैट्रिक्स दोनों 4 के अग्रणी आयाम के लिए होता है)

हमने अब तक प्राप्त की गई हर चीज को एक ही सदिश में समतल किया

| पूर्ण मूल्यों को लेता है

{ }∩≢ केवल थ्रेड्स को फ़िल्टर करता है - इनपुट की लंबाई (≢) हमेशा 3 होती है

उन्हें गिनता है


हे, मैं बस यह सुझाव देने वाला था।
अदम

क्या आप एक पल के लिए chat.stackexchange.com/rooms/52405/apl से जुड़ सकते हैं ?
आदम

≢{|∊(+/⍵⍪↓⍵),⊢/4 2⍴+⌿⍵}∩≢एक छोटा है :)
FrownyFrog

@FrownyFrog धन्यवाद! में संपादित
NGN

4

जावास्क्रिप्ट (ईएस 6), 276 228 125 117 105 बाइट्स

a=>btoa`i·yø!9%z)ª»-ºü1j;ÝÈ%¥·¡ªÜ"·ç¹Ê1`.replace(/.../g,b=>(a[b[0]]+a[b[1]]+a[b[2]])/3&1||'').length

(इसके बाद के संस्करण में कुछ अनसुने असिसी अक्षर शामिल हैं जो यहाँ दिखाई नहीं देंगे, इसलिए यहाँ इसके बिना संस्करण को btoaकॉपी किया जा सकता है और चलाया जा सकता है)

a=>'abcdefghijklmnopqrstuvwxajvdksglpbehqtwimrfnucox'.replace(/.../g,b=>(a[b[0]]+a[b[1]]+a[b[2]])/3&1||'').length

मिल समूह समूह कुंजी के साथ मेल खाने वाले पत्र ट्रिपल में एक संदर्भ स्ट्रिंग को तोड़ता है। इनपुट एक वस्तु के रूप में होता है, जहाँ कुंजियाँ अक्षर होती हैं a-x, नीचे से शुरू होती हैं और सबसे ऊपर दाईं ओर, पहले बाएँ से दाएँ चलती हैं। मान 1सफेद के लिए, -1काले के 0लिए और रिक्त के लिए हैं।

उदाहरण

{b:1,d:-1,e:1,f:-1,i:1,k:-1,l:-1,m:1,n:-1,r:1,u:-1} => 2
{j:1,d:-1,k:-1,l:-1,b:1,e:1,i:1,m:1,r:1,f:-1,n:-1,u:-1,o:1} => 2
{a:-1,j:-1,v:-1,k:-1,l:-1,h:1,e:1,b:1} => 3
{} => 0
{k:-1,j:-1,l:1} => 0
{k:-1,j:-1,l:1} => 1
{a:-1,j:-1,v:-1,d:-1,k:-1,s:-1,g:-1,l:-1,p:-1,i:1,m:1,r:1,f:1,n:1,u:1,c:1,o:1,x:1} => 8

ये उदाहरण ओपी के उदाहरणों से लिए गए हैं, जो अक्षर-कुंजी और संख्या-मूल्य ऑब्जेक्ट में परिवर्तित हो गए हैं। पहला उदाहरण छवि से है, जबकि अन्य उदाहरण सेट से हैं।


1
अच्छी नौकरी! आप के साथ बड़ी स्ट्रिंग को संपीड़ित कर सकते हैं atob
22

@ETHproductions धन्यवाद! ऐसा लगता है कि हालांकि, यह अनुचित रूप से अस्सी वर्णों का उपयोग कर रहा है, इसलिए मैं इसमें से एक को भी शामिल करूंगा btoa। कुछ अन्य सुधार भी पाए गए जो इसे और भी नीचे लाते हैं।
M24247

2

गणितज्ञ, 217 131 बाइट्स

जबकि मुझे यकीन है कि यह विशेष रूप से प्रतिस्पर्धी नहीं है, यहां आपके लिए एक प्रविष्टि है।

Count[Total/@{{a1,d1,g1},{b2,d2,f2},{c3,d3,e3},{a4,b4,c4},{e4,f4,g4},{c5,d5,e5},{b6,d6,f6},{a7,d7,g7},{a1,a4,a7},{b2,b4,b6},{c3,c4,c5},{d1,d2,d3},{d5,d6,d7},{e3,e4,e5},{f2,f4,f6},{g1,g4,g7}}/.#/.{"w"->1,"b"->2},3|6]&

इनपुट उदाहरण:

{a4 -> "w", b2 -> "b", b4 -> "b", c4 -> "b", d1 -> "w", d2 -> "w", e3 -> "w", e4 -> "w", e5 -> "w", f2 -> "b", f4 -> "b", f6 -> "b", g4 -> "w"}

एकल-वर्णों को समन्वित करने से 51 वर्णों से अलग नाम के गोल्फ का समन्वय होता है, जिससे यह 166 बाइट समाधान बन जाता है। खिलाड़ियों को 1 और 2 के बजाय "डब्ल्यू" और "बी" गोल्फ से 17 आगे के पात्रों का नामकरण।

तो हम प्राप्त करते हैं

Count[Total/@{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,a,j,v,d,k,s,g,l,p,b,e,h,q,t,w,r,i,m,f,u,n,c,o,x}~Partition~3,3|6]/.#&

अगर मैं इनपुट नियम सही ढंग से स्वरूपण को समझते हैं, आप उन्हें में लेने के लिए सक्षम होना चाहिए 1और 2। उदाहरण का इस्तेमाल किया wऔर b, लेकिन मैं काफी निश्चित हूं कि हम उस तक सीमित नहीं हैं।
Mwr247

@ Mwr247 आप सही हैं। जब तक आप अतिरिक्त जानकारी नहीं जोड़ते, तब तक आप किसी भी प्रारूप का उपयोग कर सकते हैं। मैं यह स्पष्ट करूंगा जब मैं घर जाऊंगा।
Denker

1

एपीएल (डायलॉग यूनिकोड) , 50 बाइट्स

"ऑब्जेक्ट्स सॉल्यूशन"

@ Ngn के समाधान की तुलना में लंबे समय तक (29 वर्ण) , यह पूरी तरह से अलग दृष्टिकोण का उपयोग करता है: इनपुट में उस समाधान के समान समग्र संरचना होती है, लेकिन सभी स्लॉट वस्तुओं के रूप में दर्शाए जाते हैं। खाली स्लॉट (गैर-मौजूदा केंद्र स्तंभ सहित) खाली ऑब्जेक्ट होना चाहिए। जबकि सभी काले पुरुषों को "ब्लैक मैन" ऑब्जेक्ट का संदर्भ होना चाहिए, और सभी गोरे लोगों को "व्हाइट मैन" ऑब्जेक्ट का संदर्भ होना चाहिए। सभी ऑब्जेक्ट्स में पठनीयता के लिए वैकल्पिक रूप से अच्छा D isplay F orm s हो सकता है, और इसलिए केंद्र स्तंभ को वैकल्पिक रूप से अदृश्य बनाया जा सकता है।

+/1=(≢¨(,∪/,∪⌿⍤2),(⊢/4 2⍴∪⌿))

इसे ऑनलाइन आज़माएं!

+/ की राशि

1=(… में ) वाले

≢¨(... ) की टैली

  , उठी हुई (चपटी)

  ∪/ अद्वितीय सेट भर में

  , के लिए सहमति

  ∪⌿⍤2 अद्वितीय सेट नीचे

,(... के लिए ) सहमति व्यक्त की

  ⊢/ का सबसे दाहिना स्तंभ

  4 2⍴ , चार पंक्तियों और दो स्तंभों में बदल दिया गया,

  ∪⌿ अद्वितीय स्तंभ सेट

एक शीर्ष ऑपरेटर, जैसा कि एजीएल ( ä) के साथ आपूर्ति की जाती है , लंबाई को 27 वर्णों तक ले जाएगी

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.