ฉันชื่ออะไร? สร้างชื่อภาษาทางอ้อม [ปิด]


40

สร้างเฉพาะชื่อภาษาการเขียนโปรแกรมโดยใช้เฉพาะสิ่งอำนวยความสะดวกของภาษานั้น ๆ ชื่อของภาษาสามารถเรียกใช้โดยทางอ้อมเท่านั้นเช่นจากตัวแปรสภาพแวดล้อมที่ไม่ได้กำหนดเองฟังก์ชันในตัวหรือวิธีการหรือล่าม / คอมไพเลอร์ของภาษา ผลลัพธ์ควรเป็นชื่อของภาษาเท่านั้น

ตัวอย่างหนึ่งคือ:

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

คำตอบที่ฉันเลือกจะเป็นคำตอบที่ได้คะแนนมากที่สุด ในกรณีที่เสมอกันเวอร์ชันที่สั้นที่สุดของกอล์ฟ (แยกหรือตอบเพียงคำตอบเดียว) จะเป็นตัวแบ่งไทเบรก


1
ดังนั้นการใช้ Java reflection API นั้นไม่เป็นไร?
Ming-Tang

ฉันไม่ได้คิดอย่างนั้น แต่ก็ไม่เป็นไร
Ty Auvil

@ George: อืม? ตอนนี้เป็นรหัสกอล์ฟหรือไม่ ทำไม? มันไม่ได้มาก่อน ...
Joey

@ โจอี้: ไม่เคยเป็นมาก่อน แต่ดูเหมือนว่าจะเป็นคำถามเกี่ยวกับรหัสกอล์ฟดังนั้นฉันจึงแก้ไขและมีคนอนุมัติการแก้ไข
Nathan Osman

@ โจอี้: รหัสกอล์ฟคือเบรกเกอร์เสมอ ฉันไม่ได้ใส่แท็กนั้นในตอนแรก แต่จอร์จแนะนำและฉันก็เห็นด้วย
Ty Auvil

คำตอบ:


18

BASH, 17 7

bash -c 'echo $0'

หรือแม้กระทั่ง

echo ${0#-}

ถ้าคุณใช้ bash แล้ว: D

update : "echo $0"ได้รับการ$0ขยายก่อนดังนั้นจึง'echo $0'เป็นคำตอบที่ถูกต้อง


มันจะมีเครื่องหมายนำหน้าเท่านั้นหากเป็นเชลล์การเข้าสู่ระบบและไม่ใช่เชลล์การล็อกอินหากเป็นเชลล์ที่รันโปรแกรมของคุณ
JB

@JB: ขอบคุณที่ชี้ให้เห็น ฉันกำลังใช้"s ที่ฉันควรจะมี's
Eelvex

ดูเหมือนว่านี่จะเป็นผู้ชนะ :)
Ty Auvil

echo $ {SHELL: 5}
Fish Monitor

30

ช่องว่าง

|  	 	 			
	
    		 	   
	
    		 	  	
	
    			 	  
	
    		  	 	
	
    			  		
	
    			    
	
    		    	
	
    		   		
	
    		  	 	
	


|

ไม่ใช่ภาษาที่แท้จริงช่องว่าง
Alexandru


โอ๊ะ แอนโทนี่ขออภัย SE ไม่ให้ฉันโหวตคุณตอนนี้
Alexandru

ไม่เป็นไร. ฉันเองเพิ่งเรียนรู้เกี่ยวกับภาษานี้
แอนโธนี

1
ถ้าฉันไม่ผิด, โปรแกรมของคุณมีสองข้อผิดพลาดร้ายแรง: (1) ปล่อยให้ S, T, L แสดงว่าพื้นที่แท็บเลื่อนบรรทัด repsectively, คำสั่งแรกคือในปัจจุบันSSTSTSTTTLแต่ควรจะSSSTSTSTTTL( 3 S บนซ้าย) - หมายเลขที่ 3 Sจำเป็นต้องระบุสัญญาณบวกของเลขฐานสองที่ตามมา (เช่นรหัส ASCII สำหรับ 'W' = 85 = 1010111 ในรูปแบบไบนารีรหัสเป็นLสตริงที่สิ้นสุดลงTSTSTTTL) และอื่น ๆ สำหรับรหัส ASCII อื่น ๆ (2) prog ขั้นสุดท้ายTLLLควรเป็นTLSSLLLเมื่อTLSSจำเป็นต้องส่งออกอักขระสุดท้ายจากสแต็กและLLLทำเครื่องหมายจุดสิ้นสุดของโปรแกรม
res


23

Python - 23 22

print`credits`[97:103]

2
คุณควรออกจากพื้นที่หลังจากprint
gnibbler

อะไร`ทำอย่างไร ฉันไม่เคยเห็นอย่างนั้น
Kazark

4
Backticks เป็นนามแฝงที่เลิกใช้แล้วสำหรับ repr () Backticks หายไปใน Python 3.x
0xKirill

2
@ 0xKir งั้นเหรอ? ใช้พวกมันใน code golf 'จนกว่ามันจะหายไป
Riking

23

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

คุณค้นพบสิ่งนั้นได้อย่างไร มันทำงานได้ดีสำหรับฉันใน Python 2.6.6 บน linux
หอยทากเครื่องกล

5
ดีใจที่ได้ยิน! ฉันเขียนเครื่องมือ bruteforcing ขนาดเล็กเพื่อกำหนดวิธีที่คุณต้องการเพาะโมดูลสุ่มเพื่อให้ได้ลำดับที่แน่นอน ด้วยลำดับสามตัวอักษรซึ่งใช้เวลาไม่นาน - สคริปต์นี้รวมลำดับสามตัวอักษรสองตัวเข้าด้วยกันเพื่อรับ "PYTHON" :)
zhazam

ส่วนที่เหลือคือการใช้ความเข้าใจในรายการและลูกเล่นสกปรกอื่น ๆ เพื่อให้เข้ากับมันในหนึ่งบรรทัด คุณสามารถหาเครื่องมือ bruteforcing ได้ที่นี่ :)
zhazam

และมันใช้งานได้กับ Python 3.1.2 ของฉัน (เพิ่มวงเล็บหลังจากprintนั้น)
หอยทากเครื่องกล

1
เกือบจะมี: ช่วยให้generateSentence(50613, 73)[66:] 'PYTHOCN'
หอยทากเครื่องกล

17

brainfuck

เพื่อความสนุก (ฉันรู้ว่านี่ไม่เกี่ยวข้องกับวัตถุประสงค์ของงาน) ฉันเขียนโค้ดนี้ ...

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

และเมื่อฉันแทนที่<, >, [, ], .ที่มีพื้นที่ ...

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

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


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

 - 
---
 - 


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

brainfuck 101

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

อาจจะเล่นกอล์ฟต่อไปอีกเล็กน้อย แต่เป็นเวลา 6 โมงเช้าและฉันควรนอนหลับ ...


11

C

ด้วยจิตวิญญาณของคำตอบของอานนท์ใน C (การพิจารณาไฟล์ C มักจะมีนามสกุล. c) ฉันขอแนะนำ:

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

5
สั้นกว่ามาก 25 ตัวอักษรบรรทัดเดียวmain(){puts(__FILE__+2);}สมมติว่าชื่อไฟล์เป็นตัวอักษรเดียวเช่น a.c
Hasturkun

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

คนแรกจะสร้างคำเตือนเกี่ยวกับหลักที่ไม่เป็นประเภทintโดยใช้ gcc
oenone

1
คุณไม่ได้รับอนุญาตให้ใช้ตัวอักษร 'c'
kinokijuf

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_DESCRIPTION2. จะสั้นกว่า[0,4] [0..3]
Chris Jester-Young

สั้นลงแม้แต่ `` `ruby -v` [0,4]` `
Hauleth

5

แมว 3

สร้างไฟล์ที่มีเนื้อหาดังต่อไปนี้ (ซอร์สโค้ด)

cat

และเรียกใช้เช่น (รันไฟล์):

$ cat filename

7
ไม่ว่าทางอ้อมหรือภาษา?
eternalmatt

4
แคทไม่ใช่ภาษาจริงเพราะมันไม่ทัวริงสมบูรณ์
kinokijuf

3
@kinokijuf มีภาษาที่มีประโยชน์มากมายซึ่งไม่สามารถทัวริงได้ ดูstackoverflow.com/q/8412741/20713สำหรับรายการบางส่วน
ephemient

5
@ephemient: แมวไม่เพียง แต่จะไม่ได้รับความสมบูรณ์ แต่ยังไม่ใช่ภาษาเลย ไม่มีไวยากรณ์ไม่มี grammer และไม่มีคีย์เวิร์ด ฉันไม่รู้ว่า bitmask มีคำจำกัดความของเขาที่ไหน - ฉันไม่ทำตาม
ผู้ใช้ที่ไม่รู้จัก

6
@userunknown มันยากที่จะจินตนาการว่าcatการเป็นภาษาและนอกจากนี้ยังเป็นการละเมิดจิตวิญญาณของคำถาม (ใช้ชื่อภาษาโดยตรง) ความคิดเห็นของฉันคือการลบล้างความคิดที่ว่า "แคทไม่ใช่ภาษาจริงเพราะมันไม่ใช่ทัวริงที่สมบูรณ์" มันไม่ใช่ภาษาสำหรับเหตุผลอื่น ๆ แต่ความสมบูรณ์แบบของทัวริงไม่ใช่ปัจจัยในการตัดสินใจที่ดี
ephemient





5

ทุบตี / brainfuck / C

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

ว้าว! พูดได้หลายภาษา! ขั้นตอนถัดไป: เพิ่มช่องว่าง
tbodt

4

brainfuck

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

Br ** n! (อีกห้าไป ... )
ดร. เบลิซาเรียส

@belisarius: หืม?
Joey

Br ** n คุณ
Mateen Ulhaq

1
คุณสามารถทำให้เล็กลงด้วย [... ]: ++++++++++ [> ++++++> ++++++++++> ++++++++++ ++> ++++ <<<< -....]> ++++++ >> ++++ <--- ++++++++ +++++ .-- ------. >> ++. * << ---. ++++++++
JBernardo

12
ดูเหมือนว่าเอาต์พุตGitทั่วไป
Joey Adams

4

Perl

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

ฉันได้รับperเป็นผลลัพธ์เท่านั้น(หายไป l สุดท้าย)
BioGeek

1
@BioGeek: Perlไบนารีของคุณเรียกว่าper?
ninjalj

2
perฉันยังได้รับ (ฉัน$^Xพูด/usr/bin/perlแล้ว[^\/]+นกนางแอ่นl)
Ilmari Karonen

คงที่: $^X=~/([^\/]+)$/;print$1วิ่งด้วย-lสวิตช์บรรทัดคำสั่ง
ardnew

4

สกาลา - 42

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

อัพเดท - 39 ตัวอักษร

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

ดี! ตัวแปรขนาดเดียวกัน: print (("" + 'a.getClass) .split ("\\ b") (3))
PhiLho

ฉันชอบตัวพิมพ์ใหญ่ แต่แน่นอนว่ามันไม่ใช่กอล์ฟอีกต่อไป ดังนั้นเพื่อความสุขในการสร้างรูปแบบ: พิมพ์ (classOf [App] .toString.split ("\\ W"). map (_. พิมพ์ใหญ่) .apply (1))
PhiLho

เคล็ดลับเดียวกันใน 23 ตัวอักษร: ("" + แผนที่) .patch (5, "", 99)
deadsven

และ 16: ("" + แผนที่). Take (5)
deadsven

หรือ 13:""+Map take 5
Régis Jean-Gilles

4

C - 34

ฉันไม่มีชื่อเสียงพอที่จะเพิ่มสิ่งนี้เป็นความคิดเห็นในรายการ 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 one สร้าง "Bscript" บนคอมพิวเตอร์ของฉัน
kinokijuf

คุณเป็นคนเลว
Riking



3

GolfScript (13)

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

+1 ฉลาด ... ฉลาดมาก แน่นอนว่าวิธีนี้ใช้ไม่ได้หากคุณเปลี่ยนชื่อล่ามหรือถ้าคุณพูดการเรียกใช้จากไดเรกทอรีอื่น
Ilmari Karonen

ps "#{$0}"10<สั้นกว่าสามตัวอักษร :)
Ilmari Karonen

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.