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

40

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

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

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

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

Ty Auvil
источник
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'это правильный ответ.

Eelvex
источник
Это только с префиксом тире, если это оболочка входа в систему и не оболочка входа в систему, если она запускает вашу программу.
JB
@JB: спасибо за указание на это. Я использую "где я должен иметь 'S
Eelvex
Похоже, это победитель. :)
Ty Auvil
echo $ {SHELL: 5}
Fish Monitor
30

Пробелы

|  	 	 			
	
    		 	   
	
    		 	  	
	
    			 	  
	
    		  	 	
	
    			  		
	
    			    
	
    		    	
	
    		   		
	
    		  	 	
	


|
Энтони
источник
Не настоящий язык, пробел.
Александру
22
@Alexandru: compsoc.dur.ac.uk/whitespace
dmckee
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
26

С

#define d(x) x(#x[3])
void main(){d(putchar);}
Anon.
источник
putchar((int)(putchar)+3);
Матеин Улхак,
23
putchar("putchar"[3]);Должно быть, я был идиотом год назад.
Матин Улхак,
Используйте основной параметр. main(a){putchar(a+66);}
23

Python - 23 22

print`credits`[97:103]
0xKirill
источник
2
Вы должны оставить место послеprint
gnibbler
Что означает ` делать? Я никогда этого не видел.
Казарк
4
Обратные метки являются устаревшим псевдонимом для repr (). Обратные галочки исчезли в Python 3.x.
0xKirill
2
@ 0xKir Так? Используйте их в коде гольф, пока они не ушли.
Riking
23

J, 4

u:74

Краткое название языка помогает.

JB
источник
Может быть даже короче: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

Просто для забавы (я знаю, это не связано с целью задачи.), Я написал этот код ...

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

И когда я заменил <, >, [, ], .с пространством ...

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

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


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

 - 
---
 - 
JiminP
источник
13

Пайет, 47x2 пикселей

Используя 5x5 кодов: Пиет программа для печати "Пиет"

Бутби
источник
12

питон

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

Это также работает для меня (sys.executable это '/ usr / bin / python')

import sys;print sys.executable[9:]
gnibbler
источник
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 утра, и мне нужно немного поспать ...

Matt
источник
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));
Skizz
источник
первый выдаст предупреждение о том, что main не относится к типу, intиспользуя gcc.
Энон
1
Вам не разрешено использовать букву «с».
kinokijuf
6

Рубин - 27

puts RUBY_DESCRIPTION[0..3]

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

Рубин - 24

puts RUBY_COPYRIGHT[0,4]

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

Рубин - 15

p`ruby -v`[0,4]
Donnie H
источник
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

Хаскелл, 47

data H=Haskell deriving Show
main=print Haskell
Томас Эдинг
источник
5

Рубин

Не коротко, но очень косвенно.

4.times{|x|print((82+11.24*x+8.231*Math.tan(111.2*x)).floor.chr)}
Джон
источник
5

Рубин (17)

p 1299022.to_s 36

Выходы "ruby"

defhlt
источник
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,$/
ninjalj
источник
Я получаю только в 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);}
qartis
источник
2
Да, но теперь я не могу назвать свои файлы "& raquo; \ 0 <3ASCII.c"
walpen
4

> <> (Рыба) (11)

Даже лучше:

'>'::o2-oo;
jpjacobs
источник
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"))
PleaseStand
источник
VBScript один производит «Bscript». на моем компьютере.
киноюф
Ты плохой человек.
Riking
3

QBasic (37)

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

FOR x=0TO 5:?CHR$(PEEK(2588+x));:NEXT
PleaseStand
источник
3

Луа 25 символов

print(arg[-1]:match"%w+")

Или, аналог J решения JB 17 символов:

print"\76\117\97"
оборота jpjacobs
источник
1
_VERSION:sub(1,3)
Мниип
3

GolfScript (13)

"#{$0[0..9]}"
Мэринус
источник
+1 Умный ... очень умный. Конечно, это не сработает, если вы переименовали интерпретатор или, скажем, запускаете его из другого каталога.
Илмари Каронен
Ps. "#{$0}"10<на три знака короче. :)
Илмари Каронен
3

Ракетка (45)

racket -e "(display(substring(banner)10 17))"
Франциско
источник