Criando uma função em várias linhas


9

Estou tentando criar uma função em várias linhas.

Parâmetros do desafio:

  1. A função retorna 'bárbaro'
  2. Apenas 2 caracteres por linha
  3. 40 linhas no máximo. Continuo tentando usar uma flecha gorda para declarar minha função, mas as flechas gordas não parecem funcionar se você não as tiver conectado.

Fonte do desafio: https://www.codewars.com/kata/multi-line-task-plus-plus-hello-world

Meu trabalho atual:

f=
(
)=>

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

Isso funciona, mas o ') =>' tem 3 caracteres. Eu realmente só quero saber como é possível esticar a criação de uma função. Não consigo encontrar nenhuma informação em nenhum lugar, pois obviamente não é muito prático.



2
Bem-vindo ao PPCG! Infelizmente, esse desafio não possui um critério de vitória objetivo e estou votando para encerrá-lo até que seja corrigido. No futuro, use a sandbox para receber comentários sobre sua pergunta antes de ela ser publicada.
FantaC 02/0318

Também Stack Overflow seria um lugar melhor para isso, se redigida de forma diferente
FantaC

5
Acho que isso é bom como uma pergunta, pedindo dicas para resolver um desafio de código específico e votamos pela reabertura.
Laikoni 3/0318

6
Concordo com Laikoni que isso definitivamente está pedindo conselhos sobre como lidar com uma restrição de layout de código (ou seja, fonte restrita) ao invés de fazer uma pergunta de programação como na SO.
Xnor

Respostas:


7

Aqui está uma solução de 38 linhas:

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\
'`

Ele cria uma função usando o Functionconstrutor, ao qual acessa [].map.constructorusando notação subscrita ( []['map']['constructor']). Este é o método que o JSFuck usa para criar funções.


Você não está acessando em []['map']['constructor']vez de []['sum']['constructor']?
Jonathan Frech 03/03

A menos que eu esteja lendo errado, ele retorna o plural de 'bárbaros'?
cole

11
@cole A tentativa da pergunta - ao contrário da declaração do problema da pergunta - também parece produzir o plural.
Jonathan Frech

> _ <desculpe erros de digitação
somente ASCII

Isso é ótimo! Existe alguma maneira de reduzi-lo a menos linhas? Apenas curioso neste momento, pois esta é a primeira vez que ouvi falar de construtores.
theNewfelll

14

35 linhas

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'
`

Experimente online!

Usa o fato de que 0é um número, o construtor de 0é Numbere o construtor de Numberé Function.

32 linhas

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

Experimente online!

Isso basicamente roda

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

que usa a estrutura IIFE . O bônus adicional é que podemos quebrar algumas partes do corpo da função para reduzir a contagem de linhas.

24 linhas

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

Experimente online!

Versão em linha:

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

Como tudo o que queremos é retornar uma string, podemos nos livrar de um método string vinculado a uma string. Ao usar trim, também podemos deixar com segurança uma nova linha inicial.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.