Compito
Crea un semplice bot IRC che esegua compiti semplici come salutare l'utente.
Dettaglio
(Potresti vedere questo documento RFC .)
Scrivi un programma completo che esegua questi:
Il programma inserisce
nickname
erealname
dall'utente.- Tutto
nickname
erealname
quale forma è[A-Za-z0-9]+
dovrebbe essere consentito, ma non è importante se sono consentite altre forme. Ad esempio, se l'utente desidera1234qwerty
comenickname
e5319009
comerealname
, il programma dovrebbe usare quei nomi, ma non è importante se il programma può usare^^☆Rick Astley☆^^
(che include caratteri non alfabetici e decimali) come (nickname
orealname
) o meno, anche se questo nome potrebbe essere rifiutato dal server.
- Tutto
Il programma immette
serverAddress
dall'utente.- La forma di
serverAddress
èserverIP:serverPort
, dove siserverIP
trova l'indirizzo IP del server edserverPort
è il numero di porta del server.
- La forma di
Il programma si collega alla porta
serverPort
sul server IRCserverIP
e dovrebbe impostare il suo nickname comenickname
e il nome reale comerealname
inviandoUSER realname 0 * :realname
eNICK nickname
.Il programma inserisce un singolo
channelName
che non include#
e si unisce al canale#channelName
.Invia un messaggio privato
Hello, world!
al#channelName
canale in questo modo:PRIVMSG #channelName :Hello, world!
Quindi, il programma esegue queste operazioni:
A. Se qualcuno si unisce, salutandolo dicendo
Hello, @!
a#channelName
, dove @ è il soprannome di lui / lei.B. Se il programma viene espulso, prova a riconnetterti.
C. Se una persona viene cacciata o bandita, diciamo
POW HAHA
.D. Se una persona lascia (
PART
oQUIT
), direGoodbye, @!
, dove @ è il soprannome di lui / lei.E. Se qualcuno dice del testo incluso
Turing test
oturing test
, dìI'm a human!
.F. Se qualcuno dice del testo incluso
6*9
, esci inviandoQUIT :42
al server.G. Se qualcuno dice del testo incluso
all your base are belong to us
(senza distinzione tra maiuscole e minuscole), esci inviandoQUIT :What you say!
al server.H. Se qualcuno dice che un testo che precede uno spazio e sopra gli atti non viene eseguito dal testo, indica la somma del codice di tutti i caratteri (tranne il primo spazio) nel testo.
Se si è verificato un errore
Se si verifica un errore (come errore di connessione o non valido nickname
), puoi fare quello che vuoi fare. Ad esempio, se nickname
è già in uso, il programma potrebbe arrestarsi, ricevere un nuovo nickname
utente o cambiare automaticamente nickname
e riprovare.
Restrizione
Il programma
- Non utilizzare funzioni interne o librerie destinate alla creazione di client / bot IRC. cioè qualcosa come le librerie client IRC
- Dovrebbe chiedere cosa verrà immesso, prima che ottenga un input . Ad esempio, prima di ingressi
serverAddress
, esso dovrebbe indurreWrite the address of server:
,serverIP:serverPort >
,serverAddress >
, o un certo testo che l'utente può riconoscere. - Dovrebbe funzionare su più server IRC usando UTF-8. (cioè non per singolo server)
- I messaggi inviati al server non dovrebbero esserlo
NOTICE
. (RFC 2812, 3.3.2 Avviso: la differenza traNOTICE
ePRIVMSG
è che le risposte automatiche NON DEVONO MAI essere inviate in risposta a unNOTICE
messaggio.) - Dovrebbe inviare un messaggio da dove proviene la richiesta (
#channelName
onickname
). - Dovrebbe
PONG
quandoPING
ed, ovviamente.
PS
Bene, l'ho appena fatto, perché non c'erano enigmi sul bot IRC.
modificare
Dopo aver letto il commento di @ dmckee, ho cambiato la regola per scegliere il vincitore.
Predefinito
bonus
= +0Se in qualche modo il programma può connettersi a un canale (anche se non lo è
#channelName
),bonus
= 1Se il programma può eseguire i passaggi 1 ~ 5,
bonus
* = 2.Per ogni attività A ~ H al punto 6, se il programma implementa,
bonus
* =1.2
.Per ogni sei restrizioni, se il programma lo segue,
bonus
* =1.05
.
e score = int(codelength/bonus)
.
Il programma con il punteggio più basso è il vincitore. Se due risposte hanno lo stesso punteggio, vince la risposta con il punteggio più alto.
Modifica EDIT: penso 1.2
che 1.05
al punto 4 e 5 dovrebbe essere regolato leggermente più grande .. Cosa ne pensi di questo?
Il vincitore è deciso, tuttavia, penso che ci fossero troppe poche voci.
Chiunque può ancora inviare il codice ..: P