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
nicknamedanrealnamedari pengguna.- Semua
nicknamedanrealnameformulir mana yang[A-Za-z0-9]+harus diizinkan, tetapi tidak penting apakah formulir lain diizinkan. Misalnya, jika pengguna ingin1234qwertysepertinicknamedan5319009sebagairealname, program harus menggunakan nama-nama, tetapi tidak penting apakah program ini dapat menggunakan^^☆Rick Astley☆^^(yang termasuk non-alfabet & desimal) sebagai (nicknameataurealname) atau tidak, bahkan berpikir nama ini mungkin ditolak oleh server.
- Semua
Input program
serverAddressdari pengguna.- Bentuknya
serverAddressadalahserverIP:serverPort, di manaserverIPadalah alamat IP server danserverPortmerupakan port nomor server.
- Bentuknya
Program terhubung ke port
serverPortdi server IRCserverIP, dan itu harus mengatur nama panggilan itu sebagainicknamedan nama aslirealnamedengan mengirimUSER realname 0 * :realnamedanNICK nickname.Program memasukkan satu
channelNameyang tidak termasuk#, dan bergabung ke saluran#channelName.Kirim pesan pribadi
Hello, world!ke#channelNamesaluran seperti ini:PRIVMSG #channelName :Hello, world!Kemudian, program melakukan ini:
A. Jika seseorang bergabung, menyapanya dengan mengatakan
Hello, @!ke#channelNamemana @ 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 (
PARTatauQUIT), katakanGoodbye, @!, di mana @ adalah nama panggilannya.E. Jika seseorang mengatakan beberapa teks termasuk
Turing testatauturing test, ucapkanI'm a human!.F. Jika seseorang mengatakan beberapa teks termasuk
6*9, berhenti dengan mengirimQUIT :42ke 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 nicknamesudah digunakan, program mungkin berhenti, mendapatkan yang baru nicknamedari pengguna, atau secara otomatis mengubah nicknamedan 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 antaraNOTICEdanPRIVMSGapakah balasan otomatis TIDAK PERNAH dikirim sebagai respons terhadapNOTICEpesan.) - Harus mengirim pesan dari mana permintaan itu berasal (
#channelNameataunickname). - Haruskah
PONGketikaPINGed, 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.2dan 1.05pada 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