m | Y bR |는 We | iRd이다. F (o) RT (h) E La | sT fi (v) e YE | ars O | R s | o, (I) ha (a) lf wh | En의 C (u) T wO | rds (I) s (e) e Th | em. 내가 시작하기 시작했을 때, 그것은 거의 노력을 기울였다-B (u) TI 거의 cou (l) dn't N (o) T d | o 그것. N (o) w, 나는 머리 뒤로, d (n) d는 거의 그것을 보지 못했다. 그러나 나는 이것이 큰 도전이라고 생각했다.
정의
이 도전을 위해, 각 문자는 산세 리프 글꼴로 너비를 판단하여 점수를 매 깁니다. 이 너비를 사용하여 단어를 같은 너비의 두 반쪽으로 자릅니다. 이 챌린지에서 사용할 문자는 소문자와 대문자, 아포스트로피 및 하이픈으로 된 알파벳입니다.
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
설명과 테스트 사례에서 |단어를 반으로 잘 나눌 수있는 위치를 나타냅니다. (그리고 )편지의 양쪽에 그 편지가 깨끗한 분할을 만들 반으로 분할됩니다 것을 나타냅니다.
입력
입력은 단일 "단어"로 구성됩니다 (사전에있을 필요는 없음). 원하는 텍스트 입력 (문자열, 문자 배열 등)에이 단어를 사용할 수 있습니다. 이 단어에는 문자 ', 및 -(위 표 참조) 만 포함됩니다 . 이 단어로 무엇을하는지 (아래 참조), 입력 사례는 개발자의 판단에 따릅니다. 필요한 경우 후행 줄 바꿈이 허용됩니다.
작업
모든 입력 형식 (가능한 모든 대문자 또는 소문자 위치의 모든 문자)을 순열하십시오. 예를 들어 input it's의 경우 아래는 모든 순열입니다.
it's
it'S
iT's
iT'S
It's
It'S
IT's
IT'S
단어의 순열을 반으로 나누려면 단어의 한쪽에있는 점이 단어의 다른쪽에있는 점과 같아야합니다. 그러나 두 짝수 부분 사이에 편지가 붙어 있으면 편지를 반으로 잘릴 수도 있습니다.
"반"이 문자열의 절반으로 이동했다는 것을 의미하지는 않습니다. "반"은 양쪽의 점이 동일 함을 의미합니다.
예 :
W5 점입니다. i1 포인트입니다. 순열 Wiiiii을 반으로 나누면의 W | iiiii양쪽에 5 개의 점이 생깁니다 |.
T3 점입니다. 순열 TTTT을 반으로 나누면의 TT | TT양쪽에 6 개의 점이 생깁니다 |.
w4 점입니다. a는 3 점입니다. 순열 waw을 반으로 나누면 양변 에 w (a) w5.5 점이 붙습니다. 점은 반으로 나뉘어져 a있으므로 양쪽으로 분산됩니다 a.
산출
출력값은 입력 값의 고유 순열 수의 정수이며 정수로 반으로 나눌 수 있습니다. 필요한 경우 후행 줄 바꿈이 허용됩니다.
테스트 사례
테스트 사례에 대한 입력의 모든 유효한 순열을 출력합니다. 이는 귀하를위한 사양의 일부가 아님을 기억하십시오.
내 중간 출력에서 숫자는 위의 문자의 포인트 값을 나타내므로 출력을 조금 더 쉽게 볼 수 있습니다.
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
승리
이것은 code-golf 이므로 바이트 단위의 최단 답변이 이깁니다. 모든 테스트 사례 (최대 10 자까지의 모든 입력)를 적절한 시간 내에 출력 할 수 있어야합니다. 인위적으로 뚜껑을 닫지 마십시오.
하사품
이것이 가능한 영역인지는 모르겠습니다. 그러나 당신은 골퍼입니다-당신은 담당자를 위해 무엇이든 할 것입니다. 나는 antidisestablishmentarianism평균 컴퓨터 (일명 광산)에서 15 초 이내에 올바른 출력을 출력하는 프로그램에 대해 200 회 현상금을 제공합니다 (기본적으로 불가능한 것처럼이 현상금 조건이 충족되면 시작합니다 ). 이 테스트 케이스는 어떤 식 으로든 하드 코딩되어서는 안됩니다.
@DigitalTrauma가 내 현상금을 분쇄하여 2 초 안에 올랐습니다. 여기 에서 그의 답변을 확인 하십시오 .
antidisestablishmentarianism(골프가 아닌)의 첫 번째 숫자 는 83307040(그리고 모든 테스트 사례와 일치)이지만 랩톱에서 ~ 37 초가 걸립니다 (Python이라고 생각합니다). 누구도 그것을 계산합니까?