Tantangan ini telah diposting di subreddit DailyProgrammer, dan saya pikir itu akan menjadi kandidat yang bagus untuk tantangan kode golf. Menentukan apakah surat saldo didasarkan pada jaraknya dari titik keseimbangan, dan nilai surat itu. Nilai huruf dapat ditentukan dengan mengambil posisi satu-indeksnya dalam alfabet, atau dengan mengurangi 64 dari nilai ASCII-nya. Selain itu, nilai surat dikalikan dengan jaraknya dari titik keseimbangan. Mari kita lihat sebuah contoh 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.
Namun, perlu dicatat bahwa tidak semua kata seimbang. Misalnya, kata WRONG
tersebut tidak seimbang dalam konfigurasi apa pun. Juga, kata-kata harus seimbang pada satu huruf, bukan di antara dua huruf. Misalnya, SAAS
akan menyeimbangkan jika ada huruf di tengah dua A
s, tetapi karena tidak ada itu tidak seimbang.
Tugas
Anda harus membuat program atau fungsi yang menggunakan kata huruf besar sebagai input atau argumen fungsi , dan kemudian menghasilkan salah satu dari dua output:
Jika kata tersebut seimbang, maka kata tersebut harus dicetak dengan sisi kiri, spasi, huruf jangkar, spasi lain, dan sisi kanan.
function (STEAD) -> S T EAD
Jika kata itu tidak seimbang, Anda harus mencetak kata, diikuti oleh
DOES NOT BALANCE
function (WRONG) -> WRONG DOES NOT BALANCE
Anda dapat mengasumsikan bahwa semua input akan menjadi huruf besar dan hanya akan ada karakter alfa.
Contoh I / O
function (CONSUBSTANTIATION) -> CONSUBST A NTIATION
function (WRONGHEADED) -> WRO N GHEADED
function (UNINTELLIGIBILITY) -> UNINTELL I GIBILITY
function (SUPERGLUE) -> SUPERGLUE DOES NOT BALANCE
Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
BALANCE DOES NOT BALANCE
function (A)
->A
bukannya -> `A`?