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.


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ź.


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ń

|  	 	 			
	
    		 	   
	
    		 	  	
	
    			 	  
	
    		  	 	
	
    			  		
	
    			    
	
    		    	
	
    		   		
	
    		  	 	
	


|

To nie jest prawdziwy język, białe znaki.
Alexandru


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


23

Python - 23 22

print`credits`[97:103]

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.


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)])

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 ...

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

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


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

 - 
---
 - 


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:]

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ć ...


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

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

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

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]

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

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

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


5

Bash / Brainfuck / C

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

Łał! Poliglot! Następny krok: dodaj białe znaki.
tbodt

4

Brainfuck

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

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,$/

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))

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

2
Gah, ale teraz nie mogę nazwać moich plików „& raquo; \ 0 <3ASCII.c”
walpen


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"))

VBScript tworzy „Bscript”. na moim komputerze.
kinokijuf

Jesteś złym człowiekiem.
Riking


3

Lua 25 znaków

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

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

print"\76\117\97"

1
_VERSION:sub(1,3)
mniip

3

GolfScript (13)

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

+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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.