Sekarang dengan BONUS untuk penempatan run-time.
Tulis program untuk mengisi kotak teks dengan pengidentifikasi yang digunakan dalam program Anda sambil menjaga program Anda kecil. Dengan semua pengidentifikasi yang Anda gunakan (tidak termasuk yang Anda buat) dalam program Anda, isi kotak 12x6 dengan sebanyak yang Anda bisa. Anda mendapatkan poin tambahan untuk pengidentifikasi yang menyeberang (gaya teka-teki silang), tetapi mereka tidak dapat bergabung ujung ke ujung.
Keluaran
Program Anda harus mencetak (untuk stdout) kotak karakter 12x6 dengan pengidentifikasi dikemas dan #
perbatasan. Kotak harus memiliki kolom berlabel huruf AL dan baris 1-6 (diberi spasi seperti contoh di bawah). Kemudian cetak garis untuk setiap pengenal yang digunakan. Setiap baris akan memiliki lokasi huruf pertama, pengenal itu sendiri, dan skor. Skor sama dengan jumlah huruf dalam pengidentifikasi dengan kemungkinan '+ bonus' ditambahkan. Pengidentifikasi mendapat bonus 5 poin untuk setiap surat yang dibagikan dengan pengenal persimpangan. Baris terakhir melaporkan 'TOTAL:' dan jumlah skor pengidentifikasi. Contoh output untuk program Python yang mungkin akan terlihat seperti ini:
ABCDEFGHIJKL
##############
1 # pinsert #
2 # o #
3 # print #
4 # not #
5 # #
6 #import #
##############
C1 pop 3+5
D1 insert 6
C3 print 5+10
E3 in 2+10
E4 not 3+5
A6 import 6
TOTAL: 55
Catatan:
- Pengidentifikasi dapat dilepaskan (seperti di
import
atas). - Anda tidak dapat bergabung
pop
danprint
segaris denganpoprint
. - String
in
di dalamnyainsert
tidak dapat digunakan. Kata-kata yang bergabung harus ortogonal. - Pengidentifikasi dapat ditempatkan di sebelah satu sama lain (seperti
pop
dan diinsert
atas).
Jawaban Anda harus mencakup keluaran program Anda dengan kode sumber Anda dan judul yang terdiri dari nama bahasa dan skor Anda.
Skor
Skor Anda untuk tantangan akan skor puzzle kuadrat dibagi dengan ukuran kode sumber Anda (dalam byte). Contoh: Teka-teki di atas dengan program 300 byte akan menghasilkan skor 55*55/300 = 10.08
. Kemenangan skor tertinggi.
Aturan
- Anda dapat menggunakan pengidentifikasi apa pun di program Anda yang tidak ditentukan oleh Anda. Kata kunci, nama kelas, nama metode, nama pustaka, dan nama fungsi bawaan adalah contoh pengidentifikasi yang memenuhi syarat.
- Diedit: Anda hanya dapat menggunakan perpustakaan standar yang disertakan dengan rilis bahasa minimum. Paket bahasa yang diperluas dan penggunaan perpustakaan eksternal (sekarang) dilarang. Sejumlah besar perpustakaan dengan daftar pengidentifikasi yang luas akan mengacaukan tantangan ini. Jika Anda tidak yakin bagaimana ini bekerja dengan bahasa Anda, silakan tinggalkan pertanyaan di komentar.
- Pengidentifikasi hanya terdiri dari karakter [a-zA-Z_] dan memiliki setidaknya 2 karakter.
- Anda hanya dapat menggunakan setiap pengidentifikasi satu kali dalam puzzle.
- Pengidentifikasi hanya dapat digunakan dari kiri ke kanan atau ke bawah.
Bonus Dinamis!
Jika kode Anda menentukan di mana harus menempatkan pengidentifikasi pada waktu berjalan, bonus surat bersama akan menjadi 20 dan bukan 5. Anda dapat mendaftar pengidentifikasi mana yang akan digunakan, tetapi kode Anda harus memutuskan di mana dalam kotak untuk menempatkannya. Kode Anda juga harus menghitung dan mencetak daftar skor. Jika penempatan Anda bergantung pada urutan daftar pengidentifikasi, pasangan kode-keras, atau jalan pintas penempatan non-dinamis lainnya, Anda tidak memenuhi syarat untuk Bonus Dinamis.
Pada contoh output di atas, skor puzzle untuk program penempatan run-time akan menjadi 145. Kemudian jika kodenya 800 byte, skornya adalah 145*145/800 = 26.28
.
Bonus Dinamis dirancang untuk menghargai algoritma yang cerdas daripada string solusi hard-kode statis, dan mengimbangi ukuran kode sumber yang dihasilkan lebih besar.
EDIT:
- Pustaka yang diubah hanya digunakan untuk pustaka yang memiliki bahasa minimum.
- Menambahkan opsi bonus dinamis.
sumber
xyzw
/rgba
/stpq
:)Jawaban:
STATA, 387 ^ 2/677 = 221.2
Saya menjadi malas dan hanya ingin menampilkan sesuatu yang berhasil sebelum mencoba untuk mendapatkannya dengan skor optimal. Saya mungkin akan memperbaruinya nanti karena saya memasukkan lebih banyak kata, dan saya terbuka untuk saran dari siapa pun yang menggunakan STATA (yang sepertinya tidak terlalu populer di CodeGolf). STATA sangat bagus memiliki banyak perintah / parameter dua huruf. Juga, biasanya sebagian besar dapat dipersingkat untuk menyimpan karakter / lebih cocok (yaitu tampilan dapat ditampilkan, displa, displ, disp, dis, atau di). Selain itu, tangkapan berarti menahan pesan keluaran dan kesalahan. Jadi seluruh loop sementara memiliki 0 output.
menghasilkan
sumber
Python, 134 2 /349 = 50,02
Jika saya telah memahami aturan dengan benar, ini harus merupakan kiriman yang valid.
Anda benar-benar dapat terus meningkatkan skor Anda dengan menambahkan lebih banyak pengidentifikasi: ukuran program meningkat secara linear (sekitar dua kali panjang pengidentifikasi), sementara skor meningkat sekitar kuadrat dari panjang pengidentifikasi. Maka tantangannya menjadi lebih bagaimana menjejalkan sebagian besar kata kunci ke dalam kotak daripada bagaimana menulis program pendek untuk melakukannya.
sumber
stdout.write
bukanprint
, dan apa denganformat(not False or iter([]))
di akhir? Anda juga dapat dengan mudah menambahkan sebagai "adalah" di sebelah "sistem" dan "untuk" di bawah "dari" ...format
membacaiter([i for i in [not False is sys]])
Perl,
728 2 /639 = 829,4Oh well, ini tidak valid, saya harus memiliki pengidentifikasi dalam kode saya.
Ini membutuhkan modul perl refleksi (
B::Keywords
). Dapat diinstal di ubuntu dengansudo apt-get install libb-keywords-perl
. Dengan seed yang diberikan pada kode di atas, ia menghasilkan jawaban 728:Perhatikan bahwa versi perl yang berbeda mungkin memiliki RNG yang berbeda dan daftar kata kunci yang berbeda, tetapi juga harus mudah menemukan seed dengan hasil yang sebanding.
sumber