JSF ** k birimini normal JS birimine dönüştür


12

Birçoğunuz zaten JSF ** k biliyorsunuz . Yapmayanlar için, herhangi bir JavaScript kodunu sadece yazılı bir şeye dönüştüren bir betiktir []()!+.

Göreviniz, istediğiniz herhangi bir dili kullanarak, JSF ** k'yi belirsiz JavaScript'e dönüştüren bir program oluşturmaktır.

  • Girdi : Geçerli JSF ** k koduna sahip bir dize.
  • Çıktı : Girişi oluşturmak için daha önce JSF ** ked olan normal JavaScript koduna sahip bir dize.

Bu meydan okuma için, giriş dizesinin yalnızca bir kez JSF ** ked olduğunu düşünün.

Bu bir yarışmasıdır, bu nedenle bayt cinsinden en kısa kod kazanır.


@Michael ama kodlama açıkça geri döndürülebilir mi? Ben öyle düşünmüyorum ... nasıl bazı [...]dizi erişim orijinal kodun bir parçası mı yoksa şaşırtmaca bir parçası mı? diğer tüm yapılar için aynı.
Martin Ender

2
@JanDvorak oh çok karşı-üretken olduğunu ... biz neyi ... olabilir bu soruyu kapanış ile ona yardım ve upvoting yerine downvoting.
Martin Ender

2
@ m.buettner Düşündüm çünkü sorunun hiçbir yere gitmediğini hissetmiyorum. Kesinlikle birisinin bazı ayrıcalıklarının kilidini açmak için bir gönderiyi yükseltmek istemiyorum.
John Dvorak

2
@JanDvorak İyi zorluklar yazmak ve eleştirileri dinlemek isteyen yeni kullanıcıları cesaretlendirmememiz gerektiğini düşünüyorum . Korumalı alan metada olduğu ve orada kalacağından aşağı oylama karşı üretken. Kapanış tamamen yeterlidir. Tek bir upvote'un kimseye zarar vereceğini düşünmüyorum ve kullanıcıya bu topluluğa gerçekten bir giriş bulma şansı verecek. Ama birisi seninle aynı fikirdeydi ve aşağıdan oy vermeye karar verdi, çünkü heck, neden yeni kullanıcıların kum havuzuna mesaj göndermesine izin verilmeli (sanırım) ... ve şimdi hala orada yayınlayamıyor. Bu topluluğu böyle büyüttüğümüzü sanmıyorum.
Martin Ender

1
Lütfen normal JavaScript'in ne anlama geldiğine biraz açıklama ekleyebilir misiniz ? Geri dönüşümün nasıl yapılması gerektiği belli olmayabilir. Örneğin, güzel bir girişte obfustator'u iki kez tekrarlarsam, önerilen çıktı nedir? Orijinal program mı yoksa önceden gizlenmiş olan girdi mi?
Howard

Yanıtlar:


12

Javascript - 68 55 51

alert(/\n(.+)/.exec(eval(prompt().slice(0,-2)))[1])

Alternatif olarak: (aynı uzunluk)

alert(/.+(?=\n})/.exec(eval(prompt().slice(0,-2))))

Tarayıcınızın konsolunda çalışır. Yalnızca jsfuck.com tarafından oluşturulan kod ile 'Kaynak Değerlendirme' seçeneği işaretlenmiş olarak çalışacağı garanti edilir.

Ungolfed:

alert(
    /\n(.+)/.exec(                 // regex to extract code from inside outer function braces {}
        eval(prompt().slice(0,-2)) // remove the final set of parens () and evaluate the code
                                   // this results in a function, which will be converted to a string as 'exec' expects a string
    )[1]                           // get the first capture group
)

Reddedildiğim önerilen bir düzenlemede, @ user3082537, olduğu gibi dilim yerine normal ifade kullanılmasını önerdireplace(/^.*\n|\n}$/g,'')
user12205

7

JavaScript, 122, herhangi bir girdiyle çalışır

s=prompt().slice(0,-2)
i=s.length
while(i--){if((l=s.slice(i)).split(')').length==l.split('(').length)break}alert(eval(l))

Oldukça basit; parantezler ( (ve )) dengelenene kadar dizeye geri döner . JSF çıktısının son üç karakteri her zaman vardır )() , bu nedenle son 2 paren dilimlenir ve daha sonra diğeri için eşleşen paren bulunur. (Çok girişli çalışır [].)

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.