एक क्रॉसवर्ड पढ़ो


11

इस प्रारूप में पैकिंग के बारे में इस सवाल से प्रेरित ।

कभी-कभी मैं एक पूरा क्रॉसवर्ड देखता हूं और जैसा कि मैं हूं, मुझे यह पता लगाने के लिए परेशान नहीं किया जा सकता है कि वास्तव में सुराग के समाधान क्या थे।

इनपुट:

  • एक 2D स्ट्रिंग (कोई भी प्रारूप, नई रेखा अलग, 2d सूची आदि)
  • रिक्त वर्गों को एक (अंतरिक्ष वर्ण) के साथ दर्शाया जाएगा
  • हर दूसरा वर्ग निचली स्थिति के वर्णमाला में होगा।
  • आप मान सकते हैं कि आयत बनाने के लिए रिक्त स्थान के साथ इनपुट को गद्देदार किया जाएगा

आउटपुट:

  • प्रत्येक शब्द मिला
    • आपको शब्दों को साथ और नीचे खोजना होगा
    • शब्द कम से कम दो अक्षर लंबे होंगे
    • यदि डुप्लिकेट शब्द हैं, तो आपको प्रत्येक बार उनके प्रदर्शित होने के लिए आउटपुट देना होगा
  • आपको कोई सत्यापन करने की आवश्यकता नहीं है
  • शब्दों को किसी भी क्रम में आउटपुट किया जा सकता है
  • कोई सख्त स्वरूपण नियम नहीं

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

word
e e 
step
t d 

word, step, west, reed
---
pies
 not
  no
wasp

pies, not, no, wasp, in, eons, stop
---
igloo
    n
word

igloo, word, on

जवाबों:


8

पायथ - 11 10 8 7 बाइट्स

@issacg की बदौलत एक बाइट बचाई।

t#cjsCB

इसे यहाँ ऑनलाइन आज़माएँ

t#               Filter by if len > 1
 c               Chop by whitespace by default
  j              Join by newlines
   sCB           Input, implicit and its transpose in one list

@ माल्टीसेन अद्भुत।
लीक नून

1
अजगर जीतता है। हमेशा की तरह।
लीक नून

1
आप को हटाने के द्वारा एक बाइट को बचा सकता है d, जो बनाता है jनई-पंक्तियों, जो अभी भी से कटा हुआ कर रहे हैं पर शामिल होने केc ... )
isaacg

@ आइसाकग वास्तव में बहुत अच्छा है, धन्यवाद
माल्टीसेन

2

CJam, 14 बाइट्स

{_z+S*S%{,(},}

एक अनाम ब्लॉक जो स्टैक के शीर्ष पर (गद्देदार) तारों की सूची की अपेक्षा करता है और इसके बजाय शब्दों की सूची छोड़ देता है।

इसका परीक्षण यहां करें।

व्याख्या

_z    e# Duplicate and transpose the grid.
+     e# Append the transpose to the original grid.
S*    e# Join all lines by spaces to ensure that we don't get words 
      e# spanning multiple lines.
S%    e# Split around spaces, discarding empty segments.
{,(}, e# Filter: keep only those strings with length 2 or greater.

1

जावास्क्रिप्ट (ईएस 6), 83 बाइट्स

s=>(s+` `+[...(t=s.split`
`)[0]].map((_,i)=>t.map(t=>t[i]).join``)).match(/\w\w+/g)

0

पायथ , 18 बाइट्स

Lm:d"\S\S+"1byQyCQ

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

नमूना इनपुट:

["pies"," not","  no","wasp"," t  "]

नमूना उत्पादन:

[['pies'], ['not'], ['no'], ['wasp'], []]
[[], ['in', 'at'], ['eons'], ['stop']]

यह काम किस प्रकार करता है:

Lm:d"\S\S+"1byQyCQ                                 The "1" here is mode
                    assign('Q',eval_input())       "1" which means show
                    @memoized                      all matches
L                   def y(b):                               v
 m:d"\S\S+"1b           return map(lambda d:regex(d,"\S\S+",1),b)
             yQ     imp_print(y(Q))
               yCQ  imp_print(y(transpose(Q)))

0

हास्केल, 58 बाइट्स

import Data.List
f x=[w|w@(_:_:_)<-words=<<x++transpose x]

प्रयोग उदाहरण: f ["pies"," not"," no","wasp"]-> ["pies", "not", "no", "wasp", "in", "eons", "stop"]

यह कैसे काम करता है: इनपुट की प्रत्येक पंक्ति और उस पर स्थानान्तरण को एक सूची शब्दों में विभाजित करता है। उस मैच को रखें (_:_:_), यानी कम से कम दो अक्षर।


0

C ++ 14, 209 207 201 बाइट्स

हास्यास्पद रूप से उच्च मात्रा में बाइट्स ... लेकिन ओह अच्छी तरह से। ट्रांस्पोज़ मैट्रिक्स, स्प्लिट स्ट्रिंग। आसान। ट्रांसपोज़िंग के लिए बहुत बुरा कोई देशी कार्य नहीं

[](vector<string>; m){auto t=m;int C=size(m[0]),j=0;for(;++j<C*C;)t[j%C][j/C]=m[j/C][j%C];for(j=0;++j<C+C;){stringstream Z(j<C?m[j]:t[j-C]);string s;while(getline(Z,s,' '))cout<<(size(s)>1?s+' ':"");}}

Ungolfed:

using S=vector<string>;
[](S m){
  S t=m;
  int C=size(m[0]),j=0;
  for(;j<C*C;++j)t[j%C][j/C]=m[j/C][j%C]; // Transpose
  for(j=0;j<C+C;++j){ // since rectangle matrix, we can iterate like so
    stringstream Z(j<C?m[j]:t[j-C]); // Get string from m or t
    string s;
    while(getline(Z,s,' '))
      cout<<(size(s)>1?s+' ':"");
  }
}

इसका उपयोग कैसे करें (नोट आपको प्रश्न के रूप में पैडिंग लागू करना होगा):

using S = vector<string>;[](S m) { ... }({"pies", " not", "  no", "wasp"});

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