Nhận dạng là mô tả trực quan của các giá trị băm, thường được tạo ra từ sự sắp xếp đối xứng của các hình dạng hình học. Hình đại diện Stack Exchange mặc định của bạn là một định danh. Thách thức này là về việc tạo ra "wordenticons" , các phiên bản nhận dạng dựa trên văn bản đơn giản áp dụng cho chuỗi các chữ cái viết thường, tức là các từ.
Thử thách
Viết chương trình hoặc hàm lấy chuỗi S và xuất wordenticon của nó. S được đảm bảo là không trống và chỉ chứa các ký tự chữ thường tiếng Anh az. Bạn có thể tùy ý giả sử S có một dòng mới.
Từ wordenticon của S sẽ là một lưới văn bản vuông với độ dài cạnh 2*length(S)
bao gồm khoảng trắng (
), thanh dọc, ( |
) và thanh ngang ( ―
).
Để tạo wordenticon của S, tạo thành một ô vuông trong đó mỗi cột tương ứng với một chữ cái S (theo thứ tự đọc từ trái sang phải bình thường) và mỗi hàng tương ứng với một chữ cái S (theo thứ tự đọc từ trên xuống dưới bình thường ).
Ví dụ: nếu S là food
lưới ban đầu của chúng ta trông giống như
food
f....
o....
o....
d....
nơi .
chỉ là một giữ chỗ.
Đối với mọi điểm trống (mọi .
) trong lưới:
- Nếu chữ cái cột xuất hiện trước chữ cái theo thứ tự bảng chữ cái, hãy thay thế
.
bằng|
. - Nếu chữ cái cột xuất hiện sau chữ cái theo thứ tự bảng chữ cái, hãy thay thế
.
bằng―
. - Nếu các chữ cái cột và hàng giống nhau, thay thế
.
bằng
Dưới đây là food
ví dụ sau mỗi bước sau:
Thêm
|
:food f...| o|..| o|..| d....
Thêm
―
:food f.――| o|..| o|..| d―――.
Thêm
food f ――| o| | o| | d―――
Để hoàn thành wordenticon, hãy xóa hàng và cột thừa có chứa các từ
――|
| |
| |
―――
sau đó phản chiếu toàn bộ sự vật theo chiều ngang
――||――
| || |
| || |
――― ―――
và cuối cùng phản chiếu nó một lần nữa theo chiều dọc
――||――
| || |
| || |
――― ―――
――― ―――
| || |
| || |
――||――
dẫn đến 2*length(S)
lưới văn bản có độ dài bên là wordenticon cuối cùng.
Ví dụ
Dưới đây là một số ví dụ wordenticon bổ sung. Lưu ý rằng các từ khác nhau có thể có các từ giống hệt nhau và một số từ có thể được tạo hoàn toàn bằng khoảng trắng (không may là markdown không muốn hiển thị các từ đó).
food
――||――
| || |
| || |
――― ―――
――― ―――
| || |
| || |
――||――
mood
――||――
| || |
| || |
――― ―――
――― ―――
| || |
| || |
――||――
foof
―― ――
| || |
| || |
―― ――
―― ――
| || |
| || |
―― ――
fool
――――――
| || |
| || |
|―― ――|
|―― ――|
| || |
| || |
――――――
a [2*2 grid of spaces]
to
||
― ―
― ―
||
it
――
| |
| |
――
tt [4*4 grid of spaces]
abc
――――
| ―― |
|| ||
|| ||
| ―― |
――――
and
――――
| || |
|― ―|
|― ―|
| || |
――――
but
――――
| || |
|― ―|
|― ―|
| || |
――――
you
||||
― ―― ―
―| |―
―| |―
― ―― ―
||||
bob
― ―
| || |
― ―
― ―
| || |
― ―
cat
|――|
― ―― ―
|| ||
|| ||
― ―― ―
|――|
cart
|――――|
― ―――― ―
|| ―― ||
||| |||
||| |||
|| ―― ||
― ―――― ―
|――――|
todo
||||||
― | | ―
―― ―― ――
― | | ―
― | | ―
―― ―― ――
― | | ―
||||||
mice
||||||
― |||| ―
―― ―― ――
――| |――
――| |――
―― ―― ――
― |||| ―
||||||
zyxw
||||||
― |||| ―
―― || ――
――― ―――
――― ―――
―― || ――
― |||| ―
||||||
banana
|―|―||―|―|
― ― ― ― ― ―
|| | || | ||
― ― ― ― ― ―
|| | || | ||
― ― ― ― ― ―
― ― ― ― ― ―
|| | || | ||
― ― ― ― ― ―
|| | || | ||
― ― ― ― ― ―
|―|―||―|―|
codegolf
――――――――――――――
| ||| |||| ||| |
|― ―――――――――― ―|
|―| ―――――――― |―|
|―|| ――||―― ||―|
| ||| |||| ||| |
|―|||― || ―|||―|
|―||――― ―――||―|
|―||――― ―――||―|
|―|||― || ―|||―|
| ||| |||| ||| |
|―|| ――||―― ||―|
|―| ―――――――― |―|
|― ―――――――――― ―|
| ||| |||| ||| |
――――――――――――――
programming
―||―||||||||||||―||―
| || |||||||||||| || |
―― |―||||||||||||―| ――
――― ―|―――― ――――|― ―――
| || |||||||||||| || |
――――― ―――――――――― ―――――
―――|―| |―||―| |―|―――
―――|―| |―||―| |―|―――
―――|―|―― ―||― ――|―|―――
―――|―|||| || ||||―|―――
――― ―|―――― ――――|― ―――
――― ―|―――― ――――|― ―――
―――|―|||| || ||||―|―――
―――|―|―― ―||― ――|―|―――
―――|―| |―||―| |―|―――
―――|―| |―||―| |―|―――
――――― ―――――――――― ―――――
| || |||||||||||| || |
――― ―|―――― ――――|― ―――
―― |―||||||||||||―| ――
| || |||||||||||| || |
―||―||||||||||||―||―
abcdefghijklm
――――――――――――――――――――――――
| ―――――――――――――――――――――― |
|| ―――――――――――――――――――― ||
||| ―――――――――――――――――― |||
|||| ―――――――――――――――― ||||
||||| ―――――――――――――― |||||
|||||| ―――――――――――― ||||||
||||||| ―――――――――― |||||||
|||||||| ―――――――― ||||||||
||||||||| ―――――― |||||||||
|||||||||| ―――― ||||||||||
||||||||||| ―― |||||||||||
|||||||||||| ||||||||||||
|||||||||||| ||||||||||||
||||||||||| ―― |||||||||||
|||||||||| ―――― ||||||||||
||||||||| ―――――― |||||||||
|||||||| ―――――――― ||||||||
||||||| ―――――――――― |||||||
|||||| ―――――――――――― ||||||
||||| ―――――――――――――― |||||
|||| ―――――――――――――――― ||||
||| ―――――――――――――――――― |||
|| ―――――――――――――――――――― ||
| ―――――――――――――――――――――― |
――――――――――――――――――――――――
Chấm điểm
Đây là code-golf , mã ngắn nhất tính bằng byte thắng. Tiebreaker đi đến câu trả lời trước đó.
Ghi chú
- Bất kỳ trường hợp nào của thanh ngang (
―
) trong mã của bạn có thể được tính là 1 byte thay vì 3 byte UTF-8 mà nó thực sự chiếm. (Tối đa mười trường hợp.) - Nếu muốn, bạn có thể sử dụng dấu gạch ngang thông thường (
-
) thay cho thanh ngang (―
). - Không được phép xóa hoặc thêm dấu cách trong các dòng của wordenticon (ngay cả khi hình dạng không thay đổi). Nó phải là một
2*length(S)
hình vuông chính xác chiều dài văn bản. - Từ đầu ra có thể tùy chọn có một dòng mới duy nhất.
programming
, and
và codegolf
nhưng bạn quên puzzles
...