Đọc một ô chữ


11

Lấy cảm hứng từ câu hỏi này về việc đóng gói vào định dạng này.

Thỉnh thoảng tôi thấy một ô chữ hoàn thành và giống như tôi, tôi không thể bận tâm tìm hiểu các giải pháp cho các manh mối thực sự là gì.

Đầu vào:

  • Chuỗi 2D (bất kỳ định dạng, phân tách dòng mới, danh sách 2d, v.v.)
  • Hình vuông trống sẽ được thể hiện bằng một (ký tự không gian)
  • Mỗi hình vuông khác sẽ nằm trong bảng chữ cái viết thường.
  • Bạn có thể cho rằng đầu vào sẽ được đệm bằng khoảng trắng để tạo thành hình chữ nhật

Đầu ra:

  • Mỗi từ được tìm thấy
    • Bạn phải tìm kiếm các từ dọc và xuống
    • Các từ sẽ dài ít nhất hai chữ cái
    • Nếu có các từ trùng lặp, bạn phải xuất chúng cho mỗi lần chúng xuất hiện
  • Bạn không phải thực hiện bất kỳ xác nhận
  • Các từ có thể được xuất ra theo thứ tự bất kỳ
  • Không có quy tắc định dạng nghiêm ngặt

Các trường hợp thử nghiệm:

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

Câu trả lời:


8

Pyth - 11 10 8 7 byte

đã lưu một byte nhờ @issacg.

t#cjsCB

Hãy thử trực tuyến tại đây .

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

@Maltysen Tuyệt vời.
Leaky Nun

1
Pyth thắng. Như mọi khi.
Leaky Nun

1
Bạn có thể lưu một byte bằng cách loại bỏ d, điều này làm cho việc jtham gia vào các dòng mới, vẫn bị cắt nhỏ bởic ... )
isaacg

@isaacg Thật tuyệt, cảm ơn
Maltysen

2

CJam, 14 byte

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

Một khối không tên dự kiến ​​một danh sách các chuỗi (đệm) trên đầu ngăn xếp và để lại một danh sách các từ thay thế.

Kiểm tra nó ở đây.

Giải trình

_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

JavaScript (ES6), 83 byte

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

0

Bình thường , 18 byte

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

Hãy thử trực tuyến!

Đầu vào mẫu:

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

Đầu ra mẫu:

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

Làm thế nào nó hoạt động:

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

Haskell, 58 byte

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

Ví dụ sử dụng: f ["pies"," not"," no","wasp"]-> ["pies", "not", "no", "wasp", "in", "eons", "stop"].

Cách thức hoạt động: chia từng dòng của đầu vào và chuyển vị của nó tại khoảng trắng thành một từ danh sách duy nhất. Giữ những cái phù hợp (_:_:_), tức là có ít nhất hai chữ cái.


0

C ++ 14, 209 207 201 byte

Số lượng byte rất cao ... nhưng ồ. Ma trận chuyển vị, tách chuỗi. Dễ dàng. Quá tệ, không có chức năng riêng để chuyển vị

[](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+' ':"");}}

Ung dung:

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+' ':"");
  }
}

Cách sử dụng (lưu ý bạn phải thực thi phần đệm như trạng thái câu hỏi):

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.