Nhiệm vụ của bạn là tính toán tổng số lần nhấn phím cần thiết để nhập một văn bản đã cho trên một điện thoại di động cũ.
Các keymap là:
1:1
2:abcABC2
3:defDEF3
4:ghiGHI4
5:jklJKL5
6:mnoMNO6
7:pqrsPQRS7
8:tuvTUV8
9:wxyzWXYZ9
0:<space><newline>0
Để gõ exaMPle TExt 01
, bạn sẽ nhấn 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
tổng cộng 37 lần nhấn.
Các *
chủ chốt sẽ trả về một bản đồ của các nhân vật đặc biệt:
.,'?!
"-()@
/:_;+
&%*=<
>£€$¥
¤[]{}
\~^¡¿
§#|`
với cái đầu tiên ( .
) được tô sáng. Bạn có thể di chuyển để làm nổi bật ký tự được yêu cầu bằng các phím điều hướng hình chữ nhật và phải mất một phím nhấn khác để chọn.
Vì vậy, để chèn $
, bạn sẽ nhấn *↓↓↓↓→→→<select>
tức là tổng cộng 9 lần nhấn phím.
- Đầu vào sẽ từ một tệp được gọi
source
trong thư mục / thư mục hiện tại của chương trình của bạn. EDIT: Mỗi yêu cầu trong nhận xét, tôi đang thêmSTDIN
dưới dạng phương thức nhập hợp lệ. Xin lỗi vì đã thay đổi thông số kỹ thuật sau khi nhận được câu trả lời. - Bạn phải xuất
Total key presses <total_keypresses>
- Nếu tệp đầu vào chứa bất kỳ ký tự nào không có trong sơ đồ phím đã cho, thì chương trình của bạn phải xuất
Invalid character <character> in source
và thoát.
Nói tóm lại, đầu vào và đầu ra của chương trình của bạn phải giống với tập lệnh python (không được mã hóa) này:
# 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)
Đây là mã golf, chương trình ngắn nhất tính bằng byte thắng.
Từ chối trách nhiệm không biết xấu hổ: Tôi đã thực hiện thử thách này để có các bản dịch của kịch bản python ở trên bằng các ngôn ngữ khác nhau sẽ được sử dụng để ghi điểm cho thử thách này trong hộp cát .
1ce5a2fdd0316e37c0a07d151d02db766a3adbb7
.