Wyzwanie polega na przyjęciu kodu źródłowego jako danych wejściowych i wyjściowych, w jakim języku programowania jest napisany.
Na przykład możesz mieć dane wejściowe
class A{public static void main(String[]a){System.out.println("Hello, World!");}}
I wyjście
Java
Twoimi dwoma głównymi celami są różnorodność (ile języków programowania można wykryć) i dokładność (jak dobry jesteś w wykrywaniu tych języków).
W przypadku poliglotów (programów ważnych w więcej niż jednym języku) możesz zdecydować, co robić. Możesz po prostu wypisać język, który według twojego programu jest bardziej prawdopodobny, lub możesz wypisać błąd, lub możesz wypisać szereg możliwych wyborów (co prawdopodobnie dostanie więcej głosów pozytywnych niż tylko błąd!).
Jest to konkurs popularności , ponieważ bardzo trudno byłoby określić inne obiektywne kryterium wygranej. Głosujący, głosujcie, ile języków może wykryć i jak dokładny.
źródło
print("")
można go używać w wielu językach.class A{public static void main(String[]a){System.println.out("Hello, World!");}}
nieprawidłowe.<!DOCTYPE html>
po którym następuje<html>
,<body>
i inne tagi (jakmeta
) w odpowiedniej kolejności?Odpowiedzi:
234 formaty tekstowe - Unix Shell
(nie wszystkie języki - muszę je dokładnie policzyć)
Waham się, by opublikować tę nieco sprytną odpowiedź $$, ale nie widzę nic w regułach zakazujących jej, a
file
narzędzie powłoki naprawdę dobrze sobie z tym radzi. na przykład:Ponadto możesz użyć
-k
opcji „kontynuuj” podczas testowania poliglota:Ta
-l
opcja daje również wyobrażenie o tym, jak dobry jest algorytm dla różnych języków:To jest
file-5.09
(w Ubuntu 12.04)źródło
ln -s /usr/bin/file /usr/local/bin/myspecialtool
. Jeśli Twoja odpowiedź się liczy, to czy to się nie liczy równie dobrze? (Nie martw się, nie mówię poważnie.)Bash - około
5035 bajtów na język kompilowalnySztuką jest po prostu kompilacja, więc nie musisz się martwić łączeniem błędów z brakujących bibliotek, a bardziej wybaczanie, jeśli masz tylko fragmenty kodu.
Dzięki Shahbaz za krótsze formy!
itp...
źródło
gcc -c $1 && (echo C; exit 0)
&&
I||
bash są bardzo przydatne i pomagają Cleanup kod dużo. W żadnym wypadku nie są używane do zaciemniania, więc dobrze byłoby się ich nauczyć.-fsyntax-only
aby sprawdzić tylko składnię i pominąć właściwą kompilację.18 języków programowania, 1002 bajtów, dokładność: sprawdź sam :)
(tak, wiem, że to nie jest golf golfowy, ale dla zabawy)
Program wyszukuje kultowe fragmenty kodu, kontrole są uporządkowane w taki sposób, aby najbardziej przejrzyste kontrole były na górze, a języki programowania osadzone w innych językach programowania były poniżej (np. HTML w PHP).
To oczywiście nie działa w przypadku programów takich jak
System.out.println('<?php');
Zastosowanie w węźle:
coffee timwolla.coffee < Example.java
Demo ( wersja demonstracyjna online na JSFiddle ):
źródło
coffee
jakieś argumenty? Właśnie próbowałem przekierować do niego pliki, ale samo uruchomienie i przejście^D
nic nie robi.npm install coffee-script && node_modules/.bin/coffee timwolla.coffee < timwolla.coffee
w folderze tymczasowym powinien to wyplućAPL
. (zakładając, że masz zainstalowaną najnowszą wersję węzła i npm)Ta odpowiedź jest dowodem koncepcji, że prawdopodobnie nie otrzymam ode mnie żadnej pracy.
Nie działa na kilka sposobów:
Chodzi o to, aby ustawić listę słów kluczowych / znaków / fraz, które mogą zidentyfikować konkretny język i przypisać wynik do tego słowa kluczowego dla każdego języka. Następnie sprawdź pliki źródłowe tych słów kluczowych i zsumuj wyniki dla każdego języka, w którym znajdują się słowa kluczowe. Ostatecznie język z najwyższym wynikiem jest prawdopodobnym zwycięzcą. Dotyczy to również programów poliglotycznych, ponieważ oba (lub wszystkie) odpowiednie języki będą wysoko oceniane.
Jedyną rzeczą, aby dodać więcej języków, jest zidentyfikowanie ich „podpisów” i dodanie ich do mapowania.
Możesz także przypisać różne wyniki do różnych słów kluczowych w każdym języku. Na przykład, jeśli uważasz, że
volatile
jest używany częściej w Javie niż w C, ustaw wynik dlavolatile
słowa kluczowego na 2 dla Java i 1 dla C.źródło
Tylko kilka ogólnych uogólnień.
Myślę, że to dość dokładne.
To jest Ruby btw. Pobiera (wieloliniowy) wkład ze standardowego wejścia.
źródło
ini
plikach iphp
\$\w+
po perlu, aby wykryć PHP.(\w+)::~\1
Zazwyczaj jest także niszczycielem C ++JavaScript - 6 języków - wysoka dokładność
Aktualne języki: Java, C, HTML, PHP, CSS, JavaScript
Pracuję na zasadzie, że ilekroć dane wejściowe spełniają kryteria, przyznawane są punkty i na podstawie tych wyników są podawane wyniki.
Cechy:
x
językiem po zobaczeniu słowa kluczowego.Jeśli uważasz, że którekolwiek z twoich danych wejściowych programów (które zrobiłem do tej pory) nie zostały złapane lub uzyskały nieprawidłowe wyniki, zgłoś to, a chętnie je naprawię.
Przykładowe wejście 1:
Przykładowy wynik 1:
Wyjaśnienie:
To powinno zawieść program i wydrukowałbym
PHP
, ale ponieważ mój program działa na podstawie wyników, nic nie zawodzi i przede wszystkim łatwo identyfikuje Javę, a następnie inne możliwe wyniki.Przykładowe wejście 2:
Przykładowy wynik 2:
Przykładowe wejście 3:
Przykładowy wynik 3:
Kod:
źródło