仕事
ユーザーへの挨拶のような単純なタスクを実行する単純なIRCボットを作成します。
細部
これらを実行する完全なプログラムを作成します。
プログラムの入力
nickname
とrealname
ユーザーから。- すべて
nickname
とrealname
どのフォームを[A-Za-z0-9]+
許可する必要がありますが、他のフォームを許可するかどうかは重要ではありません。たとえば、ユーザーが1234qwerty
asnickname
および5319009
asをrealname
必要とする場合、プログラムはそれらの名前を使用する必要がありますが、プログラムが^^☆Rick Astley☆^^
(非アルファベットと10進数を含む)を(nickname
またはrealname
)として使用できるかどうかは重要ではありません。サーバーによって。
- すべて
プログラム
serverAddress
はユーザーから入力します。- の形式は
serverAddress
ですserverIP:serverPort
。serverIP
はサーバーのIPアドレスで、はサーバーserverPort
のポート番号です。
- の形式は
プログラムは
serverPort
IRCサーバーのポートに接続しserverIP
、とを送信することによりnickname
、ニックネームを実名に設定する必要があります。realname
USER realname 0 * :realname
NICK nickname
プログラムは
channelName
を含まないシングルを入力#
し、チャンネルに参加します#channelName
。次のようにプライベートメッセージ
Hello, world!
を#channelName
チャンネルに送信します。PRIVMSG #channelName :Hello, world!
次に、プログラムはこれらを実行します。
A.誰かが参加する場合は、に言っ
Hello, @!
て挨拶し#channelName
ます。ここで、@は彼/彼女のニックネームです。B.プログラムがキックされた場合は、再度参加してみてください。
C.人がキックまたは禁止されている場合は、と言い
POW HAHA
ます。D.人が(
PART
またはQUIT
)を去る場合は、と言いますGoodbye, @!
。ここで、@はその人のニックネームです。E.誰かが
Turing test
またはを含むテキストを言ったらturing test
、と言いI'm a human!
ます。F.誰かがを含むテキストを言った場合、サーバーに
6*9
送信QUIT :42
して終了します。G.誰かが
all your base are belong to us
(大文字小文字を区別しない)を含むテキストを言った場合QUIT :What you say!
、サーバーに送信して終了します。H.誰かがスペースの前にあるテキストとそれ以上の動作がテキストによって実行されないと言う場合、テキスト内のすべての(最初のスペースを除く)文字の文字コードの合計を言います。
エラーが発生した場合
エラー(接続エラーや無効などnickname
)が発生した場合、必要な操作を実行できます。たとえば、nickname
がすでに使用されている場合、プログラムは停止するnickname
か、ユーザーから新しいものを取得するか、自動的にを変更しnickname
て再試行します。
制限
プログラム
- IRCクライアント/ボット作成用の内部関数またはライブラリを使用しないでください。つまり、IRCクライアントライブラリのようなもの
- 必要があり、それが入力を取得する前に、どのようなことは入力よプロンプト。たとえば、入力する前に
serverAddress
、それはプロンプトを表示する必要がありWrite the address of server:
、serverIP:serverPort >
、serverAddress >
、いくつかのテキストまたはユーザーが認識できること。 - UTF-8を使用する複数のIRCサーバーで動作するはずです。(つまり、単一サーバーではありません)
- のサーバーに送信されるメッセージはであってはなりません
NOTICE
。(RFC 2812、3.3.2注意:差NOTICE
とは、PRIVMSG
自動返信がに応答して送信されてはならないということであるNOTICE
メッセージ)。 - リクエスト元のメッセージを送信する必要があります(
#channelName
またはnickname
)。 - もちろん
PONG
、PING
編集する必要があります。
PS
まあ、私はこれを作っただけです。なぜならIRCボットについてのパズルがなかったからです。
編集する
@dmckeeのコメントを読んだ後、勝者を選ぶルールを変更しました。
デフォルト
bonus
= +0何らかの理由でプログラムがチャネルに接続できる場合(そうでない場合でも
#channelName
)、bonus
= 1プログラムがステップ1から5を実行できる場合、
bonus
* = 2。ステップ6の各タスクA〜Hについて、プログラムが実装する場合、
bonus
* =1.2
。6つの制限ごとに、プログラムがそれに従っている場合、
bonus
* =1.05
。
とscore = int(codelength/bonus)
。
最も低いスコアのプログラムが勝者です。2つの回答のスコアが同じ場合、投票数が最も多い回答が優先されます。
EDIT編集:私は思う1.2
し、1.05
ステップ4と5に大きめに調整する必要があります..あなたはこれについてどう思いますか?
勝者は決まっていますが、エントリーが少なすぎると思います。
だれでもまだコードを送信できます..:P