Tantangan ini terinspirasi oleh kutipan Oliver Sacks ini:
"Pada usia 11, saya bisa mengatakan 'Saya natrium' (Elemen 11), dan sekarang di usia 79, saya adalah emas." - Oliver Sacks
Saya ingin Anda menemukan angka dalam string dan menggantinya dengan simbol elemen yang sesuai. (1 adalah H, 2 adalah Dia, 3 adalah Li, dll.) Ada beberapa aturan yang harus diikuti:
- Digit tunggal dan ganda diganti dengan elemen terkait seperti biasa. Abaikan 0s di awal angka. Jika hanya 0s dalam suatu angka, abaikan saja. Misalnya
1 01 10 0 00
menjadiH H Ne 0 00
- Lebih dari 2 digit bersama-sama dibagi menjadi kelompok-kelompok 2. Jumlah ganjil digit harus memiliki satu digit tambahan di akhir. Misalnya
0153 5301 153
akan menjadiHI IH PLi
Karena aturan ini, Anda hanya perlu mengetahui elemen dari 1 hingga 99 - Angka harus diperlakukan sama tidak peduli karakter apa yang mengelilinginya dan koma dan titik desimal bukan bagian dari angka.
P90X 42,800 3.14159
akan menjadiPThX Mo,Hg0 Li.SiPF
Contoh Input / Output (I / O):
I: 32289216
O: GeNiUS
I: J08017 5811
O: JOHN CeNa
I: M18227 0592tt10r
O: MArTiN BUttNer
I: De072816
O: DeNNiS
I: D088r1907085
O: DOOrKNOB
I: 13ex A.
O: Alex A.
Input akan berada dalam format terdekat dengan string yang dimiliki bahasa Anda.
Tabel periodik untuk referensi:
Ini adalah kode-golf , sehingga program Anda akan dinilai dalam byte.
Jawaban:
Mathematica,
969489 byteMma memiliki beberapa set data ...
sumber
JavaScript (ES6), 202 byte
String yang dihilangkan berisi karakter yang tidak diinginkan, jadi ini adalah hexdump (semoga reversibel):
Teknik di sini adalah menempatkan semua singkatan elemen dalam satu string, dipisahkan oleh ketiadaan — itulah tujuan regex kedua
/[A-Z][a-z]?/g
; cocok dengan setiap huruf besar, secara opsional diikuti oleh huruf kecil. Regex pertama/\d\d?/g
,, cocok dengan setiap set 2 (atau 1) digit di input, jadi ini menggantikan setiap set digit N dengan elemen pada indeks N dalam string yang terkompresi dan cocok.Inilah string asli, jika orang lain ingin menggunakannya: (yang ada
A
di ujungnya adalah pengisi)Selamat datang pertanyaan dan saran!
sumber
Uus
danUuo
?+y?...:...
karena Anda mengganti grup digit[y]
sebagai ganti[+y]
dan menyimpan 1 bytePython 3,
278285 byteKasus uji:
sumber
f('P90X 42,800 3.14159')
mengembalikan 'PThX Mo, Hgs Li.SiPF' alih-alih 'PThX Mo, Hg0 Li.SiPF' danf('1 01 10 0 00')
mengembalikan 'HH Ne s' alih-alih 'HH Ne 0 00' . Ngomong-ngomong, saya hanya menggunakan pendekatan slicing yang diperluas dalam solusi Python 2 saya. Terima kasih!Python 2,
312304 byteYang ini menciptakan fungsi f yang mengambil string angka sebagai argumen dan mengembalikan string yang sesuai dengan simbol elemen diganti.
Fungsi iterates lebih dari string satu hingga dua digit ( '1' , '01' , '10' , '00' tetapi tidak '0' ) atau satu karakter ( 'a' , '0' tetapi tidak '1' ). Dalam kasus digit, string dikonversikan menjadi bilangan bulat dan melihat ke dalam rangkaian simbol elemen yang disatukan di mana masing-masing simbol diisi dengan dua karakter. Dalam hal karakter, string hanya digunakan tanpa pencarian.
Tes untuk setiap contoh dalam pertanyaan semuanya lulus:
sumber