Holaは、賞金プールが充実したJSプログラミングコンテストを再び発表します。
- 1位:1500 USD
- 2位:1000 USD
- 3位:500 USD
- おそらく、誰かの非常に独創的なソリューションを350 USDの特別賞でマークすることにします。
- CCにアドレスを入力してこのコンテストへのリンクを誰かに送信し、その人が賞品を受け取った場合、あなたは彼と同じ金額を受け取ります。
才能のあるプログラマを探しているので、興味深いソリューションの作者をインタビューに招待します。
![](https://habrastorage.org/files/fd5/99c/da2/fd599cda29ff4f8090af1e6f43523c27.jpg)
ルール
以前のコンテストを覚えている人の中には、タスクの条件が明確に定まっていないことに不満を抱いており、参加者は私たちが考えていたものを「推測」する必要がありました。 今回は、条件が非常に一意に定式化され、参加者が自由に解決策の参照実装となります。 勝者は、コードが最速であり、正確性のテストに合格することを条件とするものです。
英語でのコンテストの条件は、 当社のウェブサイトでご覧いただけます。 以下はロシア語への翻訳です。
- challengejs+habrahabr@hola.orgに決定を送信します。
- 決定は、2015年12月25日 23:59:59 UTCまで行われます。
- 受賞者は2016年1月8日に発表されます。
- 決定を複数回送信できますが、各参加者からは、最新の決定のみが考慮され、作業を受け入れる期限までに送信されます。
- テストのために、 Node.js v5.0.0 (発行時の安定バージョン)を使用します。
- ソリューションは、JSの単一ファイルで構成する必要があります 。
- ソリューションは純粋なJSである必要があります。 CoffeeScriptまたは同様の言語を好む場合は、送信する前にJSでソリューションを翻訳する必要があります。 ブロードキャスト結果とともにオリジナルを送信することを歓迎します(ただし、必須ではありません)。
- 標準のNode.jsに含まれているモジュールもロードできません。
- ソリューションの正確性とパフォーマンスをテストします。 正当性テストに合格したソリューションのみが、パフォーマンスのテストを許可されます。 最速の正しい決定が勝ちます。
- 参加者のすべての作業、および正確性とパフォーマンスのテストは、報告会の間に公開されます。
- 要約すると、メールアドレスではなく、フルネーム(または購読している場合はニックネーム)を公開します。
- 参加者が競技終了前に決定を公表することは禁止されています。 違反者は失格となります。
- 問題の状態があいまいに見える場合は、状態について質問するのではなく、参照実装(下記を参照)を使用して状態の理解をテストします。 リファレンス実装の動作が条件に反している場合は、 お知らせください 。
問題の声明
メールシステム用のフィルターアプリケーションシステムを開発しています。 1つの関数をエクスポートするNode.jsのモジュールを作成する必要があります。
filter(messages, rules)
messages
— , :from
to
. .rules
— :from
(),to
()action
(). .
ASCII
0x20
0x7F
.
, ,
from
to
, . ;
*
(0 ) ,
?
— .
from
to
,
*
. ,
from
to
, .
, , .
filter
, .
action
, ,
rules
. , .
filter
:
filter({
msg1: {from: 'jack@example.com', to: 'jill@example.org'},
msg2: {from: 'noreply@spam.com', to: 'jill@example.org'},
msg3: {from: 'boss@work.com', to: 'jack@example.com'}
}, [
{from: '*@work.com', action: 'tag work'},
{from: '*@spam.com', action: 'tag spam'},
{from: 'jack@example.com', to: 'jill@example.org', action: 'folder jack'},
{to: 'jill@example.org', action: 'forward to jill@elsewhere.com'}
])
filter
:
{
msg1: ['folder jack', 'forward to jill@elsewhere.com'],
msg2: ['tag spam', 'forward to jill@elsewhere.com'],
msg3: ['tag work']
}
filter
http://hola.org/challenge_mail_filter/reference. . ( ). , , . , , , .
, 10 10 . .
HTTP- POST
application/json
. :
messages
rules
, —
filter
. , JSON, , . HTTP 400
text/plain
.
!