我的名字是什么?间接产生语言的名称


40

仅使用语言本身的功能仅产生编程语言的名称。语言名称只能间接调用,即从非自定义环境变量,内置函数或方法或语言的解释器/编译器调用。输出应仅是语言的名称。

一个例子是:

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

我选择的答案将是得票最多的答案。如果是平局,则最短的高尔夫球版本(单独给出或仅给出给定的答案)将成为平局。


1
所以使用Java反射API不好吗?
Ming-Tang

我没有想到这一点,但是也可以。
Ty Auvil

@乔治:嗯?那是现在的代码高尔夫球吗?为什么?没来……
Joey

@Joey:不,以前没有,但是这似乎是一个高尔夫问题代码,因此我对其进行了编辑,并且有人批准了该编辑。
内森·奥斯曼

@乔伊:代码高尔夫是决胜局。我最初并没有使用该TAG,但George建议使用,我同意了。
Ty Auvil

Answers:


18

BASH,17 7

bash -c 'echo $0'

甚至

echo ${0#-}

如果您已经运行bash:D

更新:首先"echo $0"$0扩展,所以'echo $0'正确的答案是。


如果它是登录外壳程序,则仅使用短划线前缀;如果是运行程序的外壳程序,则不是登录外壳程序。
JB

@JB:感谢您指出这一点。我"在应该有's 的地方使用s
Eelvex

看起来这是赢家。:)
Ty Auvil

echo $ {SHELL:5}
Fish Monitor

30

空格

|  	 	 			
	
    		 	   
	
    		 	  	
	
    			 	  
	
    		  	 	
	
    			  		
	
    			    
	
    		    	
	
    		   		
	
    		  	 	
	


|

不是真正的语言,空格。
亚历山德鲁


啊 抱歉,安东尼,SE现在不允许我投票给您。
Alexandru

没关系。我本人最近已了解这种语言。
安东尼

1
如果我没记错的话,您的程序有两个致命错误:(1)分别使S,T,L分别表示Space,Tab,Linefeed,第一条指令是SSTSTSTTTL,但应该是SSSTSTSTTTL(左侧3 S)- S需要使用第三个来指示其后的二进制数的正号(例如,“ W”的ascii = 85 = 1010111,二进制形式,编码为- L终止字符串TSTSTTTL),对于其他ascii代码,依此类推。(2)prog的final TLLL应为TLSSLLLTLSS从堆栈输出最终字符并LLL标记程序结束时需要。
2012年



23

,4

u:74

简短的语言名称会有所帮助。


甚至可以更短:u:74
jpjacobs

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
很高兴听到!我写了一个小的蛮力工具,以确定您需要如何为随机模块播种以获得一定的序列。使用三个字符的序列,此过程不会花费太长时间-该脚本将两个三个字母的序列结合在一起以获取“ PYTHON” :)
zhazam 2011年

其余的使用列表推导和其他肮脏的技巧使它适合一行。您可以在这里找到暴力
破解

它可以在我的Python 3.1.2上运行(print当然在之后添加括号)。
机械蜗牛

1
快到了:generateSentence(50613, 73)[66:]'PYTHOCN'
机械蜗牛

17

脑干

只是为了好玩(我知道这与任务的目的无关。),我编写了这段代码...

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

当我更换<>[].,空间...

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

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


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

 - 
---
 - 


12

蟒蛇

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,所以……不好
Nas Banov

import sys;print sys.subversion[0][1:]尽管有效
Nas Banov

6
这是作弊...但我可以作弊更好:eval.__doc__[144:150]
JBernardo

11

脑干101

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

也许可以再打些高尔夫球,但是现在是早上6点,我应该睡一会儿...


11

C

本着Anon用C语言回答的精神(考虑C文件始终以.c为扩展名)。我建议:

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

5
main(){puts(__FILE__+2);}假设文件名是单个字母,例如,短得多,25个字符,单行,。a.c
Hasturkun 2011年

7

爪哇

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)

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

第一个将产生有关main不int使用gcc 类型的警告。
oenone

1
不允许使用字母“ c”。
kinokijuf 2011年

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 2012年

5

猫3

创建具有以下内容的文件(源代码)

cat

并运行它(执行文件):

$ cat filename

7
既不是间接的,也不是语言?
eternalmatt 2011年

4
猫不是一种真正的语言,因为它不是图灵完备的。
kinokijuf 2011年

3
@kinokijuf有很多有用的语言不是图灵完整的。有关部分列表,请参见stackoverflow.com/q/8412741/20713
短暂

5
@ephemient:Cat不仅不完整,也不是一种语言。它没有语法,没有语法,没有关键字。我不知道bitmask在何处得到他的定义-我不遵循。
用户未知

6
@userunknown很难想象cat是一种语言,而且这违反了问题的实质(直接使用语言名称)。我的评论是驳斥“猫不是真正的语言,因为它不是图灵完备的语言”的说法。它不是出于其他原因的语言,但是图灵完整性不是一个好的决定因素。
短暂



5

红宝石

不短,但是非常间接。

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


5

重击/ Brainfuck / C

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

哇!多语种!下一步:添加空白。
tbodt 2014年

4

脑干

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

Br ** n!(还有5个要去...)
belisarius博士2011年

@belisarius:嗯?
乔伊,

Br ** n你。
Mateen Ulhaq 2011年

1
您可以使用[...]缩小尺寸:++++++++++ [> ++++++> +++++++++++++++++++ ++> ++++ <<<<->> ++++++。>> ++++。<---。++++++++。+++++ .-- ------。>> ++。* << ---。++++++++。
JBernardo

12
这看起来像典型的Git输出。
乔伊·亚当斯


4

斯卡拉-42

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

更新— 39个字符

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

真好!一个大小相同的变体:print((“” +'a.getClass).split(“ \\ b”)(3))
PhiLho 2011年

我更喜欢大写,但当然,它不再是高尔夫了。因此,为了制作变体而高兴:print(classOf [App] .toString.split(“ \\ W”)。map(_。capitalize).apply(1))
PhiLho 2011年

在23个字符中使用同样的技巧:(“” + Map).patch(5,“”,99)
Deadsven 2011年

和16:(“” + Map).take(5)
Deadsven 2011年

或13:""+Map take 5
–RégisJean-Gilles

4

C-34

我没有足够的声誉来将此添加为以前的C条目的注释。与上面相同,但是文件名可以是任何东西。

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

2
Gah,但现在我无法将文件命名为“
walpen 2012年


3

Visual Basic(6.0版)

MsgBox Right(Error(458), 12)

VB脚本

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 2011年

你真是个坏人
13年

3

QBasic(37)

我正在使用QBasic解释器的1.1版。

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



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.