Cuộc phỏng vấn: Chín mặt trận
Đây là lần đầu tiên trong một loạt các thử thách lấy cảm hứng từ các câu hỏi phỏng vấn xin việc lập trình.
Bạn bước vào văn phòng nơi ông chủ tương lai tiềm năng của bạn ngồi. "Đi vào và ngồi xuống", ông nói. Bạn lo lắng ngồi xuống, đảm bảo trang phục gọn gàng nhưng chuyên nghiệp của bạn không có nếp nhăn. Ông hỏi bạn nhiều câu hỏi, về giáo dục, kinh nghiệm làm việc trước đây, v.v. Bạn trả lời họ một cách trung thực, thêm một chút chỉnh trang ở đây và ở đó để làm cho bản thân bạn nghe tốt hơn. Anh cúi người về phía trước và bắt đầu nói lại.
"Bạn đã bao giờ nghe nói về golf golf?" Tại sao, vâng, bạn thích chơi golf và thường xuyên làm điều đó trong thời gian rảnh. "Tuyệt vời. Phần cuối của cuộc phỏng vấn là một bài kiểm tra kỹ thuật. Bạn sẽ được giao nhiệm vụ viết mã để giải quyết một loạt vấn đề ..." Ông đưa cho bạn một tờ giấy. Bạn nhanh chóng lướt qua nó. Dễ như ăn bánh. Bây giờ tại sao anh ta hỏi về golf golf?
"Bạn sẽ được xếp loại dựa trên tổng kích thước của các giải pháp cho những vấn đề này. Nếu bạn có thể đạt điểm thấp hơn tất cả các ứng cử viên khác, công việc là của bạn." Oh. "Giống như golf, có 18 vấn đề, được chia thành hai bộ 9. Hãy sử dụng bất kỳ ngôn ngữ nào bạn muốn để giải quyết chúng; chúng tôi có trình biên dịch và phiên dịch cho mọi ngôn ngữ bạn đã nghe, và chắc chắn một số ngôn ngữ mà bạn có Chúc may mắn! "
Nhiệm vụ
Nhiệm vụ 1: Bảng nhân
Cho một số n
làm đầu vào, xuất ra bảng nhân cho các số nguyên dương trong phạm vi [1, n]
. n
sẽ nằm trong phạm vi [1, 12]
. Tất cả các số phải được căn trái trong bảng. Sử dụng ký tự x
cho góc trên bên trái.
Ví dụ:
n=4
x 1 2 3 4
1 1 2 3 4
2 2 4 6 8
3 3 6 9 12
4 4 8 12 16
n=10
x 1 2 3 4 5 6 7 8 9 10
1 1 2 3 4 5 6 7 8 9 10
2 2 4 6 8 10 12 14 16 18 20
3 3 6 9 12 15 18 21 24 27 30
4 4 8 12 16 20 24 28 32 36 40
5 5 10 15 20 25 30 35 40 45 50
6 6 12 18 24 30 36 42 48 54 60
7 7 14 21 28 35 42 49 56 63 70
8 8 16 24 32 40 48 56 64 72 80
9 9 18 27 36 45 54 63 72 81 90
10 10 20 30 40 50 60 70 80 90 100
Nhiệm vụ 2: RMS thông thường
Cho một chuỗi ký tự ASCII, sản lượng root-mean-square trung bình ordinals ASCII của họ. Chuỗi sẽ không bao giờ chứa byte NULL (thứ tự 0).
Ví dụ:
Input: The Interview: The Front Nine
Output: 95.08290393488019
Input: `1234567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./
Output: 91.38101204135423
Nhiệm vụ 3: Chuyển động của đạn
Với vận tốc và góc ban đầu với đường chân trời của một viên đạn được bắn từ mặt đất, xuất ra khoảng cách ngang mà nó sẽ di chuyển trước khi hạ cánh. Vận tốc ban đầu sẽ được tính bằng mét trên giây, góc sẽ được tính theo độ và khoảng cách sẽ được tính bằng mét. Giả sử trọng lực Trái đất ( g=9.81 m/s/s
) và bỏ qua các hiệu ứng tương đối tính. Vì vấn đề này, bạn có thể cho rằng Trái đất phẳng (bạn sẽ không cần xem xét độ cong của Trái đất khi thực hiện các tính toán của mình). Các góc đã cho sẽ nằm trong phạm vi [0, 90]
. Câu trả lời của bạn phải chính xác đến ít nhất hai chữ số thập phân (làm tròn được cho phép).
Ví dụ:
velocity=50, angle=45
Result: 254.84 (rounded)
velocity=10, angle=60
Result: 8.82798576742547
Nhiệm vụ 4: etaoin shrdlu
Đưa ra một chuỗi các ký tự ASCII có thể in không null (thứ tự trong phạm vi [32,127]
), xuất chuỗi, với các ký tự được sắp xếp theo tần số của chúng theo thứ tự giảm dần. Trong trường hợp hòa, thứ tự theo thứ tự ASCII, tăng dần.
Ví dụ:
Input: "Hello, World!"
Output: "llloo !,HWder"
Input: "Programming Puzzles and Code Golf"
Output: " oooPPaaddeeggllmmnnrrzzCGfisu"
Nhiệm vụ 5: Chỉ số Fibonacci
Cho một số, xác định xem đó có phải là số Fibonacci không và nếu có, hãy xuất chỉ mục của nó (bắt đầu từ 1) trong chuỗi. Nếu nó không phải là số Fibonacci, đầu ra 0. Trong trường hợp 1, nằm trong chuỗi hai lần, hãy xuất ra lần xuất hiện sớm nhất (chỉ số 1).
Ví dụ:
Input: 1
Output: 1
Input: 144
Output: 12
Input: 4
Output: 0
Nhiệm vụ 6: Đảo chữ
Cho ba chuỗi chữ cái tiếng Anh viết thường ( [a-z]
), xuất ra một chuỗi sử dụng tất cả các chữ cái trong chuỗi thứ nhất, bắt đầu bằng chuỗi thứ hai và kết thúc bằng chuỗi thứ ba. Nếu một chuỗi như vậy không thể được xây dựng, xuất ra một chuỗi trống. Các chuỗi đầu vào sẽ luôn dài ít nhất một chữ cái. "Giữa" của chuỗi đầu ra (giữa chuỗi tiền tố và chuỗi hậu tố) có thể trống, nếu các chuỗi tiền tố và hậu tố cùng sử dụng tất cả các chữ cái trong chuỗi nguồn.
Ví dụ:
Input: geobits bi es
Possible output: bigtoes
Input: mariatidaltug digital trauma
Output: digitaltrauma
Input: mego go lf
Output: (empty string)
Nhiệm vụ 7: Điền vào chỗ trống
Đưa ra một danh sách các chuỗi và một ký tự điền, xuất kết quả của việc đệm tất cả các chuỗi theo độ dài của chuỗi dài nhất với ký tự điền, được sắp xếp theo thứ tự tăng dần theo độ dài ban đầu của chuỗi, giữ nguyên thứ tự ban đầu trong trường hợp của một cái cà vạt. Bạn sẽ có thể xử lý các danh sách có độ dài hữu hạn, chứa các chuỗi có độ dài hữu hạn, chỉ giới hạn bởi các ràng buộc bộ nhớ.
Ví dụ:
Input: ["hello","world","this","is","a","test"], 'x'
Output: ["axxxx","isxxx","thisx","testx","hello","world"]
Input: ["I'm","a","lumberjack","and","I'm","okay"], '!'
Output: ["a!!!!!!!!!","I'm!!!!!!!","and!!!!!!!","I'm!!!!!!!","okay!!!!!!","lumberjack"]
Nhiệm vụ 8: Thay đổi
Cho một số trong phạm vi [0.01,0.99]
, xuất số lượng của mỗi trong số 4 đồng tiền tiêu chuẩn của Hoa Kỳ nên được sử dụng để thể hiện giá trị này sao cho tổng số lượng tiền được giảm thiểu. Đầu vào sẽ luôn có chính xác 2 vị trí phía sau số thập phân.
Tham khảo giá trị tiền xu:
Penny: 0.01, Nickel: 0.05, Dime: 0.10, Quarter: 0.25
Ví dụ:
Input: 0.75
Output: [0,0,0,3]
Input: 0.23
Output: 3 pennies, 0 nickels, 2 dimes, 0 quarters
Nhiệm vụ 9: Sáp nhập dãy
Đưa ra một danh sách hữu hạn gồm 2 bộ dữ liệu chứa các số nguyên biểu thị các phạm vi, đưa ra kết quả của việc hợp nhất tất cả các phạm vi chồng chéo hoặc liền kề. Tất cả các phạm vi sẽ có ít nhất độ dài 1 và giá trị bắt đầu sẽ luôn nhỏ hơn giá trị kết thúc. Thứ tự của đầu ra không quan trọng.
Ví dụ:
Input: (2,3), (4,5), (6,9), (0,7)
Output: (0,9)
Input: (-3,4), (2,5), (-10,-4)
Output (-10,-4), (-3,5)
Input: (2,3), (5,6), (6,8)
Output: (5,8), (2,3)
Quy tắc
- Đây là môn đánh gôn , vì vậy câu trả lời ngắn nhất (tính bằng byte) sẽ thắng.
- Điểm của bạn sẽ là tổng số byte cho tất cả các giải pháp của bạn.
- Sơ hở tiêu chuẩn bị cấm.
- Đầu vào và đầu ra có thể được thực hiện theo bất kỳ cách nào được coi là tiêu chuẩn cho ngôn ngữ của bạn.
- Bạn có thể viết các chương trình hoặc chức năng đầy đủ cho mỗi thử thách và có thể trao đổi giữa hai thử thách.
- Bạn phải sử dụng cùng một ngôn ngữ cho tất cả các thử thách. Nếu sự khác biệt về phiên bản đủ quan trọng để chúng thường được coi là các mục riêng biệt trong các thử thách, bạn phải sử dụng cùng một phiên bản. Ví dụ: nếu bạn sử dụng Python, bạn phải sử dụng Python 2 hoặc Python 3 cho tất cả các thử thách.
- Bạn phải giải quyết tất cả các thử thách. Câu trả lời chỉ giải quyết một số thách thức sẽ được coi là không cạnh tranh.
- Bạn có thể sử dụng ngôn ngữ dựng sẵn hoặc thư viện tiêu chuẩn.
Bảng xếp hạng
Đoạn trích Stack ở cuối bài này tạo bảng xếp hạng từ các câu trả lời a) dưới dạng danh sách các giải pháp ngắn nhất cho mỗi ngôn ngữ và b) dưới dạng bảng xếp hạng tổng thể.
Để đảm bảo rằng câu trả lời của bạn hiển thị, vui lòng bắt đầu câu trả lời của bạn bằng một tiêu đề, sử dụng mẫu Markdown sau:
## Language Name, N bytes
nơi N
là kích thước của trình của bạn. Nếu bạn cải thiện điểm số của mình, bạn có thể giữ điểm số cũ trong tiêu đề, bằng cách đánh bại chúng thông qua. Ví dụ:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Nếu bạn muốn bao gồm nhiều số trong tiêu đề của mình (ví dụ: vì điểm của bạn là tổng của hai tệp hoặc bạn muốn liệt kê riêng các hình phạt cờ của thông dịch viên), hãy đảm bảo rằng điểm thực tế là số cuối cùng trong tiêu đề:
## Perl, 43 + 2 (-p flag) = 45 bytes
Bạn cũng có thể đặt tên ngôn ngữ thành liên kết sau đó sẽ hiển thị trong đoạn trích:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes