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.


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.


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

|  	 	 			
	
    		 	   
	
    		 	  	
	
    			 	  
	
    		  	 	
	
    			  		
	
    			    
	
    		    	
	
    		   		
	
    		  	 	
	


|

Keine richtige Sprache, Leerzeichen.
Alexandru


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


23

Python - 23 22

print`credits`[97:103]

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.


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

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

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

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


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

 - 
---
 - 


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

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


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

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

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

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]

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

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

Rubin

Nicht kurz, aber sehr indirekt.

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
//++++++++[->++++++++++++>+>>++>+++<<<<<]>[->+>+>+>+<<<<]
//>+>++.>++.<-.<.>>----.<<---.>>>---.<<++.>---.

Beeindruckend! Eine Polyglotte! Nächster Schritt: Whitespace hinzufügen.
Tbodt

4

Brainfuck

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

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

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

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

2
Gah, aber jetzt kann ich meine Dateien nicht benennen "& raquo; \ 0 <3ASCII.c"
walpen


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

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


3

GolfScript (13)

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

+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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.