Hitung kesulitan pertanyaan Kode Golf

43

Pengarahan

Kesulitan pertanyaan Golf Code dapat dihitung seperti:

rumus

Di mana vjumlah tampilan yang dimiliki pertanyaan

dan ajumlah jawaban yang dimiliki pertanyaan

dan ⌈ x ⌉ adalah operator langit - langit .

Juga:

penjepit

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.

Shaun Wild
sumber
3
Saya menemukan bahwa LaTeX lebih sulit untuk memahami bahwa string formula sederhana .. tapi apa pun yang mayoritas inginkan saya kira ..
Shaun Wild
3
Anda hampir harus menambahkan [ curang ] untuk pertanyaan yang curang.
Adám
5
Ini pertanyaan Golf Code. Bukan sistem aktual yang diterapkan ke situs. Siapa yang peduli kalau itu tidak adil?
Shaun Wild
13
ini agak awal jadi saya mungkin kehilangan sesuatu di sini, tapi mengapa /700 * 10bukannya /70?
Kevin L
4
@KevinL Ssshhhh;)
Shaun Wild

Jawaban:

49

JavaScript (ES6), 40 39 byte

v=>a=>"**********".substring(10-v/a/70)

Karena substringmenyediakan 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.

Neil
sumber
Oh, itu penggunaan substring yang bagus :-)
Dylan Meeus
7
Gunakan currying:v=>a=>
ASCII-only
3
Bisakah Anda menggunakannya substr? Saya tahu parameter kedua membuat perbedaan, tetapi tidak yakin tentang yang pertama ...
Dom Hastings
1
@DomHastings: Ya, meskipun sliceakan lebih pendek.
Yay295
5
@HomHastings Tidak, keduanya substrdan slicemenafsirkan argumen negatif sebagai menghitung mundur dari akhir string.
Neil
38

Saya sudah lama ingin melakukan ini ...

HTML + CSS 491 487 485 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.

<style>p{overflow:hidden;width:1ch}@media(max-aspect-ratio:70/2){p{width:1ch}}@media(max-aspect-ratio:70/3){p{width:2ch}}@media(max-aspect-ratio:70/4){p{width:3ch}}@media(max-aspect-ratio:70/5){p{width:4ch}}@media(max-aspect-ratio:70/6){p{width:5ch}}@media(max-aspect-ratio:70/7){p{width:6ch}}@media(max-aspect-ratio:70/8){p{width:7ch}}@media(max-aspect-ratio:70/9){p{width:8ch}}@media(max-aspect-ratio:7/1){p{width:9ch}}@media(max-aspect-ratio:70/11){p{width:10ch</style><p>**********

Anda dapat mencobanya di browser Anda dengan memasukkan

data:text/html,<style>p{overflow:hidden;width:1ch}@media(max-aspect-ratio:70/2){p{width:1ch}}@media(max-aspect-ratio:70/3){p{width:2ch}}@media(max-aspect-ratio:70/4){p{width:3ch}}@media(max-aspect-ratio:70/5){p{width:4ch}}@media(max-aspect-ratio:70/6){p{width:5ch}}@media(max-aspect-ratio:70/7){p{width:6ch}}@media(max-aspect-ratio:70/8){p{width:7ch}}@media(max-aspect-ratio:70/9){p{width:8ch}}@media(max-aspect-ratio:7/1){p{width:9ch}}@media(max-aspect-ratio:70/11){p{width:10ch</style><p>**********

sebagai url di tab baru.

Yay295
sumber
11
+1 untuk berpikir di luar kotak - ehm, memikirkan kotak ...
Adám
2
Apakah Anda memerlukan tag p penutup?
Conor O'Brien
Saya suka bagaimana pembaruan karena saya mengubah ukuran jendela.
YSC
@ ConorO'Brien: Poin bagus!
Yay295
1
Anda tidak perlu dua yang terakhir }juga.
betseg
12

05AB1E, 11 byte

/70/î'*T×s£

Penjelasan

/            # divide v by a
 70/         # divide by 70
    î        # round up, call this n
     '*T×    # push 10 asterisks
         s£  # take n up to 10 asterisk
             # implicitly print

Cobalah online

Emigna
sumber
12

Javascript (ES6), 37 36 byte

v=>a=>"*".repeat((v/=a*70)<9?v+1:10)

Disimpan 1 byte oleh currying, berkat TheLethalCoder

Arnauld
sumber
3
Bisakah Anda menggunakan v=>a=>bukan (v,a)=>?
TheLethalCoder
@TheLethalCoder - Diperbarui. Terima kasih!
Arnauld
2
Tidak berhasil, bukan v=70, a=1?
Neil
1
@ Neil - Benar. Tidak aktif dengan 1 poin jika jumlah jawaban merupakan pembagi yang tepat dari jumlah tampilan. Atau dengan kata lain, ini mengantisipasi tampilan selanjutnya. ;-)
Arnauld
11

Mathematica, 38 35 byte

StringRepeat["*",10,⌈#/#2/70⌉]&

Terima kasih kepada @MartinEnder selama 3 byte

u54112
sumber
1
Halo, dan selamat datang di PPCG! Ini jawaban yang bagus!
NoOneIsHere
@NoOneIsHere Terima kasih! Awalnya saya berpikir Clip, yang memiliki sintaks yang hampir sama dengan OP's Clamp, tapi kemudian saya melihat bahwa StringRepeatada argumen opsional ketiga untuk pemotongan.
u54112
3
Ada karakter Unicode untuk braket langit-langit kiri dan kanan yang bersama-sama membuat hanya 6 byte, bukan 9 yang Anda butuhkan Ceiling[].
Martin Ender
9

EXCEL, 29 byte

Jika Anda menghitung Excel sebagai representasi VBA Excel, maka Anda bisa menggunakannya

=REPT("*",MIN(1+v/(70*a),10))

di mana vdan aadalah nama sel referensi.

Anastasiya-Romanova 秀
sumber
3
Hai, dan selamat datang di PPCG! Ini adalah posting pertama yang bagus! Dan valid juga.
Rɪᴋᴇʀ
Hai juga @EasterlyIrk. Terima kasih atas sambutan hangatnya :)
Anastasiya-Romanova 秀
8

CJam, 18 15 14 byte

Disimpan 1 byte berkat Peter Taylor dan 3 byte terima kasih kepada Adnan

'*A*q~d/70/m]<

Cobalah online

'*A*            e# Push "**********"
    q~d/        e# Get the input and divide the two numbers
        70/     e# Divide by 70
           m]   e# Ceil, yielding x
             <  e# Slice the string, taking the first x elements
Kucing Bisnis
sumber
8

C #, 68 49 48 byte

v=>a=>"**********".Substring((int)(10-v/a/70d));

Ini adalah versi C # dari jawaban yang luar biasa ini oleh Neil.

Menyimpan 19 byte lagi berkat Neil

TheLethalCoder
sumber
Coba (int)System.Math.Floor(10-v/a/70)atau adil (int)(10-v/a/70).
Neil
@Neil Sepertinya saya harus pergi 70dsendiri tetapi bekerja lebih baik terima kasih
TheLethalCoder
1
Maaf, tidak melihat di dsana.
Neil
Jawaban lain yang bisa menghemat satu byte dengan currying, saya pikir:v=>a=>
Brian McCutchon
@BrianMcCutchon Bahkan tidak menyadari bagaimana saya bisa melakukannya dalam C # terima kasih
TheLethalCoder
7

Java 8, 57 byte

Menggunakan lambda untuk menyimpan byte, melakukan kalkulasi dan substring untuk mengembalikan jawabannya.

(v,a)->"**********".substring(Math.max(0,(700*a-v)/70/a))

Ini kelas saya untuk mengujinya.

public class DifficultyCalculator{
    static interface h{ String f(int v, int a);}
    static void g(h H){
        System.out.print(H.f(163,2));System.out.println("\t**");
        System.out.print(H.f(548,22));System.out.println("\t*");
        System.out.print(H.f(1452,24));System.out.println("\t*");
        System.out.print(H.f(1713,37));System.out.println("\t*");
        System.out.print(H.f(4162,32));System.out.println("\t**");
        System.out.print(H.f(3067,15));System.out.println("\t***");
        System.out.print(H.f(22421,19));System.out.println("\t**********");
    }
    public static void main(String[] args) {
        g( // 70
            (v,a)->"**********".substring(java.lang.Math.max(0,(int)(10-v/70d/a)))
        );
    }
}

Memperbarui

  • -3 [16-08-19] Divisi integer yang digunakan
  • -10 [16-08-18] Menghapus impor yang tidak perlu, terima kasih kepada @ OlivierGrégoire !
  • -18 [16-08-17] Kembalikan string alih-alih cetak
Buah Nonlinier
sumber
2
Bagus, jawaban Java yang bukan kereta!
Ismael Miguel
4
Tidak perlu java.lang.karena itu termasuk paket default.
Olivier Grégoire
Anda membulatkan bukan langit-langit!
1
@Advancid Saya mengujinya dan System.out.println((int)2.99);mencetak 2dan karena saya mengambil nilai pra-lantai dari 10 dan kemudian lantai, itu sama dengan mengambil langit-langit dari 10.
NonlinearFruit
6

MATL , 12 byte

/70/0:9>42*c

Cobalah online!

Penjelasan

Pembulatan dan penjepitan dilakukan secara simultan sebagai berikut: jumlahnya x = v/a/70dibandingkan terhadap masing-masing elemen array [0 1 ... 9]. Jumlah array yang dilampaui olehx akan menjadi tanda bintang, dan sisanya akan menjadi spasi.

/      % Take the two numbers implicitly. Divide. (Example: for inputs 3067, 15
       % we get 204.47)
70/    % Divide by 70 (we get 2.92)
0:9    % Push array [0 1  ... 9]
>      % See which of those are exceeded by the previous number (2.92 exceeds
       % 0, 1 and 2, so we get [1 1 1 0 ... 0]). This does the rounding up
       % and the clamping
42*    % Multiply by 42, which is the ASCII code of '*' (we get [42 42 42 0 ... 0])
       % Char 0 will be displayed as space
c      % Convert to char. Implicitly display
Luis Mendo
sumber
5

Python2, 32 byte

disimpan 3 + 2 byte dan dikoreksi oleh satu kesalahan berkat Leaky Nun

lambda v,a:('*'*10)[:~-v/a/70+1]

mirip dengan jawaban Neils. Menggunakan fakta bahwa Python2 melakukan pembagian integer.

matematika
sumber
gagal ketika v=70dana=1
Leaky Nun
The f=dapat dihapus
Leaky Nun
v, abisa menjadiv,a
Leaky Nun
Terima kasih! harus bekerja sekarang. Mungkin salah untuk v = 0, a = 1 sekarang, tetapi kasus ini tidak ada, bukan?
mathause
Itu tidak akan salah untuk v = 0, a = 1.
Leaky Nun
5

Haskell, 35 byte

v#a=[1..min(ceiling$v/a/70)10]>>"*"

[1..min(ceiling$v/a/70)10]membuat rentang dari 1 hingga kesulitan yang dihitung (daftar kosong untuk kesulitan 0). sering a>>bmengulangi daftar b length a.

Laikoni
sumber
4

Pyke, 13 9 byte

/70/\**T<

Coba di sini!

Penjelasan:

/         -    num_1 / num_2
 70/      -   ^ / 70
    \**   -  "*" * ^
       T< - ^[:10]
Biru
sumber
4

C #, 97 89 87 77 42 41 byte

v=>a=>new string('*',(v/=a*70)<9?v+1:10);

Disimpan 10 byte berkat Adám

Disimpan beberapa byte berkat Arnauld

TheLethalCoder
sumber
Anda dapat menyimpan banyak keseluruhan dengan mengganti (int)System.Math.Ceiling(v/a/70d)dengan (v+69)/(70*a)... Perhatikan bahwa selain itu v / a tidak boleh negatif, jadi cbisa banyak disederhanakan karena Anda tidak perlu memeriksa itu.
Tom van der Zanden
4

Perl, 35 32 byte

say"*"x(10-($-=10-pop()/70/pop))

Gunakan -Euntuk mengaktifkan saydan memberikan argumen dalam urutan terbalik:

perl -E 'say"*"x(10-($-=10-pop()/70/pop))' 2 163

Jika argumen tentang STDIN diizinkan, berikut adalah 29 byte:

(echo 163; echo 2) | perl -pe '$_="*"x(10-($-=10-$_/70/<>))'
Ton Hospel
sumber
Saya tidak ingat apakah itu Sebaiknya persis sama, tetapi Anda dapat memiliki 0|bukannya $-=? (Berpikir prioritas operator mungkin tidak benar ...)
Dom Hastings
@DomHastings 0|membuat angka negatif menjadi angka besar (mengarah ke nol *s), $-=klip ke 0 (mengarah ke sepuluh *), yang adalah apa yang saya butuhkan di sini
Ton Hospel
Ah, tentu saja, itu hanya bilangan bulat positif! Terima kasih telah mengingatkan. Saya yakin saya akan lupa bahwa ketika saya membutuhkannya ... 😀
Dom Hastings
4

R, 68, 50 52 byte

f=function(v,a)cat(rep("*",1+min(v/a/70,10)),sep="")

rep secara implisit menempatkan min pada angka 0.

Terima kasih kepada @plannapus dan @ Anastasiya-Romanova 秀 karena menemukan kesalahan saya.

pengguna5957401
sumber
Anda dapat menghapusf=
Cyoce
1
Output dari kode Anda tidak sama dengan Data Uji. Anda harus menambahkan 2 byte lagi 1+setelah min(untuk mendapatkan output yang sama
Anastasiya-Romanova 秀
3

Javascript ES6, 48 byte

a=>b=>"*".repeat(Math.ceil(Math.min(a/b/70,10)))

sumber
3

C, 54 , 51 , 50 , 49 byte

Dengan asumsi yang vpositif atau nol dan apositif, x < minkasus 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 writefungsi, setidaknya dapat bekerja di Linux.

F(v,a){write(1,"**********",(v/=a*70)>9?10:v+1);}

Tes utama:

int main() {
  F(163, 2);
  putchar('\n');
  F(548, 22);
  putchar('\n');
  F(1452, 24);
  putchar('\n');
  F(1713, 37);
  putchar('\n');
  F(4162, 32);
  putchar('\n');
  F(3067, 15);
  putchar('\n');
  F(22421, 19);
  putchar('\n');
}
Stefano Sanfilippo
sumber
1
Mengganti (v=v/a/70)dengan (v/=a*70)menghemat 1 byte.
ceilingcat
Tangkapan bagus @ceilingcat!
Stefano Sanfilippo
2

javascript: 82 73 byte

 (v,a)=>console.log("*".repeat(Math.min(Math.max(0,Math.ceil(v/a/70),10)))
  • menghemat beberapa byte setelah Adám menunjukkan saya mengabaikan / 700 * 10 = / 70 , dan penghapusan parens
Dylan Meeus
sumber
@ Adám ada apa dengan hasil edit?
Martin Ender
@ Adám Jika orang membaca salah satu jawaban, mereka sudah memiliki spoiler. Bergulir mundur, karena saat ini kalimat itu cukup tidak berguna dan hanya membuat orang mengklik pada riwayat revisi.
Martin Ender
@ Adám Itulah yang biasanya saya gunakan sendiri tetapi saya tidak melihat ada salahnya di versi saat ini.
Martin Ender
Tidak perlu console.log, kembali tidak apa-apa. Anda juga dapat menyimpan byte dengan v=>a=>alih - alih(v,a)=>
Cyoce
2

Dyalog APL , 15 byte

'*'⍴⍨10⌊⌈⎕÷70×⎕

'*'⍴⍨karakter mengulangi ini berkali-kali:
10⌊min (10, ...
⎕÷input dibagi dengan
70×tujuh puluh kali
input

TryAPL online!

Adm
sumber
Apakah pegolf akan menggunakan algoritma Mendo?
Leaky Nun
@ LeakyNun Saya tidak berpikir begitu:'*'/⍨(⎕÷70×⎕)>⍳10
Adám
2

Ubur-ubur , 18 byte

P
#'*
mM/%i
10 %70

Mengambil input dalam format [a v]. Cobalah online!

Penjelasan

  • %bersifat timbal balik, demikian %70juga 1/70.
  • i adalah input, sebagai array dua elemen.
  • /%dengan input idan %70mengurangi array idengan membalik divisi dengan nilai awal %70. Dengan kata lain, ini menghitung v / (a ​​/ (1/70)) , yang sama dengan v / (70 * a) .
  • Mmengambil plafon dari nilai ini, dan mmengambil maksimum dari itu dan 10.
  • #'*mengulangi *karakter literal yang berkali-kali.
  • P mencetak hasilnya tanpa tanda kutip.
Zgarb
sumber
2

MATLAB, 34 33 byte

Karena saya sangat menyukai tantangan ini, berikut adalah salah satu untuk MATLAB (output mengekor spasi putih):

@(v,a)[(ceil(v/a/70)>0:9)*42,'']

Terinspirasi oleh jawaban @Luis Mendo. Terima kasih kepada @pajonk karena telah menghemat satu byte.

matematika
sumber
Pendekatan yang bagus! Saya punya satu 40 byte untuk memposting ... BTW, Anda dapat menyimpan satu byte menggunakan [... '']bukan char(...). Dan apakah Anda benar-benar membutuhkan ceilketika pada akhirnya Anda membandingkan dengan bilangan bulat?
pajonk
2
terima kasih @pajonk - seseorang benar-benar dapat mempelajari beberapa hal di situs ini untuk membuat kode saya semakin kurang dapat dibaca;)
mathause
2

m4, 136 135 byte

define(r,`ifelse($1,0,,eval($1>9),1,*`r(9)',*`r(decr($1))')')define(f,`r(ifelse(eval($1%($2*70)),0,eval($1/$2/70),eval($1/$2/70+1)))')

Menentukan makro fyang mengambil vdan a, dan memperluas ke output yang benar. Sebagian besar program merupakan implementasi dari plafon.

Program man
sumber
2

dc, 110 108 104 98 byte

Ini 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.

[42P]sd[dsi[li0!=dli1-dsi0!=L]dsLx]sl[Isi[li0!=dli1-dsi0!=L]dsLx]sg[1+]saIk/70*0k1~0!=adI>ldI!>gIP

Dipanggil dalam bash:

echo 'v a (above)'|dc
# Wholly:
>> echo '163 2 [42P]sd[dsi[li0!=dli1-dsi0!=L]dsLx]sl[Isi[li0!=dli1-dsi0!=L]dsLx]sg[1+]saIk/70*0k1~0!=adI>ldI!>gIP'|dc
# outputs:
**
>> 

Mengganti (di atas) dengan kode, dan vdan adengan rekan masing-masing di atas. Kutipan tunggal itu penting (jika tidak Anda mendapatkan barang-barang sejarah bash).


Dijelaskan:

[42P]sd   # Here we store a macro in register d to print 1 * without a newline

[dsi[li0!=dli1-dsi0!=L]dsLx]sl # Store the "less than" case, a for loop which
                        # uses the top-of the stack as it's number of iterations.
[Isi[li0!=dli1-dsi0!=L]dsLx]sg # Store the "greater than" case. It's the above,
                        # but it puts 10 on the stack to use instead.

[1+]sa # Store a macro to add 1 to whatever is the top-of-stack.


Ik # Set precision at non-zero to allow decimal division

/70* # Divide the top two of the stack, v/a; multiply by 70 (`/700*10` == `/70`)
             # dc is postfix and stack-based, so operators come after operands.

0k1~0!=a     # This is a ceiling function.
|> 0k  # set precision to 0 to perform integer division
|> 1~  # push the quotient of integer division by 1, and then the remainder. (r is top)
|> 0!=a # If the top-of-stack (decimal part) is not 0, add 1 to the quotient

dI>ldI!>g # Conditional statement
|> dI>l  # (d)uplicate the top, push 10 on. If 10 > the old top, execute the `l`ess-than
          # case, which loops top-of-stack times.
|> dI!>g # Complement of the above, using the `g`reater-than to loop 10 times.

IP # print a newline

Ini mungkin lebih mampu golf, tetapi saya mencoba menyelesaikannya untuk menghindari pengoptimalan prematur.

  • 2 byte disimpan dengan menyimpan duplikat bukannya menyimpan-memuat
  • 4 byte yang disimpan dibagi dengan 70
  • 6 byte dari saran daniero (bukan string, num ASCII; 10 => I)
Delioth
sumber
[*]n=> 42P. Setiap instance dari 10dapat digantikan oleh I. []p=>IP
daniero
2

Haskell, 35 byte

Solusi ini sama sekali berbeda dari jawaban Laikoni karena mendapatkan untuk hal sepele ini. Namun skor (untuk saat ini) persis sama.

v%a=take(ceiling$v/a/70)[0..9]>>"*" 

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.

v%a=take(1+div v(a*70))[0..9]>>"*"
Marlin
sumber
2

TI-Basic, 39 byte

Prompt V,A
sub("**********",1,max(0,min(10,int(V/A/70)+1
Timtech
sumber
1

PowerShell v2 +, 47 byte

-join(('*'*11)[1..($args[0]/$args[1]/70+.499)])

Agak port dari jawaban JavaScript @ Neil .

Mengambil input $argsdan membaginya, lalu membaginya dengan 70, dan menambahkan .499. Karena PowerShell melakukan pembulatan bankir , ini efektif ceiluntuk dua titik desimal presisi. Jika presisi tambahan diperlukan, tempelkan sebanyak mungkin 9s tambahan yang diperlukan.

Seiring dengan 1.., ini membentuk indeks rentang menjadi string. String adalah '*'*11, yaitu'***********' . Itu menghasilkan array-char, jadi kita -joinbersama-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

PS C:\Tools\Scripts\golfing> @(@(163,2), @(548,22), @(1452,24), @(1713,37), @(4162,32), @(3067,15), @(22421,19))|%{($_-join', ')+" -> " +(.\difficulty-of-a-question $_[0] $_[1])}
163, 2 -> **
548, 22 -> *
1452, 24 -> *
1713, 37 -> *
4162, 32 -> **
3067, 15 -> ***
22421, 19 -> **********
AdmBorkBork
sumber
1

Python 3, 69 68 byte

Saya tidak ingin menyalin jawaban Python 2, jadi milik saya sedikit lebih lama.

from math import*
x=lambda v,a:print(max(0,min(ceil(v/a/70),10))*'*')

Disimpan 1 byte berkat Program man

Cody
sumber
Anda perlu memasukkan impor, tetapi from math import *akan menghemat beberapa byte
NonlinearFruit
Termasuk impor ke dalam hitungan byte
Cody
Menurut spec, 0 adalah bintang minimum, bukan 1. Juga menghemat 1 byte secara keseluruhan import*tanpa ruang.
Program man
Ups, saya salah membaca minimum. Terima kasih atas tipnya
Cody
1
@Programman Meskipun spec mengatakan 0 minimum, pembagian dan perkalian dari bilangan bulat non-negatif, dijamin nol! = 0, dan operator langit-langit akan membuat apa pun antara 0-1 dan membuatnya 1. Meskipun saya mengira ada bisa menjadi kasus 0 tampilan, namun 0 tampilan menyiratkan 0 jawaban, yang mengarah pada perilaku yang tidak terdefinisi (pembagian dengan 0). Mungkin terbukti bahwa 0 tidak mungkin dan bahkan tidak boleh disebutkan.
Delioth
1

Sebenarnya, 14 byte

:70a\\u9ukm'**

Cobalah online!

Mengambil keuntungan dari kenyataan bahwa 0 tampilan dan 0 jawaban tidak mungkin, dan karenanya ceil(v/a) > 0 .

Penjelasan:

:70a\\u9ukm'**
:70             push 70 ([70 a v])
   a            invert stack ([v a 70])
    \\          integer division twice ([v//a//70])
      u         add 1 ([v//a//70 + 1])
       9uk      push 10, make stack into list ([[v//a//70+1, 10]])
          m     minimum of list
           '**  push "*", repeat
Mego
sumber