Birden çok satır üzerinden işlev oluşturma


9

Birden çok satır üzerinden bir işlev oluşturmaya çalışıyorum.

Meydan okuma parametreleri:

  1. İşlev 'barbar' değerini döndürür
  2. Satır başına yalnızca 2 karakter
  3. Maksimum 40 satır. İşlevimi bildirmek için şişman bir ok kullanmaya devam ediyorum, ancak eğer bağlı değilseniz şişman oklar işe yaramıyor gibi görünüyor.

Zorluğun Kaynağı: https://www.codewars.com/kata/multi-line-task-plus-plus-hello-world

Şu anki işim:

f=
(
)=>

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

Bu işe yarar, ancak ') =>' 3 karakter uzunluğundadır. Gerçekten sadece bir fonksiyonun yaratılmasını nasıl uzatmanın mümkün olduğunu bilmek istiyorum. Açıkçası çok pratik olmadığı için herhangi bir yerde herhangi bir bilgi bulamıyorum.



2
PPCG'ye Hoşgeldiniz! Ne yazık ki, bu mücadelenin nesnel bir kazanma kriteri yoktur ve düzeltilene kadar bu mücadeleyi kapatmak için oy kullanıyorum. Gelecekte, gönderilmeden önce sorunuz hakkında geri bildirim almak için lütfen korumalı alanı kullanın.
FantaC

Ayrıca Stack Overflow , farklı ifade edilirse, bunun için daha iyi bir yer olurdu
FantaC

5
Bu belirli bir kod meydan okuma çözmek için ipuçları isteyen bir soru olarak iyi olduğunu düşünüyorum ve yeniden açmak için oy verdik.
Laikoni

6
Ben Laikoni ile bu kesinlikle bir SO gibi bir programlama sorusu sormak yerine, bir kod düzeni kısıtlaması (yani, sınırlı kaynak) ile başa çıkmak için tavsiye istediğini kabul ediyorum.
xnor

Yanıtlar:


7

İşte 38 hatlı bir çözüm:

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

Alt simge gösterimini ( ) kullanarak Functioneriştiği kurucuyu kullanarak bir işlev oluşturur . JSFuck'ın işlevler oluşturmak için kullandığı yöntem budur.[].map.constructor[]['map']['constructor']


[]['map']['constructor']Bunun yerine erişmiyor musunuz []['sum']['constructor']?
Jonathan Frech

Bunu yanlış okumadıkça, 'barbarlar' çoğulunu döndürür mü?
Cole

1
@cole Sorunun girişimi -sorunun sorun ifadesinin aksine- çoğulun çıktısını da almaktadır.
Jonathan Frech

> _ <üzgünüm yazım hataları
sadece ASCII sadece

Bu harika! Daha az hatta tıraş etmenin herhangi bir yolu var mı? Sadece bu noktada merak ediyorum, çünkü bu inşaatçıları ilk duydum.
theNewfelll

14

35 Satır

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

Çevrimiçi deneyin!

Gerçeğini kullanır 0bir sayı, yapıcısı olduğu 0olduğu Number, ve yapıcı Numberolduğunu Function.

32 Satır

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

Çevrimiçi deneyin!

Bu aslında çalışır

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

IIFE yapısını kullanır . Ek bonus, hat sayısını azaltmak için fonksiyon gövdesindeki bazı parçaları satır kesebilmemizdir.

24 Satır

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

Çevrimiçi deneyin!

Satır içi sürüm:

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

Tüm istediğimiz bir dize döndürmek olduğundan, bir dizeye bağlı bir dize yöntemiyle kurtulabiliriz. Kullanarak trim, güvenli bir şekilde yeni bir başlangıç ​​çizgisi bırakabiliriz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.