Benim adım ne? Dilin adını dolaylı olarak [kapalı] yapın


40

Sadece bir dilin kendi imkanlarını kullanarak bir programlama dilinin adını üretin. Dilin adı yalnızca dolaylı olarak, yani özel olmayan ortam değişkenlerinden, yerleşik işlevlerden veya yöntemlerden veya dilin tercüman / derleyicisinden çağrılabilir. Çıktı sadece dilin adı olmalıdır.

Bir örnek şöyle olurdu:

$ awk --v | awk 'NR<2 { print $2}'  # GNU Awk 3.1.8
Awk

Seçtiğim cevap en fazla oyu alan cevap olacak. Beraberlik durumunda, en kısa golf oyunu (ayrı veya sadece verilen cevap), kravat kırıcı olacaktır.


1
Java yansıması API kullanarak Tamam değil mi?
Ming-Tang

Bunu düşünmedim, ama bu da tamam.
Ty Auvil

@ George: Huh? Bu şimdi bir kod golfü mü? Neden? Daha önce değildi ...
Joey

@Joey: Hayır, daha önce değildi, ancak bir kod golf sorusu gibi görünüyordu, bu yüzden düzenlemiştim ve birisi düzenlemeyi onayladı.
Nathan Osman

@Joey: Code Golf kravat kırıcı. Bu TAG'ı başlangıçta takmadım, ama George önerdi ve kabul ettim.
Ty Auvil

Yanıtlar:


18

BASH, 17 7

bash -c 'echo $0'

ya da

echo ${0#-}

eğer zaten bash kullanıyorsanız: D

güncelleme : "echo $0"önce $0genişleyen olur 'echo $0'doğru cevap budur.


Bu sadece bir giriş kabuğu ise, yalnızca program önbelleğe alınmışsa bir giriş kabuğu değilse, çizgi ön ekidir.
JB,

@JB: Bunu işaret ettiğiniz için teşekkürler. "S kullanmam gereken yerlerde 's kullanıyordum
Eelvex

Kazanan gibi görünüyor. :)
Ty Auvil

echo $ {SHELL: 5}
Balık Monitörü

30

Beyaz boşluk

|  	 	 			
	
    		 	   
	
    		 	  	
	
    			 	  
	
    		  	 	
	
    			  		
	
    			    
	
    		    	
	
    		   		
	
    		  	 	
	


|

Gerçek bir dil değil, boşluk.
Alexandru


Ahh. Üzgünüm Anthony, SE şimdi seni büyütmeme izin vermiyor.
Alexandru

Her şey yolunda. Son zamanlarda kendim bu dili öğrendim.
Anthony,

1
Yanılmıyorsam, programınızda iki ölümcül hata var: (1) S, T, L'nin Boşluk, Sekme, Linefeed'i tekrarlamalı olarak belirtmesine izin vermek, ilk komut şu anda SSTSTSTTTL, ancak olmalıdır SSSTSTSTTTL( solda 3 S) - 3. üncü Sizleyen ikili sayının pozitif işaretini belirtmek için gereklidir (örn. 'W' için ascii kodu = ikili Lkarakter olarak kodlanmış ikili kodda = 85 = 1010111 TSTSTTTL) ve diğer ascii kodları için. (2) Prog nihai TLLLolmalıdır TLSSLLLburada, TLSSçıkış nihai yığın karakteri ve gerekli olan LLLişaretleri sonu programı.
res


23

Python - 23 22

print`credits`[97:103]

2
sonra boşluk bırakmalısınızprint
gnibbler

` Ne yapar ? Bunu hiç görmedim.
Kazark

4
Geri tepmeler repr () için kullanımdan kaldırılmış takma addır. Geri tepmeler Python 3.x'te gitti.
0xKirill

2
@ 0xKir Yani? Onları gidene kadar kod golfünde kullanın.
Riking

23

J, 4

u:74

Kısa bir dil ismine sahip olmak biraz yardımcı olur.


Daha kısa olabilir:u:74
jpjacobs

19

Python (win32) - rastgele modülün kötüye kullanılması

Bunun gerçekten işe yarayıp yaramadığından emin değilim . Uygulamaya bağlıdır.

print ''.join([(random.seed(835)==None)and'']+[chr(random.randint(64,90)) for x in range(3)]+[(random.seed(53281)==None)and'']+[chr(random.randint(64,90)) for x in range(3)])

Bunu nasıl buldun? Ayrıca Linux için Python 2.6.6'da da çalışıyor.
Mekanik salyangoz,

5
Duymak güzel! Belirli bir diziyi elde etmek için rastgele modülü nasıl tohumlamanız gerektiğini belirlemek için küçük bir bruteforcing aracı yazdım. Üç karakter dizisi ile bu çok uzun sürmüyor - Bu komut dosyası "PYTHON" :) almak için birlikte iki üç harfli dizileri katıldı
zhazam

Gerisi liste kavramalarını ve diğer kirli hileleri tek bir satıra sığdırmak için kullanıyor.
Bruteforcing

Ve Python 3.1.2 üzerinde çalışıyor print(elbette sonra parantez ekleyerek ).
Mekanik salyangoz,

1
Neredeyse orada: generateSentence(50613, 73)[66:]verir 'PYTHOCN'.
Mekanik salyangoz

17

brainfuck

Sadece eğlence için (bunun görevin amacı ile ilgili olmadığını biliyorum.), Bu kodu yazdım ...

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

Ve yerini ne zaman <, >, [, ], .boşluk ...

+++++   -+-+-     ++    +++++  +     +
+    +  +    +   -  +     +    ++    -   
+    +  +    -  +    +    +    - -   - 
+++++   +++++   ------    +    -  +  - 
+    +  +    +  +    -    -    -   + -  
+    +  +    -  -    -    -    -    -+ 
++---   +    +  +    -  +++++  +     - 

+++  + +  +++  + + 
-    + +  +    ++ 
+++  + +  +    + 
+    + -  +    ++
+    ++-  -+-  + +


---  
---
---
---

 - 
---
 - 


12

piton

import sys;print sys.copyright[24:30]

Bu da benim için çalışıyor (sys.executable is '/ usr / bin / python')

import sys;print sys.executable[9:]

1
İşte bunlardan ne Active25\Lib\site-packages\pythonwin\Pythonwin.exe
alıyorum

import sys;print sys.subversion[0][1:]olsa çalışır
Nas Banov

6
Bu hile yapıyor ... Ama daha iyi hile yapabilirim:eval.__doc__[144:150]
JBernardo

11

brainfuck 101

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

muhtemelen biraz daha golf olabilirdi, ama sabah 6'da ve biraz uyumam gerek


11

C

Anon'un C cevabına göre (bir C dosyasının göz önünde bulundurulması her zaman .c uzantısına sahiptir). Ben öneririm:

#include <stdio.h>
void main(){puts(__FILE__+sizeof(__FILE__)-2);}

5
Çok daha kısa, 25 karakter, tek satır, main(){puts(__FILE__+2);}dosya adının tek bir harf olduğu varsayılarak, örn. a.c
Hasturkun

7

Java

public class Name {
    public static void main(String[] args) {
        String s = "";
        s = s.getClass().getName();
        s = s.substring(0, 1).toUpperCase() + s.substring(1, 4);
        System.out.println(s);
    }
}

anon: Başka bir cevap gönder. Bu bir golf değil, bu yüzden kısa tutmanıza gerek yok.
Joey,

6

C

DevStudio 2005 kullanılarak hazırlandı

#include <stdio.h>
void main ()
{
  int i,j,i2;
  for (i=j=0,i2=200;i2<=200;i2-=19,j==putchar(32|(i2<'Q'&&i2>'+'&&(j<20||i<12||i>28))*3)+8?j=0,i2+=i,i+=putchar('\n')-8:(i2+=j,j+=2));
}

Biraz daha kısa versiyon (derleyici uyarıları ile)

int i,j,k;
for (i=j=k=0;k<=0;k-=19,j==putchar(32|(k<-119&&k>-157&&j<20|i<12|i>28)*3)+8?j=0,k+=i,i+=putchar('\n')-8:(k+=j,j+=2));

Birincisi, intgcc'yi kullanarak ana tipte olmadığına dair uyarı üretecektir .
oenone

1
'C' harfini kullanmana izin verilmiyor.
kinokijuf

6

Yakut - 27

puts RUBY_DESCRIPTION[0..3]

Chris Jester-Young'un yorumundan güncelleme:

Yakut - 24

puts RUBY_COPYRIGHT[0,4]

Hauleth'ten güncellendi:

Yakut - 15

p`ruby -v`[0,4]

1. RUBY_COPYRIGHTdaha kısa RUBY_DESCRIPTION. 2. [0,4]daha kısa [0..3].
Chris Jester-Young

Daha kısa `ruby -v` [0,4]`
Hauleth

5

kedi 3

Aşağıdaki içeriğe sahip bir dosya oluşturun (kaynak kodu)

cat

Ve şöyle çalıştırın (dosyayı çalıştırın):

$ cat filename

7
Ne dolaylı ne de bir dil?
eternalmatt

4
Kedi gerçek bir dil değil, çünkü Turing-tamamlanmadı.
kinokijuf

3
@kinokijuf Turing tamamlanmayan birçok faydalı dil var. Kısmi bir liste için bkz. Stackoverflow.com/q/8412741/20713 .
efemient

5
@ephemient: Kedi sadece turing değil, aynı zamanda bir dil değil. Sözdizimi yok, gramer yok, anahtar kelimeler yok. Bit maskesinin tanımını nereden aldığını bilmiyorum - takip etmiyorum.
kullanıcı bilinmeyen

6
@userunknown catDil olarak hayal etmek zor ve bunun yanında sorunun ruhunu ihlal ediyor (doğrudan dil adını kullanıyor). Benim yorumum "Kedi gerçek bir dil değil çünkü Turing-tamamlanmadı" fikrini reddetmekti. Başka nedenlerden dolayı bir dil değildir, ancak Turing-eksiksizliği iyi bir karar faktörü değildir.
ephemient



5

Yakut

Kısa değil, ama dolaylı olarak.

4.times{|x|print((82+11.24*x+8.231*Math.tan(111.2*x)).floor.chr)}


5

Bash / Brainfuck / C

//bin/bash -c 'echo ${0##*/}'
#define p putchar
#define exit main(){p(p+67);p(10);}
exit
//++++++++[->++++++++++++>+>>++>+++<<<<<]>[->+>+>+>+<<<<]
//>+>++.>++.<-.<.>>----.<<---.>>>---.<<++.>---.

Vaov! Bir çokgrup! Sonraki adım: Boşluk ekleyin.
tbodt

4

brainfuck

>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
++++++++++++++++++++++++++++++++++++++++++++++++.
-----------------.
++++++++.
+++++.
--------.
+++++++++++++++.
------------------.
++++++++.

Br ** n! (gitmek için beş tane daha ...)
Dr. belisarius

@belisarius: Hm?
Joey

Br ** n size.
Mateen Ulhaq,

1
[...]: +++++++++++ [> ++++++> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++> ++++ <<<< -....]> ++++++ >> ++++ <--- ++++++++ +++++ .-- ------. >> ++. * << ---. ++++++++.
JBernardo

12
Bu tipik Git çıktısına benziyor .
Joey Adams

4

Perl

$^X=~/([a-z]+)[^\/]+$/;print$1,$/

Sadece perçıktı olarak alıyorum (son l eksik).
BioGeek

1
@BioGeek: sizin mi Perlikili denir per?
ninjalj

2
Ben de alıyorum per. (Benim $^Xdiyor /usr/bin/perl. [^\/]+Yutar l.)
Ilmari Karonen

sabit:, komut satırı anahtarı $^X=~/([^\/]+)$/;print$1ile çalıştırın-l
ardnew

4

Scala - 42

print(((1,1).getClass+"").substring(6,11))

Güncelleme - 39 karakter

print(('a.getClass+"").substring(6,11))

Güzel! Değişken, aynı boyutta: baskı (("" + 'a.getClass) .split ("\\ b") (3))
PhiLho

Büyük harf kullanmasını tercih ediyorum ama elbette artık golf değil. Öyleyse, değişkenler yapma zevkine göre: baskı ([App] .toString.split ("\\ W" sınıfı). Map (_. Büyük harf) .apply (1))
PhiLho

23 karakterde aynı numara: ("" + Harita) .patch (5, "", 99)
deadsven

Ve 16: ("" + Harita)
.take

Veya 13:""+Map take 5
Régis Jean-Gilles

4

C - 34

Bunu önceki C girişine yorum olarak eklemek için yeterli saygınlığım yok. Yukarıdaki ile aynı fikir, ancak dosya adı her şey olabilir.

main(){puts(index(__FILE__,0)-1);}

2
Gah ama şimdi benim dosyaları isim olamaz "& raquo; \ 0 <3ASCII.c"
Walpen


3

Visual Basic (sürüm 6.0)

MsgBox Right(Error(458), 12)

VBScript

On Error Resume Next
Err.Raise 458
MsgBox Right(Err.Description, 8)

Hem VB6 hem de VBScript

On Error Resume Next
Err.Raise 458
D = Err.Description
MsgBox Mid(D, InStr(2, D, "V"))

VBScript bir "Bscript" üretir. bilgisayarımda.
kinokijuf

Sen kötü bir adamsın
Riking

3

QBasic (37)

QBasic yorumlayıcısının 1.1 sürümünü kullanıyorum.

FOR x=0TO 5:?CHR$(PEEK(2588+x));:NEXT


3

GolfScript (13)

"#{$0[0..9]}"

+1 Zeki ... çok akıllı. Elbette, tercümanı yeniden adlandırdıysanız veya farklı bir dizinden çalıştırıyorsanız, bu işe yaramaz.
Ilmari Karonen

Ps. "#{$0}"10<üç karakter daha kısa. :)
Ilmari Karonen

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.