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.