返回5而没有任何字母或数字的函数

时间:2018-02-17 08:47:49

标签: javascript algorithm

任何人都可以向我解释代码战中this kata的解决方案

说明是 -

  

编写一个名为_的函数/ proc / lambda,它总是返回5.

     

听起来很容易吗?请记住,您只能使用以下字符:

     !

〜@#$%^&安培; *()-_ + = [] {} |:;?"'<,> /`

这些解决方案将如何运作

  1. _=_=>-~-~-~-~-~[]
  2. _=()=>+!""+!""+!""+!""+!""
  3. 还有很多other solutions,但我不理解其中任何一个。

    我所理解的是定义了一个名为_的函数。返回评估的表达式如何超出我的范围。

    提前致谢!

1 个答案:

答案 0 :(得分:2)

_=()=>+!""+!""+!""+!""+!""

首先,这会设置一个名为_的箭头函数:

_=()=>

如果调用它,则会对此进行评估:

!""

空字符串""是假的,它的否定(!)是真实的,所以我们最终会:

 true + true + true + true + true

由于添加布尔值确实不起作用,因此首先将它们转换为数字(false - > 0true - > 1

-~-~-~-~-~[]

稍微复杂一些。

~[]

将bitwise否定运算符调用到空数组。同样,将空数组转换为数字,首先将其转换为字符串([] - > ""),然后将其解析为数字("" - > { {1}}),它的否定是数字0(其中设置了32位)。现在做

2 ^ 32 - 1

将其转换为负数( ~- ),然后再次交换所有位。重复此操作,直到我们以二进制文件到达-