BUT fonksiyonunu farklı bir dilde yazan bir program yaz!


30

Bir girişi (n) STDIN'den (veya eşdeğeri) alan en kısa programı yazın ve x + n döndüren tek bir argümanla (x) basit bir artış işlevi çıktı ancak işlev farklı bir dilde olmalıdır. Oldukça basit!

Bu kod golf, normal kurallar uygulanır, en kısa program kazanır.

Örnek:> <> to Python (Ungolfed)

!v"def i(x):"a"    return x+"ir!
 >l?!;o

Giriş:

3

Çıktı:

def i(x):
    return x+3

EDIT: Anonim işlevler ve lambda ifadeleri izin verilir!


Girdi ne kadar büyük olabilir? Söyleyebileceğim kadarıyla, örneğin>>>> yarısı için yalnızca tek haneli sayılarla çalışır.
Sp3000

Teoride herhangi (makul) bir girdiyi kullanabilmeli, ancak sadece 1 rakamı tutabilecek bir girdi kullanan cevaplar tamamen kabul edilebilir, bunu göndermeden önce düzeltmek için örneği yeniden çalışmayı düşündüm ama basitlik hissi için hastadan ayrıldığını düşündüm. .
Blake Lockley

4
Bunun için bir tanım göremiyoruz function BUT.. -_-
Optimizer

1
Bir fonksiyon başka bir fonksiyona döndüğünde, buna kapatma denir . Bununla birlikte, bunun diller arası olup olmadığını bilmiyorum ...
ETHproductions 9:15

@ETHproductions Amaç, bir işlev nesnesini değil, diğer bir dildeki bir işlevin kaynak kodunu döndürmektir.
Paŭlo Ebermann 9:15

Yanıtlar:


23

GS2 → K, 2 bayt

•+

Bu, sade, monadik bir işlev basar. Kaynak kod CP437 kodlamasını kullanır . Çevrimiçi deneyin!

Test sürüşü

$ xxd -c 2 -g 1 sum-func.gs2
00000000: 07 2b  .+
$ printf 42 | gs2 sum-func.gs2
42+
$ kona
K Console - Enter \ for help

  (42+) 69
111
  f : 42+
42+
  f 69
111

Nasıl çalışır

GS2

  • GS2 otomatik olarak STDIN'den okur ve girişi yığına iter.

  • bir sonraki baytın bir singleton string değişmezi olduğunu gösterir.

  • Çıkmadan önce GS2 tüm yığın öğelerini yazdırır.

K

Sol argüman kurutma işlemi K'da otomatik

Burada, n+ikili +argümanını sol argümanını ayarlayarak monadik bir işleve dönüştürür n.


1
Hangi kodlamayı kullanıyorsunuz?
Conor O'Brien,

2
@ CᴏɴᴏʀO'Bʀɪᴇɴ "Kaynak kodu CP437 kodlamasını kullanır ."
ETHProductions

16

ShapeScript → J, 4 bayt

"&+"

Bu, sade, monadik bir fiili basar. Çevrimiçi deneyin: ShapeScript , J

Test sürüşü

$ cat sum-func.shape; echo
"&+"
$ printf 42 | shapescript sum-func.shape; echo
42&+
$ j64-804/jconsole.sh 
   42&+ 69
111
   f =: 42&+
   f 69
111

Nasıl çalışır

ShapeScript

  • ShapeScript otomatik olarak STDIN'den okur ve girişi yığına iter.

  • "&+" bu dizgiyi yığına iter.

  • Çıkmadan önce, ShapeScript tüm yığın öğelerini yazdırır.

J

& Argümanları köretmeyi gerçekleştirir.

Burada dyadik fiili, sol argümanını ayarlayarak monadik bir fiile n&+çevirir .+n


Yakın teklife ihtiyacınız olmayan bir dil olduğundan eminim.
lirtosiast

Haklı olmanızın iyi bir şansı var ama örtülü girdi ve örtülü çıktı olan birini hatırlayamıyorum.
Dennis

13

GolfScript → CJam, 4 bayt

{+}+

Bu bir kod bloğu yazdırır (anonim işlev). Çevrimiçi deneyin: GolfScript , CJam

Test sürüşü

$ cat sum-func.gs; echo
{+}+
$ printf 42 | golfscript sum-func.gs
{42 +}
$ cjam
> 69 {42 +} ~
111
> {42 +}:F; 69F    
111

Nasıl çalışır

GolfScript

  • GolfScript otomatik olarak STDIN'den okur ve girişi yığına iter.

  • {+} bu bloğu yığına iter.

  • + mutlu bir şekilde bir dize ve bir blok birleştiren birleştirme gerçekleştirir.

  • Çıkmadan önce GolfScript tüm yığın öğelerini yazdırır.

CJam

{n +}yürütüldüğü zaman, önce nyığına iterek , sonra yığından +iki tam sayı çıkartan ve toplamlarını iten bir kod bloğudur .


2
Sadece bunu gönderecektim!
Loovjo

Vay bu etkileyici. {n +}iter 42, sonra yürütür +. (Muhtemelen olmalı {42 +}veya "iter n" olmalıdır)
Justin

@Justin Indeed. Teşekkürler!
Dennis

12

BrainF *** - JavaScript ES6, 57 bayt

----[-->+++<]>--.[-->+<]>+.+.--[->++<]>.[--->+<]>+++.[,.]

(Girişin sayısal karakterlerden oluştuğunu varsayar)

Diyelim ki 1337girişiniz. Sonra, bu derlemek için olurdu:

x=>x+1337


10

O ila K, 5 bayt

i ++ o

@ Kirbyfan64sos teşekkürler

Mücadeleden sonra eklenen özellikleri kullanan başka bir sürüm oluşturuldu.

i +
  • Girdiyi alır, istiflemeye zorlar
  • Bir dizge olarak '+' işaretini basar
  • Yığın içeriğini çıkarır

K'nin otomatik olarak kıvrılması var, sadece yapabilirsiniz i'++p.
kirbyfan64sos 9:15

K ve O arasındaki mesafe 4'tür. Bir bayt kısaltmanız gerekir.
mbomb007

@ mbomb007 wat. Kod uzunluğunda 5 bayt
faz

2
Harfler. Alfabede. Anla?
mbomb007

1
@ mbomb007 bu benim için çok karmaşıktı
faz

9

Julia'ya R, 19 bayt

cat("x->x+",scan())

Bu, kullanarak STDIN'dan bir tamsayı okur scan()ve adlandırılmamış bir Julia işlevini kullanarak STDOUT'a yazar cat(). Julia fonksiyonu basitçe x->x+n, nR programından geliyor.


9

Malbolge JavaScript ES6 için, 71 bayt

('&%@9]!~}43Wyxwvutsr)Mon+HGi4~fBBdR->=_]:[875t4rT}0/Pf,d*((II%GEE!Y}Az

Malbolge kodunu oluşturmak her zaman eğlencelidir.


8

Minecraft 1.8.7 ila K, 7 6 + 33 + 27 + 62 = 129 128 Bayt

Bu bayt sayma sürümünü kullanıyor .

sistem

Komut blokları (soldan sağa doğru):

puan tahtası hedefleri K kukla ekleyin
çetele oyuncuları JK ayarladı <giriş>
tellraw @a {score: {name: "J", amaç: "K"}, ek: [{text: "+"}]}

Bu muhtemelen biraz daha golf oynayabilir, ancak oldukça basit: JAmaç ile bir değişken oluşturun Kve bu amaç için puanını girdi olarak ayarlayın (STDIN yok - bunun yeterince yakın olduğunu düşündüm). Sonra, bir onay işaretinden sonra, değişkenin puanını, ardından Jgelen hedef için çıktı alın . Basit.K+


.Dat bytecounting olduğunu Not değil yapı dosyalarını desteklemez listelenmiş Minecraft versiyonu olarak, bu sistem için geçerli.
Addison Crump

İkincisi için extra, the , JSON skorunu bir diziye yerleştirip dizgiyi yerleştiremez miydiniz ? tellraw @a [{score:{name:"J",objective:"K"}},"+"]
Redwolf Programları

@RedwolfProgramlar Dört yıl önce, başvuru anında değil.
Addison Crump,

8

Ciddiyetle Python, 15 bayt

,"lambda n:n+"+

Girdiyi dize biçiminde, yani "3"

Açıklama:

,: read value from input
"lambda n:n+": push this literal string
+: concatenate top two values on stack

Çevrimiçi deneyin (girişin elle girmesi gerekir, çünkü permalink'ler tırnaklardan hoşlanmaz)


Hey, biri gerçekten Cidden ile yaşadı! : D
ETHProductions

2
Ciddi anlamda? Simplex'ten önce cidden mi bitirdin? D:
Conor O'Brien

1
@ CᴏɴᴏʀO'Bʀɪᴇɴ Henüz tamamlanmadı (sorun izleyiciye bakın), ancak bazı golf sahalarında kullanmak için yeterince iyi çalışıyor.
Mego



6

APL'ye Pyth, 7 5 bayt

+z"--

Pyth kodu, input ( z) komutunu dizeyle birleştirir "--". Bu form ile APL içinde isimsiz bir monadic treni yaratır n--, nPyth geliyor. APL'de çağırırken, (n--)xbazı argümanlar için xhesaplar n--x = n-(-x) = n+x.

Deneyin: Pyth , APL

Dennis sayesinde 2 bayt kaydedildi!


5

> <> to Python, 25 + 3 = 28 bayt

"v+x:x adbmal
o/?(3l
;>~n

-vBayrakla giriş yapar , örneğin

py -3 fish.py add.fish -v 27

ve bir Python lambda çıkarır, örn lambda x:x+27.

Bonus için 30 baytlık bir STDIN giriş sürümü:

i:0(?v
x+"r~/"lambda x:
o;!?l<

5

Fare Ruby, 19 bayt

?N:"->x{x+"N.!"}"$

Ungolfed:

? N:       ~ Read an integer from STDIN, store in N
"->x{x+"   ~ Write that string to STOUT
N. !       ~ Write N
"}"$       ~ Close bracket, end of program

Bu formun ismi açıklanmayan Yakut işlevi oluşturur Fare geliyor.->x{x+n}n


Güzel iş, bu yazıyı beğendim.
faz


5

Java'ya brainfuck, 273

+ [-----> +++++ +++++ ++++++ [----> ++++ + [-....> ++++ .- [- > +++ -.----- [-...> +++ +++++ ++++++ [----> ++++ .- [---> ++ -. [-----> ++ -. [-..> +++ --------- .------------- [---> + --- + --- ---- .- [-...> +++++ -.- [---> ++ -.. [-----> +++, [. ,] + [---------> +++ .- [---> +++.

Böyle bir yöntemin Çıkışlar int d(int i){return i+42;}(gelmez bak ... Java Java yöntemine gibi ama!)


1
Bilirsin, çünkü Java.
Conor O'Brien,

1
Ne demek, bir Java yöntemine benzemiyor mu? Bu tür bir yöntem başka nasıl görünmelidir?
Paŭlo Ebermann 11:15

@ PaŭloEbermannpublic static int method(int argument){return argument+42;}
faz

1
Hmm tamam. (Sadece programlama public staticyapıyor olsanız da, gerçekten Java yapmıyorsunuz. argumentAyrıca ismini summand;-). )
Paŭlo Ebermann 11:15

@ PaŭloEbermann Sadece modelleme oldupublic static void main(String[] arguments){}
faz

4

PHP → JavaScript (ES6), 20 24 bayt

STDIN'den okumak PHP'de her zaman pahalıdır. Biraz garip görünüyor:

x=>x+<?fgets(STDIN);

x=>x+Dizeyi tamamlamak için kullanıcı girişini yazdırır ve bekler, isimsiz JavaScript işlevinin tamamı ile sona erer, örn x=>x+2.

İlk sürüm (24 bayt )

<?='x=>x+'.fgets(STDIN);

Neden sadece değil x=>x+<?=$x;? Bu PHP4.1 için geçerlidir ve değerleri POST, GET, SESSION, COOKIE, ... üzerinden geçirebilirsiniz ve kusursuz çalışacaktır. Veya PHP5.3'te register_globals=on( php.inidosyanızda).
Ismael Miguel

@IsmaelMiguel Mücadelenin gerekleri bir sayı aldığını söylüyor STDIN. Her zaman eleştirildiği görmezden geldim. Bu yüzden şimdi gereksinimleri ciddiye alıyorum. :)
insertusernamehere

Bence bunun GETgeçildiğini düşünüyorum STDIN. Bir süre sonra test edebilirim.
Ismael Miguel

1
serverfault.com/questions/187025/… <- Talebime dair kanıt. Sadece verdiğim kodu kullanın, bu bağlantıyı tıklayın ve kimse şikayet edemez
Ismael Miguel

1
Ho, anladım! Bu gerçekten zekice!
Karadelik


4

Python 2 ila CJam, 18 20 bayt

İşlevselliğin düzeltilmesi için LegionMammal978'e teşekkürler.

print"{%f+}"%input()

Python, basit bir dize formatı yapar. %ffloat kodudur ve float işlemlerinde bayt kaybetmediğim için devam ettim ve yaptım.

CJam, Golfscript-> CJam'ın cevabıyla aynı. Bu gibi bir şey görünüyor:

{7.4+}

veya:

{23+}

Bu, yığındaki en yüksek değeri alan, özel sayıyı iten, sonra da ekleyen bir bloktur.


@ LegionMammal978 Sorunun sonunda adsız işlevlere ve lambda ifadelerine izin verildiğini söylüyor. Yine de cevabımı alternatif bir programla düzenleyeceğim.
bkul

1
OP, çıkışın bir fonksiyon olabileceği anlamına gelir.
LegionMammal978

3

Haskell'e POSIX kabuğu, 19 bayt

read n;echo "($n+)"

Anonim işlevlere izin veriliyor, Haskell operatör bölümleri ile iyi bir çıktı seçimi.


3

Retina için Pip , 4 bayt

Bu satırların her biri için bir dosya kullanır + 1 penaltı bayt; veya her iki satırı da tek bir dosyaya yerleştirin ve -sbayrağı kullanın .

$
+_

Girişin bitişini ile $eşleştirir ve koyar +_. Bu 3+_, Pip'deki isimsiz bir fonksiyon olan formda bir şeyle sonuçlanır .


3

Bash → C / C ++ / C # / Java, 33 bayt

ve belki başkaları

echo "int f(int a){return a+$1;}"

3

Vitsy to K, 5 Bayt

Bunu yapabiliyorsa \ o / K çok yakında kullanılacaktır.

N '+', Z

ya da belki...

N '+' O

Giriş bir dizge olarak alınırsa (sadece 0-9 giriş için) ...

i '+', Z

Bunların tümü, giriş 2 için, çıktısı:

2+

3

Minik Lisp a Seylan , 68 61

(d u(q((n)(c(q(Integer x))(c(q =>)(c(c(q x+)(c n()))()))))))

Tiny Lisp'in gerçek girdi ve çıktısı yok - sadece ifade değerlendirmesi var. Yukarıdaki kod bir fonksiyon yaratır ve onu bağlar u. Daha sonra şöyle bir uargümanla arayabilirsiniz n: (u 7)ki bu, Tiny Lisp değerini şöyle değerlendirecek:

((Integer x) => (x+ 7))

Bu, isteğe bağlı bir tam sayıya 7 ekleyen adsız bir işlev için geçerli bir Ceylon ifadesidir.

7 baytlık bir gelişme için DLosc sayesinde.


Çok sınırlı bir çıktı kapasitesiyle çalışmak güzel iş!
DLosc

3

Lambda Matematik , 39 bayt için JavaScript

(Bu bağlantılı belgeyi temel olarak kullanır.)

alert((x=>`λa(${x}(add a))`)(prompt()))

Diyelim ki giriş 5. Sonra bu olur:

"λa(5(add a))"

1
Lambda Matematik için tercüman nerede?
feersum

@feersum Bağlantıyı kontrol et. Gerçek bir tercüman olup olmadığından emin değilim, ancak bu dilde gönderebileceğim söylendi.
Conor O'Brien,

1
"Sana söylenen" derken ne demek istiyorsun? Herhangi bir dil uygulamasında çalışmayan cevaplar geçersiz.
feersum 10:15


1
Lambda matematiği oldukça iyi biliniyor, bir yerlerde geçerli bir tercüman olması gerektiğini düşünüyorum. Mesele şu ki, böyle bir tercümanı tanımlamanız ve kodu bu tercüman tarafından kabul edilen formatta yazmanız gerekir.
feersum



2

Seylan için Minik lisp , 76

shared void run(){print("(q((x)(s ``process.readLine()else""``(s 0 x))))");}

Bu gibi çıkış (giriş hattı okuduktan sonra) üretir (q((x)(s 5(s 0 x))))olduğu küçük Lisp'te değerlendirir, ((x) (s 5 (s 0 x)))bir argüman alan bir fonksiyon x0 ila çıkarır bunu, ve 5 sonucunu çıkarır bir küçük Lisp'te ekler ne Evet, bu ( , yalnızca yerleşik bir çıkarma işlevi vardır. Tabii ki, önce bir ekleme işlevi tanımlanabilir, ancak bu daha uzun olur.)

Bunu anonim bir işlev olarak kullanabilirsiniz:

((q((x)(s 5(s 0 x)))) 7)

(Bu 12'ye göre değerlendirilecektir.)

Ya da bir isim verebilirsin:

(d p5 (q((x)(s 5(s 0 x)))))
(p5 7)

Tiny Lisp’in yazarı olan DLosc’tan yapılan Düzeltmeler ve Golf İpuçları.


2

Javascript (ES6)> PHP / Javascript, 38 48 47 bayt

Bu kod adı verilen bir VALID PHP ve Javascript fonksiyonu yaratan isimsiz bir fonksiyondur anonymous.

P=prompt;P(Function('$x',`return $x+${P()};`));

Bu kodun yazılmasından itibaren, yalnızca Firefox ES6 yerelini (bayraklar ve benzeri şeyler olmadan) uygulamıştır.

Bu kod prompt()girdi istemek ve çıktı almak için işlevi kullanır . Firefox çıktısının kopyalanmasını destekler prompt(), bunu Javascript için yasal bir çıktı yöntemi yapar.


hususlar:

  • ;Sonunda PHP için gereklidir
  • Boşluk return $xJavascript tarafından isteniyor
    • Görmezden gelmek return$x, tanımsız olduğunu söyleyecektir.
  • İşlev adı otomatiktir: Üzerinde başka seçeneğim yok
  • Yalnızca PHP veya yalnızca Javascript seçmek, kodu yalnızca 1 baytta azaltır ve eğlence faktörünü yarıya indirir
  • Diğer dillerle çalışabilir

Eski cevap (48 bayt):

alert(Function('$x',`return $x+${prompt()};`));

Eski geçersiz cevap:

y=>''+Function('$x',`return $x+${y};`)

@ LegionMammal978 Tamamlandı. Onu düzeltti.
Ismael Miguel
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.