Jak mam na imię? Utwórz nazwę języka pośrednio [zamknięte]

40

Utwórz tylko nazwę języka programowania, korzystając tylko z funkcji samego języka. Nazwę języka można wywołać tylko pośrednio, tj. Z niestandardowych zmiennych środowiskowych, wbudowanych funkcji lub metod lub interpretera / kompilatora języka. Dane wyjściowe powinny być tylko nazwą języka.

Przykładem może być:

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

Odpowiedź, którą wybiorę, będzie tą z największą liczbą głosów. W przypadku remisu, najkrótsza wersja gry w golfa (osobna lub jedyna podana odpowiedź) będzie rozstrzygająca.

Ty Auvil
źródło
1
więc używanie interfejsu API do refleksji Java jest nieprawidłowe?
Ming-Tang,
Nie myślałem o tym, ale to też w porządku.
Ty Auvil
@George: Huh? Czy to jest teraz golf golfowy? Czemu? To nie było wcześniej ...
Joey,
@Joey: Nie, to nie było wcześniej, ale wydawało się, że to pytanie do golfa, więc zredagowałem to i ktoś zatwierdził zmianę.
Nathan Osman
@Joey: Code Golf to remis. Pierwotnie nie włączyłem tego TAG, ale George zasugerował to i zgodziłem się.
Ty Auvil

Odpowiedzi:

18

BASH, 17 7

bash -c 'echo $0'

lub nawet

echo ${0#-}

jeśli już uruchomiłeś bash: D

Aktualizacja : "echo $0"zostanie $0rozszerzony pierwszy tak 'echo $0'jest prawidłowa odpowiedź.

Eelvex
źródło
Ma on tylko prefiks myślnika, jeśli jest to powłoka logowania i nie jest to powłoka logowania, jeśli to ta, która uruchamia Twój program.
JB
@JB: dzięki za zwrócenie na to uwagi. Używałem "s gdzie miałbym 's
Eelvex
Wygląda na to, że to zwycięzca. :)
Ty Auvil
echo $ {SHELL: 5}
Fish Monitor
30

Biała przestrzeń

|  	 	 			
	
    		 	   
	
    		 	  	
	
    			 	  
	
    		  	 	
	
    			  		
	
    			    
	
    		    	
	
    		   		
	
    		  	 	
	


|
Anthony
źródło
To nie jest prawdziwy język, białe znaki.
Alexandru
22
@Alexandru: compsoc.dur.ac.uk/whitespace
dmckee
Argh. Przepraszam Anthony, SE nie pozwala mi teraz głosować.
Alexandru
W porządku. Sam ostatnio dowiedziałem się o tym języku.
Anthony
1
Jeśli się nie mylę, twój program ma dwa błędy krytyczne: (1) Pozwalając S, T, L oznaczać spację, Tab, Kanał liniowy kolejno, pierwsza instrukcja jest obecnie SSTSTSTTTL, ale powinna być SSSTSTSTTTL( 3 S po lewej) - trzeci Sjest potrzebny do wskazania znaku dodatniego liczby binarnej po nim (tj. kod ascii dla „W” = 85 = 1010111 w systemie binarnym, zakodowany jako Lciąg znaków TSTSTTTL) i tak dalej dla innych kodów ascii. (2) Finał progu TLLLpowinien znajdować się TLSSLLLtam, gdzie TLSSjest potrzebny do wypisania końcowego znaku ze stosu i LLLoznacza koniec programu.
res
26

do

#define d(x) x(#x[3])
void main(){d(putchar);}
Zaraz.
źródło
putchar((int)(putchar)+3);
Mateen Ulhaq,
22
putchar("putchar"[3]);Rok temu musiałem być idiotą.
Mateen Ulhaq,
23

Python - 23 22

print`credits`[97:103]
0xKirill
źródło
2
powinieneś opuścić to miejsce późniejprint
gnibbler
Co oznacza ` zrobić? Nigdy tego nie widziałem.
Kazark
4
Backticks to przestarzały alias dla repr (). Backticks zniknęły w Pythonie 3.x.
0xKirill
2
@ 0xKir Więc? Używaj ich w golfowym kodzie do ich zniknięcia.
Riking
23

J, 4

u:74

Posiadanie krótkiej nazwy języka stanowi rodzaj pomocy.

JB
źródło
Może być jeszcze krótszy:u:74
jpjacobs
19

Python (win32) - nadużycie losowego modułu

Nie jestem pewien, czy to faktycznie działa. Zależy od wdrożenia.

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)])
zhazam
źródło
Jak to znalazłeś? Działa również dla mnie w Pythonie 2.6.6 na Linuksie.
Ślimak mechaniczny
5
Dobrze słyszeć! Napisałem małe narzędzie do brutalnego forsowania, aby określić, w jaki sposób należy zaszczepić losowy moduł, aby uzyskać określoną sekwencję. Dzięki
trzycyfrowej
Reszta używa wyrażeń listowych i innych brudnych sztuczek, aby dopasować go do jednej linii. Narzędzie bruteforcing można znaleźć tutaj :)
zhazam
I działa na moim Pythonie 3.1.2 ( printoczywiście dodawanie nawiasów po ).
Mechaniczny ślimak
1
Prawie tam: generateSentence(50613, 73)[66:]daje 'PYTHOCN'.
Ślimak mechaniczny
17

BrainFuck

Dla zabawy (wiem, że nie ma to związku z celem zadania). Napisałem ten kod ...

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

A kiedy otrzymuje <, >, [, ], .z miejsca ...

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

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


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

 - 
---
 - 
JiminP
źródło
13

Piet, 47x2 pikseli

Używając koderów 5x5: Program Piet do wydrukowania „Piet”

boothby
źródło
12

Pyton

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

Działa to również dla mnie (sys.executable to '/ usr / bin / python')

import sys;print sys.executable[9:]
gnibbler
źródło
1
Oto, co otrzymuję z nich: Activea 25\Lib\site-packages\pythonwin\Pythonwin.exewięc ... nie dobrze
Nas Banov
import sys;print sys.subversion[0][1:]działa jednak
Nas Banov
6
to oszustwo ... Ale ja mogę oszukiwać lepiej:eval.__doc__[144:150]
JBernardo
11

pieprzenie mózgu 101

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

Prawdopodobnie można grać w golfa nieco dalej, ale jest 6 rano i powinienem się trochę przespać ...

Matt
źródło
11

do

W duchu odpowiedzi Anona w C (biorąc pod uwagę, że plik C ma zawsze rozszerzenie .c). Sugerowałbym:

#include <stdio.h>
void main(){puts(__FILE__+sizeof(__FILE__)-2);}
Etienne PIERRE
źródło
5
Znacznie krótszy, 25 znaków, pojedynczy wiersz main(){puts(__FILE__+2);}, przy założeniu, że nazwa pliku to jedna litera, np. a.c
Hasturkun
7

Jawa

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);
    }
}
Joey
źródło
anon: Po prostu podaj inną odpowiedź. To nie jest golf, więc nie trzeba go streszczać.
Joey,
6

do

Zbudowany przy użyciu DevStudio 2005

#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));
}

Nieco krótsza wersja (z ostrzeżeniami kompilatora)

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));
Skizz
źródło
pierwszy wyświetli ostrzeżenie o braku głównego typu intza pomocą gcc.
oenone
1
Nie wolno używać litery „c”.
kinokijuf
6

Rubin - 27

puts RUBY_DESCRIPTION[0..3]

Aktualizacja z komentarza Chrisa Jester-Younga:

Rubin - 24

puts RUBY_COPYRIGHT[0,4]

Zaktualizowany z Hauleth:

Rubin - 15

p`ruby -v`[0,4]
Donnie H.
źródło
1. RUBY_COPYRIGHTjest krótszy niż RUBY_DESCRIPTION. 2. [0,4]jest krótszy niż [0..3].
Chris Jester-Young
Jeszcze krótszy `` ruby ​​-v` [0,4] ``
Hauleth
5

kot 3

Utwórz plik o następującej treści (kod źródłowy)

cat

I uruchom go jak (uruchom plik):

$ cat filename
Alexandru
źródło
7
Ani pośredni, ani język?
eternalmatt
4
Kot nie jest prawdziwym językiem, ponieważ nie jest kompletny w Turinga.
kinokijuf
3
@kinokijuf Istnieje wiele przydatnych języków, które nie są kompletne w Turinga. Zobacz stackoverflow.com/q/8412741/20713 do częściowego listy.
ephemient
5
@ephemient: Cat nie tylko nie jest kompletna, ale wcale nie jest językiem. Nie ma składni, gramatyki, słów kluczowych. Nie wiem, gdzie maska ​​bitowa ma swoją definicję - nie podążam za nią.
użytkownik nieznany
6
@userunknown Trudno wyobrazić sobie catbycie językiem, a poza tym narusza ducha pytania (używa bezpośrednio nazwy języka). Moim komentarzem było obalenie idei, że „Kot nie jest prawdziwym językiem, ponieważ nie jest kompletny w Turingu”. Nie jest to język z innych powodów, ale kompletność Turinga nie jest dobrym czynnikiem decydującym.
ephemient
5

Clojure - 16 znaków

(subs(str =)0 7)
mikera
źródło
5

Haskell, 47 lat

data H=Haskell deriving Show
main=print Haskell
Thomas Eding
źródło
5

Rubin

Nie krótko, ale bardzo pośrednio.

4.times{|x|print((82+11.24*x+8.231*Math.tan(111.2*x)).floor.chr)}
Jon
źródło
5

Rubin (17)

p 1299022.to_s 36

Wyjścia "ruby"

defhlt
źródło
5

Bash / Brainfuck / C

//bin/bash -c 'echo ${0##*/}'
#define p putchar
#define exit main(){p(p+67);p(10);}
exit
//++++++++[->++++++++++++>+>>++>+++<<<<<]>[->+>+>+>+<<<<]
//>+>++.>++.<-.<.>>----.<<---.>>>---.<<++.>---.
Dennis
źródło
Łał! Poliglot! Następny krok: dodaj białe znaki.
tbodt
4

Brainfuck

>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
++++++++++++++++++++++++++++++++++++++++++++++++.
-----------------.
++++++++.
+++++.
--------.
+++++++++++++++.
------------------.
++++++++.
Joey
źródło
Br ** n! (jeszcze pięć ...)
Dr Belisarius
@belisarius: Hm?
Joey
Br ** n you.
Mateen Ulhaq,
1
możesz zmniejszyć za pomocą [...]: ++++++++++ [> ++++++> ++++++++++> +++++++++ ++> ++++ <<<< -]> ++++++. >> ++++. <---. ++++++++. +++++ .-- ------. >> ++. * << ---. ++++++++.
JBernardo,
12
To wygląda jak typowy wynik Gita .
Joey Adams,
4

Perl

$^X=~/([a-z]+)[^\/]+$/;print$1,$/
ninjalj
źródło
Dostaję tylko perjako wynik (brakuje ostatniego l).
BioGeek
1
@BioGeek: Czy twój Perlplik binarny jest nazywany per?
ninjalj
2
Też rozumiem per. (Mój $^Xmówi /usr/bin/perl. [^\/]+Jaskółki l.)
Ilmari Karonen,
naprawiono: $^X=~/([^\/]+)$/;print$1uruchamiany z -lprzełącznikiem wiersza poleceń
nowy
4

Scala - 42

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

Aktualizacja - 39 znaków

print(('a.getClass+"").substring(6,11))
Stanislav Yaglo
źródło
Miły! Wariant, ten sam rozmiar: print ((„” + 'a.getClass) .split („\\ b”) (3))
PhiLho
Wolę, żeby była wielka, ale oczywiście nie jest już golfem. Tak więc, dla przyjemności tworzenia wariantów: print (classOf [App] .toString.split ("\\ W"). Map (_. Capitalize) .apply (1))
PhiLho
Ta sama sztuczka w 23 znakach: („” + mapa) .patch (5, „”, 99)
deadsven,
I 16: („” + mapa) .take (5)
deadsven
Lub 13:""+Map take 5
Régis Jean-Gilles
4

C - 34

Nie mam wystarczającej reputacji, aby dodać to jako komentarz do poprzedniego wpisu C. Taki sam pomysł jak powyżej, ale nazwa pliku może być dowolna. C

main(){puts(index(__FILE__,0)-1);}
qartis
źródło
2
Gah, ale teraz nie mogę nazwać moich plików „& raquo; \ 0 <3ASCII.c”
walpen
4

> <> (Ryby) (11)

Nawet lepiej:

'>'::o2-oo;
jpjacobs
źródło
3

Visual Basic (wersja 6.0)

MsgBox Right(Error(458), 12)

VBScript

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

Zarówno VB6, jak i VBScript

On Error Resume Next
Err.Raise 458
D = Err.Description
MsgBox Mid(D, InStr(2, D, "V"))
Proszę wstać
źródło
VBScript tworzy „Bscript”. na moim komputerze.
kinokijuf
Jesteś złym człowiekiem.
Riking
3

QBasic (37)

Korzystam z wersji 1.1 interpretera QBasic.

FOR x=0TO 5:?CHR$(PEEK(2588+x));:NEXT
Proszę wstać
źródło
3

Lua 25 znaków

print(arg[-1]:match"%w+")

Lub analogicznie do rozwiązania JB J 17 znaków:

print"\76\117\97"
jpjacobs
źródło
1
_VERSION:sub(1,3)
mniip
3

GolfScript (13)

"#{$0[0..9]}"
marinus
źródło
+1 Sprytny ... bardzo sprytny. Oczywiście to nie działa, jeśli zmieniłeś nazwę interpretera lub, powiedzmy, uruchamiając go z innego katalogu.
Ilmari Karonen
Ps. "#{$0}"10<jest o trzy znaki krótszy. :)
Ilmari Karonen
3

Rakieta (45)

racket -e "(display(substring(banner)10 17))"
Francisco
źródło