การสร้างฟังก์ชั่นผ่านหลายบรรทัด


9

ฉันพยายามที่จะสร้างฟังก์ชั่นมากกว่าหลายบรรทัด

พารามิเตอร์ของความท้าทาย:

  1. ฟังก์ชันส่งคืน 'อนารยชน'
  2. เพียง 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

นอกจากนี้กองมากเกินจะเป็นสถานที่ที่ดีสำหรับการนี้ถ้าคำพูดที่แตกต่างกัน
FantaC

5
ฉันคิดว่านี่เป็นคำถามที่ถามถึงเคล็ดลับในการแก้ปัญหารหัสเฉพาะและโหวตให้เปิดใหม่อีกครั้ง
Laikoni

6
ฉันเห็นด้วยกับ Laikoni ว่านี่เป็นการขอคำแนะนำในการจัดการกับข้อ จำกัด ของรูปแบบโค้ด (เช่นแหล่งที่ถูก จำกัด ) แทนที่จะถามคำถามเกี่ยวกับการเขียนโปรแกรมอย่าง SO
xnor

คำตอบ:


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สร้างซึ่งมันเข้าถึงได้จากการ[].map.constructorใช้สัญกรณ์ห้อย ( []['map']['constructor']) นี่เป็นวิธีที่ JSFuck ใช้เพื่อสร้างฟังก์ชั่น


คุณไม่ได้เข้า[]['map']['constructor']ใช้งานแทน[]['sum']['constructor']ใช่ไหม
Jonathan Frech

ถ้าฉันไม่ได้อ่านผิดมันจะส่งคืนพหูพจน์ 'ป่าเถื่อน'?
โคล

1
@ โคลความพยายามของคำถาม - ตรงกันข้ามกับคำแถลงปัญหาของคำถาม - ดูเหมือนว่าจะส่งออกพหูพจน์
Jonathan Frech

> _ <ขออภัยความผิดพลาด
เฉพาะ ASCII เท่านั้น

มันเยี่ยมมาก! มีวิธีใดที่จะโกนมันให้เล็กลงหรือไม่? เพียงแค่สงสัยในจุดนี้เพราะนี่เป็นครั้งแรกที่ฉันเคยได้ยินของการก่อสร้าง
theNewfelll

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เป็นจำนวนคอนสตรัคของ0เป็นNumberและคอนสตรัคของมีNumberFunction

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.