m | Y bR | ain คือ We | iRd F (o) RT (h) E La | sT fi (v) e YE | ars O | R s | o, (I) ฮา | ve C (u) T wO | rds ใน h (a) lf wh | En (I) s (e) e Th | em เมื่อไหร่ | ฉันเริ่มทำ | ถึงมัน | ถึง | oK a meN | ความพยายามของ TaL - B (u) TI เกือบ cou (l) ไม่ N (o) T d | o มัน N (o) w, ฉัน d | o อยู่ด้านหลังศีรษะของฉัน, (n) d แทบจะไม่ได้ ev | en ไม่ | iCe มัน อย่างไรก็ตามฉันคิดว่าสิ่งนี้จะเป็นการท้าทายที่ยิ่งใหญ่
คำนิยาม
สำหรับความท้าทายนี้จดหมายแต่ละฉบับจะได้รับคะแนนตามการตัดสินความกว้างของฉันในแบบอักษร sans-serif คุณจะใช้ความกว้างนี้เพื่อตัดคำเป็นสองเท่าของความกว้างเท่ากัน ตัวละครที่จะใช้ความท้าทายนี้คือตัวอักษรในกรณีที่ต่ำกว่าและสูง apostrophe และยัติภังค์
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
สำหรับคำอธิบายและกรณีทดสอบของฉัน|หมายถึงตำแหน่งที่สามารถแบ่งคำออกเป็นครึ่ง ๆ ได้อย่างหมดจด (และ)ที่ด้านข้างของจดหมายระบุว่าจดหมายนั้นจะถูกแบ่งครึ่งเพื่อสร้างการแบ่งที่สะอาด
อินพุต
ข้อมูลที่ป้อนจะประกอบด้วย "คำเดียว" (ซึ่งไม่จำเป็นต้องอยู่ในพจนานุกรม) คุณสามารถใช้คำนี้ในสิ่งที่คุณต้องการป้อนข้อความ (String, อักขระอาร์เรย์ ฯลฯ ) คำนี้จะมีเพียงตัวอักษร'และ-(ดูตารางด้านบน) เนื่องจากสิ่งที่คุณจะทำกับคำนี้ (ดูด้านล่าง) กรณีของการป้อนข้อมูลจะขึ้นอยู่กับดุลยพินิจของนักพัฒนา ขึ้นบรรทัดใหม่ที่ได้รับอนุญาตหากจำเป็น
งาน
เปลี่ยนรูปผ่านอินพุตทุกรูปแบบ (ตัวอักษรทั้งหมดที่ตำแหน่งตัวพิมพ์ใหญ่หรือเล็กทั้งหมดที่เป็นไปได้) ตัวอย่างเช่นสำหรับอินพุตit'sด้านล่างเป็นวิธีเรียงสับเปลี่ยนทั้งหมด:
it's
it'S
iT's
iT'S
It's
It'S
IT's
IT'S
ในการแยกการเรียงสับเปลี่ยนของคำในครึ่งหนึ่งคะแนนในอีกด้านหนึ่งของคำจะต้องเท่ากับจุดของอีกด้านหนึ่งของคำ อย่างไรก็ตามหากจดหมายติดอยู่ระหว่างสองส่วนคุณสามารถตัดจดหมายได้ครึ่งส่วน
โปรดทราบว่า "ครึ่ง" ไม่ได้หมายความว่าคุณได้ย้ายไปครึ่งทางในสตริง "ครึ่ง" หมายความว่าคะแนนของทั้งสองฝ่ายเท่ากัน
ตัวอย่าง:
Wคือ 5 คะแนน iคือ 1 จุด แยกการเปลี่ยนลําดับWiiiiiในช่วงครึ่งปีจะส่งผลให้W | iiiiiมี 5 |คะแนนในแต่ละด้านของ
Tคือ 3 คะแนน แยกการเปลี่ยนลําดับTTTTในช่วงครึ่งปีจะส่งผลให้TT | TTมี 6 |คะแนนในแต่ละด้านของ
wคือ 4 คะแนน a คือ 3 คะแนน การแยกการเปลี่ยนแปลงwawในครึ่งจะส่งผลw (a) wกับ 5.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 ตัวอักษร) ในเวลาที่เหมาะสม อย่าปิดกั้นการป้อนข้อมูลของคุณ
เงินรางวัล
ฉันไม่รู้ว่าสิ่งนี้อยู่ในขอบเขตของความเป็นไปได้หรือไม่ อย่างไรก็ตามคุณเป็นนักกอล์ฟคุณจะทำทุกอย่างเพื่อตัวแทน ฉันกำลังเสนอเงินรางวัล 200 rep (ฉันจะเริ่มต้นเมื่อเงื่อนไขความสมบูรณ์นี้เป็นจริงตามที่ดูเหมือนเป็นไปไม่ได้สำหรับฉัน) สำหรับโปรแกรมที่ให้ผลลัพธ์ที่ถูกต้องantidisestablishmentarianismภายใน 15 วินาทีบนคอมพิวเตอร์โดยเฉลี่ย (aka ของฉัน) โปรดทราบว่ากรณีทดสอบนี้จะต้องไม่ใช้รหัสอย่างหนัก แต่อย่างใด
@ DigitalTrauma บดรางวัลของฉันเข้ามาภายในไม่กี่วินาที ตรวจสอบคำตอบของเขาที่นี่
antidisestablishmentarianism(ไม่ใช่ผู้เล่นกอล์ฟ) คือ83307040(และการจับคู่กรณีทดสอบทั้งหมด) แต่ใช้เวลาประมาณ 37 วินาทีในแล็ปท็อปของฉัน ทุกคนมีนับมันได้หรือไม่