Створення функції через кілька рядків


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

Це працює, але ') =>' має три символи. Мені дуже просто хочеться знати, як можна навіть розтягнути створення функції. Я ніде не можу знайти інформацію про нього, оскільки це, очевидно, не дуже практично.



2
Ласкаво просимо до PPCG! На жаль, цей виклик не має об'єктивного критерію виграшу, і я голосую за те, щоб закрити цю проблему до її усунення. Надалі, будь ласка, використовуйте пісочницю, щоб отримувати відгуки на ваше запитання до його розміщення.
FantaC

Також Stack Overflow був би кращим місцем для цього, якщо
сказати

5
Я думаю, що це добре, як запитання про поради, щоб вирішити певну проблему з кодом, і проголосували за повторне відкриття.
Лайконі

6
Я погоджуюся з Лайконі, що це, безумовно, прохання порадити щодо вирішення обмежень щодо макета коду (тобто, з обмеженим джерелом), а не з питань програмування, як у 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']?
Джонатан Фрех

Якщо я не читаю це неправильно, він повертає множину "варварів"?
Коул

1
@cole Спроба запитання - всупереч твердженню проблеми питання - також, здається, виводить множину.
Джонатан Фрех

> _ <вибачте помилки
лише 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, а конструктором 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, ми також можемо безпечно залишити початковий новий рядок.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.