Erstellen einer Funktion über mehrere Zeilen


9

Ich versuche, eine Funktion über mehrere Zeilen zu erstellen.

Parameter der Herausforderung:

  1. Funktion gibt 'barbarian' zurück
  2. Nur 2 Zeichen pro Zeile
  3. Maximal 40 Zeilen. Ich versuche immer wieder, meine Funktion mit einem fetten Pfeil zu deklarieren, aber fette Pfeile scheinen nicht zu funktionieren, wenn Sie sie nicht verbunden haben.

Quelle der Herausforderung: https://www.codewars.com/kata/multi-line-task-plus-plus-hello-world

Meine aktuelle Arbeit:

f=
(
)=>

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

Dies funktioniert, aber das ') =>' ist 3 Zeichen lang. Ich möchte wirklich nur wissen, wie es möglich ist, die Erstellung einer Funktion überhaupt auszudehnen. Ich kann nirgendwo Informationen darüber finden, da es offensichtlich nicht sehr praktisch ist.



2
Willkommen bei PPCG! Leider hat diese Herausforderung kein objektives Gewinnkriterium, und ich stimme dafür, diese Herausforderung zu schließen, bis sie behoben ist. Verwenden Sie in Zukunft die Sandbox , um Feedback zu Ihrer Frage zu erhalten, bevor sie veröffentlicht wird.
FantaC

Auch Stack Overflow wäre ein besserer Ort dafür, wenn es anders formuliert wäre
FantaC

5
Ich denke, dies ist in Ordnung als Frage, die nach Tipps zur Lösung einer bestimmten Code-Herausforderung fragt, und habe für die Wiedereröffnung gestimmt.
Laikoni

6
Ich stimme Laikoni zu, dass dies definitiv um Rat zum Umgang mit einer Code-Layout-Einschränkung (dh einer eingeschränkten Quelle) bittet, anstatt eine Programmierfrage wie bei SO zu stellen.
xnor

Antworten:


7

Hier ist eine 38-Zeilen-Lösung:

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

Mit dem FunctionKonstruktor wird eine Funktion erstellt , auf die [].map.constructorüber die tiefgestellte Notation ( []['map']['constructor']) zugegriffen wird . Dies ist die Methode, mit der JSFuck Funktionen erstellt.


Greifen Sie nicht []['map']['constructor']statt zu []['sum']['constructor']?
Jonathan Frech

Wenn ich das nicht falsch lese, wird der Plural der Barbaren zurückgegeben?
Cole

1
@cole Der Versuch der Frage scheint - entgegen der Problemstellung der Frage - auch den Plural auszugeben.
Jonathan Frech

> _ <Entschuldigung Tippfehler
ASCII-

Das ist toll! Gibt es eine Möglichkeit, es auf noch weniger Zeilen zu reduzieren? Ich bin an dieser Stelle nur neugierig, da dies das erste Mal ist, dass ich von Konstrukteuren gehört habe.
theNewfelll

14

35 Zeilen

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

Probieren Sie es online aus!

Verwendet die Tatsache, dass 0es sich um eine Zahl handelt, den Konstruktor von 0is Numberund den Konstruktor von Numberis Function.

32 Zeilen

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

Probieren Sie es online aus!

Dies läuft im Wesentlichen

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

welches die IIFE Struktur verwendet . Ein zusätzlicher Bonus ist, dass wir einige Teile im Funktionskörper unterbrechen können, um die Zeilenanzahl zu verringern.

24 Zeilen

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

Probieren Sie es online aus!

Inline-Version:

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

Da wir nur einen String zurückgeben möchten, können wir mit einer an einen String gebundenen String-Methode davonkommen. Durch die Verwendung trimkönnen wir auch sicher eine neue Anfangszeile hinterlassen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.