Perhatikan ini adalah pertanyaan yang terutama berfokus pada struktur data
pengantar
Bacefook ingin orang lebih ramah! Karena itu, mereka menerapkan sistem baru untuk menyarankan teman! Tugas Anda adalah membantu Bacefook untuk mengimplementasikan sistem saran baru mereka.
Spesifikasi:
Program Anda harus REPL (lingkaran baca-eval-print) mendukung 3 jenis perintah: FRIEND
, SUGGEST
dan KNOW
.
FRIEND X Y
- Menentukan itu X
dan Y
berteman di jejaring sosial.
Jika X berteman dengan Y, maka Y berteman dengan X
Bisa, tetapi tidak harus memiliki output
X selalu berteman dengan X
KNOW X Y
- Keluarkan nilai kebenaran jika X dan Y berteman, falsy sebaliknya
KNOW X X
akan selalu menghasilkan nilai yang benar
SUGGEST X Y
- Keluarkan nilai yang benar jika X dan Y harus menjadi teman, jika tidak sebaliknya. X dan Y harus berteman jika:
X dan Y bukan teman
X dan Y memiliki setidaknya 1 teman yang sama
Anda diizinkan untuk mengganti FRIEND
, SUGGEST
dan KNOW
dengan string Anda sendiri, tetapi Anda harus menyebutkan string apa yang telah Anda ganti dengan setiap perintah.
Program Anda dapat menerima input / menghasilkan output dengan cara apa pun yang diinginkan, asalkan cukup mudah untuk mengenali cara kerjanya.
Jumlah orang di jejaring sosial N
adalah antara 1 dan 100.000, tetapi mungkin ada sejumlah "tautan pertemanan" (tepian).
Jika Anda belum menyadarinya, ini adalah masalah pencarian grafik. Struktur data (yang kemungkinan) paling mudah (dan mungkin paling cepat) untuk mengimplementasikannya adalah matriks adjacency.
Uji kasus
FRIEND A B
FRIEND A C
FRIEND B D
SUGGEST A B -> Falsy, as they are friends
SUGGEST A D -> Truthy, as they share B as a common friend
SUGGEST C D -> Falsy, they do not share a common friend
KNOW D B -> Truthy, they are friends
KNOW B C -> Falsy, not friends
=============
FRIEND Tom Tim
KNOW Tom Tim -> Truthy
KNOW Tim Tom -> Truthy
KNOW Tom Kit -> Falsy
=============
KNOW Tim Kit -> Falsy
FRIEND Tim Tom
KNOW Tim Kit -> Falsy
FRIEND Tom Kit
SUGGEST Tim Kit -> Truthy
=============
FRIEND X Y
SUGGEST X Y -> Falsy since X is friends with X
Berikut beberapa kasus uji lagi dalam bentuk gambar
Kondisi menang
Ini kode-golf , kode terpendek menang!
SUGGEST UK EU
.
{A, B, C, D}
?