งานของคุณคือการคำนวณจำนวนรวมของการกดปุ่มที่จำเป็นในการป้อนข้อความที่กำหนดในโทรศัพท์มือถือเก่า
คีย์แม็พคือ:
1:1
2:abcABC2
3:defDEF3
4:ghiGHI4
5:jklJKL5
6:mnoMNO6
7:pqrsPQRS7
8:tuvTUV8
9:wxyzWXYZ9
0:<space><newline>0
ในการพิมพ์exaMPle TExt 01
คุณจะต้องกดปุ่ม33 99 2 6666 77777 555 33 0 8888 33333 99 8 0 <a 1-sec pause here in real life but we'll ignore it>000 1
ทั้งหมด 37 ครั้ง
*
สำคัญนำขึ้นแผนที่ของตัวละครพิเศษ:
.,'?!
"-()@
/:_;+
&%*=<
>£€$¥
¤[]{}
\~^¡¿
§#|`
กับคนแรก ( .
) เน้น คุณสามารถย้ายเพื่อเน้นอักขระที่ต้องการโดยใช้ปุ่มนำทางเป็นรูปสี่เหลี่ยมผืนผ้าและใช้ปุ่มกดอื่นเพื่อเลือก
ดังนั้นในการแทรก$
คุณจะกด*↓↓↓↓→→→<select>
เช่นจำนวนทั้งหมด 9 ปุ่มกด
- อินพุตจะมาจากไฟล์ที่เรียกว่า
source
อยู่ในไดเรกทอรีปัจจุบัน / ไดเรกทอรีของโปรแกรมของคุณ แก้ไข:ตามคำขอในความคิดเห็นฉันกำลังเพิ่มSTDIN
เป็นวิธีการป้อนข้อมูลที่ถูกต้อง ขออภัยในการเปลี่ยนข้อมูลจำเพาะหลังจากได้รับคำตอบ - คุณต้องส่งออก
Total key presses <total_keypresses>
- หากไฟล์อินพุตมีอักขระใด ๆ ที่ไม่ได้อยู่ในคีย์แม็พที่กำหนดแสดงว่าโปรแกรมของคุณต้องออก
Invalid character <character> in source
และออก
กล่าวโดยย่ออินพุตและเอาต์พุตของโปรแกรมของคุณจะต้องคล้ายกับสคริปต์หลามนี้ (ไม่ได้รับการสแกน):
# This Python file uses the following encoding: utf-8
from __future__ import print_function
import sys
general_dict = { '1':1,
'a':1, 'b':2, 'c':3, 'A':4, 'B':5, 'C':6, '2':7,
'd':1, 'e':2, 'f':3, 'D':4, 'E':5, 'F':6, '3':7,
'g':1, 'h':2, 'i':3, 'G':4, 'H':5, 'I':6, '4':7,
'j':1, 'k':2, 'l':3, 'J':4, 'K':5, 'L':6, '5':7,
'm':1, 'n':2, 'o':3, 'M':4, 'N':5, 'O':6, '6':7,
'p':1, 'q':2, 'r':3, 's':4, 'P':5, 'Q':6, 'R':7, 'S':8, '7':9,
't':1, 'u':2, 'v':3, 'T':4, 'U':5, 'V':6, '8':7,
'w':1, 'x':2, 'y':3, 'z':4, 'W':5, 'X':6, 'Y':7, 'Z':8, '9':9,
' ':1, '\n':2, '0':3
}
special_chars = ['.',',',"'",'?','!','"','-','(',')','@','/',':','_',';','+','&','%','*','=','<','>','£','€','$','¥','¤','[',']','{','}','\\','~','^','¡','¿','§','#','|','`']
for x in special_chars:
general_dict[x]=(special_chars.index(x)/5) + (special_chars.index(x)%5) + 2
key_press_total = 0
with open('source') as f: # or # with sys.stdin as f:
for line in f:
for character in line:
if character in general_dict:
key_press_total+=general_dict[character]
else:
print('Invalid character',character,'in source')
sys.exit(1)
print('Total key presses',key_press_total)
นี่คือรหัสกอล์ฟโปรแกรมที่สั้นที่สุดในหน่วยไบต์ชนะ
ข้อจำกัดความรับผิดชอบหน้าด้าน: ฉันทำความท้าทายนี้จะมีการแปลสคริปต์หลามดังกล่าวข้างต้นในภาษาที่แตกต่างกันซึ่งจะนำมาใช้เพื่อให้คะแนนความท้าทายนี้ใน sandbox
1ce5a2fdd0316e37c0a07d151d02db766a3adbb7
กัญชา