Bạn biết làm thế nào bạn nhận được một tin nhắn thư thoại và kết nối của người đó không tốt và bạn đang cố gắng tìm cách gọi lại cho họ, nhưng bạn không chắc đó là "5" hay "8" họ nói?
Đó là thử thách này.
Tin tốt là người gọi đã đọc số của họ hai lần, nhưng nó bị cắt xén ở cả hai nơi.
Chương trình của bạn sẽ nhận đầu vào như thế này:
5551231234 / 5551231234
Trong đó mười chữ số đầu tiên là lần đầu tiên số điện thoại được nói trong hộp thư thoại và bộ thứ hai là lần thứ hai được nói. Chỉ ... nó sẽ trông giống như thế này:
555?ABC1_36? / 55?522_1?234
- Một chữ số theo sau một dấu hỏi có nghĩa là đó là dự đoán đúng nhất cho chữ số đó (ví dụ: "5?" Có nghĩa là "có thể là 5, so sánh với lặp lại").
- Một dấu gạch dưới chỉ ra một chữ số bị thiếu đã biết, một cái gì đó quá mờ bởi tĩnh để được giải mã.
- Chữ cái chỉ là: chữ cái. Coi chúng như những chữ số tương ứng
- ABC -> 2, DEF -> 3, GHI -> 4, JKL -> 5, MNO -> 6, PQRS -> 7, TUV -> 8, WXYZ -> 9
- Tất cả các đầu vào mẫu đều sử dụng chữ hoa (bạn có thể bỏ qua cuộc gọi ToUpper () một cách an toàn)
- Nếu ngôn ngữ của bạn hoạt động tốt hơn trong chữ thường, bạn có thể tự do sử dụng chữ thường cho đầu vào và bỏ qua cuộc gọi ToLower (). Chỉ cần lưu ý rằng trong câu trả lời của bạn.
Bạn cũng có thể giả sử các cuộc gọi phán xét sau:
5? / _ -> 5 //5 is the best guess we have, use it
5? / 5? -> 5 //uncertain, but matching
5? / 4? -> ? //conflict
5 / 4 -> ? //conflict
5? / 4 -> 4 //solid information overrides possible value
5 / 4? -> 5 //solid information overrides possible value
_ / _ -> ? //no information available
Ngoài ra, bạn có thể giả định rằng tất cả các đầu vào sẽ chứa các số điện thoại mười chữ số, không bao gồm các dấu hỏi. Các đầu vào không có mười chữ số (ví dụ 1234567 / 1234567
) có thể được coi là không thể giải được (đầu ra falsey) hoặc gây ra lỗi.
Đầu vào
Một dòng ký tự 0-9A-Z _?/
, như được mô tả ở trên.
Đầu ra
Nếu nó có thể được phân tích thành một số điện thoại mười chữ số hợp lệ duy nhất, hãy xuất số điện thoại. Mặt khác, xuất một số dạng dấu hiệu lỗi (ví dụ -1, false hoặc một dòng trống).
Chiến thắng ngắn nhất, như thường lệ.
Đầu vào mẫu:
1234567890 / 1234567890
1234567890? / 1234567890
123456789_ / 1234567890
1234567890? / 123456789_
1234567890 / 1234567890?
1234567890 / 123456789_
123456789_ / 1234567890?
1234567890? / 1234567890?
1234567890? / 1234567891?
123456789_ / 123456789_
555CALLUS1 / 5552255871
404_12?6039 / 4041?1560_9
_GETREVENGE / 16?36?_2838_
1?691460_50 / 16_14609?50
61?08977211 / 612?897725?1
40?0INSTA__ / 8?00_NSTI?LL
3985_534?10 / 39?8?5053_10
7__7294?737 / 7797299?_37
28?897_384?1 / _8?89763861
271168090_ / 27116800?09
6802?148343 / 67?01148343
94_11628?2?6? / 9491162_47?
17?4285_689 / 1__26?52689
6_311?95_38 / 6731194?7?38
380?7DRAGON / 3807378?5?66
4?647_93236 / 5646?6?9__36
365?268898_ / 366267?7?984
GRATEDBATE / IRATEDBATE
5307_079?93 / ____8_____
535_3_0255 / 52?5_3_024?5
55_____088 / 54?2397207?7?
6_48398_95 / _946?398?6_5?
_0_312_3_1 / 81?53123?1?71
____1_____ / 64?255?508?61
8427820607 / 6?424?8?__6?07
50_3707__6 / 52?8375?74?56
615___8255 / 62?526?983?2?1?
__652618__ / 8365261__0
149___933_ / 1_9677?92?31
___7?281562 / 3438?28154?2
5?7?7?___8?3?7?4 / 57_855837_
605_272481 / 605427__81
86?569__731 / 88560?0?7721
1__91654?15 / 17?9?9165715
800NWABODE / 80069ABI?DE
8___9017_0 / 8_2494?12?9_
_024?5?91?470 / 304?17908?7_
42510704_2 / 4_51070492
9338737_89 / 93_873PLUS
327762_401 / 327_MASH01
33093_2058 / 3309_12058
4061_33578 / 40619_3578
559_383197 / 559938_197
94_9746084 / 9459746_84
1_37655238 / 163POLKA_T
_672FRIZZY / 767237499_
8_76318872 / TIP63188_2
51_8404321 / 5178404_21
358_030314 / 358603_314
2597_85802 / 25979_5802
77141_1408 / 7714_91408
330858_457 / 330_586457
4686079_39 / 46_6079239
86457508_6 / 8_45750826
523226626_ / _23BANNANA
_ISSY_ISSY / 44__9548?79?
6?00B_YJILT / 800289KILL?
2?52803___0 / 1526?0390?61?
FI?ND___T?HE / EAS?T?EREGGS?
0_231?95_38 / 0723194?7?38
0?647_39236 / 0646?6?3__36
025?267798_ / 06?6265?9?984
0061_33578 / _0619_3578
Tôi chỉ bảo đảm rằng mọi trường hợp cạnh có thể được bảo hiểm (11 mục đầu tiên), nhưng ngoài ra, điều đó khá ngẫu nhiên.
Cập nhật
Bốn mục ở phía dưới được thêm vào các số 0 đứng đầu (theo gợi ý của Jonathan Allan).
Đầu ra chính xác cho các đầu vào mẫu:
Dựa trên đầu ra từ mục nhập của Jonathan Allan (đầu ra được định dạng là lý tưởng).
" / "
hoặc chúng ta có thể lấy chúng làm hai đầu vào tiêu chuẩn không?