Création d'une fonction sur plusieurs lignes


9

J'essaie de créer une fonction sur plusieurs lignes.

Paramètres du défi:

  1. La fonction renvoie «barbare»
  2. Seulement 2 caractères par ligne
  3. 40 lignes maximum. J'essaie toujours d'utiliser une grosse flèche pour déclarer ma fonction, mais les grosses flèches ne semblent pas fonctionner si vous ne les avez pas connectées.

Source du défi: https://www.codewars.com/kata/multi-line-task-plus-plus-hello-world

Mon travail actuel:

f=
(
)=>

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

Cela fonctionne, mais le ') =>' comporte 3 caractères. Je veux vraiment juste savoir comment il est possible d'étendre même la création d'une fonction. Je ne trouve aucune information là-dessus car ce n'est évidemment pas très pratique.



2
Bienvenue chez PPCG! Malheureusement, ce défi n'a pas de critère de victoire objectif et je vote pour clôturer ce défi jusqu'à ce qu'il soit corrigé. À l'avenir, veuillez utiliser le bac à sable pour recevoir des commentaires sur votre question avant qu'elle ne soit publiée.
FantaC

De plus, Stack Overflow serait un meilleur endroit pour cela, s'il était formulé différemment
FantaC

5
Je pense que c'est bien comme une question demandant des conseils pour résoudre un défi de code particulier et ont voté pour la réouverture.
Laikoni

6
Je suis d'accord avec Laikoni que cela demande certainement des conseils sur le traitement d'une contrainte de mise en page de code (c'est-à-dire une source restreinte) plutôt que de poser une question de programmation comme à SO.
xnor

Réponses:


7

Voici une solution à 38 lignes:

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

Il crée une fonction en utilisant le Functionconstructeur, auquel il accède en [].map.constructorutilisant la notation indice ( []['map']['constructor']). Il s'agit de la méthode utilisée par JSFuck pour créer des fonctions.


N'accédez-vous pas à la []['map']['constructor']place de []['sum']['constructor']?
Jonathan Frech

À moins que je ne comprenne mal, cela renvoie le pluriel des «barbares»?
cole

1
@cole La tentative de la question - contrairement à l'énoncé du problème - semble également produire le pluriel.
Jonathan Frech

> _ <désolé fautes de frappe
ASCII uniquement

C'est bien! Existe-t-il un moyen de le réduire à encore moins de lignes? Juste curieux à ce stade car c'est la première fois que j'entends parler de constructeurs.
theNewfelll

14

35 lignes

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

Essayez-le en ligne!

Utilise le fait que 0est un nombre, le constructeur de 0is Numberet le constructeur de Numberis Function.

32 lignes

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

Essayez-le en ligne!

Cela fonctionne essentiellement

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

qui utilise la structure IIFE . Le bonus supplémentaire est que nous pouvons séparer certaines parties du corps de la fonction pour réduire le nombre de lignes.

24 lignes

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

Essayez-le en ligne!

Version en ligne:

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

Puisque tout ce que nous voulons, c'est renvoyer une chaîne, nous pouvons nous en sortir avec une méthode de chaîne liée à une chaîne. En utilisant trim, nous pouvons également quitter en toute sécurité une nouvelle ligne de départ.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.