तपस्वी सिम्युलेटर


73

टी वह सेंट गोल्फस द कंसीज़ के आदेश से ब्रेट्रेन करता है, जब भी कोई व्यक्ति क्रॉस के चिन्ह को देखता है तो उसे एक छोटी प्रार्थना सुनाने की परंपरा है । हाल ही में पर्यटकों के बीच उच्च स्तर के पाप के कारण, उन्होंने मठ में सीसीटीवी स्थापित किया है, और उन्होंने आपको एआई की उम्र में पुरानी परंपरा को जीवित रखने में मदद करने के लिए काम पर रखा है।

आपका कार्य तपेदिक के फिंगर-ट्रैकिंग सॉफ़्टवेयर से आउटपुट का विश्लेषण करना है और बताना है कि कितनी प्रार्थनाएँ हैं। इनपुट एक मैट्रिक्स है जिसमें 0 और 4 के बीच पूर्णांक होते हैं। 1,2,3,4 समय में लगातार क्षणों में उंगलियों की स्थिति का प्रतिनिधित्व करते हैं। 0 गैर-उंगलियों का प्रतिनिधित्व करता है।

अपने आप को पार करने के लिए एक सही तरीका TM है:

.1.
3.4
.2.

("" किसी भी अंक से मेल खाता है)। हालाँकि, कैमरे के घूमने की अनिश्चितता और भीड़ में पवित्र पूर्वी रूढ़िवादी भाइयों की उपस्थिति (जिसका वन ट्रू वे टीएम विपरीत दिशा में है) की उपस्थिति के कारण, आपको सभी घुमाव और प्रतिबिंब भी गिनने चाहिए:

.4. .2. .3. .1. .3. .2. .4.
1.2 4.3 2.1 4.3 1.2 3.4 2.1
.3. .1. .4. .2. .4. .1. .3.

एक अंक कई पार का हिस्सा हो सकता है। .pray()उपर्युक्त 3x3 उपमहाद्वीपों में से कितने की गिनती करके तंतुओं को उनके एआई को निर्धारित करने की संख्या निर्धारित करने में मदद करें । एक कार्यक्रम या एक समारोह लिखें। किसी भी उचित सुविधाजनक रूप में इनपुट लें।

नियम के मामले:

// in
[[0,4,2,0],
 [1,3,2,4],
 [2,3,1,0]]

// out
2

// in
[[4,3,3,2,4,4,1,3,2,2],
 [0,3,0,2,1,1,2,3,2,3],
 [0,3,1,3,2,4,3,3,1,1],
 [4,3,2,3,2,4,1,4,2,3],
 [0,4,2,3,4,0,2,3,2,4],
 [2,1,0,0,2,0,0,1,2,4],
 [4,0,3,1,3,2,0,3,2,3],
 [1,4,3,3,1,4,0,1,4,4],
 [0,2,4,3,4,3,1,3,0,4],
 [3,0,1,0,4,0,3,3,3,3]]

// out
3

// in
[[3,2,3,1,0,3,4,2,1,1,1,1,4,0,1,3,1,1,2,1,1,3,0,1,0,1,1,0,0,1,0,3,4,0,1,1,2,3,1,2,4,1,0,2,3,0,2,4,3,2],
 [2,4,1,1,0,3,0,2,4,2,3,2,1,3,0,2,3,2,4,4,4,3,2,1,1,3,2,1,2,3,2,4,0,3,1,4,4,1,1,0,1,1,0,2,2,3,1,2,0,2],
 [3,4,0,0,4,4,0,3,4,4,1,3,2,1,3,2,3,2,2,0,4,0,1,2,3,0,4,3,2,2,2,0,3,3,4,4,2,2,1,4,4,1,3,1,1,2,0,1,1,0],
 [1,4,2,2,2,1,3,4,1,1,2,1,4,0,3,2,2,4,1,3,3,0,4,1,1,0,0,1,2,2,1,3,4,0,4,1,0,1,1,0,2,1,3,1,4,4,0,4,3,2],
 [4,4,2,0,4,4,1,1,2,2,3,3,2,3,0,3,2,1,0,3,3,4,2,2,2,1,1,4,3,2,1,1,4,3,4,2,4,0,1,0,2,4,2,2,0,3,3,0,3,2],
 [4,3,3,1,3,1,1,3,3,1,0,1,4,3,4,3,4,1,2,2,1,1,2,1,4,2,1,1,1,1,1,3,3,3,1,1,4,4,0,0,3,3,1,4,4,3,2,3,3,0],
 [1,4,1,4,0,0,1,3,1,2,2,1,1,2,3,3,2,0,3,4,3,2,1,2,2,3,3,1,4,2,1,1,4,1,3,2,0,0,0,1,2,4,1,1,3,0,4,2,3,1],
 [2,2,3,0,0,4,2,1,2,3,1,2,4,1,0,1,0,2,4,1,3,4,4,0,0,4,0,4,4,2,0,0,2,2,3,3,4,1,0,3,2,1,0,1,1,0,3,0,3,2],
 [1,2,4,3,4,3,1,2,2,3,0,1,2,4,4,4,3,1,2,3,4,3,3,2,0,0,2,0,3,4,4,2,3,2,0,2,4,3,0,0,0,4,4,0,4,4,0,3,3,3],
 [4,4,1,2,0,2,2,0,0,3,2,3,2,3,4,1,0,2,3,0,3,2,1,1,4,3,0,2,3,1,0,4,1,2,4,1,1,4,4,4,2,2,2,3,0,1,0,3,0,1],
 [4,0,3,0,2,2,0,3,2,2,2,4,0,4,0,1,0,1,4,3,3,2,3,1,2,2,4,4,0,3,2,3,1,4,1,0,3,2,3,2,2,0,1,2,4,0,3,0,4,4],
 [0,4,0,1,0,2,3,2,1,3,1,1,2,0,3,2,1,4,0,1,4,4,1,3,4,4,1,0,4,1,0,3,4,0,3,2,4,3,3,3,3,1,2,2,3,3,3,1,3,4],
 [3,4,1,2,1,1,1,0,4,0,1,1,0,4,1,3,1,1,2,0,2,1,4,1,4,4,3,2,0,3,0,3,0,1,1,2,1,3,0,4,4,2,2,2,1,3,4,1,1,1],
 [3,0,1,4,2,0,0,3,1,1,1,4,4,0,2,2,0,4,0,3,1,0,2,2,4,4,4,0,4,4,4,4,4,4,3,0,4,4,4,1,2,4,4,3,0,0,4,0,4,2],
 [2,0,1,2,1,1,3,0,3,1,0,4,3,1,2,1,1,3,0,1,2,4,2,1,2,3,4,2,4,4,2,2,3,4,0,0,1,0,0,4,1,3,3,4,1,2,1,3,3,2],
 [4,0,2,0,3,1,2,1,1,1,1,2,3,0,3,1,0,4,3,0,0,0,2,0,1,4,0,2,1,3,4,2,2,4,2,3,1,2,0,2,0,2,4,0,1,2,3,4,1,3],
 [3,0,2,4,2,0,3,4,3,2,3,4,2,0,4,1,0,4,3,3,1,0,2,2,2,1,3,3,1,1,0,3,3,0,3,2,1,1,0,1,2,2,0,4,4,2,0,1,3,1],
 [0,4,4,4,0,3,0,3,0,2,2,0,1,2,3,3,4,3,0,4,1,2,3,3,0,2,2,3,0,0,0,2,4,2,3,4,2,3,4,0,2,0,1,1,3,4,2,2,4,4],
 [2,1,2,3,4,3,1,2,0,0,0,0,0,0,3,4,3,3,1,2,2,1,3,4,1,2,4,0,1,4,1,0,0,0,2,1,1,1,3,0,0,3,1,1,4,2,1,3,4,1],
 [1,0,3,0,2,1,4,2,3,3,1,1,3,4,4,0,1,2,1,3,0,3,1,1,3,0,2,4,4,4,2,3,1,4,3,4,0,1,4,1,1,1,4,0,0,2,3,4,0,4]]

// out
8

"धन्य है सबसे छोटी जंग, क्योंकि यह upvotes के राज्य को जीतता है।" -बुक ऑफ सेंट गोल्फस 13:37

"तुम खामियों का उपयोग नहीं करते, क्योंकि वे लुसिफर के दुष्ट कार्य हैं।" -Letter to Meta 13: 666

क्रॉस बनाने वाले लोगों का थोड़ा दृश्य


धन्यवाद @Tschallacka विज़ुअलाइज़ेशन के लिए।


57
अंत में छंद के लिए +1, उन्होंने मुझे एक अच्छी हँसी दी: D
HyperNeutrino

6
क्या एक अंक कई पार का हिस्सा हो सकता है?
मार्टिन एंडर

9
हे स्वीट जीसस, आपने एक फ्राइड सिम्युलेटर बनाया।
मैजिक ऑक्टोपस Urn

1
पहला "T" क्यों जुड़ा है?
जेकगॉल्ड

4
@JakeGould तो इस सवाल को "टी" के सवाल से जोड़ना है।
आउटगोल्फ़र एरिक

जवाबों:


19

चने , 20 बाइट्स

n`.\1./\3.\4/.\2.voO

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

कल्पना का एक बहुत शाब्दिक कार्यान्वयन:

  • n` Grime एक मैच देने वाले इनपुट के सबट्रेक्टेंगल की संख्या की गणना करता है।
  • .\1./\3.\4/.\2. 3x3 वर्ग को परिभाषित करता है:

    .1.
    3.4
    .2.
    

    .कोई भी चरित्र कहां हो सकता है।

  • oOएक अभिविन्यास संशोधक है जो इस आयत को किसी भी रोटेशन या प्रतिबिंब में प्रकट करने की अनुमति देता है। vकम करने के लिए प्रयोग किया जाता है oरों पूर्वता ताकि हम चौराहे के आसपास कोष्ठक जरूरत नहीं है।

7
पहले दो टेस्ट के लिए सही, आखिरी के लिए सिगफॉल्ट। मुझे लगता है कि यह ठीक होना चाहिए जब तक कि कार्यक्रम सिद्धांत रूप में सही है और केवल संसाधनों द्वारा सीमित है।
ngn

FYI करें: मैंने अभी पिछले परीक्षण मामले का परीक्षण किया और यह मेरे लिए ठीक रहा।
3D1T0R

16

घोंघे , 17 16 बाइट्स

Ao
\1.=\2o=\3b\4

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

व्याख्या

Aघोंघे पूरे इनपुट में संभावित मिलान पथों की संख्या की गणना करता है। oकिसी भी रूढ़िवादी दिशा (सिर्फ पूर्व की ओर) के लिए प्रारंभिक दिशा निर्धारित करता है। पैटर्न खुद दूसरी पंक्ति पर है:

\1    Match a 1.
.     Match an arbitrary character (the one in the centre).
=\2   Check that the next character ahead is a 2, but don't move there.
o     Turn to any orthogonal direction. In practice, this will only be one
      of the two directions from the centre we haven't checked yet.
=\3   Check that the next character ahead is a 3.
b     Turn around 180 degrees.
\4    Match a 4 in that direction.

7

हास्केल, 108 102 93 बाइट्स

f((_:t:x):w@((l:q@(_:r:_)):(_:b:z):_))=sum$f((t:x):q:[b:z]):f w:[1|(l*r-1)*(t*b-1)==11]
f _=0

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

रेगेक्स नहीं। पैटर्न मैच

.t.
l.r
.b.

मैट्रिक्स के ऊपरी बाएँ कोने में, एक ले 1अगर (l*r-1)*(t*b-1)==11और रिकर्सिवली सही (ड्रॉप करने के लिए जाने .l.के लिए नीचे) और (पहली पंक्ति ड्रॉप)। यदि पैटर्न का मिलान नहीं किया जा सकता है (दाईं ओर या नीचे की सीमा पर) a 0। सभी परिणाम।

संपादित करें: -9 बाइट्स @xnor के लिए धन्यवाद।


मैं 2^(l*r)+2^(t*b)==4100संख्याओं की जाँच करने के लिए सुझाव देने जा रहा था , लेकिन ऐसा लगता है कि हमारे समाधान दोनों के 2,6स्थान पर छल कर रहे हैं 3,4
xnor

@xnor लेकिन संख्याएँ प्रतिबंधित हैं0..4
Feburous

3
@ Οurous धन्यवाद, मुझे वह याद आया। फिर अंकगणितीय अभिव्यक्तियों को और भी अधिक पसंद किया जा सकता है, जैसे (l*r-1)*(t*b-1)==11
20

7

पर्ल, 70 बाइट्स

के लिए +2 शामिल है 0p

STDIN पर रिक्त स्थान के बिना अंकों के ब्लॉक के रूप में इनपुट मैट्रिक्स दें:

perl -0pe '$_=map{/.$/m+y/1-4/3421/;/(?=1.{@{-}}(3.4|4.3).{@{-}}2)/sg}($_)x4'
0420
1324
2310
^D

अंकों को घुमाकर क्रॉस को घुमाता है


6

रेटिना , 92 83 बाइट्स

L$v`(?<=((.))*).(.)..*¶(?<-1>.)*(.).(.).*¶(?<-2>.)*.(.)
$6$3$4$5
/../_O`.
1234|3412

इसे ऑनलाइन आज़माएं! स्पष्टीकरण:

L$v`(?<=((.))*).(.)..*¶(?<-1>.)*(.).(.).*¶(?<-2>.)*.(.)
$6$3$4$5

सभी अतिव्यापी 3x3 वर्गों के लिए देखें। एक खोजकर्ता इंडेंट को दो बार कैप्चर करता है ताकि इसे दूसरी और तीसरी पंक्ति में संतुलित किया जा सके। इनपुट को आयताकार माना जाता है, इसलिए हमें यह जांचने की आवश्यकता नहीं है कि समूह शेष हैं। नीचे / शीर्ष मध्य कोशिकाओं और फिर बाएं / दाएं मध्य कोशिकाओं पर कब्जा कर लिया जाता है।

/../_O`.

क्रम में कोशिकाओं की प्रत्येक जोड़ी को क्रमबद्ध करें।

1234|3412

शेष वैध पैटर्न की गणना करें।


5

जेली , 26 बाइट्स

Z3Ƥṡ€3ẎµFḊm2ṙ-s2Ṣ€ṢFµ€ċ4R¤

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

व्याख्या

Z3Ƥṡ€3ẎµFḊm2ṙ-s2Ṣ€ṢFµ€ċ4R¤  Main Link
 3Ƥ                         For each 3 rows
Z                           Zip the rows
   ṡ€3                      Get all arrangements of 3 consecutive columns from these rows. At this step, we have all 3x3 contiguous submatrices
      Ẏ                     Unwrap by one layer; previously grouped by rows, now ungrouped
       µ           µ€       For each 3x3 submatrix
        F                   Flatten it
         Ḋ                  Get rid of the first element
          m2                Take every second element (this only keeps the edges)
            ṙ-              Rotate right 1 element
              s2            Group into pairs; now the top and bottom are grouped and the left and right are grouped
                Ṣ€          Sort each pair
                  Ṣ         Sort the pairs
                   F        Flatten
                      ċ4R¤  Count the number of occurrences of range(4); i.e. [1,2,3,4]

जोनाथन एलन (2) और मिस्टर एक्सकोडर (3) (विलय) के लिए -3 बाइट्स धन्यवाद


@ng lol द डॉट इन के अंतर्गत आता है D। मेरी बुरी, नियत।
हाइपरएन्यूट्रीनो

के ...Fµ€ċ4R¤बजाय का उपयोग करके 2 बाइट्स सहेजें ...Ḍµ€ċ1234(यह भी ध्यान दें कि एक को बचाने के लिए 1234प्रतिस्थापित किया ⁽¡ḋजा सकता था)
जोनाथन एलन

केZ3Ƥ बजाय ṡ3Z€और के ⁼J$µ€Sबजाय का उपयोग करके 26 बाइट्सḌµ€ċ1234
मिस्टर एक्सकोडर

@JonathanAllan ओह कूल, धन्यवाद
हाइपरनेट्रिनो

5

जावा 8, 135 133 131 बाइट्स

m->{int r=0,i=0,j;for(;++i<m.length-1;)for(j=1;j<m[i].length-1;)if(~(m[i-1][j]*m[i+1][j])*~(m[i][j-1]*m[i][++j])==39)r++;return r;}

-2 बाइट्स के लिए @tehtmi को एक छोटे सूत्र के लिए धन्यवाद : (l*r-1)*(t*b-1)==11टू~(l*r)*~(t*b)==39

स्पष्टीकरण:

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

m->{                     // Method with integer-matrix parameter and integer return-type
  int r=0,               //  Result-integer, starting at 0
      i=0,j;             //  Index integers
  for(;++i<m.length-1;)  //  Loop over the rows, skipping the first and last
    for(j=1;j<m[i].length-1;)
                         //   Inner loop over the columns, skipping the first and last
      if(~(m[i-1][j]*m[i+1][j])*~(m[i][j-1]*m[i][++j])==39)
                         //    If (-(bottom*top)-1) * (-(left*right)-1) is exactly 39:
        r++;             //     Increase the result-counter by 1
  return r;}             //  Return the result-counter

1
छोटा सूत्र: ~(l*r)*~(t*b)==39(हास्केल के पास ~स्पष्ट रूप से 1-बाइट नहीं होता है ।)
तहती

3

हस्क , 23 बाइट्स

#ö§&¦ḣ4SδΛ≈↔Ċ2tΣṁoX3TX3

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

व्याख्या

#ö§&¦ḣ4SδΛ≈↔Ċ2tΣṁoX3TX3  Implicit input, a list of lists of integers.
                     X3  Length-3 slices.
                ṁ        Map over them and concatenate:
                    T     Transpose,
                 oX3      then get length-3 slices.
                         Now we have a list of 3x3-arrays of the (transposed) input.
#ö                       Return number of 3x3-arrays that satisfy this:
                          Take m = [[0,3,0],[2,4,1],[1,4,0]] as an example.
               Σ          Concatenate: [0,3,0,2,4,1,1,4,0]
              t           Tail: [3,0,2,4,1,1,4,0]
            Ċ2            Take every second element: c = [3,2,1,4]
  §&                      c satisfies both of the following:
    ¦                     1) It contains every element of
     ḣ4                      the range [1,2,3,4].
       Sδ                 2) If you zip c
           ↔                 with its reverse,
         Λ                   then each corresponding pair
          ≈                  has absolute difference at most 1.
                         Implicitly print the result.

3

Dyalog APL , 30 29 28 27 26 बाइट्स ( SBSC )

+/∘,{12 2⍷×∘⌽⍨⊢/4 2⍴⍵}⌺3 3

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


बहुत अच्छा! ⌽∘⊖×⊢2 बाइट्स से छोटा हो सकता है, क्या आप अनुमान लगा सकते हैं कि कैसे?
नवंबर

@ngn जो मैं वास्तव में चाहता हूं, वह ø जैसा प्रतीक है;)
H.PWiz

@ मेरे पास है×∘⌽∘⊖⍨
H.PWiz

यह छोटा है:(⌽×⊖)
nn 20

ओह, यह चतुर है, आपने ⊢/एक और -1 के लिए सेल्फी (... you) को छोड़ दिया । मैंने ऐसा नहीं सोचा था। इस स्थिति में आपको मुझे श्रेय नहीं देना चाहिए।
ngn


2

साफ , 255 ... 162 बाइट्स

यह फायदेमंद नहीं है कि अक्सर समझ में पैटर्न फिल्टर का उपयोग करें, लेकिन इस मामले में, यह है।

import StdEnv,StdLib
? =reverse
@ =transpose
t=tails
$m=sum[1\\f<-[id,@,?,?o@,@o?,@o?o@,?o@o?o@,?o@o?],[a,b,c:_]<-t(f m),[_,1:_]<-t a&[3,_,4:_]<-t b&[_,2:_]<-t c]

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

फ़ंक्शन को परिभाषित करता है $, ले रहा है [[Int]]और लौट रहा है Int

यह पहले मैट्रिक्स के सभी समरूपता उत्पन्न करता है m(के माध्यम से बदल f), tailsजिसमें से तीन या अधिक पंक्तियों को लेता है , और समकालिक रूप से जांचता है कि tailsप्रत्येक पंक्ति से कॉलम के पहले तीन सेट क्रॉस के पैटर्न से कितने मेल खाते हैं।

यह क्रमबद्ध tails-of- tailsप्रतिमान की संख्या गिनने के बराबर है [[_,1,_:_],[3,_,4:_],[_,2,_:_]:_]- जो तार्किक रूप से जाँच के समान है कि क्या मैट्रिक्स में प्रत्येक सेल के लिए, वह सेल क्रॉस के किसी भी घुमाव के ऊपरी-बाएँ कोने है।


2

पायथन 3, 120 118 बाइट्स

lambda x:sum({x[i+1][j]*x[i+1][j+2],x[i][j+1]*x[i+2][j+1]}=={2,12}for i in range(len(x)-2)for j in range(len(x[0])-2))

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

इस तथ्य का उपयोग करता है कि क्रॉस में संख्याओं के विपरीत जोड़े का उत्पाद क्रमशः 2 और 12 होना चाहिए, और सभी अलग-अलग झुकावों को कवर करने के लिए सेट के साथ तुलना करता है। पूर्णांक के 2 डी सरणी के रूप में इनपुट लेता है।


1
आप f=स्कोर में गिनती करने की जरूरत नहीं है
nnn

2

जाप -x , 39 38 33 बाइट्स

ã3 Ëmã3 y x@[XXy]®g1 ë2 ×Ãn e[2C]

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

-1 बाइट @ शुगी को धन्यवाद।

-5 बाइट्स सरणी को फिर से भरने के द्वारा @ETHproductions के लिए धन्यवाद।

अनपैक्ड और यह कैसे काम करता है

Uã3 mD{Dmã3 y xX{[XXy]mZ{Zg1 ë2 r*1} n e[2C]

       Input: 2D Array of numbers
Uã3    Generate an array of length 3 segments of U
mD{    Map... (D = 2D array of numbers having 3 rows)
Dmã3     Map over each row of D to generate an array of length 3 segments
y        Transpose; make an array of 3x3 subsections
xX{      Map and sum... (x = 3x3 2D array of numbers)
[XXy]      Array of X and X transposed
mZ{        Map...
Zg1 ë2 r*1   Take row 1, take 0th and 2nd elements, reduce with *
}
n          Sort the array
e[2C]      Equals [2,12] element-wise?
           Implicit cast from boolean to number

       Result: 1D array of counts
-x     Sum of the result array

अभी भी क्रॉस के लिए परीक्षण करने का एक बेहतर तरीका होना चाहिए ...


आप एक बाइट को अंत में समानता की जांच को बदलकर बचा सकते हैं e[2C]
झबरा

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