Was ist mein Name? Indirekt den Namen der Sprache erzeugen [geschlossen]

40

Produzieren Sie nur den Namen einer Programmiersprache, indem Sie nur die Funktionen der Sprache selbst verwenden. Der Name der Sprache kann nur indirekt aufgerufen werden, dh von nicht benutzerdefinierten Umgebungsvariablen, integrierten Funktionen oder Methoden oder dem Interpreter / Compiler der Sprache. Die Ausgabe sollte nur der Name der Sprache sein.

Ein Beispiel wäre:

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

Die Antwort, die ich wähle, ist die mit den meisten Stimmen. Im Falle eines Unentschieden ist die kürzeste Golfversion (getrennt oder die einzig gegebene Antwort) der Unentschieden.

Ty Auvil
quelle
1
Ist die Verwendung der Java Reflection API nicht in Ordnung?
Ming-Tang
Daran habe ich nicht gedacht, aber das ist auch okay.
Ty Auvil
@ George: Huh? Ist das jetzt ein Code-Golf? Warum? Es war nicht vorher ...
Joey
@Joey: Nein, es war nicht vorher, aber es schien eine Code-Golf-Frage zu sein, also habe ich sie bearbeitet und jemand hat die Bearbeitung genehmigt.
Nathan Osman
@ Joey: Code Golf ist der Krawattenbrecher. Ich habe das TAG ursprünglich nicht angelegt, aber George hat es vorgeschlagen und ich habe zugestimmt.
Ty Auvil

Antworten:

18

BASH, 17 7

bash -c 'echo $0'

oder auch

echo ${0#-}

Wenn Sie bereits bash ausführen: D

update : "echo $0"wird $0zuerst erweitert, also 'echo $0'ist die richtige Antwort.

Eelvex
quelle
Es wird nur mit einem Bindestrich vorangestellt, wenn es sich um eine Anmeldeshell handelt, und nicht, wenn es sich um diejenige handelt, die Ihr Programm ausführt.
JB
@JB: Danke für den Hinweis. Ich habe "s verwendet, wo ich 's haben sollte
Eelvex
Sieht so aus, als ob dies der Gewinner ist. :)
Ty Auvil
echo $ {SHELL: 5}
Fish Monitor
30

Leerzeichen

|  	 	 			
	
    		 	   
	
    		 	  	
	
    			 	  
	
    		  	 	
	
    			  		
	
    			    
	
    		    	
	
    		   		
	
    		  	 	
	


|
Anthony
quelle
Keine richtige Sprache, Leerzeichen.
Alexandru
22
@ Alexandru: compsoc.dur.ac.uk/whitespace
dmckee
Argh. Entschuldigung Anthony, SE lässt sich jetzt nicht von mir empfehlen.
Alexandru
Das ist in Ordnung. Ich selbst habe kürzlich etwas über diese Sprache gelernt.
Anthony
1
Wenn ich mich nicht irre, weist Ihr Programm zwei schwerwiegende Fehler auf: (1) Wenn S, T, L jeweils Leerzeichen, Tabulator und Zeilenvorschub bezeichnen, ist die erste Anweisung derzeit vorhanden SSTSTSTTTL, sollte aber SSSTSTSTTTL( 3 S auf der linken Seite) - Die dritte Swird benötigt, um das positive Vorzeichen der darauf folgenden Binärzahl anzugeben (dh der ASCII-Code für 'W' = 85 = 1010111 in Binär, codiert als L-terminierte Zeichenfolge TSTSTTTL) und so weiter für die anderen ASCII-Codes. (2) Das Prog-Finale TLLLsollte dort sein TLSSLLL, wo TLSSes für die Ausgabe des letzten Zeichens vom Stapel benötigt wird, und LLLmarkiert das Programmende.
Res
26

C

#define d(x) x(#x[3])
void main(){d(putchar);}
Anon.
quelle
putchar((int)(putchar)+3);
Mateen Ulhaq
22
putchar("putchar"[3]);Ich muss vor einem Jahr ein Idiot gewesen sein.
Mateen Ulhaq
23

Python - 23 22

print`credits`[97:103]
0xKirill
quelle
2
Sie sollten das Feld nachprint
Knabberzeug
Was macht der ` ? Ich habe das noch nie gesehen.
Kazark
4
Backticks sind ein veralteter Alias ​​für repr (). Backticks sind in Python 3.x weg.
0xKirill
2
@ 0xKir Also? Verwenden Sie sie im Codegolf, bis sie weg sind.
Riking
23

J, 4

u:74

Einen kurzen Sprachnamen zu haben, ist eine Art Hilfe.

JB
quelle
Kann noch kürzer sein:u:74
jpjacobs
19

Python (win32) - Missbrauch des Zufallsmoduls

Ich bin mir nicht sicher, ob das wirklich funktioniert. Kommt auf die Umsetzung an.

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
quelle
Wie hast du das gefunden? Es funktioniert auch für mich in Python 2.6.6 unter Linux.
Mechanische Schnecke
5
Gut zu hören! Ich habe ein kleines Bruteforcing-Tool geschrieben, um festzustellen, wie Sie das Zufallsmodul setzen müssen, um eine bestimmte Sequenz zu erhalten. Bei einer Sequenz mit drei Zeichen dauert dies nicht allzu lange - dieses Skript verbindet zwei Sequenzen mit drei Buchstaben, um "PYTHON" zu erhalten :)
zhazam
Der Rest verwendet Listenverständnisse und andere schmutzige Tricks, um es in eine Zeile zu bringen. Das Bruteforcing-Tool finden Sie hier :)
zhazam
Und es funktioniert auf meinem Python 3.1.2 (Klammern printnatürlich danach).
Mechanische Schnecke
1
Fast da: generateSentence(50613, 73)[66:]gibt 'PYTHOCN'.
Mechanische Schnecke
17

BrainFuck

Nur zum Spaß (ich weiß, dass dies nicht mit dem Zweck der Aufgabe zusammenhängt), habe ich diesen Code geschrieben ...

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

Und wenn ich ersetzt <, >, [, ], .mit Raum ...

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

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


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

 - 
---
 - 
JiminP
quelle
13

Piet, 47 x 2 Pixel

Verwenden von 5x5-Codels: Piet-Programm zum Ausdrucken von "Piet"

boothby
quelle
12

Python

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

Das funktioniert auch bei mir (sys.executable ist '/ usr / bin / python')

import sys;print sys.executable[9:]
Knabberzeug
quelle
1
Hier ist, was ich von diesen bekomme: Activeund 25\Lib\site-packages\pythonwin\Pythonwin.exeso ... nicht gut
Nas Banov
import sys;print sys.subversion[0][1:]funktioniert aber
Nas Banov
6
Das ist Betrug ... Aber ich kann besser betrügen:eval.__doc__[144:150]
JBernardo
11

Brainfuck 101

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

könnte wahrscheinlich etwas weiter Golf spielen, aber es ist 6 Uhr morgens und ich sollte etwas schlafen ...

Matt
quelle
11

C

Im Geiste von Anons Antwort in C (wenn man bedenkt, dass eine C-Datei immer die Erweiterung .c hat). Ich würde vorschlagen:

#include <stdio.h>
void main(){puts(__FILE__+sizeof(__FILE__)-2);}
Etienne PIERRE
quelle
5
Viel kürzer, 25 Zeichen, einzelne Zeile, main(){puts(__FILE__+2);}unter der Annahme, dass der Dateiname ein einzelner Buchstabe ist, z. 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);
    }
}
Joey
quelle
anon: Sende einfach eine andere Antwort. Dies ist kein Golf, also müssen Sie sich nicht kurz fassen.
Joey
6

C

Mit DevStudio 2005 erstellt

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

Etwas kürzere Version (mit Compiler-Warnungen)

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
quelle
Zuerst wird eine Warnung ausgegeben, dass main nicht vom Typ intmit gcc ist.
Oenone
1
Der Buchstabe "c" darf nicht verwendet werden.
Kinokijuf
6

Rubin - 27

puts RUBY_DESCRIPTION[0..3]

Update von Chris Jester-Youngs Kommentar:

Rubin - 24

puts RUBY_COPYRIGHT[0,4]

Aktualisiert von Hauleth:

Rubin - 15

p`ruby -v`[0,4]
Donnie H
quelle
1. RUBY_COPYRIGHTist kürzer als RUBY_DESCRIPTION. 2. [0,4]ist kürzer als [0..3].
Chris Jester-Young
Noch kürzer `` ruby ​​-v` [0,4] ``
Hauleth
5

katze 3

Erstellen Sie eine Datei mit folgendem Inhalt (Quellcode)

cat

Und führe es so aus (führe die Datei aus):

$ cat filename
Alexandru
quelle
7
Weder indirekt noch eine Sprache?
Eternalmatt
4
Katze ist keine richtige Sprache, weil sie nicht vollständig ist.
Kinokijuf
3
@kinokijuf Es gibt viele nützliche Sprachen, die nicht vollständig sind. Eine unvollständige Liste finden Sie unter stackoverflow.com/q/8412741/20713 .
Ephemient
5
@ephemient: Cat ist nicht nur nicht vollständig, es ist überhaupt keine Sprache. Es hat keine Syntax, kein Grammatik, keine Schlüsselwörter. Ich weiß nicht, woher Bitmaske seine Definition hat - ich folge ihr nicht.
Benutzer unbekannt
6
@userunknown Es ist schwer vorstellbar cat, eine Sprache zu sein, und außerdem verstößt dies gegen den Sinn der Frage (verwendet den Namen der Sprache direkt). Mein Kommentar war, die Idee zu widerlegen, dass "Katze keine echte Sprache ist, weil sie nicht Turing-vollständig ist". Aus anderen Gründen ist es keine Sprache, aber die Vollständigkeit der Turinge ist kein guter Entscheidungsfaktor.
ephemient
5

Clojure - 16 Zeichen

(subs(str =)0 7)
mikera
quelle
5

Haskell, 47

data H=Haskell deriving Show
main=print Haskell
Thomas Eding
quelle
5

Rubin

Nicht kurz, aber sehr indirekt.

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

Rubin (17)

p 1299022.to_s 36

Ausgänge "ruby"

defhlt
quelle
5

Bash / Brainfuck / C

//bin/bash -c 'echo ${0##*/}'
#define p putchar
#define exit main(){p(p+67);p(10);}
exit
//++++++++[->++++++++++++>+>>++>+++<<<<<]>[->+>+>+>+<<<<]
//>+>++.>++.<-.<.>>----.<<---.>>>---.<<++.>---.
Dennis
quelle
Beeindruckend! Eine Polyglotte! Nächster Schritt: Whitespace hinzufügen.
Tbodt
4

Brainfuck

>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
++++++++++++++++++++++++++++++++++++++++++++++++.
-----------------.
++++++++.
+++++.
--------.
+++++++++++++++.
------------------.
++++++++.
Joey
quelle
Br ** n! (Noch fünf ...)
Dr. Belisarius
@belisarius: Hm?
Joey
Br ** n Sie.
Mateen Ulhaq
1
Sie können kleiner machen mit [...]: ++++++++++ [> ++++++> ++++++++++> +++++++++ ++> ++++ <<<< -]> ++++++. >> ++++. <---. ++++++++. +++++ .-- ------. >> ++. * << ---. ++++++++.
JBernardo
12
Dies sieht aus wie eine typische Git- Ausgabe.
Joey Adams
4

Perl

$^X=~/([a-z]+)[^\/]+$/;print$1,$/
Ninjalj
quelle
Ich bekomme nur perals Ausgabe (das letzte l fehlt).
BioGeek
1
@ BioGeek: Wird deine PerlBinärdatei aufgerufen per?
Ninjalj
2
Ich verstehe auch per. (Meines $^XErachtens /usr/bin/perl. Der [^\/]+schluckt das l.)
Ilmari Karonen
behoben $^X=~/([^\/]+)$/;print$1-l
:,
4

Scala - 42

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

Update - 39 Zeichen

print(('a.getClass+"").substring(6,11))
Stanislav Yaglo
quelle
Nett! Eine Variante gleicher Größe: print (("" + 'a.getClass) .split ("\\ b") (3))
PhiLho
Ich bevorzuge es groß geschrieben, aber natürlich ist es kein Golf mehr. Zum Vergnügen, Varianten zu erstellen: print (classOf [App] .toString.split ("\\ W"). Map (_. Capitalize) .apply (1))
PhiLho
Gleicher Trick in 23 Zeichen: ("" + Map) .patch (5, "", 99)
deadsven
Und 16: ("" + Map) .take (5)
deadsven
Oder 13:""+Map take 5
Régis Jean-Gilles
4

C - 34

Ich habe nicht genug Reputation, um dies als Kommentar zum vorherigen C-Eintrag hinzuzufügen. Gleiche Idee wie oben, aber der Dateiname kann any.c sein

main(){puts(index(__FILE__,0)-1);}
qartis
quelle
2
Gah, aber jetzt kann ich meine Dateien nicht benennen "& raquo; \ 0 <3ASCII.c"
walpen
4

> <> (Fisch) (11)

Noch besser:

'>'::o2-oo;
jpjacobs
quelle
3

Visual Basic (Version 6.0)

MsgBox Right(Error(458), 12)

VBScript

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

Sowohl VB6 als auch VBScript

On Error Resume Next
Err.Raise 458
D = Err.Description
MsgBox Mid(D, InStr(2, D, "V"))
PleaseStand
quelle
Das VBScript erzeugt "Bscript". auf meinem Computer.
Kinokijuf
Du bist ein schlechter Mann.
Riking
3

QBasic (37)

Ich verwende Version 1.1 des QBasic-Interpreters.

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

Lua 25 Zeichen

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

Oder analog zur J-Lösung von JB 17 Zeichen:

print"\76\117\97"
jpjacobs
quelle
1
_VERSION:sub(1,3)
17.
3

GolfScript (13)

"#{$0[0..9]}"
Marinus
quelle
+1 Clever ... sehr clever. Dies funktioniert natürlich nicht, wenn Sie den Interpreter umbenannt haben oder ihn beispielsweise in einem anderen Verzeichnis ausführen.
Ilmari Karonen
Ps. "#{$0}"10<ist drei Zeichen kürzer. :)
Ilmari Karonen
3

Schläger (45)

racket -e "(display(substring(banner)10 17))"
Francisco
quelle