10
4

JSF**k講座 2限目【最初の文字たち】

Last updated at Posted at 2024-07-22

初めに

1限目の復習をしっかりとしておきましょう
1限ではJSの型の変換などの基礎的な話をしています

2限目の内容

今回はJSFで文字を書く仕組みと、
false, true, undefined, NaN, Infinity,から取れる文字と0~9の数字たちを得る方法を教えていきます

説明の都合上被る文字がありますが
チートシート(作成中)に最適化した文字の出力方法を記入していくのでそちらをご参考ください

1限でも言いましたがfuckと何度も言うのもアレなのでJSFでいきます
【定期】JavaServer Facesではありません

まずはhelloworldと言いたいところですが....

肩慣らしにhelloworldを書こうと思っている方もいるかと思いますが
f**k(伏せ字なし)を書く方が数十倍楽です

下にhelloworldのコードを置いておくので開く人は心してみてください

私の技術力が未熟なため、まだまだ短くできるとは思いますが
大体イメージとしてこれだけかかるということを覚えてください

helloworldをJSFで書くとこうなります(グロ注意)
helloworld.js
(((+[])[((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]+!![]+!![]+!![]])+(([][[]]+[])[+!![]])+((![]+[])[+!![]+!![]+!![]])+((!![]+[])[+[]])+((!![]+[])[+!![]])+(([][[]]+[])[+![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]])+((!![]+[])[+![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]+!![]+!![]+!![]])+((!![]+[])[+!![]])])(+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]))[((!![]+[])[+[]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]+!![]+!![]+!![]])+((([]+[])[((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]+!![]+!![]+!![]])+(([][[]]+[])[+!![]])+((![]+[])[+!![]+!![]+!![]])+((!![]+[])[+[]])+((!![]+[])[+!![]])+(([][[]]+[])[+![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]])+((!![]+[])[+![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]+!![]+!![]+!![]])+((!![]+[])[+!![]])]+[])[+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]])+((!![]+[])[+[]])+((!![]+[])[[+!![]]])+((([][[]]+[])+[])[+!![]+!![]+!![]+!![]+!![]])+(([][[]]+[])[+!![]])+((([]+[])[((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]+!![]+!![]+!![]])+(([][[]]+[])[+!![]])+((![]+[])[+!![]+!![]+!![]])+((!![]+[])[+[]])+((!![]+[])[+!![]])+(([][[]]+[])[+![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]])+((!![]+[])[+![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]+!![]+!![]+!![]])+((!![]+[])[+!![]])]+[])[+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]])](((+!![]+!![]+!![])+[])+(+!![]+!![]+!![]+!![]+!![]+!![]))+((!![]+[])[+!![]+!![]+!![]])+((![]+[])[+!![]+!![]])+((![]+[])[+!![]+!![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]+!![]+!![]+!![]])+(((+[])[((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]+!![]+!![]+!![]])+(([][[]]+[])[+!![]])+((![]+[])[+!![]+!![]+!![]])+((!![]+[])[+[]])+((!![]+[])[+!![]])+(([][[]]+[])[+![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]])+((!![]+[])[+![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]+!![]+!![]+!![]])+((!![]+[])[+!![]])])((!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+[]))[((!![]+[])[+[]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]+!![]+!![]+!![]])+((([]+[])[((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]+!![]+!![]+!![]])+(([][[]]+[])[+!![]])+((![]+[])[+!![]+!![]+!![]])+((!![]+[])[+[]])+((!![]+[])[+!![]])+(([][[]]+[])[+![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]])+((!![]+[])[+![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]+!![]+!![]+!![]])+((!![]+[])[+!![]])]+[])[+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]])+((!![]+[])[+[]])+((!![]+[])[[+!![]]])+((([][[]]+[])+[])[+!![]+!![]+!![]+!![]+!![]])+(([][[]]+[])[+!![]])+((([]+[])[((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]+!![]+!![]+!![]])+(([][[]]+[])[+!![]])+((![]+[])[+!![]+!![]+!![]])+((!![]+[])[+[]])+((!![]+[])[+!![]])+(([][[]]+[])[+![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]])+((!![]+[])[+![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]+!![]+!![]+!![]])+((!![]+[])[+!![]])]+[])[+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]])](((+!![]+!![]+!![])+[])+(+!![]+!![]+!![]+!![]+!![]+!![]))+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]+!![]+!![]+!![]])+((!![]+[])[[+!![]]])+((![]+[])[+!![]+!![]])+(([][[]]+[])[+!![]+!![]])
コード開くとこんな感じです

(((+[])[((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]+!![]+!![]+!![]])+(([][[]]+[])[+!![]])+((![]+[])[+!![]+!![]+!![]])+((!![]+[])[+[]])+((!![]+[])[+!![]])+(([][[]]+[])[+![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]])+((!![]+[])[+![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]+!![]+!![]+!![]])+((!![]+[])[+!![]])])(+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]))[((!![]+[])[+[]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]+!![]+!![]+!![]])+((([]+[])[((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]+!![]+!![]+!![]])+(([][[]]+[])[+!![]])+((![]+[])[+!![]+!![]+!![]])+((!![]+[])[+[]])+((!![]+[])[+!![]])+(([][[]]+[])[+![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]])+((!![]+[])[+![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]+!![]+!![]+!![]])+((!![]+[])[+!![]])]+[])[+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]])+((!![]+[])[+[]])+((!![]+[])[[+!![]]])+((([][[]]+[])+[])[+!![]+!![]+!![]+!![]+!![]])+(([][[]]+[])[+!![]])+((([]+[])[((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]+!![]+!![]+!![]])+(([][[]]+[])[+!![]])+((![]+[])[+!![]+!![]+!![]])+((!![]+[])[+[]])+((!![]+[])[+!![]])+(([][[]]+[])[+![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]])+((!![]+[])[+![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]+!![]+!![]+!![]])+((!![]+[])[+!![]])]+[])[+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]])](((+!![]+!![]+!![])+[])+(+!![]+!![]+!![]+!![]+!![]+!![]))+((!![]+[])[+!![]+!![]+!![]])+((![]+[])[+!![]+!![]])+((![]+[])[+!![]+!![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]+!![]+!![]+!![]])+(((+[])[((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]+!![]+!![]+!![]])+(([][[]]+[])[+!![]])+((![]+[])[+!![]+!![]+!![]])+((!![]+[])[+[]])+((!![]+[])[+!![]])+(([][[]]+[])[+![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]])+((!![]+[])[+![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]+!![]+!![]+!![]])+((!![]+[])[+!![]])])((!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+[]))[((!![]+[])[+[]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]+!![]+!![]+!![]])+((([]+[])[((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]+!![]+!![]+!![]])+(([][[]]+[])[+!![]])+((![]+[])[+!![]+!![]+!![]])+((!![]+[])[+[]])+((!![]+[])[+!![]])+(([][[]]+[])[+![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]])+((!![]+[])[+![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]+!![]+!![]+!![]])+((!![]+[])[+!![]])]+[])[+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]])+((!![]+[])[+[]])+((!![]+[])[[+!![]]])+((([][[]]+[])+[])[+!![]+!![]+!![]+!![]+!![]])+(([][[]]+[])[+!![]])+((([]+[])[((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]+!![]+!![]+!![]])+(([][[]]+[])[+!![]])+((![]+[])[+!![]+!![]+!![]])+((!![]+[])[+[]])+((!![]+[])[+!![]])+(([][[]]+[])[+![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]])+((!![]+[])[+![]])+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]+!![]+!![]+!![]])+((!![]+[])[+!![]])]+[])[+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]])](((+!![]+!![]+!![])+[])+(+!![]+!![]+!![]+!![]+!![]+!![]))+((([][((![]+[])[+!![]])+((!![]+[])[+[]])])+[])[+!![]+!![]+!![]+!![]+!![]+!![]])+((!![]+[])[[+!![]]])+((![]+[])[+!![]+!![]])+(([][[]]+[])[+!![]+!![]])

記事通りにやれば4限には書けるようになります
頑張りましょう!

""と[]の違い

前回は!""を用いてtrueを返していましたが、今回は"は使えません
では"の代わりに何を使うかというと[]を使います

!""
//true
![]
//false

はい今回は[]が空の配列, !は否定演算子です

前回やった""は何もないもの(falsyな値)を否定して、trueを返していますが、
JSFで使える[]は空の配列、つまり配列という有るわけです

そのため、[]はtruthyな値となり、!で否定してあげるとfalseが帰ってきます

[]は配列という存在があるから true
""は何もないからfalse

数字の手に入れ方

前回やった通り、falseに単項演算子をつけると0が、trueに単行演算子をつけると1が帰ってきます
数字の手に入れ方はこの仕組みを使うだけです

trueとfalseの書き方は下記参照

+false
//0
+true
//1
+true+true
//2
+true+true+true+true
//4
+true+true+true+true+true+true+true+true
//8
+true+true+true+true+true+true+true+true+true+true
//10

このように一桁の数字の場合は+trueを繰り返すことによって手に入れることができます

では二桁の場合はどうでしょうか?

二桁の場合は文字の連結を使用することで冗長になることを回避できます
もともと冗長ですが...

+((+true+[])+(+false+[]))
//10

なんとこれだけで10を表現できます!
分解して見ていきましょう

(+true+[])
//'1'
(+false+[])
//'0'
(+true+[])+(+false+[])
//'10'
+((+true+[])+(+false+[]))
//10

実はやっていることは前回説明していることだけなんですね

trueに単項演算子をつけて1にした上に,空のStringと結合してStringの'1'
falseも同じようにしてStringの'0'
そしてその二つを結合させてStringの'10'
最後に単項演算子の+をStringの'10'につけることによって10になります

String + Number = String
で出力されるため、1桁だけStrを入れればその他は全てNumでよくなります
これによりコードの短縮化をはかれます

+((+true+[])+(+false+[])+(+false+[])+(+false+[])+(+false+[]))
//10000


+((+true+[])+(+false)+(+false)+(+false)+(+false))
//10000

文字の手に入れ方

chr = !false
//chr = true

chr = chr+""
//chr = true+"" = "true"

console.log(chr[0])
// "t"
//console.log("true"[0])

基本的には前回学んだ書き方を用いて、返り値を手に入れ、それをStringに直し、そこから添え字を用いて文字を取得していきます

次から具体例で説明していきます

false

まずはJSFで一番最初に使うfalseからです
falseの書き方は

![]

となります

truthyな値である[](配列)を否定することによって、falseを手に入れることができます

このままだと、falseがboolean型で帰ってきているため、

![]+[]
//'false'

でStringに

(![]+[])[0]
//'f'

添え字をつけることにより、その番号が振られている文字を取得できます

falseから手にれられる文字たちは以下の通りです

(![]+[])[+[]]
//'f'
(![]+[])[+!![]]
//'a'
(![]+[])[+!![]+!![]]
//'l'
(![]+[])[+!![]+!![]+!![]]
//'s'
(![]+[])[+!![]+!![]+!![]+!![]]
//'e'

true

次はJSFでfalseの次に使うであろうtrueです
trueの書き方は

!![]

となります

truthyな値である[](配列)を否定することによって、falseを手に入れるところまでは一緒ですが
falseを二重否定することによってtrueを得られます
気持ち悪いですね

falseと同じように

(!![]+[])[]

という書き方で文字を取得していきます

trueから手にれられる文字たちは以下の通りです

(!![]+[])[+[]]
//'t'
(!![]+[])[+!![]]
//'r'
(!![]+[])[+!![]+!![]]
//'u'
(!![]+[])[+!![]+!![]+!![]]
//'e'

undefined

次は!を使わずに出せるundefinedです
unedifinedの書き方は

[][[]]

となります

undefinedは今までとは少し違います

[]
//[]

[][[]]
//undeifined

というように空の配列を作り、それの中に無いもの(配列の中にあるからの配列)を取得しようとするが、失敗するため
undefinedが帰ってくるのです

[]というなんも無い配列を作り、その中に存在しない空の配列にアクセスしてます
もちろん無いものはないため存在しねーよ(undefined)と返ってきます

そこから先は今までと同じように

(([]+[[]])+[])[]

という書き方で文字を取得していきます

undefinedから手にれられる文字たちは以下の通りです

([]+[[]])[+[]]
//'u'

([]+[[]])[+!![]]
//'n'

([]+[[]])[+!![]+!![]]
//'d'

([]+[[]])[+!![]+!![]+!![]]
//'e'

([]+[[]])[+!![]+!![]+!![]+!![]]
//'f'

([]+[[]])[+!![]+!![]+!![]+!![]+!![]]
//'i'

NaN

次はNaN(Not a Number)です
NaNの書き方は

+[![]]

となります

NaNは前回話した通り、単行演算子で文字列をNumberに直すとき、
変換元の文字列がNumberに変換できない時に返ってくる返り値です

[![]]
//[false]
+[![]]
//NaN

このようにリストの中に入っているfalse+を用いて数字に変換しようとしていますが
[false]は数値に変換できないため、NaNが返ってきます

あとは今までと同じように

(+[![]]+[])[]

という書き方で文字を取得していきます

NaNから手にれられる文字たちは以下の通りです

(+[![]]+[])[+[]]
//'N'

(+[![]]+[])[+!![]]
//'a'

Infinity

そしてさいごは一気に難易度の上がるInfiniyです

これが理解できるかどうかで、今までの理解度の確認にもなります

Infinityの書き方は

+(+!![]+(!![]+[])[+!![]+!![]+!![]]+(+!![])+(+![])+(+![])+(+![])+(+![]))
//Infinity

です
見やすいように改行すると

+(+!![]+(!![]+[])[+!![]+!![]+!![]]+
(+!![])+(+![])+(+![])+(+![])+(+![]))
//Infinity

となります
一応自力で解きたい私みたいな方もいると思うので
解説はdetailsに入れておきます

解説

解読できたでしょうか?

+(+!![]+(!![]+[])[+!![]+!![]+!![]]+
(+!![])+(+![])+(+![])+(+![])+(+![]))
//Infinity

というコードは
翻訳すると以下の通りです

+(1+'e'+1+0+0+0)
//Infinity

JSでは1e309以上の数値をInfinityとして扱います

もちろん1e309とJSFで書いてもいいのですが
JSFの場合1e309よりも1e1000の方が文字数が短くなるため、1e1000と書きます

終わり

以上でJSF講座2限目を終わります

今回学習した部分はJSFの書き方を覚えるという意味もあります
この基本を抑えているとすらすら書けるようになります

3限目では関数の実行を方法を学んでいきます!

関数の実行に関しては非常に複雑で筆者も理解しきれていないため
明日は今日までのJSFのチートシートを公開します

時間割

1限目
JSF**k講座1限目【基礎講座】
2限目
JSF**k講座2限目【最初の文字たち】(ここ)
3限目
JSF**k講座3限目【関数の実行】
4限目
JSF**k講座4限目【全ての英字(小文字)】

チートシート
JSFチートシート

10
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
4