Tâche
Créez un bot IRC simple qui fait une tâche simple comme saluer l'utilisateur.
Détail
(Vous pouvez voir ce document RFC .)
Écrivez un programme complet qui les exécute:
Les entrées du programme
nicknameetrealnamede l'utilisateur.- Tout
nicknameetrealnamequel formulaire[A-Za-z0-9]+doit être autorisé, mais il n'est pas important que d'autres formulaires soient autorisés. Par exemple, si l'utilisateur veut au1234qwertyfurnicknameet à5319009mesurerealname, le programme doit utiliser ces noms, mais il n'est pas important que le programme puisse utiliser^^☆Rick Astley☆^^(qui inclut les caractères non alphabétiques et décimaux) comme (nicknameourealname) ou non, même si ce nom peut être rejeté par le serveur.
- Tout
Le programme
serverAddressentre de l'utilisateur.- La forme de
serverAddressestserverIP:serverPort, oùserverIPest l'adresse IP du serveur etserverPortle numéro de port du serveur.
- La forme de
Le programme se connecte au port
serverPortsur le serveur IRCserverIP, et il doit définir son pseudo asnicknameet realname asrealnameen envoyantUSER realname 0 * :realnameetNICK nickname.Le programme entre un single
channelNamequi n'inclut pas#et rejoint le canal#channelName.Envoyez un message privé
Hello, world!à la#channelNamechaîne comme ceci:PRIVMSG #channelName :Hello, world!Ensuite, le programme procède comme suit:
A. Si quelqu'un se joint, le saluer en disant
Hello, @!à#channelName, où @ est le surnom de lui / elle.B. Si le programme est lancé, essayez de vous réinscrire.
C. Si une personne est expulsée ou bannie, dites
POW HAHA.D. Si une personne quitte (
PARTouQUIT), disonsGoodbye, @!, où @ est son surnom.E. Si quelqu'un dit du texte, y compris
Turing testouturing test, disonsI'm a human!.F. Si quelqu'un dit du texte
6*9, quittez en envoyantQUIT :42au serveur.G. Si quelqu'un dit du texte, y compris
all your base are belong to us(insensible à la casse), quittez en envoyantQUIT :What you say!au serveur.H. Si quelqu'un dit qu'un texte précédé d'un espace et au-dessus des actes n'est pas exécuté par le texte, dites la somme du code de tous les caractères (sauf le premier espace) dans le texte.
En cas d'erreur
Si une erreur (telle qu'une erreur de connexion ou non valide nickname) s'est produite, vous pouvez faire ce que vous voulez faire. Par exemple, si le nicknameest déjà utilisé, le programme peut s'arrêter, en obtenir un nouveau nicknamede l'utilisateur ou modifier automatiquement le nicknameet réessayer.
Restriction
Le programme
- Ne doit pas utiliser de fonctions ou de bibliothèques internes destinées à la création de clients / bots IRC. c'est-à-dire quelque chose comme les bibliothèques clientes IRC
- Devrait demander ce qu'il entrera avant qu'il ne reçoive une entrée . Par exemple, avant les entrées
serverAddress, il doit inviterWrite the address of server:,serverIP:serverPort >,serverAddress >ou un texte que l'utilisateur peut reconnaître. - Devrait fonctionner sur plusieurs serveurs IRC utilisant UTF-8. (c'est-à-dire pas pour un seul serveur)
- Les messages envoyés au serveur ne devraient pas l'être
NOTICE. (RFC 2812, 3.3.2 Remarque: la différence entreNOTICEetPRIVMSGest que les réponses automatiques NE DOIVENT JAMAIS être envoyées en réponse à unNOTICEmessage.) - Devrait envoyer un message d'où provenait la demande (
#channelNameounickname). - Devrait
PONGquandPINGed, bien sûr.
PS
Eh bien, je viens de le faire, car il n'y avait pas de puzzle sur le bot IRC.
Éditer
Après avoir lu le commentaire de @ dmckee, j'ai changé la règle pour choisir le gagnant.
Par défaut
bonus= +0Si le programme peut se connecter à une chaîne (même si ce n'est pas le cas
#channelName),bonus= 1Si le programme peut exécuter les étapes 1 à 5,
bonus* = 2.Pour chaque tâche A ~ H à l'étape 6, si le programme implémente,
bonus* =1.2.Pour chaque six restrictions, si le programme suit cela,
bonus* =1.05.
et score = int(codelength/bonus).
Le programme avec le score le plus bas est gagnant. Si deux réponses ont le même score, alors la réponse avec les votes les plus élevés l'emporte.
EDIT Edit: Je pense 1.2et 1.05aux étapes 4 et 5 devrait être ajusté légèrement plus grand .. Que pensez-vous de cela?
Le gagnant est décidé, cependant, je pense qu'il y avait trop peu d'inscriptions.
N'importe qui peut toujours soumettre le code ..: P