Ваша задача - взять исходный код и вывести на каком языке программирования он написан.
Например, вы могли бы иметь вход
class A{public static void main(String[]a){System.out.println("Hello, World!");}}
И вывод
Java
Ваши две основные цели - это разнообразие (сколько языков программирования вы можете обнаружить) и точность (насколько вы хороши в обнаружении этих языков).
Для полиглотов (программ, работающих на нескольких языках), вы можете решить, что делать. Вы могли бы просто вывести язык, который ваша программа считает более вероятным, или вы могли бы вывести ошибку, или вы могли бы вывести массив возможных вариантов (который, вероятно, получил бы больше голосов, чем просто ошибка!).
Это конкурс популярности , потому что было бы очень трудно определить другой объективный критерий выигрыша. Избиратели, пожалуйста, оцените, сколько языков он может определить и насколько он точен.
источник
print("")
может быть использована во многих языках.class A{public static void main(String[]a){System.println.out("Hello, World!");}}
недействительными.<!DOCTYPE html>
сопровождаемой<html>
,<body>
и другими тегами (какmeta
) в правильном порядке?Ответы:
234 текстовых формата - Unix Shell
(не все они языки - мне нужно их тщательно просчитать)
Я не решаюсь публиковать этот довольно умный ответ, но не вижу ничего в правилах, запрещающих его, и
file
утилита оболочки действительно справляется с этой задачей. например:Кроме того, вы можете использовать
-k
опцию «продолжать» при тестировании полиглота:Кроме того, эта
-l
опция даст вам представление о том, насколько хорош алгоритм для разных языков:Это
file-5.09
(на Ubuntu 12.04)источник
ln -s /usr/bin/file /usr/local/bin/myspecialtool
. Если ваш ответ имеет значение, то не считается ли это так же хорошо? (Не волнуйтесь, я не серьезно.)Баш - о
5035 байт на компилируемый языкХитрость заключается в том, чтобы просто скомпилировать, тогда вам не нужно беспокоиться о связывании ошибок из отсутствующих библиотек, и это более простительно, если у вас просто есть фрагменты кода.
Спасибо Шахбазу за короткие формы!
так далее...
источник
gcc -c $1 && (echo C; exit 0)
&&
И||
в Баш действительно полезны и помочь Cleanup код много. Они ни в коем случае не используются для запутывания, поэтому вы бы хорошо их выучили.-fsyntax-only
только к проверке синтаксиса и пропустить фактическую компиляцию.18 языков программирования, 1002 байта, точность: проверьте сами :)
(Да, я знаю, что это не код гольф, но для удовольствия)
Программа выполняет поиск фрагментов кода, чеки упорядочены таким образом, что наиболее четкие проверки расположены сверху, а языки программирования, встроенные в другие языки программирования, расположены ниже (например, HTML в PHP).
Это явно не для таких программ, как
System.out.println('<?php');
Использование на узле:
coffee timwolla.coffee < Example.java
Демо ( Онлайн-демо на JSFiddle ):
источник
coffee
какие-либо аргументы? Я только что попытался перенаправить файлы в него, но просто запустить его и уйти^D
тоже ничего не делает.npm install coffee-script && node_modules/.bin/coffee timwolla.coffee < timwolla.coffee
во временную папку это должно выплюнутьAPL
. (при условии, что у вас установлена последняя версия узла и npm)Этот ответ является подтверждением концепции, которая вряд ли получит больше работы от меня.
Это терпит неудачу несколькими способами:
Идея состоит в том, чтобы установить список ключевых слов / символов / фраз, которые могут идентифицировать конкретный язык и назначить оценку этому ключевому слову для каждого языка. Затем проверьте исходные файлы для этих ключевых слов и подсчитайте баллы по каждому языку, для которого вы находите ключевые слова. В конце концов, язык с наибольшим количеством баллов является вероятным победителем. Это также учитывает программы полиглотов, так как оба (или все) соответствующие языки получат высокую оценку.
Единственное, что нужно добавить больше языков - это определить их «подписи» и добавить их в отображение.
Вы также можете назначить разные оценки для разных ключевых слов для каждого языка. Например, если вы чувствуете,
volatile
что в Java используется больше, чем в C, установите дляvolatile
ключевого слова значение 2 для Java и 1 для C.источник
Всего несколько широких обобщений.
Я думаю, что это довольно точно.
Это Руби, кстати. Принимает (многострочный) ввод со стандартного ввода.
источник
ini
файлах иphp
\$\w+
после perl для обнаружения PHP. Также(\w+)::~\1
обычно деструктор C ++Javascript - 6 языков - высокая точность
Текущие языки: Java, C, HTML, PHP, CSS, Javascript
Я работаю по принципу, что всякий раз, когда входные данные удовлетворяют критериям, ему присваивается оценка, и на основании этой оценки даются результаты.
Особенности:
x
языком при просмотре ключевого слова.Если вы чувствуете, что какие-либо ваши входные данные программ (которые я делал до сих пор) не обнаружены или не дают недействительных результатов, тогда, пожалуйста, сообщите, и я буду рад их исправить.
Пример ввода 1:
Пример вывода 1:
Объяснение:
Это должно было привести к сбою программы, и я бы напечатал
PHP
, но поскольку моя программа работает на основе оценок, ничего не происходит, и в первую очередь она легко идентифицирует Java, а затем другие возможные результаты.Пример ввода 2:
Пример вывода 2:
Пример ввода 3:
Пример вывода 3:
Код:
источник