Tulis program yang mendapat string sebagai inputnya, dan hitung jumlah karakter alfanumerik dan non-alfanumerik di dalamnya. Itu harus menampilkan hasilnya seperti ini:
input: http://stackexchange.com
keluaran:20 + 4 = 24
Tangkapannya adalah, kode sumber Anda harus memiliki jumlah karakter alfanumerik yang sama dengan yang non-alfanumerik. Komentar tidak diizinkan, spasi putih diabaikan. (Bahasa yang disebut Whitespace mungkin bersaing untuk mendapatkan suara, tetapi tidak akan dipilih sebagai pemenang, jelas)
Karakter dalam kode harus memiliki setidaknya beberapa pembenaran kecil, mereka tidak boleh sepenuhnya berlebihan. Misalnya, nama variabel yang lebih panjang diizinkan, i = (j*3)+4;
alih-alih i = j*3+4;
juga diizinkan. Namun, i = i + 1;;;;;;
tidak.
Selain itu, aturan kode-golf standar berlaku.
O.
,O?
danO!
kemudian setiap program yang saya tulis memenuhi pembatasan kelas karakter ... Tentu saja ada kemungkinan kehilangan pada bisnis panjang.Jawaban:
Perl, 32 + 32 = 64
String diharapkan di STDIN. Outputnya ditulis ke STDOUT. Ruang putih diabaikan. Interpretasi saya terhadap tugas ini adalah bahwa program harus dapat berjalan sendiri untuk mendapatkan skor.
Tidak dikoleksi dengan komentar
Saya menemukan beberapa variasi dengan jumlah byte yang sama, misalnya:
Contohnya
Contoh dari pertanyaan:
Berjalan dengan sendirinya (
a.pl
):Ukuran file adalah 104 byte, sehingga 40 byte diabaikan sebagai ruang putih.
Perl, 29 + 29 = 58
String diharapkan pada STDIN dan terbatas pada baris pertama. Hasilnya dicetak ke STDOUT. Ruang putih diabaikan.
Tidak disatukan
Contohnya
File
a.pl
berisi skrip Perl.Contoh dari pertanyaan:
Berjalan dengan sendirinya:
Ukuran file
a.pl
adalah 65 byte, sehingga 7 byte diabaikan sebagai ruang putih.sumber
C - 96 (48 + 48) karakter
Ini agak mudah dibaca. Masih ada ruang untuk perbaikan.
sumber
Bash + coreutils, 72 (36 + 36) karakter non-spasi putih
Keluaran:
Jawaban sebelumnya:
Pure Bash, 92 (46 + 46) karakter non-spasi putih
Keluaran:
sumber
PowerShell (43 + 43 = 86)
Golf
Tidak bermain golf
Uji
Pengujian dengan kode itu sendiri untuk lulus kriteria
"
telah lolos dengan `yang bukan bagian dari string.sumber
GolfScript, 74 karakter (= 37 + 37)
Tes online untuk kode dengan kode sebagai input.
sumber
Ruby 38 + 38 = 76
Program ini menghitung trailing baris baru di input.
Hitungan karakter dilakukan oleh program itu sendiri:
$ ruby alphabalance.rb alphabalance.rb
:)sumber
Powershell, 70 byte (= 35 + 35)
Skrip uji:
Keluaran:
Powershell, 70 byte (= 35 + 35), alternatif
sumber
Python 2 (60 + 60 = 120)
Yang sulit, mungkin ada ruang untuk perbaikan. Seperti halnya fungsi itu sendiri dapat digunakan untuk mengevaluasi keseimbangan alfnumeriknya sendiri.
Uji:
sumber
repr
.C ++, 146 (73 + 73)
178 (89 + 89)karakter bukan spasi #Asli termasuk
<algorithm>
tanpa alasan. Ups.Saya hanya menghitung karakter setelahnya
//Code itself starts here
. Secara khusus, ini berarti tidak menghitung#include <string>
. Saya juga menghitung trigraph masing-masing sebagai tiga karakter, yang mungkin bisa diperdebatkan. Perhatikan bahwa dalam menguji program dengan kode sumbernya sendiri, diperlukan kehati-hatian untuk mencegah penggantian trigraph dalam string literal.Ada beberapa keputusan desain yang aneh di sini - dalam sebagian besar kode produksi Anda tidak akan menemukan trigraph dan range-for-loop berdasarkan fungsi yang sama - tapi saya pikir semuanya dalam batas-batas 'dapat dibenarkan'.
sumber
python 52 +52 = 104
Challnge menarik karena python menghindari karakter non-alfanumerik.
Pembenaran kecil untuk menggunakan slice: mempercepatnya (mungkin?)
sumber
print
tidak memerlukan tanda kurung, dan menggunakan'%d + %d = %d' % (a,l-a,l)
metode. Itu harus menyimpan beberapa karakter.Julia, 64
Semua satu-satunya karakter non alfanumerik yang tidak perlu adalah yang terakhir
;
dan beberapa()
di dalam pemformatan string., Itu keluar hampir seimbang sempurna, dan sebagai kekuatan 2 tanpa banyak mengutak-atik.sumber
perl, 64 karakter non-spasi putih:
Klarifikasi sedikit melalui perl -MO = Deparse dan beberapa komentar:
ORS, $ \ ditambahkan secara otomatis di setiap panggilan untuk mencetak, dengan menempatkan jumlah total di akhir.
sumber
Python 2, 50 + 50 = 100
Jalankan di sini: http://repl.it/8CH
sumber
Rebol (64 + 64 = 128)
Contoh penggunaan (dalam konsol Rebol):
NB. Program mengabaikan spasi, tab & baris baru dari hitungan.
sumber
J - 46 + 46 = 92
Menghitung spasi putih, jadi Anda tidak dapat menguji sendiri tanpa modifikasi. Mengambil input pada stdin. Mulutnya jelek, harus dicuci bersih dengan sabun.
Pemakaian:
sumber
Javascript - 76 (38 + 38)
Contoh Input:
http://stackexchange.com
Keluaran:
20 + 4 = 24
Berjalan sendiri:
PS Bagi mereka yang peduli
(o + $)
untuk menjaga keseimbangan alfanumerik, tidak demikian. Karena setelah melihato + " + "
JS akan memutuskan semua+
menjadi string concatenaters daripada number adders. Dengan demikian tanda kurung diperlukan, atau20 + 4
akan menjadi204
daripada24
: DSelamat Coding!
sumber
Clojure: (31 + 31 = 62) karakter non-spasi putih
Keluaran:
sumber
CJam, 27 + 27 = 54
CJam beberapa bulan lebih baru dari tantangan ini, jadi jawaban ini tidak memenuhi syarat untuk tanda centang hijau. Bagaimanapun, itu adalah latihan yang menyenangkan!
Dibutuhkan string input sebagai argumen baris perintah, sehingga tidak akan berfungsi dalam penerjemah online, tetapi Anda dapat mengujinya dengan penerjemah Java .
Penjelasan
sumber