Holaは、賞金プールが充実したJSプログラミングコンテストを再び発表します。
- 1位:1500 USD
- 2位:1000 USD
- 3位:500 USD
- おそらく、誰かの非常に独創的なソリューションを350 USDの特別賞でマークすることにします。
- CCにアドレスを入力してこのコンテストへのリンクを誰かに送信し、その人が賞品を受け取った場合、あなたは彼と同じ金額を受け取ります。
才能のあるプログラマを探しているので、興味深いソリューションの作者をインタビューに招待します。
 
      ルール
以前のコンテストを覚えている人の中には、タスクの条件が明確に定まっていないことに不満を抱いており、参加者は私たちが考えていたものを「推測」する必要がありました。 今回は、条件が非常に一意に定式化され、参加者が自由に解決策の参照実装となります。 勝者は、コードが最速であり、正確性のテストに合格することを条件とするものです。
英語でのコンテストの条件は、 当社のウェブサイトでご覧いただけます。 以下はロシア語への翻訳です。
- 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
      
      .
!