Tạo một chức năng trên nhiều dòng


9

Tôi đang cố gắng tạo một chức năng trên nhiều dòng.

Các thông số của thử thách:

  1. Hàm trả về 'man rợ'
  2. Chỉ có 2 ký tự trên mỗi dòng
  3. Tối đa 40 dòng. Tôi tiếp tục cố gắng sử dụng một mũi tên béo để khai báo chức năng của mình, nhưng mũi tên béo dường như không hoạt động nếu bạn không kết nối chúng.

Nguồn thử thách: https://www.codewars.com/kata/multi-line-task-plus-plus-hello-world

Công việc hiện tại của tôi:

f=
(
)=>

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

Điều này hoạt động, nhưng ') =>' dài 3 ký tự. Tôi thực sự chỉ muốn biết làm thế nào có thể thậm chí kéo dài việc tạo ra một chức năng. Tôi không thể tìm thấy bất kỳ thông tin nào về nó ở bất cứ đâu vì rõ ràng nó không thực tế lắm.



2
Chào mừng đến với PPCG! Thật không may, thử thách này không có tiêu chí chiến thắng khách quan và tôi đang bỏ phiếu để đóng thử thách này cho đến khi được khắc phục. Trong tương lai, vui lòng sử dụng hộp cát để nhận phản hồi về câu hỏi của bạn trước khi được đăng.
FantaC

Ngoài ra Stack Overflow sẽ là một nơi tốt hơn cho điều này, nếu được diễn đạt khác
FantaC

5
Tôi nghĩ rằng điều này tốt như một câu hỏi yêu cầu các mẹo để giải quyết một thách thức mã cụ thể và đã bỏ phiếu để mở lại.
Laikoni

6
Tôi đồng ý với Laikoni rằng đây chắc chắn là yêu cầu tư vấn về cách xử lý ràng buộc bố cục mã (nghĩa là nguồn bị hạn chế) thay vì hỏi một câu hỏi lập trình như tại SO.
xnor

Câu trả lời:


7

Đây là một giải pháp 38 dòng:

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

Nó tạo ra một hàm bằng cách sử dụng hàm Functiontạo, mà nó truy cập từ [].map.constructorviệc sử dụng ký hiệu con ( []['map']['constructor']). Đây là phương thức mà JSFuck sử dụng để tạo các hàm.


Bạn không truy cập []['map']['constructor']thay vì []['sum']['constructor']?
Jonathan Frech

Trừ khi tôi đọc sai, nó sẽ trả về số nhiều 'man rợ'?
cole

1
@cole Nỗ lực của câu hỏi - trái với tuyên bố vấn đề của câu hỏi - dường như cũng cho ra số nhiều.
Jonathan Frech

> _ <xin lỗi lỗi chính tả
ASCII chỉ

Điều đó thật tuyệt! Có cách nào để cạo nó xuống thậm chí ít dòng hơn không? Chỉ tò mò ở điểm này vì đây là lần đầu tiên tôi nghe nói về các nhà xây dựng.
the Newfelll

14

35 dòng

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

Hãy thử trực tuyến!

Sử dụng thực tế 0là một số, hàm tạo của 0is Numbervà hàm tạo của Numberis Function.

32 dòng

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

Hãy thử trực tuyến!

Điều này về cơ bản chạy

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

trong đó sử dụng cấu trúc IIFE . Phần thưởng được thêm vào là chúng ta có thể ngắt dòng một số phần trong thân hàm để giảm số lượng dòng.

24 dòng

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

Hãy thử trực tuyến!

Phiên bản nội tuyến:

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

Vì tất cả những gì chúng ta muốn là trả về một chuỗi, chúng ta có thể thoát khỏi một phương thức chuỗi được liên kết với một chuỗi. Bằng cách sử dụng trim, chúng tôi cũng có thể rời khỏi một dòng mới bắt đầu một cách an toàn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.