Đây là một thử thách mã với hệ thống tính điểm tùy chỉnh, trong đó điểm thấp nhất sẽ thắng.
Giới thiệu
Nhiều điện thoại thông minh cho phép nhập văn bản bằng cách vuốt ngón tay trên bàn phím ảo 2D. Công nghệ này thường được kết hợp với một thuật toán dự đoán đưa ra danh sách các từ đã đoán, được sắp xếp từ nhiều khả năng đến ít có khả năng nhất.
Trong thử thách này:
- Chúng tôi sẽ vuốt trên bàn phím một chiều được giới hạn trong một tập hợp con gồm 26 chữ cái.
- Sẽ không có thuật toán dự đoán : chúng tôi muốn mỗi từ được xác định duy nhất bằng 'chuỗi vuốt' của nó.
- Chúng tôi muốn bàn phím được tối ưu hóa theo cách sao cho tổng số lần di chuyển cho một danh sách các từ đã cho được giảm thiểu.
Vuốt trong một chiều
Dưới đây là bàn phím 1D được sắp xếp theo từ vựng với tất cả các chữ cái:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Lưu ý: Điều này có thể được hiển thị trên một số hàng nếu bạn đang duyệt từ thiết bị di động. Hãy nghĩ về nó như một hàng duy nhất.
Để nhập từ ' GOLF ' trên bàn phím như vậy, chúng tôi sẽ:
- bắt đầu lúc G
- vuốt sang phải O
- vuốt sang trái để F
Bởi vì Lnằm giữa Ovà F, chúng tôi chỉ cần vuốt mà không dừng lại ở đó.
Vì vậy, chuỗi vuốt của ' GOLF ' trên bàn phím này là GOF.
Tổng quát hơn:
- Các chữ cái đầu tiên và cuối cùng luôn luôn được bao gồm.
- Các chữ cái khác được bao gồm khi và chỉ khi cần thay đổi hướng ngay sau chúng.
Các chữ cái lặp đi lặp lại phải được xử lý giống như các chữ cái đơn. Chẳng hạn, trên bàn phím trên:
- ' LOOP ' sẽ được mã hóa thành LP(không có điểm dừng O)
- ' GOOFY ' sẽ được mã hóa thành GOFY( Ođược bao gồm vì có sự thay đổi hướng ở đó - không phải vì nó được nhân đôi)
Tối ưu hóa bàn phím
Hãy xem xét các danh sách sau đây của dòng chữ: [ ' TRÌNH ', ' câu đố ', ' VÀ ', ' Mã ', ' GOLF '].
Chúng ta cần 16 chữ cái riêng biệt để gõ những từ này, vì vậy chúng ta chỉ cần một bàn phím 16 chữ cái. Một trong những điều sau đây - một lần nữa - được sắp xếp theo từ vựng:
ACDEFGILMNOPRSUZ
Với bàn phím này, các từ sẽ được mã hóa theo cách này:
- LẬP TRÌNH : PRGRAMING(9 di chuyển)
- BÉ : PZES(4 di chuyển)
- VÀ : AND(3 di chuyển)
- MÃ : CODE(4 di chuyển)
- GOLF : GOF(3 di chuyển)
Đó là tổng cộng 23 động tác cho tất cả các từ.
Nhưng chúng ta có thể làm tốt hơn nhiều với bàn phím này:
CGODSELZNUIFRPAM
Cung cấp cho:
- LẬP TRÌNH : PGMG(4 di chuyển)
- BÉ : PS(2 di chuyển)
- VÀ : AD(2 di chuyển)
- MÃ : CE(2 di chuyển)
- GOLF : GF(2 di chuyển)
cho tổng số chỉ 12 di chuyển .
Bàn phím chấm điểm
Càng thấp, càng tốt.
Các thách thức
- Đưa ra một danh sách các từ, mã của bạn phải xuất ra một bàn phím hợp lệ cho danh sách này. Một bàn phím được coi là hợp lệ nếu mỗi từ tạo ra một chuỗi vuốt duy nhất.
Bạn sẽ được cung cấp 11 danh sách từ độc lập. Điểm của bạn sẽ bằng:
Bạn có thể sử dụng kịch bản này để kiểm tra điểm số của bạn . Các
score()
chức năng dự kiến chiều dài mã của bạn như tham số đầu tiên và một mảng của chuỗi 11 bàn phím như tham số thứ hai (trường hợp không quan trọng).Bài nộp với số điểm thấp nhất sẽ thắng. Trong trường hợp hòa, bài nộp được gửi trước sẽ thắng.
Quy tắc bổ sung
- Mã của bạn phải có tính xác định (nghĩa là nó phải luôn trả về cùng một đầu ra cho một đầu vào nhất định).
- Bạn phải A) cung cấp liên kết kiểm tra (ví dụ: trên TIO) không hết thời gian hoặc B) bao gồm các bàn phím được tạo trong phần thân câu trả lời của bạn.
- Bạn có thể lấy các từ bằng chữ hoa hoặc chữ thường đầy đủ. Trường hợp hỗn hợp bị cấm.
- Đầu vào được đảm bảo có ít nhất một giải pháp.
- Tất cả các từ được làm bằng ít nhất 2 chữ cái riêng biệt.
- Mã của bạn phải làm việc cho bất kỳ đầu vào hợp lệ. Nó sẽ được kiểm tra với một danh sách các từ chưa được tiết lộ để đảm bảo rằng nó không phụ thuộc vào kết quả được mã hóa cứng.
- Tôi bảo lưu quyền tăng kích thước của bộ thử nghiệm bất cứ lúc nào để đảm bảo rằng các bài nộp không được tối ưu hóa cho các trường hợp thử nghiệm ban đầu.
Danh sách các từ
1) Sanity check #1 (only 4 valid solutions: HES, SEH, ESH or HSE)
SEE, SHE
2) Sanity check #2 (16 valid solutions, of which 4 are optimal: COLD, DOLC, DLOC or CLOD)
COLD, CLOD
3) Sanity check #3
ACCENTS, ACCESS
4) Warm-up
RATIO, NATION, NITRO, RIOT, IOTA, AIR, ART, RAT, TRIO, TRAIN
5) Pangram
THE, QUICK, BROWN, FOX, JUMPS, OVER, LAZY, DOG
6) Common prepositions
TO, OF, IN, FOR, ON, WITH, AT, BY, FROM, UP, ABOUT, INTO, OVER, AFTER
7) Common verbs
BE, HAVE, DO, SAY, GET, MAKE, GO, KNOW, TAKE, SEE, COME, THINK, LOOK, WANT, GIVE, USE, FIND, TELL, ASK, WORK, SEEM, FEEL, TRY, LEAVE, CALL
8) Common adjectives
GOOD, NEW, FIRST, LAST, LONG, GREAT, LITTLE, OWN, OTHER, OLD, RIGHT, BIG, HIGH, DIFFERENT, SMALL, LARGE, NEXT, EARLY, YOUNG, IMPORTANT, FEW, PUBLIC, BAD, SAME, ABLE
9) Common nouns
TIME, PERSON, YEAR, WAY, DAY, THING, MAN, WORLD, LIFE, HAND, PART, CHILD, EYE, WOMAN, PLACE, WORK, WEEK, CASE, POINT, GOVERNMENT, COMPANY, NUMBER, GROUP, PROBLEM, FACT
10) POTUS
ADAMS, ARTHUR, BUCHANAN, BUREN, BUSH, CARTER, CLEVELAND, CLINTON, COOLIDGE, EISENHOWER, FILLMORE, FORD, GARFIELD, GRANT, HARDING, HARRISON, HAYES, HOOVER, JACKSON, JEFFERSON, JOHNSON, KENNEDY, LINCOLN, MADISON, MCKINLEY, MONROE, NIXON, OBAMA, PIERCE, POLK, REAGAN, ROOSEVELT, TAFT, TAYLOR, TRUMAN, TRUMP, TYLER, WASHINGTON, WILSON
11) Transition metals
SCANDIUM, TITANIUM, VANADIUM, CHROMIUM, MANGANESE, IRON, COBALT, NICKEL, COPPER, ZINC, YTTRIUM, ZIRCONIUM, PLATINUM, GOLD, MERCURY, RUTHERFORDIUM, DUBNIUM, SEABORGIUM, BOHRIUM, HASSIUM, MEITNERIUM, UNUNBIUM, NIOBIUM, IRIDIUM, MOLYBDENUM, TECHNETIUM, RUTHENIUM, RHODIUM, PALLADIUM, SILVER, CADMIUM, HAFNIUM, TANTALUM, TUNGSTEN, RHENIUM, OSMIUM