Görev
Kullanıcı tebrik gibi basit bir görev yapan basit bir IRC bot olun.
detay
( Bu RFC belgesini görebilirsiniz .)
Bunları gerçekleştiren eksiksiz bir program yazın:
Program girdileri
nicknameverealnamekullanıcıdan.- Herkese
nicknameverealnamehangi forma[A-Za-z0-9]+izin verilir, ancak diğer formlara izin verilip verilmeyeceği önemli değildir. Örneğin, kullanıcı isterse1234qwertyolaraknicknameve5319009sırarealnameprogram bu isimleri kullanmak gerekir, ancak programın kullanıp kullanamayacağını önemli değildir^^☆Rick Astley☆^^olarak (non-alfabe & ondalık sayılar içerir) (nicknameveyarealname) ya da değil, hatta bu isim reddedilebilir düşünce sunucu tarafından.
- Herkese
Program
serverAddresskullanıcıdan girer .- Formu
serverAddressDİRserverIP:serverPort, neredeserverIPsunucunun IP adresidir veserverPortsunucunun port num olduğunu.
- Formu
Portuna programı bağlanacağı
serverPortIRC sunucusundaserverIPve 's takma ad olarak belirlesinnicknameolarak ve gerçek adırealnamegöndererekUSER realname 0 * :realnameveNICK nickname.Program , kanala
channelNamedahil olmayan#ve kanala katılan tek bir girdi girer#channelName.Kanala böyle özel bir mesaj
Hello, world!gönderin#channelName:PRIVMSG #channelName :Hello, world!Sonra program bunları yapar:
A. birisi söyleyerek onu tebrik katılırsa
Hello, @!için#channelName, nereye @ onu / onu takma adıdır.B. Program başlatılırsa, tekrar katılmayı deneyin.
C. Bir kişi vurulursa veya yasaklanırsa, deyin
POW HAHA.D. Eğer bir kişi bırakırsa (
PARTya daQUIT), diyelim kiGoodbye, @!, @ onun takma adıdır.E. Birisi
Turing testveya dahil bazı metinlerturing testsöylerseI'm a human!.F. Birisi dahil bazı metinler söylerse , sunucuya
6*9göndererek çıkınQUIT :42.G. Birisi
all your base are belong to us(büyük / küçük harf duyarlı) dahil bazı metinler söylerseQUIT :What you say!, sunucuya göndererek çıkın .H. Birisi boşluktan önce ve yukarıdaki eylemlerden bazılarının metin tarafından gerçekleştirilmediğini söylüyorsa, metindeki tüm (ilk boşluk hariç) karakterlerin charcode toplamını söyleyin.
Bir hata oluşursa
Bir hata oluşursa (bağlantı hatası veya geçersiz nickname), ne yapmak istediğinizi yapabilirsiniz. Örneğin nickname, zaten kullanımda ise program durabilir, nicknamekullanıcıdan yeni bir bilgi alabilir veya otomatik olarak değiştirip nicknameyeniden deneyebilir.
kısıtlama
Program
- IRC istemci / bot yapımı için herhangi bir dahili fonksiyon veya kütüphane kullanmamalıdır. IRC istemci kitaplıkları gibi bir şey
- Meli bir giriş girmeden önce ne girdi olacak, istemi . Örneğin, girdilerin önce
serverAddress, bu istemi gerekirWrite the address of server:,serverIP:serverPort >,serverAddress >, bazı metin veya kullanıcı tanıyabileceği. - UTF-8 kullanan birkaç IRC sunucusunda çalışmalıdır. (yani tek sunucu için değil)
- adlı kullanıcının sunucuya gönderdiği iletiler olmamalıdır
NOTICE. (RFC 2812, 3.3.2 Uyarı:NOTICEve arasındaki farkPRIVMSG, otomatik yanıtların birNOTICEmesaja yanıt olarak ASLA gönderilmemesidir .) - İsteğin nereden geldiğini (
#channelNameveyanickname) bir mesaj göndermelidir . - Should
PONGzamanPINGtabii ki, ed.
PS
Bunu yaptım, çünkü IRC botu hakkında bir bulmaca yoktu.
Düzenle
@ Dmckee'nin yorumunu okuduktan sonra kazanan seçme kuralını değiştirdim.
Varsayılan
bonus= +0Program bir şekilde bir kanala bağlanabiliyorsa (olmasa bile
#channelName),bonus= 1Program 1 ~ 5 adımlarını gerçekleştirebiliyorsa,
bonus* = 2.Her görev için 6. adımda A ~ H, program uygulanırsa,
bonus* =1.2.Her altı kısıtlama için, program bunu takip ederse,
bonus* =1.05.
ve score = int(codelength/bonus).
En düşük puana sahip program kazanır. İki cevap aynı puana sahipse, en yüksek oyu alan cevap kazanır.
EDIT Edit: Bence 1.2ve 1.05adım 4 ve 5 biraz daha büyük ayarlanmalıdır .. Bu konuda ne düşünüyorsun?
Kazanan karar verilir, ancak çok az giriş olduğunu düşünüyorum.
Yine de herkes kodu gönderebilir ..: P