Memasukkan
Daftar kata yang dipisahkan oleh sejumlah spasi.
Keluaran
Grafik seni ASCII horizontal, di mana garis ke-n disusun oleh banyak tanda bintang ( *
) seperti kata ke-ke-panjang.
Contoh penggunaan
The >
sinyal input pengguna, Anda tidak harus memasukkan ketika menguji program.
> This is an example histogram of word length
****
**
**
*******
*********
**
****
******
> a aa aaa aaaa aaaaa
*
**
***
****
*****
> double space example
******
*****
*******
Implementasi referensi
Jika ragu dengan spesifikasi, output dari program Anda harus sama persis dengan program di bawah ini di bawah semua input.
puts gets.chomp.split.map{|word| '*' * word.length}.join("\n")
Jawaban:
Retina , 5 + 3 = 8 byte
Setiap baris masuk dalam file sendiri, jadi saya telah menambahkan 1 byte untuk setiap file tambahan. Juga,
\n
harus diganti dengan baris baru yang sebenarnya.Setiap pasangan garis adalah pasangan pengganti-pola.
+
cocok dengan satu atau lebih spasi dan menggantinya dengan baris baru..
cocok dengan karakter apa pun kecuali baris baru, dan menggantikannya dengan a*
. Ini diterapkan secara global, sehingga setiap karakter diganti dengan a*
.sumber
Pyth, 9 byte
Penjelasan:
sumber
CJam, 10 byte
Cara kerjanya :
Cobalah online di sini
sumber
R - 33
dimana
scan(,"")
membaca dari stdin dan membelah ruang putih menjadi vektor karakter.gsub(".", "*", ...)
mengganti semua karakter menjadi*
.write(..., "")
mencetak ke stdout dengan "\ n" sebagai pemisah default.sumber
Python 3, 43 byte:
Terima kasih kepada @BetaDecay karena menunjukkan kesalahan sintaksis.
Contoh dijalankan:
(String di bawah ini dimasukkan sebagai teks, bukan sebagai teks)
Bonus: histogram vertikal
Terima kasih kepada @Caridorc untuk menunjukkan kesalahan saya yang membuat bonus memiliki 1 hingga banyak baris.
Demo:
Bonus: histogram vertikal (terbalik)
Demo:
sumber
R, 38 byte (dengan bantuan komentar)
Bagaimana itu bekerja
gsub
mengganti semua tanpa spasi dengan*
gsub
menambahkan\n
(baris baru) ke akhir setiap elemencat
mencetak sesuaiDemo
sumber
> <> ,
3837 BytesTerkutuk Anda ruang ganda kasus * getar ikan *.
Kamu bisa mencobanya secara online (yang perlu Anda lakukan adalah memberi input melalui bidang di dekat bagian bawah lalu tekan
Give
tombol). Saran untuk bermain golf lebih lanjut selalu disambut, terutama gagasan untuk menghilangkan ruang-ruang yang boros di depan garis kedua dan ketiga.Jika Anda diizinkan untuk mencetak baris baru tambahan untuk ruang tambahan, kode ini bisa menjadi 27 byte kekalahan :
Penjelasan
Catatan: urutan penjelasan akan sesuai dengan lokasi penunjuk (jadi jika kode dijelaskan dari apa yang akan dianggap urutan, itu karena urutan penunjuk yang menjalankannya).
Baris 1:
Baris 2:
Baris 3:
NB Baris ini terbalik, jadi baca kanan ke kiri.
Pada dasarnya, tes program untuk memastikan input (yang dibaca satu karakter pada satu waktu) bukan spasi dan kemudian mencetak tanda bintang. Ini berakhir jika tidak ada input (nilai input -1). Untuk memastikan itu tidak mencetak baris baru tambahan, ia menggunakan nilai register, yang baik set ke 0 atau 1. Karena cara saya mengaturnya, itu tidak peduli tentang nilai-nilai asing yang didorong ke tumpukan (misalnya nilai register saat diset ke
1
setelah mencetak tanda bintang); mereka tetap berada di tumpukan ketika program berakhir tetapi tidak melakukan apa pun.Saya tahu itu mungkin agak membingungkan karena saya menggunakan
84*
dan67*
bukannya masing" "
-"*"
masing, tapi itu karena saya tidak merasa ingin memasukkan string ke dalam program untuk alasan apa pun.sumber
Javascript ES6
Fungsi, 46 karakter
Program, 55 karakter
sumber
"f=s=>s.replace(/\S/g,'*').replace(/\s+/g,'\n')".length
mengukur panjang dan melupakan\
.Perl, 16 byte (15 karakter +
-p
)Jalankan sebagai:
Menyimpan byte tambahan, terima kasih kepada @ThisSuitIsBlackNot , saya belum pernah bertemu
y///s
sebelumnya!sumber
y/ /\n/s;
Gema,
119 karakterContoh dijalankan:
sumber
PHP 5.3,
55535150 bytePenggunaan:
Panggil Script dan tentukan variabel global ($ a)
php -d error_reporting=0 script.php?a="This is an example histogram of word length"
Output:
sumber
Java, 102 byte
sumber
Haskell, 31 byte
Contoh penggunaan:
sumber
putStr.
denganf=
untuk menurunkan jumlah byte, atau menggunakanmain=interact$
alih-alihputStr.
membaca dari STDIN dan menjadikannya program yang lengkapf=unlines.map(>>"*").words
mengembalikan sesuatu seperti"****\n**\n**\n"
dan tidak menampilkan "grafik seni ASCII horizontal" seperti yang diminta.CJam, 11 byte
Bersaing untuk tempat kedua di CJam setelah @Optimizer menemukan solusi 10 byte yang cerdas. Ini adalah solusi 11 byte langsung:
Cobalah online
Solusi alternatif yang menggunakan loop alih-alih dua peta, juga 11 byte:
Penjelasan untuk solusi pertama:
sumber
JavaScript (ES6), 37
Versi lebih pendek hanya menggunakan satu
replace
.sumber
J, 10 byte
Bonus: vertikal (12 byte)
Bonus: terbalik vertikal (14 byte)
sumber
Python 3, 72 byte
Satu liner yang bagus :)
Keluaran:
Ada baris baru di sini. Jika Anda menginginkannya tanpa, Anda harus menambahkan 5 byte:
sumber
Julia, 50 byte
Ini menciptakan fungsi tanpa nama yang mengambil string sebagai input dan mencetak ke STDOUT.
Tidak Terkumpul:
sumber
JavaScript (ES5)
Program, 54 karakter
Fungsi, 60 karakter
Contoh penggunaan:
sumber
Matlab - 54 byte
Ini berjalan dari konsol, akan mengambil string dalam input dari
stdin
dan akan menampilkan grafik kata horizontal distdout
:Contoh:
Atau kita dapat mencoba membuat beberapa bentuk mewah:
sumber
Matlab / Oktaf, 75 byte
Menggunakan fungsi anonim:
Terima kasih kepada Hoki karena menemukan kesalahan yang mencegah kata terakhir terdeteksi.
Contoh penggunaan (Matlab):
Atau coba online (Oktaf).
sumber
PowerShell,
3531 BytesCukup kompetitif untuk perubahan. Go go gadget operator unary. Saya juga terus lupa bahwa parens pada beberapa fungsi, seperti
-split
dan-replace
digunakan di sini, adalah opsional.Dipanggil melalui input pipa (setara dengan stdin untuk PowerShell):
Sebagai bonus, jika kita bisa menggunakan argumen command-line, kita bisa turun ke 20 Bytes dan memiliki sesuatu yang berfungsi baik dengan dan tanpa string tunggal sebagai input:
sumber
Javascript (ES6)
Solusi baru (39 byte):
Solusi Regex (42 byte):
Solusi non-regex (71 byte):
Solusi ini menentukan fungsi anonim. Tetapkan mereka ke variabel atau panggil mereka seperti itu:
sumber
SWI-Prolog, 40 byte
Dipanggil dengan string kode, mis
a(`This is an example histogram of word length`).
sumber
STATA, 72 byte
Tidak disatukan
Perhatikan bahwa kode ini tidak berfungsi dalam juru bahasa online dan memerlukan juru bahasa STATA yang tidak bebas.
sumber
C ++ 14,
107106 bytesumber
K5, 31 byte
sumber
O, 22 byte
Penjelasan
sumber
Beam, 92 Bytes
Ini bukan jawaban yang kompetitif sama sekali dan benar-benar terlambat, tetapi saya telah bermain-main dengan Beam akhir-akhir ini dan ingin melihat apakah saya bisa mendapatkannya untuk melakukan ini. Akhirnya berhasil :)
Tampilkan cuplikan kode
sumber
AWK
contoh
keluaran:-
sumber