Backstory
Anda terbangun pusing di laboratorium kimia, dan Anda sadar telah diculik oleh seorang ahli kimia tua yang gila. Karena dia tidak bisa melihat dengan baik karena usianya, dia ingin kamu bekerja untuknya dan hanya dengan begitu, kamu bisa lolos dari laboratorium.
Tugas
Adalah tugas Anda untuk mengembalikan formula struktural molekul yang rumus kimianya akan diberikan sebagai input. Perhatikan bahwa hanya atom karbon ( C
), oksigen ( O
), dan hidrogen ( H
) yang akan digunakan sebagai input. Tidak seperti dalam rumus kimia, a 0
adalah quantifier yang valid dan a 1
tidak dapat dihilangkan (mis. C1H4O0
Input yang valid, tetapi CH4
tidak).
Untuk mencegah ambiguitas, kami mengasumsikan ikatan rangkap dan rangkap tiga tidak muncul dalam molekul. Semua atom karbon membutuhkan 4 ikatan tunggal, semua atom oksigen membutuhkan 2, dan atom hidrogen membutuhkan satu. Kami juga berasumsi bahwa O-O
obligasi juga tidak ada. Molekul tidak harus ada atau stabil.
Input tidak akan mengandung lebih dari 3
atom karbon untuk memastikan cahaya pada tampilan output.
Anda hanya harus menampilkan molekul yang atom karbonnya tersusun dalam garis lurus tanpa henti. Ergo, tidak ada C-O-C
ikatan.
Anda harus mengembalikan semua molekul yang mungkin tidak dikecualikan oleh aturan sebelumnya. Anda tidak perlu menangani input yang tidak valid.
Contoh berikut menampilkan semua solusi yang harus Anda tangani untuk molekul itu.
Rotasi 180 derajat pada bidang halaman salah satu rumus molekul dianggap redundansi dan tidak perlu ditampilkan.
Pada contoh di bawah ini saya akan menunjukkan semua formula yang mungkin untuk sebuah molekul, kemudian tunjukkan yang tidak perlu ditampilkan.
Contoh
Memasukkan: C2H6O2
Pertama, inilah semua formula yang mungkin untuk input ini (Terima kasih kepada @Jonathan Allan)
01 H
|
O H
| |
H - O - C - C - H
| |
H H
02 H
|
H O
| |
H - O - C - C - H
| |
H H
03 H H
| |
H - O - C - C - O - H
| |
H H
04 H H
| |
H - O - C - C - H
| |
H O
|
H
05 H H
| |
H - O - C - C - H
| |
O H
|
H
12 H H
| |
O O
| |
H - C - C - H
| |
H H
13 H
|
O H
| |
H - C - C - O - H
| |
H H
14 H
|
O H
| |
H - C - C - H
| |
H O
|
H
15 H
|
O H
| |
H - C - C - H
| |
O H
|
H
23 H
|
H O
| |
H - C - C - O - H
| |
H H
24 H
|
H O
| |
H - C - C - H
| |
H O
|
H
25 H
|
H O
| |
H - C - C - H
| |
O H
|
H
34 H H
| |
H - C - C - O - H
| |
H O
|
H
35 H H
| |
H - C - C - O - H
| |
O H
|
H
45 H H
| |
H - C - C - H
| |
O O
| |
H H
Dan berikut ini rumus-rumus yang harus ada dalam output jika kita mengeluarkan rotasi 180 ° pada bidang halaman:
01 H
|
O H
| |
H - O - C - C - H
| |
H H
03 H H
| |
H - O - C - C - O - H
| |
H H
12 H H
| |
O O
| |
H - C - C - H
| |
H H
13 H
|
O H
| |
H - C - C - O - H
| |
H H
14 H
|
O H
| |
H - C - C - H
| |
H O
|
H
15 H
|
O H
| |
H - C - C - H
| |
O H
|
H
23 H
|
H O
| |
H - C - C - O - H
| |
H H
25 H
|
H O
| |
H - C - C - H
| |
O H
|
H
35 H H
| |
H - C - C - O - H
| |
O H
|
H
Anda tidak perlu menampilkan label rumus dan Anda dapat menampilkan salah satu rotasi ketika ada dua. Misalnya Anda dapat menampilkan 02 atau 35.
Berikut adalah beberapa input yang valid untuk menguji kode Anda:
C3H8O2 C1H4O0 C2H6O2 C1H4O1 C2H6O2
PC yang diberikan ahli kimia untuk menyelesaikan tugas Anda sudah cukup lama sehingga Anda tidak memiliki banyak memori untuk menyimpan kode Anda, jadi ini adalah kode-golf dan jumlah byte terkecil yang menang!
Jawaban:
Ruby, 275
Rumus gabungan untuk sidechains kiri dan kanan dan variabel dihilangkan
h
Ruby, 279
Tidak digabungkan dalam program uji
Keluaran
Spasi sesuai dengan output pertanyaan. Tulang punggung vertikal alih-alih horizontal diizinkan per komentar. Rotasi seluruh tampilan melalui 90 atau 180 derajat dianggap setara.
sumber