Membuat fungsi lebih dari beberapa baris

9

Saya mencoba membuat fungsi melalui beberapa baris.

Parameter tantangan:

  1. Fungsi mengembalikan 'biadab'
  2. Hanya 2 karakter per baris
  3. Maksimal 40 baris. Saya terus mencoba menggunakan panah gemuk untuk menyatakan fungsi saya, tetapi panah gemuk tampaknya tidak berfungsi jika Anda tidak menghubungkannya.

Sumber Tantangan: https://www.codewars.com/kata/multi-line-task-plus-plus-hello-world

Pekerjaan saya saat ini:

f=
(
)=>

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

Ini berfungsi, tetapi panjang ') =>' adalah 3 karakter. Saya benar-benar hanya ingin tahu bagaimana mungkin bahkan merentangkan penciptaan fungsi. Saya tidak dapat menemukan info di mana pun karena jelas tidak praktis.

theNewfelll
sumber
2
Terkait?
Shieru Asakoto
2
Selamat datang di PPCG! Sayangnya, tantangan ini tidak memiliki kriteria kemenangan yang objektif, dan saya memilih untuk menutup tantangan ini sampai diperbaiki. Di masa depan, silakan gunakan kotak pasir untuk menerima umpan balik tentang pertanyaan Anda sebelum diposting.
FantaC
Juga Stack Overflow akan menjadi tempat yang lebih baik untuk ini, jika worded berbeda
FantaC
5
Saya pikir ini baik-baik saja sebagai pertanyaan yang meminta tips untuk memecahkan tantangan kode tertentu dan telah memilih untuk membuka kembali.
Laikoni
6
Saya setuju dengan Laikoni bahwa ini pasti meminta saran untuk berurusan dengan batasan tata letak kode (yaitu, sumber terbatas) daripada menanyakan pertanyaan pemrograman seperti pada SO.
xnor

Jawaban:

7

Berikut adalah solusi 38 baris:

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

Ini menciptakan fungsi menggunakan Functionkonstruktor, yang diakses dari [].map.constructormenggunakan notasi subskrip ( []['map']['constructor']). Ini adalah metode yang digunakan JSFuck untuk membuat fungsi.

Khusus ASCII
sumber
Apakah Anda tidak mengakses, []['map']['constructor']bukan []['sum']['constructor']?
Jonathan Frech
Kecuali saya salah membaca, ini mengembalikan jamak 'barbar'?
cole
1
@cole Upaya pertanyaan - bertentangan dengan pernyataan masalah pertanyaan - juga tampaknya menghasilkan jamak.
Jonathan Frech
> _ <kesalahan ketik maaf
ASCII
Ini bagus! Apakah ada cara untuk mencukurnya ke garis yang lebih sedikit? Hanya ingin tahu pada titik ini karena ini adalah yang pertama saya dengar tentang konstruktor.
theNewfelll
14

35 Baris

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

Cobalah online!

Menggunakan fakta bahwa 0angka, konstruktor 0adalah Number, dan konstruktor Numberadalah Function.

32 Baris

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

Cobalah online!

Ini pada dasarnya berjalan

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

yang menggunakan struktur IIFE . Bonus tambahan adalah bahwa kita dapat melakukan break-line beberapa bagian dalam badan fungsi untuk mengurangi jumlah baris.

24 Baris

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

Cobalah online!

Versi sebaris:

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

Karena semua yang kita inginkan adalah mengembalikan sebuah string, kita dapat menggunakan metode string yang terikat pada sebuah string. Dengan menggunakan trim, kita juga dapat dengan aman meninggalkan baris awal.

Bubbler
sumber