Як мене звати? Непрямо виробляйте назву мови [закрито]


40

Створюйте лише ім’я мови програмування, використовуючи лише засоби самої мови. Назву мови можна викликати лише опосередковано, тобто із нестандартних змінних середовищ, вбудованих функцій або методів або інтерпретатора / компілятора мови. Вихідною мовою має бути лише назва мови.

Одним із прикладів може бути:

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

Відповідь, яку я обраю, буде та, яка отримає найбільше голосів. У разі краватки, краваткою з краваткою стане найкоротша версія для гольфу (окрема або єдина відповідь).


1
тому використання API відбиття Java не в порядку?
Мінг-Тан

Я не думав про це, але це теж добре.
Тай Овіль,

@George: А? Це тепер кодовий гольф? Чому? Це не було раніше
Joey,

@Joey: Ні, це не було раніше, але це здавалося кодовим питанням про гольф, тому я його відредагував, і хтось схвалив редагування.
Натан Осман

@Joey: Код Гольф - це вирив краватки. Я не ставив цю TAG спочатку, але Джордж запропонував це, і я погодився.
Ty Auvil

Відповіді:


18

БАШ, 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}
Монітор риб

30

Пробіл

|  	 	 			
	
    		 	   
	
    		 	  	
	
    			 	  
	
    		  	 	
	
    			  		
	
    			    
	
    		    	
	
    		   		
	
    		  	 	
	


|

Не справжня мова, пробіл.
Олександру


Арг. Вибачте Ентоні, SE не дозволяє мені зараз запросити вас.
Олександру

Все гаразд. Я сам нещодавно дізнався про цю мову.
Ентоні

1
Якщо я не помиляюся, у вашій програмі є дві фатальні помилки: (1) Якщо S, T, L позначають пробіл, Tab, Linefeed повторно, перша інструкція наразі є SSTSTSTTTL, але повинна бути SSSTSTSTTTL( 3 S зліва) - 3-й Sнеобхідний для позначення позитивного знаку бінарного числа, що слідує за ним (тобто код ascii для 'W' = 85 = 1010111 у двійковому коді, кодований як L-термінований рядок TSTSTTTL) тощо, для інших кодів ascii. (2) Фіналом проги TLLLмає бути місце TLSSLLL, де TLSSнеобхідне для виведення остаточного символу зі стека та LLLпозначає кінець програми.
res


23

Пітон - 23 22

print`credits`[97:103]

2
ви повинні залишити місце післяprint
gnibbler

Що означає ` робити? Я ніколи цього не бачив.
Казарк

4
Повернення - це застарілий псевдонім для repr (). Зворотній зв'язок відсутній у Python 3.x.
0xKirill

2
@ 0xKir Отже? Використовуйте їх у коді гольфу, поки вони не зникнуть.
Рікінг

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
Радий чути! Я написав невеликий інструмент для грубої сили, щоб визначити, як потрібно засіяти випадковий модуль, щоб отримати певну послідовність. З три символьною послідовністю це не займе багато часу - цей сценарій поєднує в собі дві
трибуквові

Решта використовує розуміння списку та інші брудні хитрощі, щоб зрівняти його в один рядок. Ви можете знайти інструмент для
грубої сили

І він працює на моєму 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, значить, нічого доброго
Нас Банов

import sys;print sys.subversion[0][1:]працює, хоча
Нас Банов

6
це обман ... Але я можу краще обдурити:eval.__doc__[144:150]
JBernardo

11

мозковий ебать 101

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

Можливо, можна було б трохи відіграти в гольф, але це 6 ранку, і я повинен трохи поспати ...


11

С

У дусі відповіді Анона на C (враховуючи, що файл C завжди має розширення .c). Я б запропонував:

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

5
Набагато коротше, 25 символів, один рядок main(){puts(__FILE__+2);}, припускаючи, що назва файлу - це одна літера, наприклад. 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: Просто подайте ще одну відповідь. Це не гольф, тому не потрібно тримати його коротко.
Joey

6

С

Побудований за допомогою 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.
Ононе

1
Вам не дозволяється використовувати букву "с".
kinokijuf

6

Рубін - 27

puts RUBY_DESCRIPTION[0..3]

Оновлення з коментаря Кріса Єстер-Янга:

Рубін - 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
Ні непрямої, ні мови?
forevermatt

4
Кішка - це не справжня мова, тому що вона не є повною Тюрінгом.
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

4

Брейнфук

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

Br ** n! (ще п’ять ...)
д-р belisarius

@belisarius: Гм?
Joey

Бр ** н ти.
Mateen Ulhaq

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

Скала - 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 (_. З великої літери) .apply (1))
PhiLho

Той самий трюк у 23 символах: ("" + Map) .patch (5, "", 99)
deadsven

І 16: ("" + Map) .take (5)
deadsven

Або 13:""+Map take 5
Регіс Жан-Жиль

4

С - 34

У мене недостатньо репутації, щоб додати це як коментар до попереднього запису C. Та сама ідея, що і вище, але ім'я файлу може бути будь-яким.c

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

2
Gah, але тепер я не можу назвати свої файли "& raquo; \ 0 <3ASCII.c"
пройдіть


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

Ти погана людина.
Рікінг




Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.