複数行にわたる関数の作成


9

複数行にわたって関数を作成しようとしています。

課題のパラメータ:

  1. 関数は 'barbarian'を返します
  2. 1行に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 2018年

また、スタックオーバーフローが異なって言葉で表現すれば、このためのより良い場所でしょう
FantaC

5
これは、特定のコードの課題を解決するためのヒントを求める質問としては問題ないと思い、再開することに投票しました。
Laikoni 2018

6
私はライコニに同意します。これは、SOのようなプログラミングの質問をするのではなく、コードレイアウトの制約(つまり、制限されたソース)の処理に関するアドバイスを間違いなく求めているということです。
xnor 2018

回答:


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てアクセスするコンストラクターを使用して関数を作成します。これは、JSFuckが関数を作成するために使用する方法です。[].map.constructor[]['map']['constructor']


[]['map']['constructor']代わりにアクセスしていません[]['sum']['constructor']か?
Jonathan Frech 2018

私がこれを間違って読んでいない限り、それは「野蛮人」の複数形を返しますか?
cole

1
@cole質問の試み-質問の問題ステートメントに反して-も複数形を出力するようです。
Jonathan Frech 2018

> _ <申し訳ありませんがタイプミス
ASCIIのみ

これは素晴らしい!それをさらに少ない行に削る方法はありますか?これは私がコンストラクターについて聞いた最初のものであるため、この時点で興味があります。
theNewfelll 2018

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数値であるという事実、isのコンストラクター、および0is Numberのコンストラクターを使用しNumberますFunction

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ことで、最初の改行を安全に残すこともできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.