Как меня зовут? Произведите название языка косвенно [закрыто]


40

Создайте только название языка программирования, используя только возможности самого языка. Имя языка может быть вызвано только косвенно, то есть из нестандартных переменных среды, встроенных функций или методов или интерпретатора / компилятора языка. Выходными данными должно быть только название языка.

Одним из примеров будет:

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

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


1
так что с помощью API отражения Java не все в порядке?
Мин-Тан

Я не думал об этом, но это тоже нормально.
Ty Auvil

@ Джордж: А? Это сейчас код-гольф? Зачем? Это было не раньше ...
Джои

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

@Joey: Code Golf - это тай-брейк. Первоначально я не ставил этот TAG, но Джордж предложил это, и я согласился.
Тай Аувил

Ответы:


18

БАШ, 17 7

bash -c 'echo $0'

или даже

echo ${0#-}

если ты уже запускаешь bash: D

обновление : "echo $0"получает $0расширено первым , так 'echo $0'это правильный ответ.


Это только с префиксом тире, если это оболочка входа в систему и не оболочка входа в систему, если она запускает вашу программу.
JB

@JB: спасибо за указание на это. Я использую "где я должен иметь 'S
Eelvex

Похоже, это победитель. :)
Ty Auvil

echo $ {SHELL: 5}
Fish Monitor

30

Пробелы

|  	 	 			
	
    		 	   
	
    		 	  	
	
    			 	  
	
    		  	 	
	
    			  		
	
    			    
	
    		    	
	
    		   		
	
    		  	 	
	


|

Не настоящий язык, пробел.
Александру


Argh. Извините, Энтони, SE не позволяет мне голосовать за вас сейчас.
Александру

Все хорошо. Я сам недавно узнал об этом языке.
Энтони

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


23

Python - 23 22

print`credits`[97:103]

2
Вы должны оставить место послеprint
gnibbler

Что означает ` делать? Я никогда этого не видел.
Казарк

4
Обратные метки являются устаревшим псевдонимом для repr (). Обратные галочки исчезли в Python 3.x.
0xKirill

2
@ 0xKir Так? Используйте их в коде гольф, пока они не ушли.
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
Рад слышать! Я написал небольшой инструмент для брутфорса, чтобы определить, как вам нужно заполнить случайный модуль, чтобы получить определенную последовательность. С
трехсимвольной

Остальное использует списки и другие грязные трюки, чтобы они поместились в одну строку. Вы можете найти инструмент для брутфорса здесь :)
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, так что ... ничего хорошего
Нас Банов

import sys;print sys.subversion[0][1:]работает, хотя
Nas Banov

6
это обман ... Но я могу обмануть лучше:eval.__doc__[144:150]
JBernardo

11

Brainfuck 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

Джава

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

С

Построен с использованием 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.
Энон

1
Вам не разрешено использовать букву «с».
kinokijuf

6

Рубин - 27

puts RUBY_DESCRIPTION[0..3]

Обновление от комментария Криса Джестера-Янга:

Рубин - 24

puts RUBY_COPYRIGHT[0,4]

Обновлено из Хаулета:

Рубин - 15

p`ruby -v`[0,4]

1. RUBY_COPYRIGHTкороче чем RUBY_DESCRIPTION. 2. [0,4]короче чем [0..3].
Крис Джестер-Янг

Еще короче `` `ruby -v` [0,4]` `
Хаулет

5

кот 3

Создайте файл со следующим содержанием (исходный код)

cat

И запустить его как (выполнить файл):

$ cat filename

7
Ни косвенный, ни язык?
Eternalmatt

4
Кошка не настоящий язык, потому что он не завершен по Тьюрингу.
kinokijuf

3
@kinokijuf Есть много полезных языков, которые не являются полными по Тьюрингу. См. Stackoverflow.com/q/8412741/20713 для частичного списка.
Эфимент

5
@ephemient: Cat не только не завершен, но и не является языком. У него нет синтаксиса, нет грамматики, нет ключевых слов. Я не знаю, где битмаск получил его определение - я не следую этому.
пользователь неизвестен

6
@userunknown Трудно представить, catчто я являюсь языком, и, кроме того, это нарушает дух вопроса (напрямую использует название языка). Мой комментарий состоял в том, чтобы опровергнуть идею о том, что «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

Brainfuck

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

Бр ** н! (осталось еще пять ...)
Доктор Велизарий

@belisarius: Хм?
Джои

Бр ** н ты.
Матин Улхак

1
Вы можете сделать меньше с [...]: ++++++++++ [> ++++++> ++++++++++> +++++++++ ++> ++++ <<<< -....]> ++++++ >> ++++ <--- ++++++++ +++++ .-- ------. >> ++. * << ---. ++++++++.
Дж. Бернардо

12
Это похоже на типичный вывод Git .
Джои Адамс

4

Perl

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

Я получаю только в perкачестве вывода (пропуская последний л).
BioGeek

1
@BioGeek: Ваш Perlбинарный файл называется per?
ниндзя

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: ("" + Карта) .take (5)
deadsven

Или 13:""+Map take 5
Режис Жан-Жиль

4

С - 34

У меня недостаточно репутации, чтобы добавить это как комментарий к предыдущей записи C. Та же идея, что и выше, но имя файла может быть любым.

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

2
Да, но теперь я не могу назвать свои файлы "& 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». на моем компьютере.
киноюф

Ты плохой человек.
Riking

3

QBasic (37)

Я использую версию 1.1 интерпретатора QBasic.

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



Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.