Singularity Societyに入るには?

Singularity Societyでは様々なプロジェクトが走っています。現在もっとも注力しているのはBootCampとGraphAI。特にGraphAIの開発は活発です。

GraphAIでは任意の型のデータに対して、様々な処理を行っています。その中で再帰的な処理がいくつもでてきたので、それを元に問題を作りました。

type Primitive = string | number | boolean;
type NestedData = Primitive | NestedObject | NestedArray;

interface NestedObject {
  [key: string]: NestedData;
}
type AnyData = Record<string, NestedData>;

interface NestedArray extends Array<NestedData> {}

このように定義されてAnyDataに対して、以下の条件を満たす関数を作ってください。
良いコードが書けたらgithubにupし、XのPOSTでお知らせ教えて下さい!!
これらの処理を、さらっと書けて、自信のアイデアを実現したい人はSingularity Societyに参加する条件を満たしています。

問題1: 与えられたデータの全ての値を、“hello"に書き換える関数を作ってください

{a: {b: ["c", {d: {e: "f", g:["h", false]}}]}}
{a: {b: ["hello", {d: {e: "hello", g:["hello", "hello"]}}]}}

問題2: 以下2つの変数を定義する

const a: AnyDaya;
const b: AnyDaya;
このa, bの中身が型まで含めて同じかどうか比較する関数を作ってください。

問題3 この2の変数(a, b)をマージしたい。まずマージの定義を決め、これらをマージする関数を作ってください。

問題4 この2の変数(A, b)の差分を知りたい。まず差分の定義を決め、これらの差分をもとめる関数を作ってください。

問題5 問題2,3で変数が3つ以上与えられた場合でも動く関数を作ってください。

Enjoy coding.


関連ページ