多行创建函数


9

我试图在多行上创建一个函数。

挑战的参数:

  1. 函数返回“野蛮人”
  2. 每行仅2个字符
  3. 最多40条线。我一直尝试使用粗箭头来声明我的功能,但是如果您未连接粗箭头,则粗箭头似乎无效。

挑战来源:https//www.codewars.com/kata/multi-line-task-plus-plus-hello-world

我目前的工作:

f=
(
)=>

'\
b\
a\
r\
b\
a\
r\
i\
a\
n\
s\
'

这有效,但是')=>'的长度为3个字符。我真的只想知道如何扩展功能的创建。我在任何地方都找不到任何信息,因为它显然不太实用。



2
欢迎来到PPCG!不幸的是,这个挑战没有客观的获胜标准,我投票决定结束这个挑战,直到纠正。将来,请使用沙箱在问题发布前收到您的反馈。
FantaC

另外堆栈溢出将是这更好的地方,如果措辞不同
FantaC

5
我认为这是一个很好的问题,询问有关解决特定代码挑战的提示,并投票决定重新开放。
Laikoni

6
我同意Laikoni的观点,这绝对是在寻求有关处理代码布局约束(即,受限制的源代码)的建议,而不是像SO这样询问编程问题。
xnor

Answers:


7

这是38行的解决方案:

f=
[]
[
'\
m\
a\
p'
][
'\
c\
o\
n\
s\
t\
r\
u\
c\
t\
o\
r'
]`
r\
e\
t\
u\
r\
n\
'\
b\
a\
r\
b\
a\
r\
i\
a\
n\
'`

它使用Function构造函数创建一个函数,可以[].map.constructor使用下标符号([]['map']['constructor'])访问该函数。这是JSFuck用于创建函数的方法。


你不访问[]['map']['constructor'],而不是[]['sum']['constructor']
乔纳森·弗雷希

除非我读错了,否则它会返回“野蛮人”的复数形式?
科尔

1
@cole问题的尝试(与问题的问题陈述相反)似乎也输出了复数。
乔纳森·弗雷希

> _ <对不起打字错误
仅使用ASCII

这很棒!有什么办法可以减少到更少的行数吗?在这一点上我只是好奇,因为这是我第一次听说构造函数。
theNewfelll

14

35行

f=
0[
c=
'\
c\
o\
n\
s\
t\
r\
u\
c\
t\
o\
r'
][
c]
`
r\
e\
t\
u\
r\
n\
'\
b\
a\
r\
b\
a\
r\
i\
a\
n'
`

在线尝试!

使用的事实,0是一个数字,的构造0Number,与构造函数NumberFunction

32线

0[
c=
'\
c\
o\
n\
s\
t\
r\
u\
c\
t\
o\
r'
][
c]
`
f=
_\
=>
'\
b\
a\
r\
b\
a\
r\
i\
a\
n'
`(
)

在线尝试!

这基本上运行

Function(`
f=
_=>
'barbarian'`)()

使用IIFE结构。额外的好处是我们可以对功能主体中的某些部分进行换行以减少行数。

24线

f=
''
[
'\
t\
r\
i\
m'
][
'\
b\
i\
n\
d'
]`
b\
a\
r\
b\
a\
r\
i\
a\
n`

在线尝试!

内联版本:

f=''['trim']['bind']`
barbarian`

由于我们想要的只是返回一个字符串,因此我们可以摆脱绑定到字符串的字符串方法。通过使用trim,我们还可以安全地离开开始的换行符。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.