ความท้าทายนี้ถูกโพสต์ลงบน subreddit ของ DailyProgrammer และฉันคิดว่ามันจะเป็นตัวเลือกที่ยอดเยี่ยมสำหรับการแข่งขันกอล์ฟรหัส การพิจารณาว่ายอดคงเหลือจดหมายจะขึ้นอยู่กับระยะทางจากจุดสมดุลและมูลค่าของจดหมาย ค่าของตัวอักษรสามารถกำหนดได้โดยรับตำแหน่งหนึ่งดัชนีในตัวอักษรหรือโดยการลบ 64 จากค่า ASCII นอกจากนี้ค่าของตัวอักษรจะถูกคูณด้วยระยะทางจากจุดสมดุล ลองมาดูตัวอย่างSTEAD
:
STEAD -> 19, 20, 5, 1, 4 ASCII values
This balances at T, and I'll show you why!
S T EAD -> 1*19 = 1*5 + 2*1 + 3*4
Each set of letters on either side sums to the same value, so
T is the anchor.
อย่างไรก็ตามควรสังเกตว่าไม่ใช่ทุกคำที่สมดุล ตัวอย่างเช่นคำWRONG
ไม่สมดุลในการกำหนดค่าใด ๆ คำพูดจะต้องสมดุลกับตัวอักษรไม่ใช่ระหว่างตัวอักษรสองตัว ตัวอย่างเช่นSAAS
จะทำให้เกิดความสมดุลหากมีตัวอักษรอยู่ตรงกลางของทั้งสองตัวA
แต่เนื่องจากไม่มีตัวใดตัวหนึ่งจึงไม่สมดุล
งาน
คุณควรสร้างโปรแกรมหรือฟังก์ชั่นที่ใช้คำตัวพิมพ์ใหญ่เป็นอาร์กิวเมนต์อินพุตหรือฟังก์ชันจากนั้นสร้างหนึ่งในสองเอาต์พุต:
หากคำว่ายอดคงเหลือแล้วคำควรจะพิมพ์ด้วยด้านซ้าย, ช่องว่าง, ตัวอักษรสมอ, ช่องว่างอื่นและด้านขวา
function (STEAD) -> S T EAD
หากคำไม่สมดุลคุณควรพิมพ์คำตามด้วย
DOES NOT BALANCE
function (WRONG) -> WRONG DOES NOT BALANCE
คุณอาจสมมติว่าข้อมูลทั้งหมดจะเป็นตัวพิมพ์ใหญ่และจะมีเพียงตัวอักษรอัลฟา
ตัวอย่าง I / O
function (CONSUBSTANTIATION) -> CONSUBST A NTIATION
function (WRONGHEADED) -> WRO N GHEADED
function (UNINTELLIGIBILITY) -> UNINTELL I GIBILITY
function (SUPERGLUE) -> SUPERGLUE DOES NOT BALANCE
นี่คือรหัสกอล์ฟดังนั้นคำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ
BALANCE DOES NOT BALANCE
function (A)
->A
แทน -> `A 'ได้หรือไม่?