Berechnen Sie den Schwierigkeitsgrad einer Code Golf-Frage

43

Anweisung

Die Schwierigkeit einer Code Golf-Frage kann folgendermaßen berechnet werden:

Formel

Wo vist die Anzahl der Aufrufe einer Frage?

und aist die Anzahl der Antworten, die eine Frage hat

und ⌈ x ⌉ ist der Deckenantrieb .

Ebenfalls:

Klemme

Die aktuelle Schwierigkeit dieser Frage: ***

Aufgabe

Schreiben Sie ein Programm, das zwei ganze Zahlen enthält (v and a)und die Schwierigkeit in ausgibt asterisks (*).

Die Eingabe kann in Form eines Arrays, einer separaten Zeichenfolge oder als separate Funktionsargumente erfolgen

Testdaten

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          **********

Beispiel mit Pseudocode

v: 1713    
a: 37
out = clamp(ceil(((v/a)/700)*10), 0, 10); // evaluates to 1
//program will output '*'

Der kürzeste Code in Bytes gewinnt! Nachgestellte / führende Leerzeichen sind erlaubt.

Shaun Wild
quelle
3
Ich finde, dass LaTeX schwieriger zu verstehen, dass eine einfache Formel Zeichenfolge .. aber was auch immer die Mehrheit will, ich denke ..
Shaun Wild
3
Sie sollten fast [ hinterhältig ] für die Frage hinzufügen , die hinterhältig ist.
Adám
5
Dies ist eine Code Golf Frage. Es wird kein tatsächliches System auf der Site implementiert. Wen interessiert es, wenn es unfair ist?
Shaun Wild
13
Es ist ein bisschen früh, also kann ich hier etwas vermissen, aber warum /700 * 10statt /70?
Kevin L
4
@ KevinL Ssshhhh;)
Shaun Wild

Antworten:

49

JavaScript (ES6), 40 bis 39 Byte

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

Denn es substringsorgt für das erforderliche Klemm- und "Decken" -Verhalten. Edit: Normalerweise bin ich zu faul, um mir die Mühe zu machen, aber weil es 4 positive Stimmen gab, habe ich @ MarsUltors Rat befolgt, um 1 Byte durch Curry zu sparen.

Neil
quelle
Oh, das ist eine nette Verwendung von Teilzeichenfolge :-)
Dylan Meeus
7
Verwenden Sie Currying:v=>a=>
Nur ASCII
3
Können Sie substrstattdessen verwenden? Ich weiß, der zweite Parameter macht einen Unterschied, aber nicht sicher über die erste ...
Dom Hastings
1
@DomHastings: Ja, slicewäre aber noch kürzer.
Yay295
5
@DomHastings Nein, beide substrund sliceein negatives Argument werden vom Ende der Zeichenfolge zurückgezählt.
Neil
38

Ich wollte das schon eine Weile machen ...

HTML + CSS 491 487 485 Bytes

-4 Bytes dank Conor O'Brien
-2 Bytes dank der Freisetzung von Heliumkernen

Die Eingabe wird als Breite und Höhe des Seitenfensters verwendet. width ist die Anzahl der Aufrufe und height die Anzahl der Antworten.

<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>**********

Sie können es in Ihrem Browser versuchen, indem Sie eingeben

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>**********

als URL in einem neuen Tab.

Yay295
quelle
11
+1 für das Denken über den Tellerrand - ähm, das Denken über den Tellerrand ...
Adám
2
Benötigen Sie das schließende p-Tag?
Conor O'Brien
Ich mag, wie es aktualisiert wird, wenn ich die Fenstergröße ändere.
YSC
@ ConorO'Brien: Guter Punkt!
Yay295
1
Die letzten beiden brauchst du auch nicht }.
Betseg
12

05AB1E, 11 Bytes

/70/î'*T×s£

Erläuterung

/            # 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

Probieren Sie es online aus

Emigna
quelle
12

Javascript (ES6), 37-36 Bytes

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

Dank TheLethalCoder 1 Byte durch Currying eingespart

Arnauld
quelle
3
Können Sie v=>a=>anstelle von verwenden (v,a)=>?
TheLethalCoder
@TheLethalCoder - Aktualisiert. Vielen Dank!
Arnauld
2
Funktioniert das nicht v=70, a=1?
Neil
1
@Neil - Das stimmt. Es ist um 1 Punkt versetzt, wenn die Anzahl der Antworten ein exakter Teiler der Anzahl der Aufrufe ist. Mit anderen Worten, es erwartet die nächste Sicht. ;-)
Arnauld
11

Mathematica, 38-35 Bytes

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

Danke an @MartinEnder für 3 Bytes

u54112
quelle
1
Hallo und willkommen bei PPCG! Das ist eine großartige Antwort!
NoOneIsHere
@NoOneIsHere Danke! Ursprünglich habe ich darüber nachgedacht Clip, dass die Syntax der OP-Klemme ziemlich identisch ist, aber dann habe ich gesehen, dass StringRepeatsie das optionale dritte Argument für das Abschneiden enthält.
U54112
3
Es gibt Unicode-Zeichen für die linke und rechte Deckenhalterung, die zusammen nur 6 Bytes anstelle der 9 Bytes ergeben, die Sie benötigen Ceiling[].
Martin Ender
9

EXCEL, 29 Bytes

Wenn Sie Excel als eine Darstellung von VBA Excel zählen, können Sie verwenden

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

wo vund asind die Namen der Referenzzellen.

Anastasiya-Romanova 秀
quelle
3
Hallo und willkommen bei PPCG! Dies ist ein schöner erster Beitrag! Und auch gültig.
20.
Hallo auch @EasterlyIrk. Vielen Dank für den herzlichen Empfang :)
Anastasiya-Romanova 秀
8

CJam, 18 15 14 Bytes

1 Byte dank Peter Taylor und 3 Byte dank Adnan gespeichert

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

Probieren Sie es online aus

'*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
Geschäfts-Katze
quelle
8

C #, 68 49 48 Bytes

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

Dies ist die C # -Version dieser hervorragenden Antwort von Neil.

Weitere 19 Bytes dank Neil gespeichert

TheLethalCoder
quelle
Probieren Sie es aus (int)System.Math.Floor(10-v/a/70)oder einfach (int)(10-v/a/70).
Neil
@ Neil Sieht so aus, als müsste ich das 70dalleine lassen, aber es funktioniert besser, danke
TheLethalCoder
1
Entschuldigung, habe das nicht gesehen d.
Neil
Eine andere Antwort, die ein Byte beim Curry sparen könnte, denke ich:v=>a=>
Brian McCutchon,
@BrianMcCutchon Wusste nicht einmal, wie ich es in C # machen konnte, danke
TheLethalCoder
7

Java 8, 57 Bytes

Verwendet ein Lambda zum Speichern von Bytes, führt die Berechnung durch und Teilzeichenfolgen, um die Antwort zurückzugeben.

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

Hier ist meine Klasse zum Testen.

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)))
        );
    }
}

Aktualisieren

  • -3 [16-08-19] Verwendete Ganzzahldivision
  • -10 [16-08-18] Unnötiger Import wurde entfernt, dank @ OlivierGrégoire !
  • -18 [16-08-17] String zurückgeben, anstatt zu drucken
NichtlinearFruit
quelle
2
Schön, eine Java-Antwort, die kein Zug ist!
Ismael Miguel
4
Keine Notwendigkeit, java.lang.da dies das standardmäßig enthaltene Paket ist.
Olivier Grégoire
Du rundest nicht die Decke!
1
@Advancid Ich habe es getestet und System.out.println((int)2.99);gedruckt, 2und da ich den vorgefertigten Wert von 10 nehme und ihn dann wieder auflege , ist es dasselbe, als würde ich die Decke von 10 entfernen.
NonlinearFruit
6

MATL , 12 Bytes

/70/0:9>42*c

Probieren Sie es online!

Erläuterung

Das Aufrunden und Klemmen erfolgt gleichzeitig wie folgt: Die Anzahl x = v/a/70wird mit jedem Element des Arrays verglichen [0 1 ... 9]. Die Zahlen dieses Arrays, die von überschritten werden, xwerden zu Sternchen und der Rest sind Leerzeichen.

/      % 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
quelle
5

Python2, 32 Bytes

3 + 2 Bytes gespeichert und dank Leaky Nun um einen Fehler korrigiert

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

ähnlich wie Neils Antwort. Verwendet die Tatsache, dass Python2 eine Ganzzahldivision durchführt.

mathause
quelle
scheitert, wenn v=70unda=1
Leaky Nun
Das f=kann entfernt werden
Leaky Nun
v, akann werdenv,a
Undichte Nonne
Vielen Dank! sollte jetzt funktionieren. Kann für v = 0, a = 1 jetzt falsch sein, aber dieser Fall kann nicht existieren, oder?
Mathause
Das wäre nicht falsch für v = 0, a = 1.
Undichte Nonne
5

Haskell, 35 Bytes

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

[1..min(ceiling$v/a/70)10]Erstellt einen Bereich von 1 bis zur berechneten Schwierigkeit (eine leere Liste für die Schwierigkeit 0). a>>bwiederholt die Liste b length aoft.

Laikoni
quelle
4

C #, 97 89 87 77 42 41 Bytes

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

Dank Adám 10 Bytes gespart

Ein paar Bytes gespart dank Arnauld

TheLethalCoder
quelle
Sie können eine ganze Menge einsparen, indem Sie (int)System.Math.Ceiling(v/a/70d)durch (v+69)/(70*a)... ersetzen. Beachten Sie, dass v / a nicht negativ sein kann und daher csehr vereinfacht werden kann, da Sie dies nicht überprüfen müssen.
Tom van der Zanden
4

Perl, 35 32 Bytes

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

Verwenden Sie -E, sayum die Argumente in umgekehrter Reihenfolge zu aktivieren und anzugeben:

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

Wenn Argumente für STDIN zulässig sind, sind 29 Byte zulässig:

(echo 163; echo 2) | perl -pe '$_="*"x(10-($-=10-$_/70/<>))'
Tonne Hospel
quelle
Ich kann mich nicht erinnern, ob es genau dasselbe wäre, aber können Sie 0|stattdessen haben $-=? (Denken Operator Vorrang möglicherweise nicht richtig ...)
Dom Hastings
@DomHastings 0|macht eine negative Zahl zu einer riesigen Zahl (die zu Nullen führt *), $-=Clips zu 0 (die zu Zehnern führt *), was ich hier brauche
Ton Hospel
Ah, natürlich ist es immer nur eine positive ganze Zahl! Danke für das Erinnern. Ich bin mir sicher, dass ich das vergessen werde, wenn ich es brauche ... 😀
Dom Hastings
4

R, 68, 50, 52 Bytes

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

rep setzt implizit eine min auf die Zahl 0.

Vielen Dank an @plannapus und @ Anastasiya-Romanova 秀, die meinen Fehler entdeckt haben.

user5957401
quelle
Sie können entfernenf=
Cyoce
1
Die Ausgaben Ihres Codes stimmen nicht mit den Testdaten überein. Sie sollten 2 weitere Bytes hinzufügen , 1+nachdem min(um die gleichen Ausgaben zu erhalten
Anastasiya-Romanowa秀
3

Javascript ES6, 48 Bytes

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

quelle
3

C, 54 , 51 , 50 , 49 Bytes

Unter der Annahme, dass vpositiv oder null und apositiv ist, wird der x < minKlemmfall niemals erfüllt, da das Ergebnis des Deckenbetriebs auf keinen Fall negativ sein kann. Darüber hinaus ergibt eine Ganzzahlberechnung mit nicht negativen Werten immer den Grundwert des Ergebnisses. Wir addieren also 1, um die Obergrenze zu ermitteln.

Diese Lösung benötigt eine writeFunktion, funktioniert zumindest unter Linux.

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

Testleitung:

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
quelle
1
Ersetzen (v=v/a/70)durch (v/=a*70)speichert 1 Byte.
Ceilingcat
Schöner Fang @ceilingcat!
Stefano Sanfilippo
2

Javascript: 82 73 Bytes

 (v,a)=>console.log("*".repeat(Math.min(Math.max(0,Math.ceil(v/a/70),10)))
  • Ich habe ein paar Bytes gespart, nachdem Adám darauf hingewiesen hatte, dass ich die / 700 * 10 = / 70 und das Entfernen von Parens übersehen habe
Dylan Meeus
quelle
@Adám was ist mit der Bearbeitung?
Martin Ender
@Adam Wenn Leute eine der Antworten lesen, haben sie den Spoiler schon. Rollback, da dieser Satz derzeit ziemlich nutzlos ist und nur dazu führt, dass Benutzer auf den Revisionsverlauf klicken.
Martin Ender
@ Adám Das ist es, was ich normalerweise selbst benutze, aber ich sehe in der aktuellen Version keinen Schaden.
Martin Ender
Keine Notwendigkeit console.log, die Rückkehr ist in Ordnung. Sie können auch ein Byte speichern mit v=>a=>anstelle von(v,a)=>
Cyoce
2

Dyalog APL , 15 Bytes

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

'*'⍴⍨das Zeichen wurde so oft wiederholt:
10⌊min (10, ...
⎕÷Eingabe geteilt durch
70×siebzig mal
Eingabe

TryAPL online!

Adam
quelle
Wäre es Golfspieler, Mendos Algorithmus zu verwenden?
Undichte Nonne
@LeakyNun Ich glaube nicht:'*'/⍨(⎕÷70×⎕)>⍳10
Adám
2

Qualle , 18 Bytes

P
#'*
mM/%i
10 %70

Übernimmt Eingaben im Format [a v]. Probieren Sie es online!

Erläuterung

  • %ist wechselseitig, so %70ist 1/70.
  • i wird als Array mit zwei Elementen eingegeben.
  • /%mit Eingängen iund %70reduziert das Array idurch gespiegelte Division mit dem Anfangswert %70. Mit anderen Worten, es berechnet v / (a ​​/ (1/70)) , was gleich v / (70 * a) ist .
  • MNimmt die Obergrenze dieses Wertes und mnimmt das Maximum von diesem und 10.
  • #'*wiederholt das wörtliche *Zeichen so oft.
  • P druckt das Ergebnis ohne Anführungszeichen.
Zgarb
quelle
2

MATLAB, 34 33 Bytes

Da mir diese Herausforderung so gut gefällt, gibt es hier eine für MATLAB (gibt nachgestellte Leerzeichen aus):

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

Inspiriert von der Antwort von @Luis Mendo. Vielen Dank an @pajonk für das Speichern eines Bytes.

mathause
quelle
Netter Ansatz! Ich hatte eine 40-Byte-Datei zum Posten ... Übrigens können Sie ein Byte speichern, indem Sie [... '']anstelle von verwenden char(...). Und brauchen Sie das wirklich, ceilwenn Sie am Ende mit ganzen Zahlen vergleichen?
Pajonk
2
danke @pajonk - man kann auf dieser Seite wirklich einiges lernen, um meinen Code noch weniger lesbar zu machen;)
mathause
2

m4, 136 135 Bytes

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)))')

Definiert ein Makro, fdas die korrekte Ausgabe annimmt vund aund erweitert. Der größte Teil des Programms ist eine Umsetzung der Obergrenze.

Programm Mann
quelle
2

Gleichstrom, 110 108 104 98 Bytes

Dies war ein Trottel, da das Schneiden keine Sache ist. Außerdem manipuliert DC keine Strings. Ich habe nur wirklich auf einen String gewartet, der <5 Stunden Codierung sein würde. Auf der positiven Seite habe ich endlich angefangen, gängige Konstrukte aufzuschreiben, wie zum Beispiel für Schleifen. Musste auch Rundung / Decke formulieren, also danke dafür.

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

In bash aufgerufen:

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:
**
>> 

Ersetzen (oben) durch den Code vund adurch die entsprechenden oben genannten Gegenstücke. Die einfachen Anführungszeichen sind wichtig (ansonsten erhalten Sie die Geschichte der Bash).


Erklärt:

[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

Dies ist wahrscheinlich besser zum Golfen geeignet, aber ich habe versucht, es fertigzustellen, um eine vorzeitige Optimierung zu vermeiden.

  • 2 Bytes werden durch Duplizieren, Speichern und Laden gespeichert
  • 4 Bytes gespart, geteilt durch 70
  • 6 bytes aus danieros vorschlägen (non-strings, stattdessen ASCII nums; 10 => I)
Delioth
quelle
[*]n=> 42P. Jede Instanz von 10kann durch ersetzt werden I. []p=>IP
Daniero
2

Haskell, 35 Bytes

Diese Lösung unterscheidet sich von Laikonis Antwort so sehr, wie es für etwas so Triviales gilt. Dennoch ist die Punktzahl (vorerst) genau die gleiche.

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

Das bringt zehn Sterne hervor und schert dann einige ab. Einfach mit einer unendlichen Liste auf beliebige Schwierigkeitsgrade zu erweitern.

Ich habe es geschafft, ein weiteres Byte zu entfernen. Aber während alle Testfälle funktionieren, sollte dies im Allgemeinen nicht korrekt sein.

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

TI-Basic, 39 Bytes

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

PowerShell v2 +, 47 Byte

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

Etwas eine Portierung von @ Neils JavaScript-Antwort .

Nimmt Eingaben $argsund dividiert sie, dividiert sie dann durch 70und addiert sie .499. Da PowerShell die Banker-Rundung durchführt , erfolgt dies effektiv ceilauf zwei Dezimalstellen genau. Wenn zusätzliche Präzision erforderlich ist, heften Sie so viele zusätzliche 9s an, wie erforderlich sind.

Zusammen mit 1..bildet dies einen Bereichsindex in eine Zeichenfolge. Der String ist '*'*11, dh '***********'. Das ergibt ein char-Array, also fassen wir -joines wieder zu einem String zusammen. Diese Zeichenfolge verbleibt in der Pipeline und die Ausgabe ist implizit. Wie Neils Antwort "klemmt" dies die Ausgabe effektiv so, dass sie zwischen 1 und 10 Sternen liegt.

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
quelle
1

Python 3, 69 68 Bytes

Ich wollte die Antwort von Python 2 nicht kopieren, daher ist meine etwas länger.

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

Dank Program man 1 Byte gespeichert

Cody
quelle
Sie müssen Importe einschließen, from math import *sparen aber ein paar Bytes
NonlinearFruit
Einschließlich des Imports in die Byteanzahl
Cody
Laut Spezifikation ist 0 der Mindestwert für Sterne, nicht 1. Speichern Sie außerdem ein ganzes Byte import*ohne Leerzeichen.
Programm Mann
Hoppla, ich habe das Minimum falsch verstanden. Danke für den Tipp
Cody
1
@Programman Obwohl die Spezifikation besagt, dass 0 ein Minimum ist, ist die Division und Multiplikation von nicht-negativen, nicht-null Ganzzahlen garantiert! = 0, und der Deckenoperator wird alles zwischen 0-1 und 1 machen Bei 0 Views implizieren 0 Views 0 Antworten, was zu undefiniertem Verhalten führt (Division durch 0). Es ist wahrscheinlich nachweisbar, dass 0 unmöglich ist und nicht einmal erwähnt werden sollte.
Delioth
1

Eigentlich 14 Bytes

:70a\\u9ukm'**

Probieren Sie es online!

Nutzt die Tatsache aus, dass 0 Aufrufe und 0 Antworten unmöglich sind und somit ceil(v/a) > 0.

Erläuterung:

: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
quelle