m | Y bR | ain là Chúng tôi | iRd. F (o) RT (h) E La | sT fi (v) e YE | ars O | R s | o, (I) ha | ve C (u) T wO | rds trong h (a) lf wh | En (I) s (e) e Th | em. Khi tôi bắt đầu Làm | nó, nó thành | oK a meN | TaL nỗ lực - B (u) TI gần như cou (l) không N (o) T d | o nó. N (o) w, tôi d | o nó ở phía sau đầu của tôi, a (n) d khó ev | en không | iCe nó. Tuy nhiên, tôi nghĩ rằng wo | uld này tạo ra một thách thức lớn.
Các định nghĩa
Đối với thử thách này, mỗi chữ cái được cho một điểm số, dựa trên đánh giá của tôi về độ rộng của nó trong phông chữ sans-serif. Bạn sẽ sử dụng chiều rộng này để cắt một từ thành hai nửa chiều rộng bằng nhau. Các ký tự mà thử thách này sẽ sử dụng là bảng chữ cái trong các chữ thường và chữ hoa, dấu nháy đơn và dấu gạch nối.
Width Characters
1 i l I '
2 f j r t -
3 a b c d e g h k n o p q s u v x y z
4 m w A B C D E F G H J K L N O P Q R S T U V X Y Z
5 M W
Đối với các giải thích và trường hợp kiểm tra của tôi, |
biểu thị vị trí trong đó một từ có thể được phân chia rõ ràng một nửa. (
và )
ở hai bên của một lá thư chỉ ra rằng bức thư đó sẽ được chia làm đôi để tạo ra một sự phân chia rõ ràng.
Đầu vào
Đầu vào sẽ bao gồm một "từ" duy nhất (không bắt buộc phải có trong từ điển). Bạn có thể lấy từ này trong bất kỳ kiểu nhập văn bản nào bạn muốn (Chuỗi, mảng char, v.v.). Từ này sẽ chỉ chứa các chữ cái '
, và -
(xem bảng trên). Vì những gì bạn sẽ làm với từ này (xem bên dưới), trường hợp đầu vào được để lại theo quyết định của nhà phát triển. Trailing newlines cho phép nếu cần thiết.
Nhiệm vụ
Hoán vị thông qua tất cả các hình thức của đầu vào (tất cả các chữ cái ở tất cả các vị trí chữ hoa hoặc chữ thường có thể). Ví dụ, đối với đầu vào it's
, bên dưới là tất cả các hoán vị:
it's
it'S
iT's
iT'S
It's
It'S
IT's
IT'S
Để chia một hoán vị của một từ, các điểm ở một bên của từ phải giống với các điểm của phía bên kia của từ. Tuy nhiên, nếu một chữ cái bị kẹt ở giữa hai phần chẵn, bạn cũng có thể cắt một chữ sạch một nửa.
Xin lưu ý rằng "một nửa" không có nghĩa là bạn đã di chuyển được một nửa vào chuỗi. "Một nửa" có nghĩa là các điểm ở cả hai bên bằng nhau.
Ví dụ:
W
được 5 điểm. i
là 1 điểm. Chia Wiiiii
một nửa hoán vị sẽ dẫn đến W | iiiii
, với 5 điểm ở mỗi bên của |
.
T
được 3 điểm. Việc chia TTTT
một nửa hoán vị sẽ cho kết quả TT | TT
, với 6 điểm ở mỗi bên của |
.
w
được 4 điểm. a là 3 điểm. Chia waw
một nửa hoán vị sẽ cho kết quả w (a) w
, với 5,5 điểm ở mỗi bên. Các điểm từ a
được phân phối cho cả hai bên, như a
được chia một nửa.
Đầu ra
Đầu ra của bạn là một số nguyên của số lượng hoán vị duy nhất của đầu vào có thể được chia làm đôi một cách sạch sẽ. Trailing newlines cho phép nếu cần thiết.
Các trường hợp thử nghiệm
Tôi sẽ xuất ra tất cả các hoán vị hợp lệ của đầu vào cho các trường hợp thử nghiệm. Hãy nhớ rằng đó không phải là một phần của thông số kỹ thuật cho bạn.
Trong đầu ra trung gian của tôi, các con số biểu thị giá trị điểm của chữ cái phía trên chúng, vì vậy đầu ra dễ hình dung hơn một chút.
Input: a
( a )
3
( A )
4
Output: 2
Input: in
Output: 0
Input: ab
A | B
4 4
a | b
3 3
Output: 2
Input: abc
A ( B ) C
4 4 4
A ( b ) C
4 3 4
a ( B ) c
3 4 3
a ( b ) c
3 3 3
Output: 4
Input: will
W ( I ) L l
5 1 4 1
W ( I ) l L
5 1 1 4
W ( i ) L l
5 1 4 1
W ( i ) l L
5 1 1 4
w I | L l
4 1 4 1
w I | l L
4 1 1 4
w i | L l
4 1 4 1
w i | l L
4 1 1 4
Output: 8
Input: stephen
S T E ( P ) H E N
4 4 4 4 4 4 4
S T E ( p ) H E N
4 4 4 3 4 4 4
S T E | p h e n
4 4 4 3 3 3 3
S T e ( P ) H E n
4 4 3 4 4 4 3
S T e ( P ) H e N
4 4 3 4 4 3 4
S T e ( P ) h E N
4 4 3 4 3 4 4
S T e ( p ) H E n
4 4 3 3 4 4 3
S T e ( p ) H e N
4 4 3 3 4 3 4
S T e ( p ) h E N
4 4 3 3 3 4 4
S t E ( P ) H e n
4 2 4 4 4 3 3
S t E ( P ) h E n
4 2 4 4 3 4 3
S t E ( P ) h e N
4 2 4 4 3 3 4
S t E ( p ) H e n
4 2 4 3 4 3 3
S t E ( p ) h E n
4 2 4 3 3 4 3
S t E ( p ) h e N
4 2 4 3 3 3 4
S t e ( P ) h e n
4 2 3 4 3 3 3
S t e p | H E N
4 2 3 3 4 4 4
S t e ( p ) h e n
4 2 3 3 3 3 3
s T E ( P ) H E n
3 4 4 4 4 4 3
s T E ( P ) H e N
3 4 4 4 4 3 4
s T E ( P ) h E N
3 4 4 4 3 4 4
s T E ( p ) H E n
3 4 4 3 4 4 3
s T E ( p ) H e N
3 4 4 3 4 3 4
s T E ( p ) h E N
3 4 4 3 3 4 4
s T e ( P ) H e n
3 4 3 4 4 3 3
s T e ( P ) h E n
3 4 3 4 3 4 3
s T e ( P ) h e N
3 4 3 4 3 3 4
s T e ( p ) H e n
3 4 3 3 4 3 3
s T e ( p ) h E n
3 4 3 3 3 4 3
s T e ( p ) h e N
3 4 3 3 3 3 4
s t E ( P ) h e n
3 2 4 4 3 3 3
s t E p | H E N
3 2 4 3 4 4 4
s t E ( p ) h e n
3 2 4 3 3 3 3
s t e P | H E N
3 2 3 4 4 4 4
s t e p | H E n
3 2 3 3 4 4 3
s t e p | H e N
3 2 3 3 4 3 4
s t e p | h E N
3 2 3 3 3 4 4
Output: 37
Input: splitwords
S P L I T | W O r d s
4 4 4 1 4 5 4 2 3 3
<snip>
s p l i t w | o R d S
3 3 1 1 2 4 3 4 3 4
Output: 228
Input: 'a-r
' a ( - ) R
1 3 2 4
' a | - r
1 3 2 2
Output: 2
Input: '''''-
' ' ' ( ' ) ' -
1 1 1 1 1 2
Output: 1
Chiến thắng
Đây là môn đánh gôn , vì vậy câu trả lời ngắn nhất bằng byte thắng. Bạn phải có khả năng xuất tất cả các trường hợp thử nghiệm (vì vậy, tất cả các đầu vào tối đa 10 ký tự) trong một khoảng thời gian hợp lý. Không giả tạo giới hạn đầu vào của bạn.
Tiền thưởng
Tôi không biết nếu điều này là trong khả năng. Tuy nhiên, bạn là người chơi gôn - bạn sẽ làm bất cứ điều gì cho đại diện. Tôi đang cung cấp tiền thưởng 200 rep (tôi sẽ bắt đầu ngay khi điều kiện tiền thưởng này được thực hiện, vì về cơ bản là không thể đối với tôi) cho một chương trình xuất ra đầu ra chính xác antidisestablishmentarianism
trong dưới 15 giây trên một máy tính trung bình (còn gọi là của tôi). Xin lưu ý rằng trường hợp thử nghiệm này không được mã hóa cứng theo bất kỳ cách nào.
@DigitalTrauma nghiền nát tiền thưởng của tôi, đến sau chưa đầy hai giây. Kiểm tra câu trả lời của anh ấy ở đây .
antidisestablishmentarianism
(không chơi gôn) là 83307040
(và khớp với tất cả các trường hợp kiểm tra) nhưng phải mất ~ 37 giây trên máy tính xách tay của tôi (nhớ rằng đó là Python). Bất cứ ai cũng có một tính cho nó?