Crear una función sobre varias líneas


9

Estoy intentando crear una función en varias líneas.

Parámetros del desafío:

  1. La función devuelve 'bárbaro'
  2. Solo 2 caracteres por línea
  3. 40 líneas como máximo. Sigo intentando usar una flecha gruesa para declarar mi función, pero las flechas gruesas no parecen funcionar si no las tienes conectadas.

Fuente del desafío: https://www.codewars.com/kata/multi-line-task-plus-plus-hello-world

Mi trabajo actual:

f=
(
)=>

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

Esto funciona, pero ') =>' tiene 3 caracteres de longitud. Realmente solo quiero saber cómo es posible incluso extender la creación de una función. No puedo encontrar ninguna información en ningún lado, ya que obviamente no es muy práctico.



2
Bienvenido a PPCG! Desafortunadamente, este desafío no tiene un criterio ganador objetivo, y estoy votando para cerrarlo hasta que se rectifique. En el futuro, utilice el sandbox para recibir comentarios sobre su pregunta antes de que se publique.
FantaC

También Stack Overflow sería un mejor lugar para esto, si se
redacta de

55
Creo que esto está bien como una pregunta que pide consejos para resolver un desafío de código en particular y he votado para volver a abrir.
Laikoni

66
Estoy de acuerdo con Laikoni en que definitivamente está pidiendo consejo para lidiar con una restricción de diseño de código (es decir, fuente restringida) en lugar de hacer una pregunta de programación como en SO.
xnor

Respuestas:


7

Aquí hay una solución de 38 líneas:

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

Crea una función utilizando el Functionconstructor, al que accede [].map.constructorutilizando la notación de subíndice ( []['map']['constructor']). Este es el método que JSFuck usa para crear funciones.


¿No estás accediendo en []['map']['constructor']lugar de []['sum']['constructor']?
Jonathan Frech

A menos que esté leyendo esto mal, ¿devuelve el plural 'bárbaros'?
cole

1
@cole El intento de la pregunta, al contrario del enunciado del problema de la pregunta, también parece generar el plural.
Jonathan Frech

> _ <lo siento, errores tipográficos
solo ASCII el

¡Esto es genial! ¿Hay alguna forma de reducirlo a incluso menos líneas? Es curioso en este punto, ya que esta es la primera vez que oigo hablar de los constructores.
theNewfelll

14

35 líneas

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

Pruébalo en línea!

Utiliza el hecho de que 0es un número, el constructor de 0es Numbery el constructor de Numberes Function.

32 líneas

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

Pruébalo en línea!

Esto esencialmente se ejecuta

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

que usa la estructura IIFE . La ventaja adicional es que podemos dividir líneas en algunas partes del cuerpo de la función para reducir el recuento de líneas.

24 líneas

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

Pruébalo en línea!

Versión en línea:

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

Como todo lo que queremos es devolver una cadena, podemos escapar con un método de cadena vinculado a una cadena. Al usar trim, también podemos dejar de manera segura una nueva línea de inicio.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.