Tulis program yang menggunakan pohon biner sebagai input, dan output simpul terdalam dan kedalamannya. Jika ada dasi, cetak semua simpul yang terlibat serta dalamnya. Setiap node direpresentasikan sebagai:
T(x,x)
T(x)
T
di mana T
adalah pengidentifikasi satu atau lebih karakter alfanumerik dan masing-masing x
adalah simpul lain.
Berikut definisi sederhana dari pohon biner:
- Di kepala pohon biner adalah sebuah simpul.
- Sebuah simpul di pohon biner memiliki paling banyak dua anak.
Sebagai contoh, input A(B(C,D(E)))
(di bawah) akan menampilkan 3:E
.
Sementara pohon berikut ini adalah ikatan tiga arah antara 5, 11, dan 4, dan kedalamannya juga 3 (mulai dari 0):
Input 2(7(2,6(5,11)),5(9(4)))
(di bawah) akan menampilkan 3:5,11,4
.
Ini adalah kode golf, jadi kode terpendek yang diukur dalam byte menang.
code-golf
binary-tree
Jwosty
sumber
sumber
Jawaban:
CJam,
4947sumber
Haskell, 186 byte
Program lengkap, aktifkan tree
stdin
, menghasilkan format output khusus padastdout
:Panduan untuk kode golf'd (menambahkan nama yang lebih baik, ketik tanda tangan, komentar, dan beberapa sub-ekspresi ditarik keluar dan dinamai - tetapi sebaliknya kode yang sama; versi yang ungolf'd tidak akan mengacaukan membobol node dengan penomoran, atau menemukan yang terdalam dengan format output.) :
sumber
GolfScript (75 karakter)
Tidak terlalu kompetitif, tetapi cukup bengkok sehingga memiliki minat:
Kode ini memiliki tiga fase. Pertama, kami memproses ulang string input:
Kami telah mengubah misalnya
A(B(C,D(E)))
menjadi'A'^('B'^('C'^'D'^('E'^)''^)''^)
. Jika kita menetapkan blok yang cocok untuk^
kita dapat melakukan pemrosesan yang berguna dengan menggunakan~
untuk mengevaluasi string.Kedua, kami menemukan kedalaman maksimum:
Akhirnya kami memilih node terdalam dan membangun output:
sumber
Perl 5 - 85
Silakan mengedit posting ini untuk memperbaiki jumlah karakter. Saya menggunakan
say
fitur, tetapi saya tidak tahu tentang flag untuk membuatnya berjalan dengan benar tanpa menyatakanuse 5.010;
.Demo di ideone
Output dipisahkan oleh ruang alih-alih dipisahkan oleh koma.
Kode hanya menggunakan regex rekursif untuk menghapus akar pohon di hutan, sampai tidak mungkin untuk melakukannya. Kemudian string sebelum yang terakhir akan berisi semua node daun pada level terdalam.
Sampel dijalankan
sumber
VB.net
Asumsi: Nilai Node tidak dapat berisi
,
,(
,)
sumber
Javascript (E6) 120
Versi berulang
Tidak disatukan dan diuji
Tes di konsol Firefox:
Keluaran
sumber