শব্দ অনুসন্ধান ধাঁধা


29

একটি শব্দ অনুসন্ধান ধাঁধা এবং একটি অনুসন্ধান স্ট্রিং হিসাবে একটি আয়তক্ষেত্রাকার পাঠ্য দেওয়া হয়েছে, নির্ধারণ করুন যে পাঠ্যে সন্ধানের স্ট্রিং রয়েছে কিনা। অনুসন্ধানের স্ট্রিং উপস্থিত হতে পারে:

  • অনুভূমিকভাবে, উল্লম্ব বা ত্রিভুজি
  • এগিয়ে বা পিছনে

আপনি কোনও ফাংশন বা একটি প্রোগ্রাম লিখতে পারেন এবং ফাংশন আর্গুমেন্ট, এআরজিভি বা এসটিডিনের মাধ্যমে ইনপুট হিসাবে দুটি স্ট্রিং নিতে পারেন। আউটপুটটি সত্যবাদী বা মিথ্যা ফলাফল হওয়া উচিত যা ফাংশন থেকে ফিরে আসতে পারে বা STDOUT এ লেখা যেতে পারে।

অনুমান করুন যে পাঠ্যটিতে নির্বিচারে মুদ্রণযোগ্য ASCII অক্ষর (হেক্স কোড 20 থেকে 7E) এবং লাইন বিরতি অক্ষর থাকবে। চিঠিগুলি কেস সেনসিটিভ। আপনি ধরে নিতে পারেন যে ইনপুট পাঠ্যটি আয়তক্ষেত্রাকার, অর্থাৎ সমস্ত লাইনের দৈর্ঘ্য একই same ইনপুটটি শেষের লাইনের সাথে শেষ হয় কিনা বা না হয় (যদি তা আপনার জমা দেওয়ার ক্ষেত্রে গুরুত্বপূর্ণ হয়)।

এটি কোড গল্ফ, সংক্ষিপ্ত উত্তর (বাইটে) জিতেছে।

উদাহরণ

শব্দ অনুসন্ধানে উইকিপিডিয়ায় নিবন্ধ থেকে এই গ্রিডটি প্রথম ইনপুট হিসাবে ব্যবহার করা হচ্ছে:

WVERTICALL
ROOAFFLSAB
ACRILIATOA
NDODKONWDC
DRKESOODDK
OEEPZEGLIW
MSIIHOAERA
ALRKRRIRER
KODIDEDRCD
HELWSLEUTH

নিম্নলিখিত অনুসন্ধানের স্ট্রিংগুলিতে যথাক্রমে সত্য বা মিথ্যা ফলাফল পাওয়া উচিত:

Truthy: RANDOM, VERTICAL, HORIZONTAL, WORDSEARCH, WIKIPEDIA, TAIL
Falsy:  WordSearch, CODEGOLF, UNICORN

বিকল্পভাবে, এই ইনপুট পাঠ্য ব্যবহার করে

Lorem ipsum dolor sit amet consectetu
r adipisicing elit sed do eiusmod tem
por incididunt ut labore et dolore ma
gna aliqua. Ut enim ad minim veniam, 
quis nostrud exercitation ullamco lab
oris nisi ut aliquip ex ea commodo co
nsequat. Duis aute irure dolor in rep
rehenderit in voluptate velit esse ci
llum dolore eu fugiat nulla pariatur.

আমরা নিম্নলিখিত অনুসন্ধানের ফলাফলগুলি পাই (এখন উদ্ধৃতি ব্যবহার করে, কারণ কিছু অনুসন্ধান স্ট্রিংয়ের ফাঁকা স্থান রয়েছে):

Truthy: "Lorem", "mine", "uma bop", "tuetdod", "snol,a", "texas", "pii.d  v", "vexta"
Falsy:  "lorem", "wordsearch", "pii.d v", "mute"

উত্তর:


7

সিজেম, 46 37 বাইট

qN%{_zW%__,N**2$2$+,)/z\}4*]:+N*eas#)

STDIN থেকে গ্রিড এবং কমান্ড-লাইন আর্গুমেন্ট হিসাবে শব্দটি পড়ে। ম্যাচগুলির জন্য ধনাত্মক পূর্ণসংখ্যা এবং অ-ম্যাচের জন্য 0 প্রিন্ট করে।

দুটি অতিরিক্ত বাইটের ব্যয়ে, দুটি স্ট্রিং (শব্দ, লাইনফিড, গ্রিড) এসটিডিএন থেকে পড়তে পারবেন:

qN%(\{_zW%__,N**2$2$+,)/z\}4*](\:+N*\#)

আপনি সিজেএম ইন্টারপ্রেটারের সাহায্যে এই সংস্করণটি অনলাইনে চেষ্টা করতে পারেন ।

উদাহরণ রান

$ for W in Lorem mine uma\ bop tuetdod snol,a texas pii.d\ \ v vexta WordSearch CODEGOLF UNICORN; do echo -e "$(cjam wordsearch.cjam "$W" < grid)\t$W"; done
1       Lorem
3085    mine
2055    uma bop
5142    tuetdod
3878    snol,a
1426    texas
5371    pii.d  v
2536    vexta
0       WordSearch
0       CODEGOLF
0       UNICORN

পটভূমি

ধরুন ইনপুটটি নিম্নলিখিত গ্রিড ছিল:

ABCD
EFGH
IJKL

লাইনফিডে বিভক্ত হয়ে আমরা নিম্নলিখিত অ্যারেটি পাই:

A := [
         "ABCD"
         "EFGH"
         "IJKL"
     ]

এটি পূর্বের শব্দগুলিকে (বাম থেকে ডান দিকে যাচ্ছে এমন শব্দ) coversেকে রাখে।

এখন, আমরা পৃথক হিসাবে লাইনফিডগুলির Aএকটি স্ট্রিং ব্যবহারের উপাদানগুলিতে যোগদান করি len(A):

"ABCD⏎⏎⏎EFGH⏎⏎⏎IJKL"

তারপরে, আমরা ফলাফলের স্ট্রিংটি দৈর্ঘ্যের খণ্ডগুলিতে কাটা len(A) + len(A[0]) + 1:

[
    "ABCD⏎⏎⏎E"
    "FGH⏎⏎⏎IJ"
    "KL"
]

যদি আমরা অ্যারেটিকে "জিপ" করি (সারি এবং কলামগুলি স্থানান্তরিত করি), আমরা পাই:

[
    "AFK"
    "BGL"
    "CH"
    "D⏎"
    "⏎⏎"
    "⏎⏎"
    "I⏎"
    "EJ"
]

এটি দক্ষিণ পূর্ব শব্দগুলিকে অন্তর্ভুক্ত করে।

যদি আমরা এটিকে জিপ করি এবং ফলাফলের সারিগুলির ক্রমটি বিপরীত করি তবে আমরা পাই:

[
    "DHL"
    "CGK"
    "BFJ"
    "AEI"
]

এটি দক্ষিণ এবং - কর্ণগুলির জন্য প্রক্রিয়াটি পুনরাবৃত্তি করার পরে - দক্ষিণ পশ্চিম শব্দগুলিকে অন্তর্ভুক্ত করে।

জিপ এবং আবার বিপরীত, আমরা প্রাপ্ত:

[
    "LKJI"
    "HGFE"
    "DCBA"
]

এটি ওয়েস্টকে diaেকে দেয় এবং - ত্রিভুজগুলির প্রক্রিয়া পুনরাবৃত্তি করার পরে - উত্তর পশ্চিম শব্দ।

জিপ এবং আরও একবার বিপরীত, আমরা প্রাপ্ত:

[
    "IEA"
    "JFB"
    "KGC"
    "LHD"
]

এটি উত্তর এবং - ত্রিভুজগুলির জন্য প্রক্রিয়াটি পুনরাবৃত্তি করার পরে - উত্তর পূর্ব শব্দগুলিকে অন্তর্ভুক্ত করে।

কিভাবে এটা কাজ করে

কোডটি পূর্ববর্তী বিভাগে ব্যাখ্যা করা হয়েছে, দুটি ছোট ছোট পার্থক্য সহ:

  • এটি জিপ করে এবং একেবারে শুরুতে বিপরীত হয়।
  • এটি len(A) + len(A[0])হিসাবে গণনা len(A + zip(A))

অবশেষে, এটি পৃথক হিসাবে লাইনফিড ব্যবহার করে সমস্ত উত্পন্ন অ্যারেগুলির সারিগুলিতে যোগদান করে এবং ফলাফলটির স্ট্রিংয়ে শব্দটির সন্ধান করে।

qN%                                   " A := split(input(),'\n')                          ";
   {                    }4*           " Do 4 times:                                       ";
    _zW%                              "   B := reverse(zip(A))                            ";
        __,N**                        "   C := B.join(len(B) * '\n')                      ";
              2$2$+,)/z               "   D := zip(C.chunks(len(A + B) + 1))              ";
                       \              "   A := B                                          ";
                           ]          " Collect all values of A and D in an array R.      ";
                            :+        " R := flatten(R)                                   ";
                              N*      " R := R.join('\n')                                 ";
                                eas   " I := flatten(ARGV)                                ";
                                   #) " print R.index(I) + 1                              ";

7

জাভা: 183 211 321

boolean s(char[]w,char[]s){int j,z,a=s.length,i=a*9,f=1,q=0;for(;s[q++]>10;);for(;i-->0;)for(j=w.length,z=i/9;i%9!=4&j-->0&z>=0&z<a&&s[z]==w[j];z+=q*(i/3%3)+i%3-q-1)f*=j;return f==0;}

একটি মৌলিক জন্তু শক্তি বলার মতো আর কিছু নেই, আমার ধারণা। ইনপুটটি প্রথমে সুই এবং খড়ের দ্বিতীয়টি। ধরে নিন গ্রিডটি নতুন লাইন-সমাপ্ত

পরীক্ষার কেস সহ আরও কিছুটা পঠনযোগ্য সংস্করণ দেখানো হয়েছে:

public class WordSearch {
    static String grid = "WVERTICALL\nROOAFFLSAB\nACRILIATOA\nNDODKONWDC\nDRKESOODDK\nOEEPZEGLIW\nMSIIHOAERA\nALRKRRIRER\nKODIDEDRCD\nHELWSLEUTH";
    static String search = "RANDOM";

    public static void main(String[] args) {
        System.out.println(new WordSearch().s(search.toCharArray(),grid.toCharArray()));
    }

    boolean s(char[]w,char[]s){
        int j,z,a=s.length,i=a*9,f=1,q=0;
        for(;s[q++]>10;);
        for(;i-->0;)
            for(j=w.length,z=i/9;
                i%9!=4&j-->0&z>=0&z<a&&s[z]==w[j];
                z+=q*(i/3%3)+i%3-q-1)
                f*=j;
        return f==0;
    }
}

if(e<1)return 1>0;এটা হতে return e<1;পারে না?
FryAmTheEggman

@ ফ্রাইআম দ্য এজিজিমন না, এটি প্রথম ব্যর্থতা সন্ধান করার পরে ফিরে আসবে, সুতরাং এটি পুরো গ্রিডটি অনুসন্ধান করবে না।
জিওবিটস

1
আহ! দুঃখিত, সেখানে হারিয়ে গেলেন; _;
FryAmTheEggman

4
আউট loops জন্য দুই এক মধ্যে ধসে যেতে পারে পরিবর্তে যাতে আপনি করতে চাই i=a*9,এবং for(;i-->0;)এবং তারপর z=i/9;এবং i%a!=4&এবং তাই?
উইল

1
বাহ, এটি আমার সাথে একই রকম। আমি ইতিমধ্যে শুরু করার পরে আমি কেবল এটির দিকে নজর রেখেছিলাম। এটি কীভাবে কাজ করে তা দেখতে আমি সময় নিইনি। +1 টি।
স্তরের নদী সেন্ট

6

জাভাস্ক্রিপ্ট (E6) 111 116

প্রতিটি দিকের প্রতিটি চরিত্রের জন্য নিষ্ঠুর বল প্রয়োগ করুন - আমি যতটা পারি ততই গল্ফ করে

F=(b,w)=>
  [1,-1,r=b.search('\n'),-r,++r,-r,++r,-r].some(d=>
    [...b].some((_,p)=>
      [...w].every(c=>c==b[p+=d],p-=d)
    )
  )

টেস্ট ফায়ারফক্স / ফায়ারবাগ কনসোলটি

;["RANDOM", "VERTICAL", "HORIZONTAL", "WORDSEARCH", "WIKIPEDIA", "TAIL",
"WordSearch", "CODEGOLF", "UNICORN"]
.forEach(w=>console.log('\n'+ w +' -> '+
  F("WVERTICALL\nROOAFFLSAB\nACRILIATOA\nNDODKONWDC\nDRKESOODDK\nOEEPZEGLIW\nMSIIHOAERA\nALRKRRIRER\nKODIDEDRCD\nHELWSLEUTH",w)))

আউটপুট

RANDOM -> true
VERTICAL -> true
HORIZONTAL -> true
WORDSEARCH -> true
WIKIPEDIA -> true
TAIL -> true
WordSearch -> false
CODEGOLF -> false
UNICORN -> false

5

পাইথন, 175

খুব অনুপ্রাণিত নয়, তবে এখানে রয়েছে:

def s(h,n):
 l=h.find('\n')+2;h+='\n'*l;L=i=len(h)
 while i>0:
  i-=1
  for d in[-l,1-l,2-l,-1,1,l-2,l-1,l]:
    j=i;m=len(n)
    for c in n:m-=c==h[j%L];j+=d
    if m<1:i=-1
 return-i

প্রথম যুক্তি খড়খড়ি, দ্বিতীয় সুই।


আমি মনে করি আপনি h,n=input()এবং ব্যবহার করে 6 টি অক্ষর সংরক্ষণ করতে পারেন print। এছাড়াও, এই স্কোয়ারবিহীন ইনপুটগুলি নিয়ে কাজ করে? (এম = লেন (এন)? আমি স্বীকার করছি যে আপনি কী করছেন তা পুরোপুরি বুঝতে না
পেরে

@ ফ্রাইআম দ্য এজিগম্যান: হ্যাঁ, এটি অনস্কয়ার ইনপুটগুলির সাথে কাজ করে।
Ell

1
কিছু স্ট্যান্ডার্ড পাইথন অপ্টিমাইজেশন: while i>0থেকে while i:(যেহেতু iকখনই নেতিবাচক হতে পারে না), if m<1:i=-1থেকে i-=m<1
xnor

1
@xnor আমার মনে হয় আপনি ভুল ব্যাখ্যা করা থাকতে পারে if m<1:i=-1যেমন if m<1:i-=1হিসাবে যারা তন্ন তন্ন কারণ তিনি সেটিং করা হয় কাজ করবে iনেতিবাচক যাবে।
FryAmTheEggman

@ ফ্রাইআম দ্য এজিগম্যান ওহ, হ্যাঁ, আমি পুরোপুরি এটি ভুলভাবে লিখেছি।
xnor

5

বাশ + কোর্টিলস, 214 169 বাইট

r()(tee >(rev) $@)
t()(eval paste -d'"\0"' `sed 's/.*/<(fold -1<<<"&")/'`)
d()(while IFS= read l;do echo "$a$l";a+=_;done|t)
r<<<"$2"|r >(d) >(r|t) >(r|d)|r|grep -q "$1"

ব্যবহার 3 ফাংশন রুপান্তর r, tএবং dবিপরীত, TRANSPOSE এবং তির্যক শিফট, প্রয়োজনীয় সকল সমন্বয়।

আপডেট - rফাংশনটি এখন অতিরিক্ত গল্ফতার জন্য বিপরীত এবং অ-বিপরীত আউটপুট উত্পাদন করে

কমান্ডলাইন আর্গুমেন্টগুলির মাধ্যমে ইনপুট - অনুসন্ধানের স্ট্রিং, এর পরে (নিউলাইন পৃথক) আয়তক্ষেত্রাকার ওয়ার্ডসার্ক ব্লক।

আউটপুট একটি আইডোমেটিকালি সঠিক শেল প্রস্থান স্থিতি কোড - 0 অর্থ সত্য এবং 1 অর্থ মিথ্যা AL

আউটপুট:

$ for w in "Lorem" "mine" "uma bop" "tuetdod" "snol,a" "texas" "pii.d  v" "vexta" ; do ./ws.sh "$w" "Lorem ipsum dolor sit amet consectetu
r adipisicing elit sed do eiusmod tem
por incididunt ut labore et dolore ma
gna aliqua. Ut enim ad minim veniam, 
quis nostrud exercitation ullamco lab
oris nisi ut aliquip ex ea commodo co
nsequat. Duis aute irure dolor in rep
rehenderit in voluptate velit esse ci
llum dolore eu fugiat nulla pariatur."; echo $?; done
0
0
0
0
0
0
0
0
$ for w in WordSearch CODEGOLF UNICORN ; do ./ws.sh "$w" "Lorem ipsum dolor sit amet consectetu
r adipisicing elit sed do eiusmod tem
por incididunt ut labore et dolore ma
gna aliqua. Ut enim ad minim veniam, 
quis nostrud exercitation ullamco lab
oris nisi ut aliquip ex ea commodo co
nsequat. Duis aute irure dolor in rep
rehenderit in voluptate velit esse ci
llum dolore eu fugiat nulla pariatur."; echo $?; done
1
1
1
$ 

1. আমি প্রস্তাব দিতে চলেছিলাম T()(tee >(r) $@), তবে এটি আরও ভাল। ২. আমি মনে করি না যে আমি আগে কখনও এই ফাংশন সিনট্যাক্সটি দেখেছি। ৩. খালি খালি স্ট্রিংগুলিকে সত্যবাদী এবং খালি স্ট্রিংগুলি মিথ্যা মনে করে, আমি মনে করি আপনি বাদ দিতে পারেন -q
ডেনিস

আপনি সংজ্ঞায়িত তাহলে r()(tee >(rev) $@), r<<<"$2"|r >(d) >(r|t) >(r|d)|r|grep "$1"পাশাপাশি কাজ করা উচিত।
ডেনিস

আমি অন্য কিছু পরীক্ষা করে দেখিনি, তবে আমি চেষ্টা করার পরে প্রশ্নে দুটি পরীক্ষার কেস চেক আউট হয়েছে।
ডেনিস

@ ডেনিস নিস - হ্যাঁ এটি এখন কাজ করে। আমি মার্টিনের সাথে যাচাই করেছিলাম - তিনি চাইছেন তিনিই -qথাকুন।
ডিজিটাল ট্রমা

5

সি, 163

f(char*h,char*n){int i,j,d,p,y=0,l=strlen(h),w=strchr(h,10)-h+1;for(i=l*9;i--;y+=d&&!n[j]){p=i/9;d=i%9/3*w-w+i%3-1;for(j=0;p>=0&p<l&h[p]==n[j];j++)p+=d;}return y;}

গ্রিডটির পুনঃব্যবস্থাপনা নয়, আমি প্রতিটি প্রারম্ভিক চিঠিটি প্রতিটি দিকেই সহজভাবে চেষ্টা করি এবং আমি গ্রিডটি চালা না করা বা কোনও মিল খুঁজে না পাওয়া পর্যন্ত চলি।

আমি একটি সি স্ট্রিং একটি শূন্য বাইটে সমাপ্ত হওয়ার সুযোগটি গ্রহণ করি। গ্রিডে কোনও শূন্য বাইট না থাকায় সর্বদা একটি মিল নেই। তবে যদি শূন্য বাইটে মিল না পাওয়া যায় তবে আমরা জানি যে আমরা অনুসন্ধানের স্ট্রিংয়ের শেষটি খুঁজে পেয়েছি এবং এটি ম্যাচ হিসাবে রেকর্ড করেছি।

একটি পরীক্ষা প্রোগ্রামে নিরপেক্ষ

char h[]="WVERTICALL\nROOAFFLSAB\nACRILIATOA\nNDODKONWDC\nDRKESOODDK\nOEEPZEGLIW\nMSIIHOAERA\nALRKRRIRER\nKODIDEDRCD\nHELWSLEUTH\n";

f(char*h,char*n){                                   //haystack,needle
  int i,j,d,p,y=0,l=strlen(h),w=strchr(h,10)-h+1;   //l=length of whole grid. w=width of row, including terminal newline ASCII 10
  for(i=l*9;i--;){                                  //for each start letter and direction
    p=i/9;                                          //pointer to start letter
    d=i%9/3*w-w+i%3-1;                              //9 possible values of direction vector {-w,0,w}+{-1,0,1}
    for(j=0;p>=0&p<l&h[p]==n[j];j++)p+=d;           //walk p in the direction defined by d until we walk off the top or bottom of the grid or a mismatch is fount
    y+=d&&!n[j];                                    //if we got all the way to the terminal 0, record it as a hit. If d=0, don't record as this is an invalid direction.
  }
  return y;   
}

main(int c, char**v){
  printf("%d",f(h,v[1]));  
}

আউটপুট

নোট করুন যে ফাংশনটি গ্রিডে অনুসন্ধান করা স্ট্রিংয়ের মোট সংখ্যার সংখ্যা প্রদান করবে। এভাবে জন্য ODএটা ফেরৎ 6. কোন ঘটনা পাওয়া যায় এটা ফেরৎ 0 যা সি একমাত্র falsy মান পরিবর্তন করা হয় তাহলে y|=d*!n[j]একটি অক্ষর সংরক্ষণ কিন্তু এই কার্যকারিতা হারাবে।

$ ./a UNICORN
0

$ ./a CODEGOLF
0

$ ./a WordSearch
0

$ ./a RANDOM
1

$ ./a WORDSEARCH
1

$ ./a VERTICAL
1

$ ./a HORIZONTAL
1

$ ./a WIKIPEDIA
1

$ ./a TAIL
1

$ ./a OD
6

5

সি # - 218 197 186 বাইট

সি # ফাংশন যা 2 টি স্ট্রিং নেয়, অনুসন্ধানের জন্য প্রথম শব্দ, পরে \nলাইনগুলির সাথে গ্রিড লাইনের মধ্যে ফিড ( ) দেয়। বিষয়গুলি এখন মরিয়া হয়ে উঠছে ... আসলে এতটাই মরিয়া যে আমার আগের সম্পাদনাটি কাজ করে নি!

গল্ফ কোড:

bool F(string D,string S){int l=S.Length,i=l*13,r,p;for(S+="\n";i-->l*5;i=r<0?r:i)for(r=D.Length,p=i%l;p>-1&p<l&r-->0&&D[r]==S[p];p+=(S.IndexOf('\n')+1)*(i/l%9/3-1)+i/l%3-1);return i<0;}

পরীক্ষার কোড সহ কম গল্ফড:

class P
{
    static void Main()
    {
        System.Console.WriteLine(new P().F(System.Console.ReadLine(),System.Console.In.ReadToEnd())?"Truthy":"Falsy"); // because why not
    }

    bool F(string D,string S)
    {
        int l=S.Length,i=l*13,r,p;

        for(S+="\n";i-->l*5;i=r<0?r:i) // for each cell/direction
            for(r=D.Length,p=i%l;p>-1&p<l&r-->0&&D[r]==S[p];p+=(S.IndexOf('\n')+1)*(i/l%9/3-1)+i/l%3-1); // test against string (backwards)

        return i<0;
    }
}

4

হাস্কেল - 173

সরাসরি গ্রিডে অনুসন্ধান করার পরিবর্তে আমি গ্রিডকে বিভিন্ন উপায়ে রূপান্তর করি এবং নতুন গ্রিডের প্রতিটি সারিটির সাথে শব্দটির সাথে মিল রাখি।

উদাহরণ স্বরূপ,

G1    G2    G3       G4   G5

abcd  aA1   abcd     a..  ..1
ABCD  bB2   .ABCD    bA.  .A2
1234  cC3   ..1234   cB1  aB3
      dD4            dC2  bC4
                      D3  cD
                       4  d

জি 1, জি 2, জি 4 এবং জি 5 এর প্রতিটি সারিতে শব্দটি অনুসন্ধান করুন, তারপরে আমাদের কাজ শেষ হয়েছে। নোট করুন যে জি 3 ব্যবহার করা হয়নি, আমি এটি এখানে কেবল উদাহরণের জন্য পোস্ট করি।

সামনের দিকে এবং পিছনে সন্ধান করতে অনুরূপ ধারণা প্রয়োগ করা হয়: কেবল আসল শব্দ এবং বিপরীত শব্দটি অনুসন্ধান করুন।

সুতরাং এখন আমরা 8 টি দিক অনুসন্ধান করেছি। এখানে কোডটি, যার সঠিকতা অন্য স্ক্রিপ্ট দ্বারা যাচাই করা হয়েছিল ।

import Data.List
v=reverse
t=transpose
y=any
d r=zipWith(++)(scanr(\_->('\n':))[]r)r
g r w=y(y$y((==w).take(length w)).tails)[r,t r,t.d$r,t.d.v$r]
f r w=y(g(lines r))[w,v w]

ফাংশনটি fআমরা যা চাই তা এবং এর যুক্তিটি rআয়তক্ষেত্রের স্ট্রিং, wএটি অনুসন্ধানের শব্দ।


4

পাইথন 2 - 246 259 275 308 298 297 294 313 322

w,s=input()
r=range
d='\n'
I=''.join
w=w.split(d)
t,u=len(w),len(w[0])
v=d.join([I(x)for x in zip(*w)]+[d]+[I([w[i+j][i]for i in r(min(u,t-j))])+d+I([w[i][i+j]for i in r(min(t,u-j))])for j in r(max(t,u))]+[d]+w)
print s in v or s[::-1]in v

মুদ্রণ এবং সংযুক্ত সংজ্ঞা নির্ধারণের ক্ষেত্রে কিছু সহায়তার জন্য উইলকে ধন্যবাদ।

গল্ফ স্পেসগুলি সঠিকভাবে মনে করিয়ে দেওয়ার জন্য ভূগর্ভস্থ রেলপথকে ধন্যবাদ; পি

ডিলিমিটার হিসাবে ',' ব্যবহার করার জন্য খারাপ ম্যাচের জন্য স্থির।

স্পষ্টতই গল্ফের সর্বোত্তম উপায় হ'ল কয়েক হাজার অনুভূমিক স্ক্রোলিং।

যেমন ইনপুট হোয়াইটস্পেস ঠুং সম্পর্কে newline সীমায়িত উদ্ধৃতির মধ্যে লাইন: "WVERTICALL \ nROOAFFLSAB \ nACRILIATOA \ nNDODKONWDC \ nDRKESOODDK \ nOEEPZEGLIW \ nMSIIHOAERA \ nALRKRRIRER \ nKODIDEDRCD \ nHELWSLEUTH", "এলোপাথাড়ি"


1
L=len;J=''.joinইত্যাদি এবং print any(s in(v,d,w,r...))? আমি একই লাইন বরাবর যাচ্ছিলেন যখন দেখলাম আপনি পোস্ট :)
উইল

@ উইল সাহায্যের জন্য ধন্যবাদ! লেনের ব্যয় নির্ধারণের জন্য এটি যতটা অক্ষর সাশ্রয় করে ঠিক ততটাই ব্যয় হয় এবং আমি কীভাবে সর্বাধিকভাবে যোগদানের সংজ্ঞা দিতে পারি তা সম্পর্কে নিশ্চিত নই (কিছুকে কমা রয়েছে), তাই আমি এটি কিছুটা করে করব।
FryAmTheEggman

আপনার যে কোনও জায়গাতে )বা ]তারপরে কোনও স্থান অনুসরণ করা যায় না কেন আপনি স্থানটি নিতে পারেন।
আন্ডারগ্রাউন্ডোমোনাইল

2

এপিএল (ডায়ালগ ক্লাসিক) , 44 বাইট

1∊⍞⍷↑{⍉0,⍵,↑(0,⊢)\↓0,⍵}¨{⍉⌽⍵}\4⍴⊂↑a⊆⍨a≠⊃⌽a←⎕

এটি অনলাইন চেষ্টা করুন!


উম, আমি দুঃখিত, তবে মনে হচ্ছে আপনি এখানে এর মতো ইনপুট পেতে পারেন না, এটি \nআলাদা করা দরকার ( ⎕TC[2]এটি পৃথককারী হিসাবে রয়েছে)।
এরিক দি আউটগল্ফার

@ এরিকথ আউটগলফার ওহ ক্রপ ... আমি পরে এটি ঠিক করব। ধন্যবাদ।
এনজিএন

এখন ঠিক করা হয়েছে, দুর্ভাগ্যক্রমে অনেক দীর্ঘ
ngn

0

জে , 60 53 বাইট

<@[e.[:,[:(;|.)@>[:<\\.@>[:(<"1,</.)@>@(;|.@|:)[;.2@]

এটি অনলাইন চেষ্টা করুন!

কোনও নতুন লাইন থাকে না এমন জন্য প্রথম ইনপুট প্রয়োজন।

ব্যাখ্যা:

linkrotate=: ;|.@|:     NB. link with itself rotated 90° ccw
infixes   =: <\\.       NB. list of boxes containing the infixes
lines     =: <"1 , </.  NB. horizontal and diagonal lines, boxed
linkrev   =: ;|.        NB. link with itself reversed
appearin  =: <@[ e. [: , [: linkrev@> [: infixes@> [: lines@>@linkrotate [;.2@]

এটি অনলাইন চেষ্টা করুন!

হুক দরকারী।


মনে হচ্ছে যে এই খুব কাজ করে। (51 বাইট)
ব্যবহারকারী 202729

0

জেলি , 16 বাইট

কোডটির মূল হিসাবে এই 16 বাইটের 15 টির সাথে সম্পর্কিত (সম্ভবত একটি সদৃশ) একটি চ্যালেঞ্জ সমাধান করেছেন ...

ỴZU$3С;ŒD$€Ẏw€Ẹ

একটি ডায়াডিক লিঙ্ক বামে অক্ষরের একটি তালিকা এবং ডানদিকে অক্ষরের একটি তালিকা গ্রহণ করে যা পাওয়া গেলে 1 এবং যদি পাওয়া যায় না তবে 0 প্রদান করে।

এটি অনলাইন চেষ্টা করুন!

কিভাবে?

ZU$3С;ŒD$€Ẏw€Ẹ - Link: words, grid
   3С          - repeat three times and collect the results (inc input):
  $             -   last two links as a monad:
Z               -     transpose
 U              -     upend     (together these rotate by a quarter)
          €     - for €ach:
         $      -   last two links as a monad:
       ŒD       -     get forward-diagonals
      ;         -     concatenate
           Ẏ    - tighten (to get all the runs across the grid) 
             €  - for €ach run:
            w   -   sublist-index (0 if not found)
              Ẹ - any truthy? (i.e. was the word found?)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.