Tugas Anda - jika Anda menerimanya - adalah menulis sebuah program yang membantu memahami proposal saya tentang meta dengan menghitung pemenang kompetisi kode-golf-terbalik . Tentu saja, jawaban atas pertanyaan ini akan diperlakukan seperti yang diusulkan, sehingga program Anda (jika benar) dapat menghitung apakah jawaban Anda akan menjadi jawaban yang diterima.
Aturan
- Program membaca file dengan beberapa baris format berikut (lihat contoh di bawah): [Bahasa] TAB [NumberOfCharacters] TAB [LinkToAnswer]
- Nama file dilewatkan sebagai argumen ke program Anda atau file diarahkan ke input standar program Anda. Itu pilihan Anda, tolong sebutkan metodenya ketika memberikan jawabannya
- Diharapkan format input sudah benar. Tidak perlu penanganan kesalahan.
- Jumlah karakter positif. Program Anda harus menangani panjang hingga 65535. 64k harus cukup untuk semua orang :-)
- Program mengeluarkan garis-garis tersebut pada keluaran standar yang memenuhi gagasan proposal meta, yaitu
- kode terpendek dari bahasa pemrograman tertentu menang (fase reduksi)
- kode terpanjang di antara semua bahasa pemrograman yang menang (fase penyortiran)
- dalam hal pengundian, semua jawaban dengan panjang yang sama harus dicetak
- Urutan output tidak penting
- Meskipun kode terpanjang menang, ini bukan bowling kode . Kode Anda harus sesingkat mungkin untuk bahasa pemrograman Anda.
- Jawaban pada bahasa pemrograman yang jarang yang tidak berusaha memperpendek kode layak mendapat downvote, karena mereka mencoba untuk memotong maksud pertanyaan semacam ini. Jika hanya ada satu jawaban untuk bahasa pemrograman tertentu, itu akan dianggap sebagai kandidat pemenang, sehingga Anda dapat mulai meniup kodenya.
Contoh file input (dipisahkan oleh satu tab jika ada masalah dengan pemformatan):
GolfScript 34 http://short.url/answer/ags
GolfScript 42 http://short.url/answer/gsq
C# 210 http://short.url/answer/cs2
Java 208 http://short.url/answer/jav
C# 208 http://short.url/answer/poi
J 23 http://short.url/answer/jsh
Ruby 67 http://short.url/answer/rub
C# 208 http://short.url/answer/yac
GolfScript 210 http://short.url/answer/210
Output yang diharapkan (urutan tidak penting):
C# 208 http://short.url/answer/poi
C# 208 http://short.url/answer/yac
Java 208 http://short.url/answer/jav
Memperbarui
Beberapa program bergantung pada fakta bahwa ada maksimum tunggal (seperti program karakter C # 210). Berasal dari kenyataan, seseorang juga dapat menulis program GolfScript dengan 210 karakter. Outputnya akan tetap sama. Saya telah menambahkan GolfScript ke input.
Perbarui 2
Seperti yang disarankan saya telah retagged (masih kode-golf juga) dan batas waktunya adalah 2014-03-06 (yang terlihat seperti tanggal yang sewenang-wenang, tetapi saya akan kembali ke Jerman dari bepergian kemudian).
Hasil akhir
Saya memutuskan untuk memilih seperti berikut:
- Jawaban di mana jumlah karakter tidak dapat dikonfirmasi mendapatkan komentar untuk menjelaskan jumlah.
- Jawaban yang dapat dengan mudah direduksi mendapatkan komentar, saran edit, dan masuk ke hasil dengan nilai hitung yang lebih rendah. (Semoga saya sudah melihat itu sebelumnya).
- Jawaban yang tidak dikompilasi mendapatkan downvote. (Cukup sulit ternyata).
- Jawaban yang tidak golf mendapatkan downvote (seperti yang sudah dijelaskan dalam aturan).
- Jawaban yang menghasilkan keluaran yang diharapkan mendapat upvote. Karena beberapa jawaban yang tidak berfungsi seperti yang diharapkan, saya menggunakan 4 file input berbeda dan memeriksa hasil yang diharapkan.
Akhirnya, pemenang ditentukan dengan memberikan tabel jawaban yang memenuhi syarat sebagai input untuk program referensi saya (ditambah memeriksa ulang hasilnya secara manual). Jika jawaban saya sendiri yang akan menang, saya akan mengecualikannya dari daftar. Dalam hal beberapa pemenang, saya harus memilih hanya satu. Oleh karena itu, beberapa bonus dapat diperoleh:
- jawaban yang menerima lebih banyak input dari yang diharapkan (mis. di luar rentang yang ditentukan)
- jawaban yang menggunakan ide cerdik untuk membuatnya pendek
Saya telah mengambil snapshot dari jawaban pada 6 Maret 2014, 19:45 UTC +1. Analisis sedang berlangsung. Memeriksa semua jawaban lebih sulit dari yang diharapkan ...
sumber
Jawaban:
Jawa - 556
Program akan membaca dari STDIN.
ArrayIndexOutOfBoundsException
ketika baris kosong ditemukan atauNoSuchElementException
jika input berakhir tanpa mengikuti baris baru). Setiap baris dibaca ditambahkan keTreeMap m
, yang dapat didefinisikan sebagaiTreeMap<String, TreeMap<Long, TreeMap<String,String[]>>>
(kiri-ke-kanan: bahasa, ukuran kode, URL, input).TreeSet<Long, TreeSet<String, String[]>> n
(kiri-ke-kanan: ukuran kode, URL, input) dibangun di mana konten dari setiap bahasafirstEntry()
dikumpulkan.lastEntry()
dari agregatTreeMap
berisi hasil kami - kami hanya perlu mencetaknya.Coba di ideone.com (beralih dua baris input terakhir untuk menunjukkan bahwa semua baris dibaca)
sumber
Perl, 195 byte
Input diharapkan dalam STDIN, hasilnya ditulis ke STDOUT:
Versi tidak disatukan
sumber
GolfScript 210 http://short.url/answer/210
baris ke input dan lihat apakah outputnya tetap sama. Sebenarnya saya pikir milik Anda tidak terpengaruh, karena Anda menggunakan [0] untuk maksimum, tetapi saya tidak memiliki Perl saat ini untuk mencobanya.%l
/%language
berisi bahasa dan nilai minimalnya. Struktur data%a
/%array
hanya berisi pasangan bahasa / URL, yang nilainya minimum untuk bahasa ini. Kemudian nilai minimum diurutkan dalam urutan menurun dan yang pertama digunakan sebagai global maksimum dan sebagai kondisi filter untuk%a
/%array
.Python
378377372Masukan pada stdin:
Dan inilah yang saya miliki sebelum mulai memampatkannya, pada 551 karakter:
sumber
C # - 628
Berikut alternatif yang lebih lama dari Anda yang menggunakan
DataTable
:Saya awalnya berpikir saya mungkin telah memperoleh sedikit pengurangan kode dari menggunakan max / min dengan
DataTable
, tetapi jenis yang diperlukan untuk membangunDataTable
(baris / kolom / tampilan) menambahkan banyak panjang, sayangnya. Saya baru mengenal kode golf sehingga mungkin seseorang akan dapat mengurangi lebih jauh. Masih tantangan yang menyenangkan.sumber
dg -
286281260251218 byteContoh:
Versi tidak disatukan :
T: Apa-apaan itu dg?
SEBUAH: Bahasa pemrograman yang mengkompilasi ke bytecode CPython, seperti kompilasi Scala ke JVM. Itu pada dasarnya berarti bahwa dg adalah sintaks alternatif untuk Python 3. Ini memungkinkan Anda untuk menggunakan semua pustaka yang ada juga.
Info lebih lanjut di sini (bahkan tutorial!): Https://pyos.github.io/dg
sumber
cat langs.dg | wc -c
saya mendapatkan 218!Rebol - 314
tidak golf
Contoh penggunaan:
sumber
C # - 515
Mengharapkan nama file sebagai argumen
Pertama saya mendesain program C # saya agar mudah, karena saya ingin memiliki semacam program referensi. Tetapi kemudian saya memutuskan untuk ikut terjun ke dalam kontes dan bermain golf. Ini adalah salah satu versi kode sebelumnya + beberapa komentar:
sumber
C # -
460359Setelah menyadari betapa
DataTable
besarnya solusi saya , saya membuat contoh berikut ini menggunakan Linq. Ia menggunakan metodologi yang sama dengan solusi saya sebelumnya.Golf
Tidak disatukan
Saya masih cukup baru untuk Linq jadi saya hampir positif ekspresi itu dapat dikurangi lebih jauh.
Dari pertanyaan Anda, tidak jelas apakah ada solusi panjang maksimum tunggal. Untuk jawaban saya, saya telah menggunakan asumsi bahwa ada satu titik maksimum tunggal (mis. Jika ada GolfScript maksimum 210 juga, mungkin gagal berdasarkan catatan maksimum tunggal yang dikembalikan). Solusi Heiko akan memiliki masalah yang sama. Untuk memperbaiki ini, kita harus menambahkan langkah lain yang berisi daftar maxima terikat untuk memeriksa minima untuk setiap bahasa.
sumber
namespace System{using Linq;using IO;class p{static void Main(string[]i){var l=(from f in File.ReadAllLines(i[0])let s=f.Split('\t') select new Tuple<string, int, string>(s[0],Convert.ToInt16(s[1]),f)).ToList();foreach(var f in l.Where(a=>a.Item2==l.Where(b=>b.Item1==l.Single(c=>c.Item2==l.Max(d=>d.Item2)).Item1).Min(e=>e.Item2)))Console.WriteLine(f.Item3);}}}
Golfscript 100 ...
,C# 1 ...
,C# 200 ...
. Ini mungkin membutuhkan beberapa pengerjaan ulangC ++ - 535
Hanya akan menampilkan jawaban yang diikat untuk posisi terlama setelah memilih hanya jawaban terpendek dari setiap bahasa sebagai pemenang potensial.
Golf (tidak terbaca seperti beberapa bahasa):
sumber