Giới thiệu
Trong hóa học có một loại phần mở rộng, phần mở rộng .xyz, ( https://en.wikipedia.org/wiki/XYZ_file_format ), in trong mỗi dòng một phần tử hóa học và tọa độ trong mặt phẳng của phần tử. Điều này rất hữu ích cho các nhà hóa học để hiểu các hợp chất hóa học và trực quan hóa các hợp chất trong 3D. Tôi nghĩ rằng nó sẽ rất vui khi được cung cấp một tệp .xyz, in công thức hóa học.
Thử thách
Cho một tệp .xyz, in công thức hóa học của hợp chất trong bất kỳ ngôn ngữ lập trình nào với số byte nhỏ nhất có thể . Ghi chú:
- Ban đầu, đầu vào được đưa ra dưới dạng một tập tin. Như tôi đã chỉ ra, điều này hạn chế thách thức. Do đó, bạn có thể giả sử đầu vào là một danh sách / mảng các chuỗi, mỗi chuỗi đại diện cho một dòng của tệp .xyz.
- Không có hạn chế trong thứ tự của các yếu tố.
- Mỗi phần tử phải được in với dấu gạch dưới "_" phân định phần tử và số lần nó xuất hiện
- Hai dòng đầu tiên của bất kỳ tệp .xyz nào là số phần tử và một dòng nhận xét (hãy ghi nhớ điều đó).
Ví dụ đầu vào và đầu ra
Giả sử bạn có một tệp p.xyz chứa phần sau (trong đó dòng đầu tiên là số phần tử và phần thứ hai là một nhận xét), nhập:
5
A mystery chemical formula...
Ba 0.000 0.000 0.000
Hf 0.5 0.5 0.5
O 0.5 0.5 0.000
O 0.5 0.000 0.5
O 0.000 0.5 0.5
Đầu ra:
Ba_1Hf_1O_3
Kiểm tra
Một bài kiểm tra nhanh là với ví dụ được đề cập. Một thử nghiệm kỹ lưỡng hơn như sau: vì tệp thử nghiệm có hàng nghìn dòng, tôi sẽ chia sẻ tệp .xyz:
https://gist.github.com/nachonavarro/1e95cb8bbbc644af3c44