ภาษาการเขียนโปรแกรมหลายภาษาเขียนขึ้นโดยใช้ ASCII, แท็บและการขึ้นบรรทัดใหม่ อักขระ 97 ตัวเหล่านี้จะถูกเก็บไว้ในไบต์ 8 บิต (ซึ่งจริง ๆ แล้วสามารถเก็บอักขระที่แตกต่างกัน 256 ตัว!) ซึ่งไม่มีประสิทธิภาพอย่างยิ่งยวด - โดยเฉพาะอย่างยิ่งในการเล่นโค๊ดกอล์ฟ ในการท้าทายนี้คุณจะสามารถลดคะแนนของคุณโดยใช้การแปลงฐาน
ท้าทาย
โปรแกรมของคุณ / ฟังก์ชั่นใช้เวลาสตริงหรือตัวอักษรอาร์เรย์เป็น input ซึ่งมันก็ตีความเป็นฐาน-97จำนวน จากนั้นจะแปลงเป็นตัวเลข ฐาน 256และนับจำนวนสัญลักษณ์ (เช่นไบต์) ที่จำเป็นสำหรับแสดงหมายเลขนี้ จำนวนนี้จะเป็นค่าผลลัพธ์ / ผลตอบแทนของโปรแกรม / ฟังก์ชั่นของคุณ
ตัวอย่างง่ายๆโดยใช้ base-2 และ base-10 (ไบนารีและทศนิยม): หากอินพุตคือ10110
เอาต์พุตจะเป็น 2 ตั้งแต่ 10110 2 = 22 10 (ตัวเลขสองหลักที่จำเป็นในการแทนเอาต์พุต) ในทำนองเดียวกัน 1101 2กลายเป็น 13 10ให้ผลลัพธ์เป็น 2 เช่นกันและ 110 2กลายเป็น 6 10ดังนั้นผลลัพธ์จะเป็น 1
สตริงอินพุตสามารถมีอักขระ ASCII ที่พิมพ์ได้ทั้งหมด 95 ตัวรวมถึงบรรทัดใหม่\n
และแท็บตัวอักษร\t
ซึ่งสร้างตัวอักษรแหล่งที่มา ของสัญลักษณ์ 97 สำหรับการแปลงฐานของคุณ ตัวอักษรที่แน่นอนจะเป็น(แทน\t
และ\n
ด้วยแท็บตัวอักษรที่เกิดขึ้นจริงและขึ้นบรรทัดใหม่ให้สังเกตช่องว่างตัวอักษรตามบรรทัดใหม่) :
\t\n !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
โปรดทราบว่าคำสั่งของตัวอักษรนี้เป็นสิ่งสำคัญ: ยกตัวอย่างเช่นฐาน-97 \t
สอดคล้องกับทศนิยม0
และสอดคล้องกับทศนิยม!
3
ตัวอย่างทดสอบบางส่วน: (คุณไม่จำเป็นต้องจัดการกับสตริงว่าง)
Input Output
'example@domain.com' 15
'All your base are belong to us!' 26
' abcd' 9
'~ abcd' 10
'ABCDEFGHIJK' 9
'zyxwvutsrpq' 10
'{".~"}.~' 7
'\t\t\t\t\t\t\t\t' 1 (with \t a literal tab; the result is 0, which can be represented with 1 byte)
'!\t\t\t\t\t\t\t\t' 7 (with \t a literal tab)