Tugas
Buat bot IRC sederhana yang melakukan tugas sederhana seperti menyapa pengguna.
Detail
(Anda dapat melihat dokumen RFC ini .)
Tulis program lengkap yang melakukan ini:
Input program
nickname
danrealname
dari pengguna.- Semua
nickname
danrealname
formulir mana yang[A-Za-z0-9]+
harus diizinkan, tetapi tidak penting apakah formulir lain diizinkan. Misalnya, jika pengguna ingin1234qwerty
sepertinickname
dan5319009
sebagairealname
, program harus menggunakan nama-nama, tetapi tidak penting apakah program ini dapat menggunakan^^☆Rick Astley☆^^
(yang termasuk non-alfabet & desimal) sebagai (nickname
ataurealname
) atau tidak, bahkan berpikir nama ini mungkin ditolak oleh server.
- Semua
Input program
serverAddress
dari pengguna.- Bentuknya
serverAddress
adalahserverIP:serverPort
, di manaserverIP
adalah alamat IP server danserverPort
merupakan port nomor server.
- Bentuknya
Program terhubung ke port
serverPort
di server IRCserverIP
, dan itu harus mengatur nama panggilan itu sebagainickname
dan nama aslirealname
dengan mengirimUSER realname 0 * :realname
danNICK nickname
.Program memasukkan satu
channelName
yang tidak termasuk#
, dan bergabung ke saluran#channelName
.Kirim pesan pribadi
Hello, world!
ke#channelName
saluran seperti ini:PRIVMSG #channelName :Hello, world!
Kemudian, program melakukan ini:
A. Jika seseorang bergabung, menyapanya dengan mengatakan
Hello, @!
ke#channelName
mana @ adalah julukan dari dia / dirinya.B. Jika program ini ditendang, coba bergabung kembali.
C. Jika seseorang ditendang atau dilarang, katakan
POW HAHA
.D. Jika seseorang pergi (
PART
atauQUIT
), katakanGoodbye, @!
, di mana @ adalah nama panggilannya.E. Jika seseorang mengatakan beberapa teks termasuk
Turing test
atauturing test
, ucapkanI'm a human!
.F. Jika seseorang mengatakan beberapa teks termasuk
6*9
, berhenti dengan mengirimQUIT :42
ke server.G. Jika seseorang mengatakan beberapa teks termasuk
all your base are belong to us
(tidak peka huruf besar-kecil), berhentilah dengan mengirimQUIT :What you say!
ke server.H. Jika seseorang mengatakan beberapa teks yang diawali dengan spasi dan tindakan di atas tidak dilakukan oleh teks, ucapkan jumlah charcode dari semua (kecuali spasi pertama) karakter dalam teks.
Jika terjadi kesalahan
Jika kesalahan (seperti kesalahan koneksi atau tidak valid nickname
) terjadi, Anda dapat melakukan apa yang ingin Anda lakukan. Misalnya, jika nickname
sudah digunakan, program mungkin berhenti, mendapatkan yang baru nickname
dari pengguna, atau secara otomatis mengubah nickname
dan coba lagi.
Larangan
Program
- Sebaiknya tidak menggunakan fungsi internal atau pustaka yang dibuat untuk klien / bot IRC. yaitu sesuatu seperti perpustakaan klien IRC
- Harus meminta apa yang akan diinput, sebelum mendapat input . Misalnya, sebelum masukan
serverAddress
, harus memintaWrite the address of server:
,serverIP:serverPort >
,serverAddress >
, atau beberapa teks bahwa pengguna dapat mengenali. - Harus bekerja pada beberapa server IRC menggunakan UTF-8. (mis. tidak untuk server tunggal)
- Pesan yang dikirim ke server tidak boleh
NOTICE
. (RFC 2812, 3.3.2 Pemberitahuan: Perbedaan antaraNOTICE
danPRIVMSG
apakah balasan otomatis TIDAK PERNAH dikirim sebagai respons terhadapNOTICE
pesan.) - Harus mengirim pesan dari mana permintaan itu berasal (
#channelName
ataunickname
). - Haruskah
PONG
ketikaPING
ed, tentu saja.
PS
Yah, saya baru saja membuat ini, karena tidak ada teka-teki tentang bot IRC.
Edit
Setelah membaca komentar @ dmckee, saya mengubah aturan untuk memilih pemenang.
Default
bonus
= +0Jika entah bagaimana program dapat terhubung ke saluran (bahkan jika tidak
#channelName
),bonus
= 1Jika program dapat melakukan langkah 1 ~ 5,
bonus
* = 2.Untuk setiap tugas A ~ H pada langkah 6, jika program mengimplementasikan,
bonus
* =1.2
.Untuk setiap enam batasan, jika program mengikuti itu,
bonus
* =1.05
.
dan score = int(codelength/bonus)
.
Program dengan skor terendah adalah pemenang. Jika dua jawaban memiliki skor yang sama, maka jawaban dengan suara terbanyak menang.
Sunting EDIT: Saya pikir 1.2
dan 1.05
pada langkah 4 dan 5 harus disesuaikan sedikit lebih besar .. Apa pendapat Anda tentang ini?
Pemenangnya diputuskan, namun, saya pikir ada terlalu sedikit entri.
Siapa pun masih dapat mengirimkan kode ..: P