読者です 読者をやめる 読者になる 読者になる

生涯未熟

プログラミングをちょこちょこと。

returnTrueやってみたけど惨敗した

JavaScriptでお題に対してTrueを返すという returnTrue をやってみました。

が、見事に2問しか解けなくて惨敗しました。

ここにはその記録として色々書いていきます。 ※解答を書いているので注意

事前情報

最適解ではありませんがGithubに解いた方の解答集がありました。

github.com

僕のように惨敗を喫した方は、ここの解答を参考に色々と学びましょう。

id

function id(x) {
    return x;
}

id( [解答入力欄] )

これは簡単で、答えは !0 でした。

まぁ普通は true って書きますよね・・・(初っ端trueって解答した勢

reflexive

function reflexive(x) {
    return x != x;
}

reflexive( [解答入力欄] )

これもまだ割りかし簡単ですね。

答えは NaN になります。

NaNは自身との等価演算を行うとfalseを返すので、不等価演算の場合はtrueを返します。

transitive

こっから訳分からんちんでした。

function transitive(x,y,z) {
    return x && x == y && y == z && x != z;
}

transitive( [解答入力欄] )

パッと見で答えられる人はすげぇっす。

これは答えは [],0,[] になります。

[] != [] でtrueになるってのが気付かなかったっす・・・

counter

function counter(f) {
    var a = f(), b = f();
    return a() == 1 && a() == 2 && a() == 3
        && b() == 1 && b() == 2;
}

counter( [解答入力欄] )

これはちょっと面白い解き方がありました。

先ほど紹介した解答集だと x=>$=>x=-~x って解き方が紹介されてました。

確かにふむふむ納得という解き方なのですが、なんと7charsで解いている方がいました。

で、どうやって7charsで解くかというと x=>prompt というなんともアレな解き方でした。

Chromeだと動かなかったのですが、Firefoxではプロンプトが表示されます。

そこに 1→2→3→1→2と順に入力してやると見事解いたことになりました、卑怯くさい!

というわけで時間的に問題見れたのはここまででした。

是非自信のある方は残りの問題を挑戦してみてください!