Pengarahan
Kesulitan pertanyaan Golf Code dapat dihitung seperti:
Di mana v
jumlah tampilan yang dimiliki pertanyaan
dan a
jumlah jawaban yang dimiliki pertanyaan
dan ⌈ x ⌉ adalah operator langit - langit .
Juga:
Kesulitan pertanyaan ini saat ini: ***
Tugas
Tulis sebuah program yang akan mengambil dua bilangan bulat (v and a)
dan mengeluarkan kesulitan dalam asterisks (*)
.
Input dapat berupa array, string terpisah atau sebagai argumen fungsi terpisah
Data Uji
Views Answers Difficulty Program Output
163 2 2 **
548 22 1 *
1452 24 1 *
1713 37 1 *
4162 32 2 **
3067 15 3 ***
22421 19 10 **********
Contoh dengan pseudocode
v: 1713
a: 37
out = clamp(ceil(((v/a)/700)*10), 0, 10); // evaluates to 1
//program will output '*'
Kode terpendek dalam byte menang! Trailing / ruang utama diizinkan.
/700 * 10
bukannya/70
?Jawaban:
JavaScript (ES6),
4039 byteKarena
substring
menyediakan penjepitan yang diperlukan dan perilaku "ceil" ing. Sunting: Biasanya saya terlalu malas untuk repot, tetapi karena mendapat 4 upvotes, saya telah mengikuti saran @ MarsUltor untuk menghemat 1 byte dengan menjelajah.sumber
v=>a=>
substr
? Saya tahu parameter kedua membuat perbedaan, tetapi tidak yakin tentang yang pertama ...slice
akan lebih pendek.substr
danslice
menafsirkan argumen negatif sebagai menghitung mundur dari akhir string.Saya sudah lama ingin melakukan ini ...
HTML + CSS
491487485 byte-4 byte terima kasih kepada Conor O'Brien
-2 byte terima kasih untuk Melepaskan Helium Nuclei
Input diambil sebagai lebar dan tinggi jendela halaman; lebar menjadi jumlah Tampilan, dan tinggi menjadi jumlah Jawaban.
Anda dapat mencobanya di browser Anda dengan memasukkan
sebagai url di tab baru.
sumber
}
juga.05AB1E, 11 byte
Penjelasan
Cobalah online
sumber
Javascript (ES6),
3736 byteDisimpan 1 byte oleh currying, berkat TheLethalCoder
Tampilkan cuplikan kode
sumber
v=>a=>
bukan(v,a)=>
?v=70, a=1
?Mathematica,
3835 byteTerima kasih kepada @MartinEnder selama 3 byte
sumber
Clip
, yang memiliki sintaks yang hampir sama dengan OP's Clamp, tapi kemudian saya melihat bahwaStringRepeat
ada argumen opsional ketiga untuk pemotongan.Ceiling[]
.EXCEL, 29 byte
Jika Anda menghitung Excel sebagai representasi VBA Excel, maka Anda bisa menggunakannya
di mana
v
dana
adalah nama sel referensi.sumber
CJam,
181514 byteDisimpan 1 byte berkat Peter Taylor dan 3 byte terima kasih kepada Adnan
Cobalah online
sumber
C #,
684948 byteIni adalah versi C # dari jawaban yang luar biasa ini oleh Neil.
Menyimpan 19 byte lagi berkat Neil
sumber
(int)System.Math.Floor(10-v/a/70)
atau adil(int)(10-v/a/70)
.70d
sendiri tetapi bekerja lebih baik terima kasihd
sana.v=>a=>
Java 8, 57 byte
Menggunakan lambda untuk menyimpan byte, melakukan kalkulasi dan substring untuk mengembalikan jawabannya.
Ini kelas saya untuk mengujinya.
Memperbarui
sumber
java.lang.
karena itu termasuk paket default.System.out.println((int)2.99);
mencetak2
dan karena saya mengambil nilai pra-lantai dari 10 dan kemudian lantai, itu sama dengan mengambil langit-langit dari 10.MATL , 12 byte
Cobalah online!
Penjelasan
Pembulatan dan penjepitan dilakukan secara simultan sebagai berikut: jumlahnya
x = v/a/70
dibandingkan terhadap masing-masing elemen array[0 1 ... 9]
. Jumlah array yang dilampaui olehx
akan menjadi tanda bintang, dan sisanya akan menjadi spasi.sumber
Python2, 32 byte
disimpan 3 + 2 byte dan dikoreksi oleh satu kesalahan berkat Leaky Nun
mirip dengan jawaban Neils. Menggunakan fakta bahwa Python2 melakukan pembagian integer.
sumber
v=70
dana=1
f=
dapat dihapusv, a
bisa menjadiv,a
Haskell, 35 byte
[1..min(ceiling$v/a/70)10]
membuat rentang dari 1 hingga kesulitan yang dihitung (daftar kosong untuk kesulitan 0). seringa>>b
mengulangi daftarb
length a
.sumber
Pyke,
139 byteCoba di sini!
Penjelasan:
sumber
C #,
978987774241 byteDisimpan 10 byte berkat Adám
Disimpan beberapa byte berkat Arnauld
sumber
(int)System.Math.Ceiling(v/a/70d)
dengan(v+69)/(70*a)
... Perhatikan bahwa selain itu v / a tidak boleh negatif, jadic
bisa banyak disederhanakan karena Anda tidak perlu memeriksa itu.Perl,
3532 byteGunakan
-E
untuk mengaktifkansay
dan memberikan argumen dalam urutan terbalik:Jika argumen tentang STDIN diizinkan, berikut adalah 29 byte:
sumber
0|
bukannya$-=
? (Berpikir prioritas operator mungkin tidak benar ...)0|
membuat angka negatif menjadi angka besar (mengarah ke nol*
s),$-=
klip ke 0 (mengarah ke sepuluh*
), yang adalah apa yang saya butuhkan di siniR,
68, 5052 byterep
secara implisit menempatkan min pada angka 0.Terima kasih kepada @plannapus dan @ Anastasiya-Romanova 秀 karena menemukan kesalahan saya.
sumber
f=
1+
setelahmin(
untuk mendapatkan output yang samaPyth ,
1713 byte4 byte dalam kredit untuk Luis Mendo untuk algoritme-nya .
Suite uji.
sumber
Javascript ES6, 48 byte
sumber
C,
54,51,50, 49 byteDengan asumsi yang
v
positif atau nol dana
positif,x < min
kasus penjepitan tidak pernah bertemu, karena tidak mungkin hasil operasi langit-langit menjadi negatif. Selain itu, bilangan bulat matematika pada nilai-nilai non-negatif selalu menghasilkan dasar dari hasil, jadi kami menambahkan1
untuk mendapatkan plafon.Solusi ini memerlukan
write
fungsi, setidaknya dapat bekerja di Linux.Tes utama:
sumber
(v=v/a/70)
dengan(v/=a*70)
menghemat 1 byte.javascript:
8273 bytesumber
console.log
, kembali tidak apa-apa. Anda juga dapat menyimpan byte denganv=>a=>
alih - alih(v,a)=>
Dyalog APL , 15 byte
'*'⍴⍨
karakter mengulangi ini berkali-kali:10⌊
min (10, ...⎕÷
input dibagi dengan70×
tujuh puluh kali⎕
inputTryAPL online!
sumber
'*'/⍨(⎕÷70×⎕)>⍳10
Ubur-ubur , 18 byte
Mengambil input dalam format
[a v]
. Cobalah online!Penjelasan
%
bersifat timbal balik, demikian%70
juga 1/70.i
adalah input, sebagai array dua elemen./%
dengan inputi
dan%70
mengurangi arrayi
dengan membalik divisi dengan nilai awal%70
. Dengan kata lain, ini menghitung v / (a / (1/70)) , yang sama dengan v / (70 * a) .M
mengambil plafon dari nilai ini, danm
mengambil maksimum dari itu dan10
.#'*
mengulangi*
karakter literal yang berkali-kali.P
mencetak hasilnya tanpa tanda kutip.sumber
MATLAB,
3433 byteKarena saya sangat menyukai tantangan ini, berikut adalah salah satu untuk MATLAB (output mengekor spasi putih):
Terinspirasi oleh jawaban @Luis Mendo. Terima kasih kepada @pajonk karena telah menghemat satu byte.
sumber
[... '']
bukanchar(...)
. Dan apakah Anda benar-benar membutuhkanceil
ketika pada akhirnya Anda membandingkan dengan bilangan bulat?m4,
136135 byteMenentukan makro
f
yang mengambilv
dana
, dan memperluas ke output yang benar. Sebagian besar program merupakan implementasi dari plafon.sumber
dc,
110 108 10498 byteIni adalah doozy karena mengiris bukanlah hal. Juga, dc tidak memanipulasi string. Saya hanya benar-benar menunggu satu string yang akan <5 jam coding. Di sisi positifnya, saya akhirnya mulai menulis konstruksi umum, seperti untuk loop. Juga harus merumuskan pembulatan / langit-langit, jadi terima kasih untuk itu.
Dipanggil dalam bash:
Mengganti (di atas) dengan kode, dan
v
dana
dengan rekan masing-masing di atas. Kutipan tunggal itu penting (jika tidak Anda mendapatkan barang-barang sejarah bash).Dijelaskan:
Ini mungkin lebih mampu golf, tetapi saya mencoba menyelesaikannya untuk menghindari pengoptimalan prematur.
sumber
[*]n
=>42P
. Setiap instance dari10
dapat digantikan olehI
.[]p
=>IP
Haskell, 35 byte
Solusi ini sama sekali berbeda dari jawaban Laikoni karena mendapatkan untuk hal sepele ini. Namun skor (untuk saat ini) persis sama.
Ini menghasilkan sepuluh bintang, lalu memotong beberapa. Mudah diperluas ke kesulitan sewenang-wenang dengan daftar tak terbatas.
Saya berhasil memangkas satu byte lagi. Tetapi sementara semua uji coba bekerja, ini seharusnya tidak benar secara umum.
sumber
TI-Basic, 39 byte
sumber
PowerShell v2 +, 47 byte
Agak port dari jawaban JavaScript @ Neil .
Mengambil input
$args
dan membaginya, lalu membaginya dengan70
, dan menambahkan.499
. Karena PowerShell melakukan pembulatan bankir , ini efektifceil
untuk dua titik desimal presisi. Jika presisi tambahan diperlukan, tempelkan sebanyak mungkin9
s tambahan yang diperlukan.Seiring dengan
1..
, ini membentuk indeks rentang menjadi string. String adalah'*'*11
, yaitu'***********'
. Itu menghasilkan array-char, jadi kita-join
bersama-sama kembali menjadi string. String itu ditinggalkan di pipeline dan outputnya implisit. Seperti jawaban Neil, ini secara efektif "klem" output menjadi antara 1 dan 10 bintang.Test Suite
sumber
Python 3,
6968 byteSaya tidak ingin menyalin jawaban Python 2, jadi milik saya sedikit lebih lama.
Disimpan 1 byte berkat Program man
sumber
from math import *
akan menghemat beberapa byteimport*
tanpa ruang.Sebenarnya, 14 byte
Cobalah online!
Mengambil keuntungan dari kenyataan bahwa 0 tampilan dan 0 jawaban tidak mungkin, dan karenanya
ceil(v/a) > 0
.Penjelasan:
sumber