私の名前は何ですか?言語の名前を間接的に生成する[非公開]


40

言語自体の機能のみを使用して、プログラミング言語の名前のみを生成します。言語の名前は、間接的にのみ呼び出すことができます。つまり、非カスタム環境変数、組み込み関数またはメソッド、または言語のインタープリター/コンパイラーから呼び出すことができます。出力は言語の名前のみにする必要があります。

1つの例は次のとおりです。

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

私が選択した答えは、最も高い票を獲得したものになります。タイの場合、最短のゴルフバージョン(個別または唯一の回答)がタイブレーカーになります。


1
JavaリフレクションAPIを使用しても大丈夫ですか?
明唐

私はそれを考えていませんでしたが、それも大丈夫です。
タイオービル

@ジョージ:え?これは今やコードゴルフですか?どうして?以前ではなかっ
ジョーイ

@Joey:いいえ、それは以前ではありませんでしたが、コードのゴルフの質問のように思えたので、私はそれを編集し、誰かが編集を承認しました。
ネイサンオスマン

@Joey:Code Golfはタイブレーカーです。私は元々そのタグを付けませんでしたが、ジョージはそれを提案し、同意しました。
タイオービル

回答:


18

BASH、17 7

bash -c 'echo $0'

あるいは

echo ${0#-}

すでにbash:Dを実行している場合

更新:最初"echo $0"$0展開されるため'echo $0'、正解です。


ログインシェルの場合はダッシュプレフィックスが付き、プログラムを実行するのがログインシェルの場合はログインシェルではありません。
JB

@JB:それを指摘してくれてありがとう。私が使っていた"私が持っている必要がありますただし、sを'sの
Eelvex

これが勝者のようです。:)
タイオービル

echo $ {SHELL:5}
フィッシュモニター

30

空白

|  	 	 			
	
    		 	   
	
    		 	  	
	
    			 	  
	
    		  	 	
	
    			  		
	
    			    
	
    		    	
	
    		   		
	
    		  	 	
	


|

実際の言語ではなく、空白。
アレクサンドル


ああ。申し訳ありませんが、アンソニー、SEは私に今あなたを賛成させてくれません。
アレクサンドル

大丈夫です。私自身も最近この言語について学びました。
アンソニー

1
間違っていない場合、プログラムには2つの致命的なエラーがあります。(1)S、T、LがそれぞれSpace、Tab、Linefeedを示すと、最初の命令は現在存在しSSTSTSTTTLますが、SSSTSTSTTTL3 Sの左側) 3番目Sはそれに続く2進数の正符号を示すために必要です(つまり、 'W'のASCIIコード= 85 = 1010111、2進数でL終了コードとしてコード化TSTSTTTL)、他のasciiコードについても同様です。(2)PROGの最後には、TLLLあるべきTLSSLLLところ、TLSS最終的にスタックから文字、および出力に必要とされているLLLマーク終了のプログラム。
解像度

26

C

#define d(x) x(#x[3])
void main(){d(putchar);}

putchar((int)(putchar)+3);
Mateen Ulhaq

23
putchar("putchar"[3]);私は一年前に馬鹿だったに違いありません。
Mateen Ulhaq

メインパラメータを使用します。main(a){putchar(a+66);}
_

23

パイソン-23 22

print`credits`[97:103]

2
後にスペースをprint
除外する

`は何をしますか?私はそれを見たことがありません。
カザーク

4
バックティックは、repr()の非推奨のエイリアスです。Python 3.xではバックティックはなくなりました。
0xKirill

2
@ 0xKirだから?それらがなくなるまでコードゴルフでそれらを使用してください。
ライキング

23

J、4

u:74

短い言語名を持つことは一種の助けになります。


さらに短くすることもできます:u:74
jpjacobs 14

19

Python(win32)-ランダムモジュールの不正使用

これが実際に機能するかどうかはわかりません実装に依存します。

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

どうやって見つけたの?Linux上のPython 2.6.6でも動作します。
機械式カタツムリ

5
聞いてよかった!特定のシーケンスを取得するためにランダムモジュールをシードする方法を決定するために、小さなブルートフォーシングツールを作成しました。3文字のシーケンスの場合、これにはそれほど時間がかかりません。このスクリプトは2つの3文字のシーケンスを結合して「PYTHON」を取得します:)
zhazam

残りはリストの内包表記やその他の汚いトリックを使用して、1行に収まるようにします。bruteforcingツールはこちらにあります :)
zhazam

そして、それは私のPython 3.1.2で動作します(printもちろん、後に括弧を追加します)。
機械式カタツムリ

1
ほぼそこに:generateSentence(50613, 73)[66:]与え'PYTHOCN'ます。
機械式カタツムリ

17

BrainFuck

ただの楽しみのために(これはタスクの目的とは関係ないことを知っています)、このコードを書きました...

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

そして、私が交換したときに<>[].スペースと...

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

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


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

 - 
---
 - 


12

Python

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

これも私のために動作します(sys.executableは '/ usr / bin / python'です)

import sys;print sys.executable[9:]

1
ここで私はこれらから得るものです:Activeそして25\Lib\site-packages\pythonwin\Pythonwin.exe、そう...ない良い
ナズBanov

import sys;print sys.subversion[0][1:]動作します
ナスバノフ

6
それは不正行為です...しかし、私はよりよく不正行為をすることができます:eval.__doc__[144:150]
JBernardo

11

ブレインファック101

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

おそらくもう少しゴルフをすることもできますが、午前6時であり、睡眠をとるべきです...


11

C

CでのAnonの回答の精神で(Cファイルには常に拡張子.cがあると考えてください)。私は提案したい:

#include <stdio.h>
void main(){puts(__FILE__+sizeof(__FILE__)-2);}

5
はるかに短い、25文字、1行、main(){puts(__FILE__+2);}ファイル名が1文字の場合、a.c
ハスタークン

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:別の回答を送信してください。これはゴルフではないため、短くする必要はありません。
ジョーイ

6

C

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

わずかに短いバージョン(コンパイラの警告付き)

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

1つ目は、intgccを使用してmainがtypeでないことに関する警告を生成します。
オエノン

1
文字「c」の使用は許可されていません。
キノキジュフ

6

ルビー-27

puts RUBY_DESCRIPTION[0..3]

Chris Jester-Youngのコメントからの更新:

ルビー-24

puts RUBY_COPYRIGHT[0,4]

Haulethから更新:

ルビー-15

p`ruby -v`[0,4]

1. RUBY_COPYRIGHTはより小さいRUBY_DESCRIPTION。2. [0,4]は、よりも短い[0..3]
クリスジェスターヤング

さらに短い `` `ruby -v` [0,4]` `
Hauleth

5

猫3

次の内容のファイルを作成します(ソースコード)

cat

そして、次のように実行します(ファイルを実行します):

$ cat filename

7
間接的でも言語でもありませんか?
エターナルマット

4
Catは、チューリング完全ではないため、実際の言語ではありません。
kinokijuf

3
@kinokijufチューリング完全ではない便利な言語がたくさんあります。部分的なリストについては、stackoverflow.com / q / 8412741/20713を参照してください。
一時的な

5
@ephemient:猫は完全なチューリングだけでなく、言語でもありません。構文、文法、キーワードはありません。私はビットマスクがどこで彼の定義を得たのかわかりません-私はそれに従いません。
ユーザー不明

6
@userunknown cat言語であると想像するのは困難であり、これに加えて質問の精神に違反します(言語名を直接使用します)。私のコメントは、「猫はチューリング完全ではないので、猫は本当の言語ではない」という考えに反論することでした。他の理由で言語ではありませんが、チューリング完全性は良い決定要因ではありません。
一時的な



5

ルビー

短くはありませんが、非常に間接的です。

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

うわー!ポリグロット!次のステップ:空白を追加します。
tbodt 14

4

ブレインファック

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

わーい!(あと5つ...)
ベリサリウス博士11

@belisarius:うーん?
ジョーイ


1
[...]で小さくすることができます:++++++++++ [> ++++++> ++++++++++> +++++++++ ++> ++++ <<<<-]> ++++++。>> ++++。<---。++++++++。+++++ .-- ------。>> ++。* << ---。++++++++。
JBernardo

12
これは典型的なGit出力のように見えます。
ジョーイアダムス

4

Perl

$^X=~/([a-z]+)[^\/]+$/;print$1,$/

per出力としてのみ取得します(最後のlがありません)。
BioGeek

1
@BioGeek:Perlバイナリは呼ばれていperますか?
-ninjalj

2
私も得るper。(私の$^X言う/usr/bin/perl[^\/]+ツバメl。)
イルマリカロネン

修正:$^X=~/([^\/]+)$/;print$1-lコマンドラインスイッチで実行
-ardnew

4

Scala — 42

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

更新— 39文字

print(('a.getClass+"").substring(6,11))

いいね!バリアント、同じサイズ:print(( "" + 'a.getClass).split( "\\ b")(3))
PhiLho

私はそれが大文字であるのが好きですが、もちろん、もうゴルフではありません。したがって、バリアントを作成する喜びのために:print(classOf [App] .toString.split( "\\ W")。map(_。capitalize).apply(1))
PhiLho

23文字で同じトリック:( "" + Map).patch(5、 ""、99)
deadsven

そして16:( "" + Map).take(5)
deadsven

または13:""+Map take 5
レジスジャン=ジル

4

C-34

これをコメントとして以前のCエントリに追加するほどの評判はありません。上記と同じ考えですが、ファイル名は何でもかまいません。c

main(){puts(index(__FILE__,0)-1);}

2
Gah、しかし今ではファイルに「&raquo; \ 0 <3ASCII.c」という名前を付けることができません
-walpen


3

Visual Basic(バージョン6.0)

MsgBox Right(Error(458), 12)

VBScript

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

VB6とVBScriptの両方

On Error Resume Next
Err.Raise 458
D = Err.Description
MsgBox Mid(D, InStr(2, D, "V"))

VBScriptのものは「Bscript」を生成します。私のコンピューターで。
kinokijuf

あなたは悪い男です。
ライキング




弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.