শব্দ অনুসন্ধান সহায়ক


12

আমি সম্প্রতি শব্দ অনুসন্ধান করছেন করেছি, এবং আমি এটা হবে , যাতে অনেক সহজ যদি সব শব্দের পড়া বাম-থেকে-ঠিক আছে। তবে সব লাইনে আবার লিখতে অনেক বেশি প্রচেষ্টা লাগে! সুতরাং আমি সাহায্য করতে কোড গল্ফার তালিকাভুক্ত করছি।

(অস্বীকৃতি: উপরের গল্পটি দূর থেকে সঠিক হতে পারে বা নাও হতে পারে))

আপনার কোডটি একটি আয়তক্ষেত্রাকার গ্রিড নেবে এবং উভয় দিকেই এর মধ্য দিয়ে সমস্ত লাইন আউটপুট দেবে।

আউটপুটে গ্রিডের সমস্ত 8 টি আবর্তন থাকতে হবে (কার্ডিনালস এবং প্রধান ত্রিভুজ), উপরে থেকে নীচে, বাম থেকে ডানদিকে 'পঠিত'। (এর অর্থ হ'ল প্রতিটি "সারি" নকল হবে - একবার এগিয়ে এবং একবার পিছনের দিকে))

লাইন বিভাগগুলি স্থান বা লাইন বিরতি হতে পারে। যদি আপনি শূন্যস্থানগুলি চয়ন করেন তবে গ্রিড ঘূর্ণন বিভাগগুলি অবশ্যই লাইন ব্রেক হতে হবে; অন্যথায়, গ্রিড ঘূর্ণন বিভাগ দুটি লাইন বিরতি হতে হবে।

উদাহরণ ইনপুট (অক্ষরের অ্যারের হিসাবে নেওয়া, মাল্টলাইন স্ট্রিং, বা অন্যান্য যুক্তিসঙ্গত ফর্ম্যাট)

ABCDE
FGHIJ
KLMNO
PQRST

উদাহরণ আউটপুট (বিভাগগুলির জন্য প্রথম বিকল্প ব্যবহার করে)

ABCDE FGHIJ KLMNO PQRST
E DJ CIO BHNT AGMS FLR KQ P
EJOT DINS CHMR BGLQ AFKP
T OS JNR EIMQ DHLP CGK BF A
TSRQP ONMLK JIHGF EDBCA
P QK RLF SMGA TNHB OIC JD E
PKFA QLGB RMHC SNID TOJE
A FB KGC PLHD QMIE RNJ SO T

যতক্ষণ আটটি কার্ডিনাল এবং প্রাথমিক আন্তঃ কার্ডিনাল একবারে করা হয় ততক্ষণ আবর্তনের ক্রম "রিড অফ" হয়ে যায়।

এটি , তাই সংক্ষিপ্ততম কোড জিততে পারে। স্ট্যান্ডার্ড লুফোলস প্রযোজ্য।


গ্রিডে কেবল বড় হাতের অক্ষর রয়েছে বা এটি পুরো মুদ্রণযোগ্য এএসসিআইআই হতে পারে?
ডেনকার

প্রায় ডুপ্লিকেট (ত্রিভুজ ছাড়াই) কোডগলফ.স্ট্যাকেক্সচেঞ্জ
ডিজিটাল ট্রমা

@ ডিজিটালট্রামা: না, সত্যিই নয় - এই আপনাকে কোনও শব্দ খুঁজে পেতে জিজ্ঞাসা করে না।
দেউসোভি

উত্তর:


4

পাইথন 3, 181 বাইট

def f(s):
 for k in [1,0]*4:
  b=list(zip(*[([' ']*(len(s)-1-n)*k+list(i)+[' ']*n*k)[::-1] for n,i in enumerate(s)]))
  print([' '.join(i).replace(' ','') for i in b])
  if k==0:s=b

ব্যাখ্যা

def f(s):
 for k in [0]*4:                  # loop 4 times, we don't need the index so [0]*4 is shorter than range(4)
  l=len(s)-1                      # number of line

  # rotation of 45°
  a=[(['.']*(l-n)+list(i)+['.']*n)[::-1] for n,i in enumerate(s)]
  # tranform matrice :
  #  ABC      ..ABC      CBA..
  #  DEF  --> .DEF.  --> .FED.
  #  GHI      GHI..      ..IHG
  b=list(zip(*a))                 # transpose 
  #  CBA..      C..
  #  .FED.  --> BF.
  #  ..IHG      AEI
  #             .DH
  #             ..G
  print(' '.join(''.join(i).replace('.','') for i in b))

  # rotation of 90°
  a=[(list(i))[::-1] for n,i in enumerate(s)]
  # tranform matrice :
  #  ABC      CBA
  #  DEF  --> FED
  #  GHI      IHG
  b=list(zip(*a))                 # transpose 
  #  CBA       CFI
  #  FED   --> BEH
  #  IHG       ADG
  print(' '.join(''.join(i) for i in b))
  s=b

ফলাফল

>>> f(['ABCDE','FGHIJ','KLMNO','PQRST'])
['E', 'DJ', 'CIO', 'BHNT', 'AGMS', 'FLR', 'KQ', 'P']
['EJOT', 'DINS', 'CHMR', 'BGLQ', 'AFKP']
['T', 'OS', 'JNR', 'EIMQ', 'DHLP', 'CGK', 'BF', 'A']
['TSRQP', 'ONMLK', 'JIHGF', 'EDCBA']
['P', 'QK', 'RLF', 'SMGA', 'TNHB', 'OIC', 'JD', 'E']
['PKFA', 'QLGB', 'RMHC', 'SNID', 'TOJE']
['A', 'FB', 'KGC', 'PLHD', 'QMIE', 'RNJ', 'SO', 'T']
['ABCDE', 'FGHIJ', 'KLMNO', 'PQRST']

>>> f(['ABCDEF','GHIJKL','MNOPQR','STUVWX'])
['F', 'EL', 'DKR', 'CJQX', 'BIPW', 'AHOV', 'GNU', 'MT', 'S']
['FLRX', 'EKQW', 'DJPV', 'CIOU', 'BHNT', 'AGMS']
['X', 'RW', 'LQV', 'FKPU', 'EJOT', 'DINS', 'CHM', 'BG', 'A']
['XWVUTS', 'RQPONM', 'LKJIHG', 'FEDCBA']
['S', 'TM', 'UNG', 'VOHA', 'WPIB', 'XQJC', 'RKD', 'LE', 'F']
['SMGA', 'TNHB', 'UOIC', 'VPJD', 'WQKE', 'XRLF']
['A', 'GB', 'MHC', 'SNID', 'TOJE', 'UPKF', 'VQL', 'WR', 'X']
['ABCDEF', 'GHIJKL', 'MNOPQR', 'STUVWX']

একটি ক্লিনার আউটপুট (189 বাইট) সহ

j=' '.join
def f(s):
 for k in [1,0]*4:
  b=list(zip(*[([' ']*(len(s)-1-n)*k+list(i)+[' ']*n*k)[::-1] for n,i in enumerate(s)]))
  print(j(j(i).replace(' ','') for i in b))
  if k==0:s=b

>>> f(['ABCDE','FGHIJ','KLMNO','PQRST'])
E DJ CIO BHNT AGMS FLR KQ P
EJOT DINS CHMR BGLQ AFKP
T OS JNR EIMQ DHLP CGK BF A
TSRQP ONMLK JIHGF EDCBA
P QK RLF SMGA TNHB OIC JD E
PKFA QLGB RMHC SNID TOJE
A FB KGC PLHD QMIE RNJ SO T
ABCDE FGHIJ KLMNO PQRST

আপনি কীভাবে ম্যাট্রিক্স ট্রান্সফর্ম করবেন? (কোড ব্লক 2)
ক্যালকুলেটরফলাইন

@ ক্যাটস আরে ফ্লুফি আমি ব্যাখ্যাগুলিতে আরও একটি পদক্ষেপ যুক্ত করেছি
এরওয়ান

আমি বেশ নিশ্চিত যে ট্রান্সফর্ম কোনও শব্দ নয়। (রূপান্তর?)
ক্যালকুলেটরফ্লাইন

@ ক্যাটস আরেফ্ল্ফী - ঠিক আছে, আমি মনে করি যে স্পষ্টই ছিল যে ইংরেজি আমার মাতৃভাষা নয়
এরওয়ান

খুব সুন্দর উত্তর!
টিমটেক

1

এমএটিএল , 40 বাইট

t!tP!tP!GXKZyqXI"IZ}w_w2$:"K@2$Xd!]K!XKx

মাতলাব স্বরলিপিতে ইনপুটটি 2D চর অ্যারে:

['ABCDE'; 'FGHIJ'; 'KLMNO'; 'PQRST']

আউটপুটে পৃথক লাইনের প্রতিটি "শব্দ" রয়েছে।

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

t          % input 2D char array. Duplicate. The original copy will produce
           % the words left to right when displayed
!          % transpose. This will produce the words up to down
tP!        % duplicate, flip upside down, transpose. This will produce the
           % words right to left
tP!        % Same. This will produce the words down to up 
GXK        % push input again. Copy to clipboard K
Zy         % get size (length-2 vector; [4 5] in the example)
q          % decrement by 1 (gives  [3 4] in the example)
XI         % copy to clipboard I
"          % loop: do this twice, consuming the decremented length-2 vector
  I        %   push decremented size vector again
  Z}       %   split into its two elements (pushes 3 and 4 in the example)
  w_w      %   swap, negave, swap (results in -3, 4 in the example)
  2$:      %   binary range: indices of diagonals  ([-3 -2 -1 0 1 2 3 4]
           %   in the first iteration in the example, [-4 -3 -2 -1 0 1 2 3]
           %   in the second)
  "        %   for each
    K      %     push input (first iteration) or its tranposed version (second)
    @      %     push index of diagonal
    2$Xd!  %     extract that diagonal as a row vector
  ]        %   end for each
  K!XKx    %   update clipboard K with transposed version for next iteration
           % end loop. Display
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.