export default(s,r=Math.random,z=n=>n>0?String.fromCharCode(768+r()*112)+z(n-1):'')=>s.replace(/./g,c=>c+z(r()*8))
(8/6火 23:59:59 提出締切)
『JS体操』は、面白法人カヤックが主催するJavaScriptのコードゴルフ大会。JavaScriptの問題をゲーム感覚で解きながら言語仕様の理解とプログラミング能力を深める、まさに頭の体操。
出題される問題は、JavaScriptの言語仕様を駆使するものから数学や様々なアルゴリズムを使う問題まで様々。
上級者の方からJavaScriptを使い始めたという方まで、たくさんの挑戦お待ちしています!
※コードゴルフとは、与えられたアルゴリズムを可能な限り短いソースコードで記述することを競うプログラミング競技です。ソースコードの文字数が、その人のスコアとなります
今回の問題は、任意の文字列をZalgo Textに変換する問題です。すでに要件を満たすリファレンス実装がzalgo.jsに書いてあります。これをなるべく短い文字数で書き直してみましょう。
Zalgo(ザルゴ)とは、FlashアニメータDave Kallyによって生み出されたインターネット上の人々を狂気に陥れ破滅へと導く架空の生物。
Zalgo Textはダイアクリティカルマークとも呼ばれる「結合文字(Combining Character)」をまとい、まるでZalgoのような、狂気に満ちた呪われた文字列。世にも恐ろしいウェブサイトを作る際には必須なテクニックです!
まずは200文字以下を目指しましょう!
※JS体操ではJavaScriptの文字列のlengthプロパティの値を文字数とみなします。つまり、UTF-16のコードユニットの数を文字数とします。コードポイントや書記素クラスタの数、またJSファイルのバイト数ではないことに注意してください。
問題のZIPファイルをダウンロードして挑戦してください。コードを書き終えたら、サイト下部の提出フォームに提出して参加完了です。
※推奨ブラウザはGoogle Chrome(最新版)です。提出されたコードはChrome上で確認します。
優秀なコード・面白いコードを提出された学生さんには「カヤックの新卒採用・インターンでの書類選考免除」特典をお送りします。ぜひ、今回の機会をご活用ください!
希望される方は、提出フォームの「特典を希望する」にチェックを入れてください。後日、対象者にのみご連絡差し上げます。
※学生とは、大学生・大学院生・短大生・専門学校生・高等専門学校生・高校生・中学生のいずれかであることを指します
問題の解答・解説はカヤック技術部ブログで公開します。考えられる様々なアプローチ、投稿された面白いコードや凄いコードの紹介、どのように実際の仕事に応用できるのかなどを解説します。過去の問題・解説を見たい方はこちらをご覧ください。
以下よりご登録いただくと、今後の問題や解説のお知らせが届きます。リマインドが欲しい方は、ぜひ、ご登録ください!
index.htmlをローカルファイルとして直接ブラウザで開くと実行できません。JSモジュールやその他ファイルの読み込みのため、XMLHttpRequestで通信可能な環境で実行する必要があるためです。
よって、ローカルHTTPサーバを介してindex.htmlを開いてください。VS Codeをご利用の方はLive Serverプラグインが便利です。
今回は文字数だけでなく、テストの結果やエラーがグラフなどで可視化されます。是非デバッグの参考にしてください。等幅フォントで表示されるようにCSSを設定していますが、もし崩れていたらごめんなさい。
編集して良いのはzalgo.jsのみです。zalgo.jsをなるべく短く書き直しましょう!
なお、今回のテストは少々時間がかかります。もし重い処理を書いてしまうと、とても時間がかかります。ご注意ください。
要件を満たすかどうかは、test.jsのテストで判断します。テスト内容は具体的には以下です。
要件を満たしていても、たまたま奇跡的にエラーになることもありえます。その時はごめんなさい。何度か実行してエラーになる確率が低ければOKです。
今回の第3問は、前回の第2問のようなハックやチートは想定していません。ただし、出題側が想定していない、既出でないチートがもしあれば、ぜひ投稿してください。なお、既出のチートは以下です。
チートの詳細は、第2問「チート部門①②③」解説ブログを御覧ください。
テストに通らなかった場合、エラーメッセージが表示されます。デバッグの参考にしてください。なお、要件を満たしていてもたまたま奇跡的にエラーになることもありえます。何度か実行してエラーになる確率が低ければOKです。
本ページ下部の提出フォームにzalgo.jsの内容をコピペし送信してください。何度でも提出可能です。
テストに合格すると「Xでシェアする」ボタンが表示されます。画面(Zalgo Textと文字数の)スクリーンショットを添付の上、ぜひ #JS体操 のハッシュタグを付けてシェアしてください。
面白法人カヤックは、「つくる人を増やす」の経営理念のもと、面白いサービスを次々にリリースするクリエイター集団です。広告やPRの受託開発を行う『面白プロデュース事業』、ゲームの開発・運用を行う『ゲーム・エンタメ事業』、持続可能なまちづくりをジブンゴト化する『ちいき資本主義事業』などの主要事業の他、新規事業を企画・運用する環境も整っています。サイコロ給や採用キャンペーンなど、面白い組織制度にも力をいれています。
©2024 KAYAC Inc.