Tantangan Anda adalah untuk mengambil beberapa kode sumber sebagai input, dan menampilkan bahasa pemrograman tempat penulisan itu.
Misalnya, Anda dapat memiliki input
class A{public static void main(String[]a){System.out.println("Hello, World!");}}
Dan output
Java
Dua tujuan utama Anda adalah keanekaragaman (berapa banyak bahasa pemrograman yang dapat Anda deteksi) dan akurasi (seberapa baik Anda mendeteksi bahasa-bahasa ini).
Untuk polyglots (program yang valid dalam lebih dari satu bahasa), Anda dapat memutuskan apa yang harus dilakukan. Anda hanya bisa menampilkan bahasa yang menurut program Anda lebih mungkin, atau Anda bisa menampilkan kesalahan, atau Anda bisa menampilkan berbagai pilihan yang mungkin (yang mungkin akan mendapatkan lebih banyak upvotes daripada hanya kesalahan!).
Ini adalah kontes popularitas , karena akan sangat sulit untuk menentukan kriteria kemenangan objektif yang berbeda. Pemilih, silakan pilih berapa banyak bahasa yang dapat dideteksi dan seberapa akurat itu.
sumber
print("")
bisa digunakan dalam banyak bahasa.class A{public static void main(String[]a){System.println.out("Hello, World!");}}
tidak valid.<!DOCTYPE html>
diikuti oleh<html>
,<body>
dan tag lain (sepertimeta
) dalam urutan yang benar?Jawaban:
234 format teks - Unix Shell
(tidak semuanya bahasa - saya perlu menghitungnya dengan cermat)
Saya ragu untuk mengirimkan jawaban yang agak pintar ini, tetapi saya tidak melihat ada aturan melarangnya dan
file
utilitas shell benar-benar melakukan pekerjaan dengan baik. misalnya:Selain itu, Anda dapat menggunakan
-k
opsi untuk "terus" ketika menguji polyglot:Selain itu,
-l
opsi ini akan memberi Anda gambaran tentang seberapa baik algoritma untuk berbagai bahasa:Ini
file-5.09
(di Ubuntu 12.04)sumber
ln -s /usr/bin/file /usr/local/bin/myspecialtool
. Jika jawaban Anda penting, bukankah ini juga berarti? (Jangan khawatir, saya tidak serius.)Bash - tentang
5035 byte per bahasa yang dapat dikompilasiTrik adalah dengan hanya mengkompilasi, maka Anda tidak perlu khawatir tentang menghubungkan kesalahan dari pustaka yang hilang, dan itu lebih memaafkan jika Anda hanya memiliki potongan kode.
Terima kasih kepada Shahbaz untuk formulir yang lebih pendek!
dll ...
sumber
gcc -c $1 && (echo C; exit 0)
&&
dan||
di bash benar-benar berguna dan membantu pembersihan kode banyak. Mereka sama sekali tidak digunakan untuk kebingungan, jadi sebaiknya Anda mempelajarinya.-fsyntax-only
untuk hanya memeriksa sintaks dan melewati kompilasi yang sebenarnya.18 bahasa pemrograman, 1002 byte, akurasi: tes sendiri :)
(Ya saya tahu ini bukan kode golf, tetapi untuk bersenang-senang)
Program mencari potongan kode ikonik, cek disusun sedemikian rupa sehingga cek paling jelas ada di bagian atas dan bahasa pemrograman yang tertanam dalam bahasa pemrograman lain ada di bawah ini (mis. HTML dalam PHP).
Ini jelas gagal untuk program seperti
System.out.println('<?php');
Penggunaan pada simpul:
coffee timwolla.coffee < Example.java
Demo (Demo Online di JSFiddle ):
sumber
coffee
argumen? Saya baru saja mencoba mengarahkan ulang file ke dalamnya, tetapi hanya menjalankannya dan pergi^D
tidak melakukan apa-apa juga.npm install coffee-script && node_modules/.bin/coffee timwolla.coffee < timwolla.coffee
dalam folder sementara, ini harus dimuntahkanAPL
. (dengan asumsi Anda memiliki versi terbaru dari node dan npm diinstal)Jawaban ini adalah bukti konsep, yang kemungkinan besar tidak akan menerima lebih banyak pekerjaan dari saya.
Gagal dalam beberapa cara:
Idenya adalah untuk menetapkan daftar kata kunci / karakter / frasa yang dapat mengidentifikasi bahasa tertentu dan menetapkan skor untuk kata kunci tersebut untuk setiap bahasa. Kemudian periksa file sumber untuk kata kunci ini, dan hitung skor untuk setiap bahasa yang Anda temukan untuk kata kunci. Pada akhirnya bahasa dengan skor tertinggi adalah kemungkinan pemenang. Ini juga melayani program polyglot karena kedua (atau semua) bahasa yang relevan akan mendapat skor tinggi.
Satu-satunya hal untuk menambahkan lebih banyak bahasa adalah mengidentifikasi "tanda tangan" mereka dan menambahkannya ke pemetaan.
Anda juga dapat menetapkan skor berbeda untuk kata kunci berbeda per bahasa. Misalnya, jika Anda merasa
volatile
lebih banyak digunakan di Jawa daripada di C, atur skor untukvolatile
kata kunci menjadi 2 untuk Java dan 1 untuk C.sumber
Hanya beberapa generalisasi luas.
Saya pikir ini cukup akurat.
Ini adalah Ruby btw. Mengambil input (multiline) dari stdin.
sumber
ini
file danphp
\$\w+
setelah perl satu untuk mendeteksi PHP. Juga(\w+)::~\1
biasanya sebuah destruktor C ++Javascript - 6 bahasa - akurasi tinggi
Bahasa Saat Ini: Java, C, HTML, PHP, CSS, Javascript
Saya bekerja pada prinsip bahwa setiap kali input memenuhi kriteria, itu diberikan skor, dan berdasarkan itu hasil skor diberikan.
Fitur:
x
bahasa saat melihat kata kunci.Jika Anda merasa bahwa salah satu input Anda dari program (yang telah saya lakukan sampai sekarang) tidak tertangkap atau mendapatkan hasil yang tidak valid, maka tolong laporkan dan saya akan dengan senang hati memperbaikinya.
Input Sampel 1:
Contoh Output 1:
Penjelasan:
Seharusnya ini gagal program dan saya akan mencetak
PHP
, tetapi karena program saya bekerja berdasarkan skor, tidak ada yang gagal dan itu dengan mudah mengidentifikasi Java di tempat pertama, diikuti oleh kemungkinan hasil lainnya.Input Sampel 2:
Contoh Output 2:
Input Sampel 3:
Contoh Output 3:
Kode:
sumber